在 LNMP 一键安装包的环境下安装 ThinkPHP5 访问报错 500 的解决方法

真的是个大坑,不过因为什么看题图就可以看出来

目前 LNMP 一键安装包已经是 1.5 的版本了,一个朋友找我帮她看服务器环境的时候出现了这个问题,修改伪静态目录不生效

先来吐槽一下,LNMP 一键安装包在生成虚拟主机的时候没有生成错误响应日志,搞半天没反应过来是哪里的问题

同事帮我看了一下,让加上错误日志,来搞一下

/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/tp5/thinkphp/base.php) is not within the allowed path(s): (/home/wwwroot/yourdomain.com/tp5/public/:/tmp/:/proc/) 
in /home/wwwroot/yourdomain.com/tp5/public/index.php on line 16
PHP message: PHP Warning:  require(/home/wwwroot/yourdomain.com/tp5/thinkphp/base.php): 
failed to open stream: Operation not permitted in /home/wwwroot/yourdomain.com/tp5/public/index.php on line 16
PHP message: PHP Fatal error:  require(): Failed opening required '/home/wwwroot/yourdomain.com/tp5/public/../thinkphp/base.php'

看了一眼就盯上这个open_basedir玩意,它是用来设置防跨目录的,记得在文档上看到过,原文如下:

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

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

OK,因为安装的是 1.5 版本的,所以直接使用lnmp1.5/tools/目录下的./remove_open_basedir_restriction.sh进行移除

其他版本具体操作如下:

LNMP 1.4 上如果不想用防跨目录或者修改.user.ini的防跨目录的目录还需要将/usr/local/nginx/conf/fastcgi.conf里面的fastcgi_param PHP_ADMIN_VALUE "open_basedir=$document_root/:/tmp/:/proc/";在该行行前添加 # 或删除改行,需要重启 Nginx

LNMP 1.4 上就可以直接使用lnmp1.4/tools/目录下的./remove_open_basedir_restriction.sh进行移除

平滑重载一下 Nginx 服务,访问页面看到了熟悉的 ThinkPHP 初始页面,搞定收工

沈唁志,一个PHPer的成长之路! 原创文章采用CC BY-NC-SA 4.0协议进行许可,转载请注明:转载自:在 LNMP 一键安装包的环境下安装 ThinkPHP5 访问报错 500 的解决方法

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏一个默默无闻的工程师的日常

OpenStack Queens Cinder Multi-Attach 功能

39540
来自专栏散尽浮华

Centos 6.9下部署Oracle 11G数据库环境的操作记录

操作系统:Centos6.9(64Bit) Oracle:11g 、11.2.0.4.0版本 Ip地址:172.16.220.139 废话不多说了,下面记录安装...

28590
来自专栏mathor

如何让局域网内的其他人访问到自己在Tomcat上部署的项目

 学JSP第三节课,今天老师上课讲了开启Tomcat之后,将自己电脑的文件放到指定的目录下,可以让同宿舍的人访问并且下载,老师只是提了一下,没有具体讲,后来我看...

3.6K30
来自专栏Felix的技术分享

Stetho的通信原理

36330
来自专栏容器云生态

Docker1.12尝试

前言:在docker1.12中默认增加了swarm mode 编排功能,并且官方支持更多的插件来进行docker的网路和外接存储插件,不过目前测试swarm m...

500100
来自专栏小狼的世界

Kubernetes基础:编排调度的那些Controllers

Kubernetes提供了很多Controller资源来管理、调度Pod,包括Replication Controller、ReplicaSet、Deploym...

20820
来自专栏zhisheng

SpringBoot RabbitMQ 整合使用

前提 上次写了篇文章,《SpringBoot Kafka 整合使用》,阅读量还挺高的,于是想想还是把其他几种 MQ 也和 SpringBoot 整合使用下。 下...

33590
来自专栏大魏分享(微信公众号:david-share)

干货巨献:Openshift3.9的网络管理大全.加长篇---Openshift3.9学习系列第二篇

OpenShift的OVS网络组件有三种模式:ovs-subnet、ovs-multitenant、ovs-networkpolicy。

33150
来自专栏Star先生的专栏

区块链源码学习 : obc-peer 环境搭建 ( 一 )

配置开发环境当前开发环境使用 varant 来运行一个 ubuntu 镜像,ubuntu 中运行着 docker 容器。主机 -> ubuntu -> dock...

49120
来自专栏JAVA高级架构

详解 Tomcat 的连接数与线程池

前言 在使用tomcat时,经常会遇到连接数、线程数之类的配置问题,要真正理解这些概念,必须先了解Tomcat的连接器(Connector)。 在前面的文章 详...

1.3K90

扫码关注云+社区

领取腾讯云代金券