问题
我有一台小型 Web 服务器,它托管一个执行非常小功能的小型 PHP 页面。我以前在另一台机器上托管它。我将网站移至一台使用不同操作系统的新机器,现在,任何查看网站的人都无法加载 PHP 页面。它似乎是从外部瘫痪的。网站上的其他页面可以访问。
它是什么
- Red Hat Enterprise Linux 服务器版本 7.2 (Maipo)
- nginx 版本:nginx/1.6.3
- PHP 5.4.16 (fpm-fcgi)
是 SELinux 吗?
这是我的第一个想法。我检查以确保将正确的上下文应用于我的 Web 服务器。所有服务器块都处于/var/www/
欺骗 SELinux 的状态,使其像 Apache 一样对待它们。
我尝试关闭 SELinux 来setenforce 0
测试是否是这个问题。没有任何变化,我又将其打开。
php-fpm
我通过 yum 安装了 php-fpm。
php.ini
我跟着文档并将cgi.fix_pathinfo
我的文件中的设置更改为 0。php.ini
如下所示。
cgi.fix_pathinfo=0
php-fpm.conf
根据网上文档,我确保该/etc/php-fpm.d/*.conf
目录包含在 php-fpm 安装中。守护进程也设置为 false。
include=/etc/php-fpm.d/*.conf
daemonize = no
www.conf
我也在网上关注过文档用于创建 php-fpm 套接字。我对配置文件的更改如下。
listen = /var/run/php-fpm/php-fpm.sock
listen.owner = nginx
listen.group = nginx
listen.mode = 0660
日志
来自的错误日志/var/log/php-fpm/error.log
没有什么帮助。
[30-Jan-2016 01:24:56] NOTICE: fpm is running, pid 29692
[30-Jan-2016 01:24:56] NOTICE: ready to handle connections
[30-Jan-2016 01:24:56] NOTICE: systemd monitor interval set to 10000ms
[30-Jan-2016 01:44:31] NOTICE: Terminating ...
[30-Jan-2016 01:44:31] NOTICE: exiting, bye-bye!
[30-Jan-2016 01:44:31] NOTICE: fpm is running, pid 30102
[30-Jan-2016 01:44:31] NOTICE: ready to handle connections
[30-Jan-2016 01:44:31] NOTICE: systemd monitor interval set to 10000ms
nginx
我也按照同样的方法配置了 nginx指导。此外,我能够确认 nginx 能够使用带有 的测试页面来为 PHP 页面提供服务<?php phpinfo(); ?>
。有关我的 PHP 安装的信息如预期般显示。
我对问题站点的服务器块如下。
server {
listen 443 ssl;
server_name example.com;
root /var/www/rit.j-f.co/public_html;
index index.php index.html index.htm;
access_log /var/www/rit.j-f.co/logs/rit.j-f.co_access.log;
error_log /var/www/rit.j-f.co/logs/rit.j-f.co_error.log error;
ssl on;
ssl_certificate /etc/ssl/certs/rit_j-f_co/rit_j-f_co-fullchain.pem;
ssl_certificate_key /etc/ssl/certs/rit_j-f_co/rit_j-f_co-privkey.pem;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_ciphers "ECDHE-RSA-AES256-GCM-SHA384:ECDHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-SHA384:ECDHE-RSA-AES128-SHA256:ECDHE-RSA-AES256-SHA:ECDHE-RSA-AES128-SHA:DHE-RSA-AES256-SHA256:DHE-RSA-AES128-SHA256:DHE-RSA-AES256-SHA:DHE-RSA-AES128-SHA:ECDHE-RSA-DES-CBC3-SHA:EDH-RSA-DES-CBC3-SHA:AES256-GCM-SHA384:AES128-GCM-SHA256:AES256-SHA256:AES128-SHA256:AES256-SHA:AES128-SHA:DES-CBC3-SHA:HIGH:!aNULL:!eNULL:!EXPORT:!DES:!MD5:!PSK:!RC4";
ssl_prefer_server_ciphers on;
location / {
try_files $uri $uri/ =404;
server_tokens off;
}
location ~ \.php$ {
try_files $uri =404;
fastcgi_pass unix:/var/run/php-fpm/php-fpm.sock;
fastcgi_index index.php;
fastcgi_read_timeout 120;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
error_page 404 /var/www/html/404.html;
error_page 500 502 503 504 /var/www/html/50x.html;
location ~* \.(js|css|png|jpg|jpeg|gif|ico)$ {
expires max;
log_not_found off;
}
location ~ /\. {
access_log off;
log_not_found off;
deny all;
}
}
server {
listen 80;
server_name example.com;
rewrite ^ https://$server_name$request_uri? permanent;
}
日志
服务器块的错误日志也没什么帮助。它们只包含有关丢失页面的琐碎错误(我可以自己修复)。
测试用例
我正在尝试测试的站点可以找到这里。您可以在同一网站上看到一个工作页面这里。首页使用 PHP,第二页不使用。网站源代码可在此处找到这里。
删除以下 PHP 行会使index.php
页面看起来像这样。
我一直尽力保持耐心并尝试自己找到解决方案,但我不知道该怎么做。我觉得我已经尝试了所有显而易见的方法,但日志对我毫无帮助。有什么建议吗?