问题

问题

问题

我有一台小型 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页面看起来像这样。

我一直尽力保持耐心并尝试自己找到解决方案,但我不知道该怎么做。我觉得我已经尝试了所有显而易见的方法,但日志对我毫无帮助。有什么建议吗?

相关内容