Linux 主机环境
最后更新于:2022-04-01 21:26:51
> 部分 Linux 主机设置了 open_basedir(可将用户访问文件的活动范围限制在指定的区域,通常是入口文件根目录的路径) 选项,导致 ThinkPHP5 访问白屏或者报错
如果把`ThinkPHP5`部署在了`LAMP/LNMP`环境上很有可能出现白屏的情况,这个时候需要开启 php 错误提示来判断是否是因为设置了`open_basedir`选项出错。
打开 php.ini 搜索 `display_errors`,把 Off 修改为 On就开启了 php 错误提示,这时再访问之前白屏的页面就会出现错误信息。如果错误信息如下那么很有可能就是因为`open_basedir`的问题。
![](https://docs.gechiui.com/gc-content/uploads/sites/kancloud/2016-03-21_56ef62f0cde5a.jpg)
## php.ini 修改方法
把权限作用域由入口文件目录修改为框架根目录
打开 php.ini 搜索 `open_basedir`,把
~~~
open_basedir = "/home/wwwroot/tp5/public/:/tmp/:/var/tmp/:/proc/"
~~~
修改为
~~~
open_basedir = "/home/wwwroot/tp5/:/tmp/:/var/tmp/:/proc/"
~~~
如果你的 `php.ini` 文件的 `open_basedir` 设置选项是被注释的或者为 none,那么你需要通过 Apache 或者 Nginx 来修改
> php.ini 文件通常是在 /usr/local/php/etc 目录中,当然了这取决于你 LAMP 环境配置
## Apache 修改方法
Apache 需要修改 `httpd.conf` 或者同目录下的 `vhost` 目录下 `你的域名.conf` 文件,如果你的生成环境是 LAMP 一键安装包配置那么多半就是直接修改 `你的域名.conf` 文件
~~~
apache
├─vhost
├─www.thinkphp.cn.conf
├─......
├─httpd.conf
~~~
打开 你的域名.conf 文件 搜索 `open_basedir`,把
~~~
php_admin_value open_basedir "/home/wwwroot/www.thinkphp.cn/public/:/tmp/:/var/tmp/:/proc/"
~~~
修改为
~~~
php_admin_value open_basedir "/home/wwwroot/www.thinkphp.cn/:/tmp/:/var/tmp/:/proc/"
~~~
然后重新启动 `apache` 即可生效
> 域名.conf 文件通常是在 /usr/local/apache/conf 目录中,当然了这取决于你 LAMP 环境配置
## Nginx/Tengine 修改方法
`Nginx` 需要修改 `nginx.conf` 或者 `conf/vhost` 目录下 你的域名.conf 文件,如果你的生成环境是 LNMP/LTMP 一键安装包配置那么多半就是直接修改 你的域名.conf 文件
~~~
nginx
├─conf
├─vhost
├─www.thinkphp.cn.conf
├─nginx.conf
├─......
├─nginx.conf
~~~
打开 你的域名.conf 文件 搜索 `open_basedir`,把
~~~
fastcgi_param PHP_VALUE "open_basedir=/home/wwwroot/www.thinkphp.cn/public/:/tmp/:/proc/";
~~~
修改为
~~~
fastcgi_param PHP_VALUE "open_basedir=/home/wwwroot/www.thinkphp.cn/:/tmp/:/proc/";
~~~
然后重新启动 Nginx 即可生效
> 域名.conf 文件通常是在 /usr/local/nginx/conf/vhost 目录中,当然了这取决于你 LNMP/LTMP 环境配置
## fpm/fastcgi user.ini 修改方法
打开 项目根目录下找到 user.ini 文件,搜索 `open_basedir`,把
~~~
open_basedir=/home/wwwroot/www.thinkphp.cn/public/:/tmp/:/proc/
~~~
修改为
~~~
open_basedir=/home/wwwroot/www.thinkphp.cn/:/tmp/:/proc/
~~~
然后重新启动 `web 服务器` 即可生效
## 修改 ThinkPHP5 入口文件
直接修改 ThinkPHP5 的入口文件会把你的框架文件及程序目录暴露在外网,敬请注意安全防护。
修改入口文件方法请参考([**部署-虚拟主机环境**](129746))
';