LNMP一键安装包给thinkphp6框架配置虚拟目录500错误

先说一句,Ubuntu22.04真是好,安装了双系统后,在Ubuntu-LNMP 1.9一键安装包环境,想搞一搞TP6,修改伪静态目录不生效,一开始生成虚拟主机的时候没有生成错误响应日志,搞半天也想不出来是哪里的问题,天气炎热,逐渐烦躁。

加上错误日志,来搞一下

在 /usr/local/nginx/conf/yourdomain.com.conf 文件中的 access_log 下面加上一段代码,文件名随意

error_log /home/wwwlogs/yourdomain.com_error.log notice;

访问一遍你的域名地址,重现一下错误,然后我们来看错误日志~如果没有文件,可能是没有写权限,手动创建后重试

错误类似于下面这样

[error] 31194#0: *21 FastCGI sent in stderr: "PHP message: PHP Warning:  require(): open_basedir restriction in effect.File(/home/wwwroot/yourdomain.com/tp/thinkphp/base.php) is not within the allowed path(s): (/home/wwwroot/yourdomain.com/tp/public/:/tmp/:/proc/) in /home/wwwroot/yourdomain.com/tp/public/index.php on line 16PHP message: PHP Warning:  require(/home/wwwroot/yourdomain.com/tp/thinkphp/base.php): failed to open stream: Operation not permitted in /home/wwwroot/yourdomain.com/tp/public/index.php on line 16PHP message: PHP Fatal error:  require(): Failed opening required '/home/wwwroot/yourdomain.com/tp/public/../thinkphp/base.php'

重点在这个 open_basedir ,它是用来设置防跨目录的,记得在文档上看到过,原文如下:

在 Thinkphp、codeigniter、Laravel 等框架下,网站目录一般是在 public 下,但是 public 下的程序要跨目录调用 public 上级目录下的文件

因为 LNMP 默认是不允许跨目录访问的,所以都是必须要将防跨目录访问的设置去掉,所以有时候这些框架类的程序提示 500 错误也可能是这个问题引起的

OK,因为安装的是 1.9版本的,所以直接在 lnmp1.9/tools/ 目录下执行sudo sh remove_open_basedir_restriction.sh 进行移除

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。