Я использую Linux Mint 17. Я пытаюсь настроить PHP 7.1 или PHP 7.2 с nginx, но всякий раз, когда я обращаюсь к сценарию php, я получаю 500 Internal Server Error
. Каждый раз, когда я перезапускаю nginx или PHP, я не получаю ошибок.
Вот содержание /etc/nginx/conf.d/default.conf
:
server {
listen 80;
listen [::]:80 default_server ipv6only=on; ## listen for ipv6
server_name localhost;
#charset koi8-r;
#access_log /var/log/nginx/host.access.log main;
location / {
root /usr/share/nginx/html;
index index.php index.html index.htm;
}
#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/share/nginx/html;
}
# proxy the PHP scripts to Apache listening on 127.0.0.1:80
#
location ~ \.php$ {
proxy_pass http://127.0.0.1;
}
# pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
#
location ~ \.php$ {
root html;
fastcgi_pass unix:/var/run/php7.2-fpm.sock;
#fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
#fastcgi_param SCRIPT_FILENAME /scripts$fastcgi_script_name;
include fastcgi_params;
}
# deny access to .htaccess files, if Apache's document root
# concurs with nginx's one
#
location ~ /\.ht {
deny all;
}
}
Любая помощь будет принята с благодарностью, так как мне срочно нужно, чтобы это работало.
Я исправил ошибку 500, добавив worker_rlimit_nofile 100048
и изменение worker_connections
к 100048
. К сожалению, теперь появляется сообщение «Произошла ошибка», а в журналах отображается:
2018/02/11 21:53:23 [crit] 13219#13219: *1012 open() "/usr/share/nginx/html/50x.html" failed (24: Too many open files), client: 127.0.0.1, server: localhost, request: "GET /info.php HTTP/1.0", upstream: "http://127.0.0.1:80/info.php", host: "127.0.0.1"
2018/02/11 21:53:48 [crit] 13263#13263: *56464 connect() to 127.0.0.1:80 failed (99: Cannot assign requested address) while connecting to upstream, client: 127.0.0.1, server: localhost, request: "GET /info.php HTTP/1.0", upstream: "http://127.0.0.1:80/info.php", host: "127.0.0.1"
Я думаю, это не имеет ничего общего с worker
упомянутые вами настройки.
Также есть две локации location ~ \.php$ {
не имеет смысла. Я прочитал из ваших комментариев, что вы уже удалили первый:
location ~ \.php$ {
proxy_pass http://127.0.0.1;
}
Хорошо.
Теперь выясним, почему не работает PHP-fpm:
PHP-fpm установлен и запущен? Проверить с service php7.2-fpm status
Куда пропал файл сокета? Проверьте настройки в файле конфигурации вашего сокета здесь /etc/php/7.2/fpm/pool.d/
Проверьте, использует ли PHP-fpm правильного пользователя с разрешениями для папок приложения.
Другие проблемы с конфигурацией nginx:
Добавить try_files
:
location / {
try_files $uri $uri/ /index.php?$args;
}
удалить root html;
линия от вашего location ~ \.php$ {
раздел.
Не помещайте эти две строки в location
раздел. Просто добавьте их без location / { }
вокруг:
root /usr/share/nginx/html;
index index.php index.html index.htm;