ThinkPHP5 在 LNMP 环境下访问出现 HTTP ERROR 500

来源:csdn博客 分类: 文章浏览史 发布时间:2021-12-16 12:41:08 最后更新:2021-12-16 浏览:304
转载声明:
本文为摘录自“csdn博客”,版权归原作者所有。
温馨提示:
为了更好的体验,请点击原文链接进行浏览
摘录时间:
2021-12-16 12:41:08

ThinkPHP5 在 LNMP 环境下访问出现 HTTP ERROR 500

这个问题以前遇到过很几次,今天刚好遇到一个朋友又问我来着,解决完了,想着就给记录一下吧,问题不管大小,记录下来 ~~~
当然,这个并不是TP5框架问题了,你换一个框架使用LNMP的的命令模式配置或者手动文件配置项目也会出现这种情况,那么为什么会出现呢?
以TP5为例:
首先出错了,会出现这样一个页面(500…)
在这里插入图片描述

查错

这个时候别着急,你得知道这是为什么出现这个500错误。来个简单的,在入口文件 index.php中加入:

//打开所有错误报错级别
error_reporting(E_ALL);
ini_set('display_errors', '1');

运行,现在你会看到这样一个错误信息:
在这里插入图片描述
看到这个报错信息就很清楚了,这是因为

由于 open_basedir 配置的问题导致php不能引入其授权目录上级及其以上的文件造成。

知道了原因就好解决了,我们先来看一下第一个关于open_basedir的配置
注意:以下所有路径信息仅供参考。

//php.ini文件 path:/usr/local/php/etc/php.ini
;open_basedir =

如果不出意外,你的是默认注释状态,不用理会,来看下一个

//.user.ini文件 path:/home/wwwroot/default/.user.ini
//找不到使用命令 find / -name .user.ini
open_basedir=/home/wwwroot/default:/tmp/:/proc/

到这里我想就很明白了,就是因为存放项目路径问题,已经存在设置的open_basedir值和项目目录不匹配,无法授权目录,再来看另一个地方

//fastcgi.conf文件 path:/home/wwwroot/default/.user.ini
//找不到使用命令 find / -name fastcgi.conf
//最下面一行
fastcgi_param PHP_ADMIN_VALUE "open_basedir=$document_root/:/tmp/:/proc/:/";

现在想要该项目运行起来只需要修改fasrcgi.conf中的这句话为:

fastcgi_param PHP_ADMIN_VALUE "open_basedir=/home/wwwroot/:/tmp/:/proc/:/";

保存退出,现在重启运行即可。

补充

当然这个地方这么做是不太完善的,你需要的是对每个项目做配置,这个地方其实不需要修改,但是这样确实可以解决问题,比如,你可以这样,在php.ini中添加这样两行代码

[HOST=你的域名]
open_basedir=/home/wwwroot/项目文件夹/:/tmp/
[PATH=/home/wwwroot/wwwroot/项目文件夹/public]

试一试吧。写的有问题或者有更好解决办法的欢迎留言~~~

php技术微信