我在 Ubuntu 14.04 服务器上全新安装了nginx
和 ,php5-fpm
并进行了如下所示的更改以使配置正常工作。当我浏览到包含 的目录index.php
或尝试浏览phpinfo.php
文件时,浏览器会尝试下载该文件(即 PHP 未处理该文件并返回响应)。
如果我浏览到任何其他 php 文件,例如process.php
或test.php
它运行良好。
配置
已更新/etc/php5/fpm/pool.d/www.conf
以监听 TCP 套接字
listen = 127.0.0.1:9000
文件:/etc/nginx/nginx.conf
user www-data;
worker_processes 4;
pid /run/nginx.pid;
events {
worker_connections 768;
# multi_accept on;
}
http {
sendfile on;
tcp_nopush on;
tcp_nodelay on;
keepalive_timeout 65;
types_hash_max_size 2048;
include /etc/nginx/mime.types;
default_type application/octet-stream;
access_log /var/log/nginx/access.log;
error_log /var/log/nginx/error.log;
gzip on;
gzip_disable "msie6";
include /etc/nginx/conf.d/*.conf;
include /etc/nginx/sites-enabled/*;
}
文件:/etc/nginx/sites-available/default
server {
listen 80 default_server;
listen [::]:80 default_server ipv6only=on;
root /home/user/www;
index index.php index.html index.htm;
autoindex on;
server_name _;
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;
}
location ~ \.php$ {
# Try a document root
root /home/user/www
# 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;
}
}
当出现错误(下载而不是处理页面)时,查看日志文件
时没有任何内容显示:tail -f
/var/log/php5-fpm.log
/var/log/nginx/error.log
/var/log/nginx/access.log
这个配置有什么问题?
答案1
您的location ~ \.php$
有root /home/user/www
,这是不必要的,因为相同的root
已经在服务器级别定义。定义也缺少分号。
因此,删除多余的root
定义,看看是否有帮助。
答案2
尝试放置移动线
include fastcgi_params;
从块中的最后一个到第一个
location ~ \.php$ {
因为它将重新加载默认参数,所以你的自定义参数将被替换