Laravel空白白屏 - Centos 7,NGINX和PHP7.1



我在Eclipse中使用PDT开发了一个Laravel应用程序。一切都在我的开发机器上完美运行。我已经部署到运行 PHP 7.1、套接字模式下的 PHP-FPM 和 NGINX 的 Centos 7 服务器,我得到的只是一个空白的白屏。如果我只用一个phpinfo()脚本设置另一个虚拟NGINX站点,那么它可以工作,所以我知道PHP工作正常。

我已经研究了我能找到的所有答案,并尝试了与存储目录和引导/缓存目录等权限相关的所有常见事情。

没有任何东西写入存储/日志目录,NGINX日志或PHP-FPM日志中没有错误。没有任何迹象表明发生了什么,我现在不知道如何继续寻找错误的根源

如果我使用以下方法启动服务器:

php artisan serve 

然后应用程序运行没有任何问题!

我可以使用哪些其他调试/跟踪方法来查找问题的根源?

谢谢

对于将来偶然发现这个问题的人,经过很多挠头,我终于解决了我的问题。

问题出在虚拟主机的 NGINX 配置上。我使用了Laravel部署指南中给出的示例配置(根据我的本地配置进行了调整)。与 PHP 文件相关的部分显示为:

location ~ .php$ {
fastcgi_split_path_info ^(.+.php)(/.+)$;
fastcgi_pass unix:/var/run/php-fpm/php-fpm.sock;
fastcgi_index index.php;
include fastcgi_params;
}

我决定按照我在howtoforge上找到的教程尝试安装基本安装。这非常有效,我可以看到该过程与虚拟主机之间的唯一区别是与PHP文件相关的部分。一旦我更改了虚拟主机以匹配教程,我的应用程序立即运行。更新的部分是:

location ~ .php$ {
try_files $uri =404;
fastcgi_split_path_info ^(.+.php)(/.+)$;
fastcgi_pass unix:/var/run/php-fpm/php-fpm.sock;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}

这两个配置之间的唯一区别是添加了以下行:

fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;

这让一切变得不同

查看NGINX网站,我在PHP Fast CGI页面上发现了这个注释(我的服务器是CentOS 7:

SCRIPT_FILENAME参数是必需的,因为它被传递给 PHP FPM 以确定脚本名称。

在许多Linux发行版的NGINX版本中,这个参数已经添加到fastcgi_params文件中,即/etc/nginx/fastcgi_params,因此用户可以通过include指令导入所有CGI参数,即include fastcgi_params。但对于某些发行版,例如 CentOS,此参数fastcgi_params文件中不存在。

如果未设置此参数,PHP FPM 将响应 200 OK 并显示空内容,并且没有错误或警告。有关CGI参数的更多信息,请参阅nginx初学者指南,PHP和RFC3875中的$ _SERVER。

希望这将在未来对其他人有所帮助。

最新更新