LNMP + Laravel 页面空白 HTTP 状态200

最近公司新上项目,没用运维只能自己上了,用的LNMP,基本上有点linux基础就能搭建了。搭建参考:LNMP一键安装,这里主要记录踩的坑和解决方法。

1.项目安装完配置上传项目文件后,访问时 500 错误

1.1 错误分析:

服务器 500 错误一般是 Nginx 站点配置的问题

1.2 解决方法:

执行 service nginx reload 一般能看到报错。具体问题具体解决。这里贴一下我的Nginx站点配置。

# lnmp 站点配置一般在 /usr/local/nginx/conf/vhost/ 下
server
    {
        listen 80;
        #listen [::]:80;
        server_name www.rick.com ;
        index index.html index.htm index.php default.html default.htm default.php;
        # yii2
        # root  /home/wwwroot/www.guaosi.com/web;
        # thinkphp5跟laravel5
        root  /home/wwwroot/www.guaosi.com/public;
		
		# 设置项目可以加载的路径
        #set $basedir "open_basedir=/home/wwwroot/www.rick.com/:/tmp/:/proc/";
        include rewrite/none.conf;
        #error_page   404   /404.html;

        # Deny access to PHP files in specific directory
        #location ~ /(wp-content|uploads|wp-includes|images)/.*\.php$ { deny all; }

        include enable-php.conf;
		
		# 不同框架的重定向规则 (三选一,不然会报错)
        # yii2 nginx规则
        location / {
         if (!-e $request_filename){
           rewrite ^/(.*) /index.php last;
          }
        }
        # thinkphp5 nginx规则
         location / {
          if (!-e $request_filename) {
                rewrite ^(.*)$ /index.php?s=$1 last;
          }
       }
        # laravel5 nginx规则
        location / {
            try_files $uri $uri/ /index.php?$query_string;
        }


        location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$
        {
            expires      30d;
        }

        location ~ .*\.(js|css)?$
        {
            expires      12h;
        }

        location ~ /.well-known {
            allow all;
        }

        location ~ /\.
        {
            deny all;
        }
        access_log  /home/wwwlogs/www.rick.com.log;
 }
1.3 另一个Laravel 项目 + Nginx 常见的 500 错误是 open_basedir 参数导致

该参数的主要作用是:指定项目目录,不允许访问上级目录。这在框架中几乎不能避免的,因为框架中,经常要加载各种类文件,插件等。

解决方法:在 /usr/local/php/etc/fastcgi_params  或者 fastcgi.conf 中 注释掉该项:
fastcgi_param PHP_ADMIN_VALUE "open_basedir=$document_root/:/tmp/:/proc/";

重新加载 Nginx 配置: lnmp nginx reload

2. 服务器502错误,Nginx,php-fpm各项程序运行正常

2.1 错误分析:

Nginx,php-fpm 各种程序都能正常启动,说明可能不是配置问题,查看各个程序的log,确定问题原因。LNMP 日志地址 /home/wwwlogs/

2.2 解决错误

storage\logs我们能看到具体的错误日志,一般是因为open_dir等函数被禁用。修改 /usr/local/php/etc/php.init 搜索 disable_functions 删除掉 open_dir 等项函数。

重启 php-fpm :lnmp php-fpm reload

3. 页面空白 HTTP状态 200 ,Nginx,php-fpm,站点log都没有报错

3.1 错误分析

1.查看状态码是200,各种日志中没有报错,一般可以确定不是环境配置问题

2.考虑一下框架文件是不是有缺失,打印错误日志发现没有错误,依然是200

3.拉一个官方的空白laravel试试,发现没问题。就感觉应该是项目的配置有问题

3.2 解决方法

拷贝一份干净的 .env.example 文件,修改其中的数据库配置选项,添加自己额外的配置项目。

划重点 : 此时需要使用php artisan key:generate 生成新的app_key,粘贴其他项目的app_key 会直接导致页面空白。app_name 使用默认的Laravel即可,不然也会导致页面空白。

最后查看网站,此时我们能发现已经能够正常访问。

虽然说修改这个错误很简单,但是我却足足花了一个下午的时间。因为 页面只是空白,各个程序不会报错,很难确定错误位置。在网络上搜索,也都说解决方法是

vim /etc/nginx/fastcgi_params
# 添加参数
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_param PATH_INFO       $fastcgi_script_name;

但是这个并没有解决我的问题。有时候最难修改的BUG,并不是最需要多么高超的技术,而是它存在于一个你很难发现的地方。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

唐大帅

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值