システムをPHP7-FPMとnginxに更新しようとしていますが、このセットアップをWebで見つけたものに従って機能させるために必要なすべての手順を実行しました(主に https://ungeek.be/2016/08/php7-fpm-nginx-debian / 、フランス語)、しかし役に立たない:nginxはログファイルに特定のエラー/情報なしで私にエラー500ページを投げ続けます。
Nginxバージョン:nginx/1.10.3(パッケージnginx-full)PHP-FPMバージョン:PHP 7.0.15-1(dotdeb)
私が従う手順は次のとおりです。
これをデバッグしようとしましたが、/ var/logs/nginx/*にも/var/logs/php7.0-fpm.logにもエラーは記録されませんでした(まあ、私が得るエラー500に関しては何もありません)。生成されるメッセージは次のとおりです。
127.0.0.1 --- [03/Feb/2017:00:39:53 +0100] "GET /app.php HTTP/1.1" 500 507 "-" "Mozilla/5.0(X11; Linux x86_64; rv:45.0)Gecko/20100101 Firefox/45.0 "
bookwormサイトファイル(一部はNginxのWebサイトで入手可能なSymfonyレシピから取得されています):
server {
listen 80 default_server; # with or without, doesn't matter
server_name some.hostname; # actually set to a resolvable server
root /opt/git/Bookworm/web/;
index index.php app.php;
location / {
# try to serve file directly, fallback to app.php
try_files $uri /app.php$is_args$args;
}
# DEV
location ~ ^/(app_dev|config)\.php(/|$) {
fastcgi_pass unix:/run/php/php7-fpm-pool_bookworm.sock; # the socket file exists
fastcgi_split_path_info ^(.+\.php)(/.*)$;
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME $realpath_root$fastcgi_script_name;
fastcgi_param DOCUMENT_ROOT $realpath_root;
}
# PROD
location ~ ^/app\.php(/|$) {
fastcgi_pass unix:/run/php/php7-fpm-pool_bookworm.sock; # the socket file exists
fastcgi_split_path_info ^(.+\.php)(/.*)$;
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME $realpath_root$fastcgi_script_name;
fastcgi_param DOCUMENT_ROOT $realpath_root;
# Prevents URIs that include the front controller. This will 404:
# http://domain.tld/app.php/some-path
# Remove the internal directive to allow URIs like this
# internal; # with or without, doesn't matter
}
# return 404 for all other php files not matching the front controller
# this prevents access to other php files you don't want to be accessible.
#location ~ \.php$ {
# return 404;
# }
error_log /var/log/nginx/bookworm_error.log;
access_log /var/log/nginx/bookworm_access.log;
location ~ /\.ht {
deny all;
}
}
プール(bookworm.conf)ファイル:
[bookworm]
user = naeikindus
group = naeikindus
listen = /run/php/php7-fpm-pool_$pool.sock
listen.owner = www-data
listen.group = www-data
process.priority = 0
pm = dynamic
pm.max_children = 50
pm.start_servers = 2
pm.min_spare_servers = 1
pm.max_spare_servers = 3
pm.status_path = /fpm-status-$pool
catch_workers_output = yes
php_admin_value[error_log] = /var/log/php-fpm/pool_$pool.log
php_admin_flag[log_errors] = on
env[PATH] = /sbin:/bin:/usr/sbin:/usr/bin
ファイルのアクセス許可のサンプル:
ls -lah /opt/git/Bookworm/web
total 64K
drwxr-xr-x 3 naeikindus naeikindus 4.0K Jan 12 22:50 .
drwxr-xr-x 10 naeikindus naeikindus 4.0K Feb 2 22:08 ..
-rw-r--r-- 1 naeikindus naeikindus 1.2K Jan 12 22:48 app_dev.php
-rw-r--r-- 1 naeikindus naeikindus 2.1K Jan 12 22:48 Apple-touch-icon.png
-rw-r--r-- 1 naeikindus naeikindus 631 Jan 12 22:48 app.php
drwxr-xr-x 2 naeikindus naeikindus 4.0K Jan 12 22:50 bundles
-rw-r--r-- 1 naeikindus naeikindus 21K Jan 12 22:50 config.php
-rw-r--r-- 1 naeikindus naeikindus 6.4K Jan 12 22:48 favicon.ico
-rw-r--r-- 1 naeikindus naeikindus 3.3K Jan 12 22:48 .htaccess
-rw-r--r-- 1 naeikindus naeikindus 116 Jan 12 22:48 robots.txt
l /run/php/php7*
-rw-r--r-- 1 root root 5 Feb 3 01:01 /run/php/php7.0-fpm.pid
srw-rw---- 1 www-data www-data 0 Feb 3 01:01 /run/php/php7.0-fpm.sock
srw-rw---- 1 www-data www-data 0 Feb 3 01:01 /run/php/php7-fpm-pool_bookworm.sock
念のため、使用しようとしているユーザー(naeikindus)もwww-dataグループのメンバーです。
そして最後に、php.ini(正直に言うと私が見つけたすべてのもの)は、私が見つけたすべての表示エラーとともに、正しいタイムゾーン(十分に確信が持てない:-/)を宣言します。また、cgi.fix_pathinfo = 0/1で試しましたが、うまくいきませんでした。 nginxとphp-fpmの両方が開始されます。
また、別の「ダミー」サイトを試してみました(派手なPHPフレームワークはなく、古いものだけ)
ここの誰かが解決策やアイデアを持っているなら、それは私に大いに役立つでしょう。どうもありがとう !
----編集----
Nginx -Vの全出力:
nginxバージョン:OpenSSL1.0.1tで構築されたnginx/1.10.3 2016年5月3日TLSSNIサポートが有効な構成引数:-with-cc-opt = '-g -O2 -fstack-protector-strong -Wformat -Werror = format- security -D_FORTIFY_SOURCE = 2 '-with-ld-opt ='-Wl、-z、relro -Wl、-z、now '-prefix =/usr/share/nginx --conf-path =/etc/nginx /nginx.conf --http-log-path =/var/log/nginx/access.log --error-log-path =/var/log/nginx/error.log --lock-path =/var/lock /nginx.lock --pid-path =/run/nginx.pid --modules-path =/usr/lib/nginx/modules --http-client-body-temp-path =/var/lib/nginx/body --http-fastcgi-temp-path =/var/lib/nginx/fastcgi --http-proxy-temp-path =/var/lib/nginx/proxy --http-scgi-temp-path =/var/lib/nginx/scgi --http-uwsgi-temp-path =/var/lib/nginx/uwsgi --with-debug --with-pcre-jit --with-ipv6 --with-http_ssl_module --with-http_stub_status_module- -with-http_realip_module --with-http_auth_request_module --with-http_v2_module --with-http_dav_module --with-file-aio --with-threads --with-http_addition_module --with-http_geoip_module = dynamic --with-http_gunzip_module --with-http_gzip_static_module --with-http_image_filter_module = dynamic --with-http_secure_link_module --with-http_sub_module --with-http_xslt_module = dynamic --with-stream = dynamic --with-stream_ssl_module- with-mail = dynamic --with-mail_ssl_module --add-dynamic-module =/usr/src/builddir/debian/modules/nginx-auth-pam --add-module =/usr/src/builddir/debian/modules/nginx-dav-ext-module --add-module =/usr/src/builddir/debian/modules/nginx-echo --add-module =/usr/src/builddir/debian/modules/nginx-upstream-fair --add-module =/usr/src/builddir/debian/modules/ngx_http_substitutions_filter_module --add-module =/usr/src/builddir/debian/modules/nginx-cache-purge --add-module =/usr/src/builddir/debian/modules/nginx-x-rid-header --with-ld-opt = -lossp-uuid
情報を処理します:
ps axuf:
www-data 3798 0.0 0.0 106428 3596 ? S 14:55 0:00 _ nginx: worker process
naeikin+ 3811 0.0 0.1 405828 22680 ? S 14:55 0:00 _ php-fpm: pool bookworm
CLIから直接PHPを呼び出すと、意図したとおりに機能します。SELinuxは使用できないようです(ライブラリのみがインストールされています)。
構成全体は機能していますが、PHPプロジェクトは機能していません。そして、ログは明らかにプロジェクトのディレクトリに保存されていました。
いくつかのトラブルシューティング手順が推奨されており、他の場所では見たことがないため(socatコメントなど)、この質問を削除しません(他の誰かが削除すると思われる場合は、削除してください)。また、エラーの最も明白な(しかし見落とされがちな)原因であるプロジェクトのコード自体を確認するように人々に思い出させるかもしれません。