Debian 8下Nginx环境中PHP无法运行的问题求助
修复Debian 8 Nginx中PHP无法运行的问题
看起来你遇到的核心问题是HTTPS的server块缺少必要的配置,导致重定向后的请求无法正确处理PHP文件。让我一步步帮你解决:
问题分析
你的HTTP server块(80端口)配置了网站根目录、索引文件和PHP解析规则,但当请求被重定向到HTTPS(443端口)后,Nginx会使用HTTPS server块的配置——而你的HTTPS块里完全没有设置root、index和PHP处理的location规则:
- 这就是为什么Nginx会去
/usr/share/nginx/html找文件(默认根目录),而你的info.php在/var/www/html,所以报404; - 当你把文件移到默认目录后,因为没有PHP解析规则,Nginx把PHP文件当成静态资源直接下载,而不是交给php-fpm处理。
解决方案
1. 修改Nginx配置文件
编辑你的站点配置文件(通常路径是/etc/nginx/sites-available/default),把HTTPS server块补充完整,最终配置如下:
server { listen 80 default_server; listen [::]:80 default_server; server_name my-server.de www.my-server.de; # 只保留HTTP到HTTPS的重定向逻辑 return 301 https://$server_name$request_uri; } server { listen 443 ssl default_server; listen [::]:443 ssl default_server; server_name my-server.de www.my-server.de; include snippets/ssl-my-server.de.conf; include snippets/ssl-params.conf; # 配置网站根目录 root /var/www/html; # 设置索引文件优先级,确保index.php排在前面 index index.php index.html index.htm index.nginx-debian.html; # 处理静态资源请求 location / { try_files $uri $uri/ =404; } # 处理PHP请求,交给php5-fpm解析 location ~ \.php$ { include snippets/fastcgi-php.conf; fastcgi_pass unix:/var/run/php5-fpm.sock; } # 禁止访问.ht文件 location ~ /\.ht { deny all; } }
2. 验证配置并重启Nginx
先检查配置文件是否有语法错误:
nginx -t
如果输出显示test is successful,就重启Nginx使配置生效:
service nginx restart
3. 确保php5-fpm服务正常运行
PHP文件需要php-fpm来解析,检查服务状态:
service php5-fpm status
如果服务未运行,启动它:
service php5-fpm start
4. 检查文件权限
确保网站根目录下的文件权限正确,让Nginx能读取:
chown -R www-data:www-data /var/www/html chmod -R 755 /var/www/html
做完这些步骤后,再访问https://my-server.de/info.php,应该就能正常显示phpinfo页面了。
内容的提问来源于stack exchange,提问作者unlimited101
相关产品推荐
相关产品推荐

