Я запускаю свежую установку FreeBSD (последняя стабильная производственная версия) с nginx и php72, установленными из пакетов.Моя первая трудность заключается в том, что большая часть информации в Интернете относится к созданию этих приложений из исходного кода, а пакеты помещают файлы .conf и другие объекты в разные каталоги.Я думаю, что я понял это с помощью Nginx HTTP Server - Четвертое издание и некоторый просмотр.Nginx отлично справляется со статическими файлами.Но PHP не работает.Каждая попытка запустить короткий скрипт, содержащий php-info (), приводит к:
Произошла ошибка.Извините, страница, которую вы ищете, в данный момент недоступна.Пожалуйста, попробуйте позже.Если вы являетесь системным администратором этого ресурса, вам следует проверить подробности в журнале ошибок.С уважением, nginx.
Я нашел этот вопрос Stack Exchange несколько лет назад: Файл не найден при запуске PHP с Nginx Я попробовал несколько решений, приведенных в вопросе,в том числе с 67 и 10 голосов.Вы можете увидеть их в моем файле nginx.conf ниже.Вот мой файл nginx.conf:
user nginx;
worker_processes auto;
worker_priority 10;
# This default error log path is compiled-in to make sure configuration parsing
# errors are logged somewhere, especially during unattended boot when stderr
# isn't normally logged anywhere. This path will be touched on every nginx
# start regardless of error log location configured here. See
# https://trac.nginx.org/nginx/ticket/147 for more info.
#
error_log /var/log/nginx/error.log;
#
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 {
server_name JRWFreeBSD;
listen 80;
root /usr/local/www/nginx/documents;
index index.html index.htm index.php
#charset koi8-r;
#access_log logs/host.access.log main;
error_page 404 /404.html;
# redirect server error pages to the static page /50x.html
#
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root /usr/local/www/nginx-dist;
}
# pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
#
location ~* \.php$ {
root /usr/local/www/nginx/documents;
fastcgi_pass 127.0.0.1:9000;
# fastcgi_index index.php;
include fastcgi_params;
# fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_param SCRIPT_FILENAME /usr/local/www/nginx/documents$fastcgi_script_name;
fastcgi_param PATH_INFO $fastcgi_script_name;
}
}
}
enter code here
(Этот файл nginx.config основан на файле по умолчанию, поставляемом с nginx. Я включил только тот блок сервера, который я на самом деле использую, а не закомментированные блоки.) Все файлы в папке документов имеют в качестве владельца пользователя nginx / group nginx с правами доступа 755. Nginx загружается без сообщения об ошибках из любого файла конфигурации, включая файл для php-fpm.В файлах журналов ничего не появилось, поскольку я правильно настроил nginx для обслуживания статических файлов.Я проверил, что корневой путь - / usr / local / www / nginx / documents - правильный.Оттуда Nginx обслуживает статические файлы.Следующий скрипт phpinfo.php находится в документах.
<?php
// Show all information, defaults to INFO_ALL
phpinfo();
?>
php - я дал результаты, включающие следующие строки:
Environment
OLDPWD => /usr/local/etc/nginx
--snip--
PWD => /usr/local/www/nginx/documents
PHP Variables
$_SERVER['OLDPWD'] => /usr/local/etc/nginx
--snip--
$_SERVER['PWD'] => /usr/local/www/nginx/documents
Сценарии php командной строки работают.
Все выглядит правильно, но сценарии php не работаютзапускать, когда им служит nginx.