Вопрос или проблема
У меня есть следующие записи в журнале php-fpm.
[19-Jan-2020 15:09:33] УВЕДОМЛЕНИЕ: [пул www] директива 'user' игнорируется, когда FPM не работает от имени root
[19-Jan-2020 15:09:33] УВЕДОМЛЕНИЕ: [пул www] директива 'user' игнорируется, когда FPM не работает от имени root
[19-Jan-2020 15:09:33] УВЕДОМЛЕНИЕ: [пул www] директива 'group' игнорируется, когда FPM не работает от имени root
[19-Jan-2020 15:09:33] УВЕДОМЛЕНИЕ: [пул www] директива 'group' игнорируется, когда FPM не работает от имени root
[19-Jan-2020 15:09:33] УВЕДОМЛЕНИЕ: fpm работает, pid 11067
[19-Jan-2020 15:09:33] УВЕДОМЛЕНИЕ: готов к обработке соединений
Вот файл Nginx.conf:
#user nobody;
worker_processes 1;
#error_log logs/error.log;
#error_log logs/error.log notice;
#error_log logs/error.log info;
#pid logs/nginx.pid;
events {
worker_connections 1024;
}
http {
include mime.types;
default_type application/octet-stream;
#log_format main '$remote_addr - $remote_user [$time_local] "$request" '
# '$status $body_bytes_sent "$http_referer" '
# '"$http_user_agent" "$http_x_forwarded_for"';
#access_log logs/access.log main;
sendfile on;
#tcp_nopush on;
#keepalive_timeout 0;
keepalive_timeout 65;
#gzip on;
server {
listen 8888;
server_name localhost;
#charset koi8-r;
#access_log logs/host.access.log main;
location / {
root html;
index index.html index.htm index.php;
}
#error_page 404 /404.html;
# перенаправить страницы ошибок сервера на статическую страницу /50x.html
#
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
# проксировать PHP скрипты на Apache, слушающий на 127.0.0.1:80
#
location ~ \.php$ {
proxy_pass http://127.0.0.1;
}
# передать PHP скрипты на сервер FastCGI, слушающий на 127.0.0.1:9000
#
location ~ \.php$ {
root html;
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME /scripts$fastcgi_script_name;
# fastcgi_param SCRIPT_FILENAME $document_root/$fastcgi_script_name;
include fastcgi_params;
}
# запретить доступ к файлам .htaccess, если корневая директория Apache
# совпадает с корневой директорией nginx
#
location ~ /\.ht {
deny all;
}
}
# другой виртуальный хост, использующий комбинированную конфигурацию IP-, name- и port-основы
#
#server {
# listen 8000;
# listen somename:8080;
# server_name somename alias another.alias;
# location / {
# root html;
# index index.html index.htm;
# }
#}
# HTTPS сервер
#
#server {
# listen 443 ssl;
# server_name localhost;
# ssl_certificate cert.pem;
# ssl_certificate_key cert.key;
# ssl_session_cache shared:SSL:1m;
# ssl_session_timeout 5m;
# ssl_ciphers HIGH:!aNULL:!MD5;
# ssl_prefer_server_ciphers on;
# location / {
# root html;
# index index.html index.htm;
# }
#}
include servers/*;
}
Я пытаюсь запустить функцию phpinfo(), но получаю ошибку 502. Примечание: я использую [email protected] и php-fpm 7.2, я уже изменил пользователя и группу в файле php-fpm.conf, любая помощь будет оценена. Спасибо заранее.
Вы, похоже, используете Nginx в качестве прокси, все ваши запросы PHP будут проксироваться на ваш веб-сервер Apache, в этом случае вам нужно также проверить конфигурацию Apache и убедиться, что ваш Apache использует php7-fpm. По этой ссылке вы найдете информацию о Apache2 и PHP-FPM.
В этом уроке вы найдете способ настроить PHP-FPM, чтобы решить проблему с уведомлением в ваших журналах о том, что директива USER игнорируется. Настройка PHP-FPM
Ответ или решение
Для настройки Nginx и PHP-FPM на macOS с использованием Homebrew, следуйте этому подробному руководству. Мы рассмотрим конфигурацию nginx.conf
, настройку PHP-FPM и избавление от ошибок, таких как 502 Bad Gateway.
Шаг 1: Установка необходимых пакетов
Убедитесь, что у вас установлены Nginx и PHP с поддержкой FPM через Homebrew. Если они не установлены, выполните:
brew install nginx
brew install php
Шаг 2: Настройка PHP-FPM
-
Откройте конфигурационный файл PHP-FPM. Обычно он находится по пути:
/usr/local/etc/php/<версия>/php-fpm.d/www.conf
. -
Убедитесь, что директивы
user
иgroup
оставлены в комментариях, если PHP-FPM не работает от имени root. Например:
;user = _www
;group = _www
Тогда PHP-FPM будет использовать текущего пользователя, что будет предотвращать сообщения о неигнорируемых директивах.
- Проверьте, что PHP-FPM слушает на нужном сокете или порту. Обычно это
127.0.0.1:9000
, это можно проверить вphp-fpm.conf
.
Шаг 3: Настройка Nginx
-
Откройте конфигурационный файл Nginx, который обычно находится по адресу:
/usr/local/etc/nginx/nginx.conf
. -
Измените секцию
server
следующим образом:
server {
listen 8888;
server_name localhost;
root /usr/local/var/www; # Укажите путь к вашей веб-директории
index index.php index.html index.htm;
location / {
try_files $uri $uri/ /index.php?$query_string; # Поддержка переадресации
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
location ~ \.php$ {
include fastcgi_params; # Подключаем стандартные параметры для FastCGI
fastcgi_pass 127.0.0.1:9000; # Убедитесь, что это совпадает с настройками php-fpm
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; # Правильный путь к скрипту
}
location ~ /\.ht {
deny all;
}
}
Обратите внимание, что try_files
в директории location /
помогает правильно обрабатывать запросы к PHP-скриптам.
Шаг 4: Запуск и проверка
- Запустите PHP-FPM и Nginx:
brew services start php
brew services start nginx
- Проверьте статус служб:
brew services list
- Откройте в браузере
http://localhost:8888/info.php
(создайте файлinfo.php
в указанных выше директориях с содержимым<?php phpinfo(); ?>
).
Примечания по устранению ошибок 502:
- Если вы получаете ошибку 502, убедитесь, что PHP-FPM действительно запущен (проверить можно с помощью
brew services list
). - Убедитесь, что вы не используете Apache как прокси, если у вас настроен Nginx. В этом случае вам необходимо будет настроить Apache также для работы с PHP-FPM, и возможные ошибки в его конфигурации могут быть источником проблемы.
Заключение
Следуя этим шагам, вы сможете настроить Nginx и PHP-FPM на macOS, чтобы они корректно работали вместе и вы могли выполнять PHP-скрипты. Убедитесь, что все пути и настройки верны, и вы сможете легко устранить проблемы, возникшие в процессе настройки.