Nginx - FastCGI 在 stderr 中发送:“PHP 消息:PHP 注意:未定义的变量
Ngnix - FastCGI sent in stderr: "PHP message: PHP Notice: Undefined variable
我已经安装了 Ngnix 服务器并将其配置为:
server {
listen 80 default_server;
listen [::]:80 default_server ipv6only=on;
root /usr/share/nginx/html;
index index.php index.html index.htm;
# Make site accessible from http://localhost/
server_name localhost;
location / {
# First attempt to serve request as file, then
# as directory, then fall back to displaying a 404.
try_files $uri $uri/ =404;
# Uncomment to enable naxsi on this location
# include /etc/nginx/naxsi.rules
}
# Only for nginx-naxsi used with nginx-naxsi-ui : process denied requests
#location /RequestDenied {
# proxy_pass http://127.0.0.1:8080;
#}
# redirect server error pages to the static page /50x.html
#
error_page 500 502 503 504 /50x.html;
location = / {
# pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
#
location ~ \.php$ {
try_files $uri =404;
fastcgi_split_path_info ^(.+\.php)(/.+)$;
# # NOTE: You should have "cgi.fix_pathinfo = 0;" in php.ini
#
# # With php5-cgi alone:
# fastcgi_pass 127.0.0.1:9000;
# # With php5-fpm:
fastcgi_pass unix:/var/run/php5-fpm.sock;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$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;
#}
}
我收到这些错误(从我的 error.log 复制):
*9 FastCGI sent in stderr: "PHP message: PHP Notice: Undefined variable: confMsg in /usr/share/nginx/html/admin-interface/login.php on line 196" while reading upstream, client: 127.0.0.1, server: localhost, request: "GET /admin-interface/login.php HTTP/1.1", upstream: "fastcgi://unix:/var/run/php5-fpm.sock:", host: "localhost"
2015/12/16 00:27:37 [error] 952#0: *9 FastCGI sent in stderr: "PHP message: PHP Notice: Undefined index: username in /usr/share/nginx/html/admin-interface/login.php on line 245
PHP message: PHP Notice: Undefined index: username in /usr/share/nginx/html/admin-interface/login.php on line 249" while reading upstream, client: 127.0.0.1, server: localhost, request: "GET /admin-interface/login.php HTTP/1.1", upstream: "fastcgi://unix:/var/run/php5-fpm.sock:", host: "localhost"
我正在尝试使用 Ngnix 服务器配置此环境,此环境确实可以使用不同的主机。
我确实在 php.ini
中更改了 cgi.fix_pathinfo = 0
我的配置缺少什么?
很抱歉这个问题太模糊了,很难回答...
有什么问题吗??
从错误文件来看,这里没有问题。只是 PHP 通知。
看看这个:
error_page 500 502 503 504 /50x.html;
location = /50x.html {
你看不出有什么不对吗?您将 / 位置包含在错误位置中,这不是我朋友的逻辑......您在“/”下的 php 文件将永远不会以这种方式传递给 php5-fpm。除非我对你的要求一无所知,否则请这样做;
删除;
location = /50x.html {
及以下。
改为添加:
location ~ [^/]\.php(/|$) { #open location bracket
fastcgi_split_path_info ^(.+?\.php)(/.*)$;
if (!-f $document_root$fastcgi_script_name) { #open condition bracket
return 404;
} #close condition bracket
include fastcgi_params;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_pass unix:/var/run/php5-fpm.sock;
} #close location bracket
然后;
sudo nginx -t # to test your config.
如果有问题,请查找左括号和右括号,因为这似乎是您的克星(您位于为其打开括号的服务器块中 - 确保将其关闭)。如果全部通过;
sudo nginx -s reload
请您下次 post 编码时,花点时间删除所有垃圾评论。这将帮助您获得答案或至少对您的问题感兴趣。
如果一切顺利,您可以考虑为更多 robust/efficient 服务器添加这些位置配置;
# send expire headers
location ~* ^.+\.(ogg|ogv|svg|svgz|eot|otf|woff|mp4|ttf|rss|atom|jpg|jpeg|gif|png|ico|zip|tgz|gz|rar|bz2|doc|xls|exe|ppt|tar|mid|midi|wav|bmp|rtf)$ {
access_log off; # optional
log_not_found off; # optional
expires max;
}
location = ^/favicon.ico {
access_log off;
log_not_found off;
}
# robots noise...
location = ^/robots.txt {
log_not_found off;
access_log off;
allow all;
}
# block access to hidneen files (.htaccess per example)
location ~ /\. { access_log off; log_not_found off; deny all; }
如果您不了解设置,请不要添加。这就像在不知道它是什么类型的情况下盲目地给你的车加油一样。
这不是错误,而是通知。
脚本 /usr/share/nginx/html/admin-interface/login.php
正在访问当时不存在的变量 $confMsg
。
您可以更改 php.ini
中的错误报告级别(这也会影响其他脚本,您不想关闭通知..)或修复脚本中错误的变量访问。
第二种解决方案会更简单,因为您只需初始化 $confMsg = '';
。
我已经安装了 Ngnix 服务器并将其配置为:
server {
listen 80 default_server;
listen [::]:80 default_server ipv6only=on;
root /usr/share/nginx/html;
index index.php index.html index.htm;
# Make site accessible from http://localhost/
server_name localhost;
location / {
# First attempt to serve request as file, then
# as directory, then fall back to displaying a 404.
try_files $uri $uri/ =404;
# Uncomment to enable naxsi on this location
# include /etc/nginx/naxsi.rules
}
# Only for nginx-naxsi used with nginx-naxsi-ui : process denied requests
#location /RequestDenied {
# proxy_pass http://127.0.0.1:8080;
#}
# redirect server error pages to the static page /50x.html
#
error_page 500 502 503 504 /50x.html;
location = / {
# pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
#
location ~ \.php$ {
try_files $uri =404;
fastcgi_split_path_info ^(.+\.php)(/.+)$;
# # NOTE: You should have "cgi.fix_pathinfo = 0;" in php.ini
#
# # With php5-cgi alone:
# fastcgi_pass 127.0.0.1:9000;
# # With php5-fpm:
fastcgi_pass unix:/var/run/php5-fpm.sock;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$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;
#}
}
我收到这些错误(从我的 error.log 复制):
*9 FastCGI sent in stderr: "PHP message: PHP Notice: Undefined variable: confMsg in /usr/share/nginx/html/admin-interface/login.php on line 196" while reading upstream, client: 127.0.0.1, server: localhost, request: "GET /admin-interface/login.php HTTP/1.1", upstream: "fastcgi://unix:/var/run/php5-fpm.sock:", host: "localhost"
2015/12/16 00:27:37 [error] 952#0: *9 FastCGI sent in stderr: "PHP message: PHP Notice: Undefined index: username in /usr/share/nginx/html/admin-interface/login.php on line 245 PHP message: PHP Notice: Undefined index: username in /usr/share/nginx/html/admin-interface/login.php on line 249" while reading upstream, client: 127.0.0.1, server: localhost, request: "GET /admin-interface/login.php HTTP/1.1", upstream: "fastcgi://unix:/var/run/php5-fpm.sock:", host: "localhost"
我正在尝试使用 Ngnix 服务器配置此环境,此环境确实可以使用不同的主机。 我确实在 php.ini
中更改了 cgi.fix_pathinfo = 0我的配置缺少什么?
很抱歉这个问题太模糊了,很难回答... 有什么问题吗??
从错误文件来看,这里没有问题。只是 PHP 通知。
看看这个:
error_page 500 502 503 504 /50x.html;
location = /50x.html {
你看不出有什么不对吗?您将 / 位置包含在错误位置中,这不是我朋友的逻辑......您在“/”下的 php 文件将永远不会以这种方式传递给 php5-fpm。除非我对你的要求一无所知,否则请这样做;
删除;
location = /50x.html {
及以下。
改为添加:
location ~ [^/]\.php(/|$) { #open location bracket
fastcgi_split_path_info ^(.+?\.php)(/.*)$;
if (!-f $document_root$fastcgi_script_name) { #open condition bracket
return 404;
} #close condition bracket
include fastcgi_params;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_pass unix:/var/run/php5-fpm.sock;
} #close location bracket
然后;
sudo nginx -t # to test your config.
如果有问题,请查找左括号和右括号,因为这似乎是您的克星(您位于为其打开括号的服务器块中 - 确保将其关闭)。如果全部通过;
sudo nginx -s reload
请您下次 post 编码时,花点时间删除所有垃圾评论。这将帮助您获得答案或至少对您的问题感兴趣。
如果一切顺利,您可以考虑为更多 robust/efficient 服务器添加这些位置配置;
# send expire headers
location ~* ^.+\.(ogg|ogv|svg|svgz|eot|otf|woff|mp4|ttf|rss|atom|jpg|jpeg|gif|png|ico|zip|tgz|gz|rar|bz2|doc|xls|exe|ppt|tar|mid|midi|wav|bmp|rtf)$ {
access_log off; # optional
log_not_found off; # optional
expires max;
}
location = ^/favicon.ico {
access_log off;
log_not_found off;
}
# robots noise...
location = ^/robots.txt {
log_not_found off;
access_log off;
allow all;
}
# block access to hidneen files (.htaccess per example)
location ~ /\. { access_log off; log_not_found off; deny all; }
如果您不了解设置,请不要添加。这就像在不知道它是什么类型的情况下盲目地给你的车加油一样。
这不是错误,而是通知。
脚本 /usr/share/nginx/html/admin-interface/login.php
正在访问当时不存在的变量 $confMsg
。
您可以更改 php.ini
中的错误报告级别(这也会影响其他脚本,您不想关闭通知..)或修复脚本中错误的变量访问。
第二种解决方案会更简单,因为您只需初始化 $confMsg = '';
。