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

Ste*_* H. 2 php nginx laravel laravel-5

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

我已经研究了所有可以找到的答案,并尝试了与存储目录和bootstrap/cache目录等权限相关的所有常见事项.

没有任何内容写入storage/logs目录,NGINX日志或PHP-FPM日志中没有错误.没有任何迹象表明发生了什么,我现在迷失了如何继续找到错误的来源

如果我使用以下命令启动服务器

php artisan serve 
Run Code Online (Sandbox Code Playgroud)

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

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

谢谢

Ste*_* H. 7

对于任何在将来偶然发现这个问题的人来说,经过大量的努力,我终于解决了我的问题.

问题在于我的虚拟主机的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;
}
Run Code Online (Sandbox Code Playgroud)

我决定尝试按照我在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;
}
Run Code Online (Sandbox Code Playgroud)

这两个配置之间的唯一区别是增加了这条线:

    fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
Run Code Online (Sandbox Code Playgroud)

这让所有人都有所不同

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

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

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

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

希望这有助于将来的其他人.