open_basedir restriction in effect. File 解决思路

    
    遇到以下类似问题,你就可以看下去了,只要包涵open_basedir几乎就是通用的解决办法。

1
PHP Warning:  Phar::mapPhar(): open_basedir restriction in effect. File(/usr/local/bin/composer) is not within the allowed path(s): (/home/wwwroot/star/:/tmp/:/var/tmp/:/proc/) in /usr/local/bin/composer on line 23

首先我们来了解一下open_basedir是什么?

    
    根据官方对它的解释是安全设置,没有在设置中的路径将没有权限使用fopen等乱七八糟的东西,防止php触及一些不该操作的地方, 被人利用;

    
    这项配置是从php5.3.0开始的,有的例如宝塔可能会给你配置好; 自己撘的环境需要自己设置




解决办法

    
    综上所述,以及按错误提示。 我们只需要在php.iniopen_basedir中添加/usr/local/bin即可解决;


首先, 我们找到php.ini的位置,并使用vim打开它

1
2
3
4
5
# 会返回php.ini配置文件所在位置, 假定在 /usr/local/php/php.ini
$ php --ini

# 编辑
$ vim /usr/local/php/php.ini

输入/open_basedir 加回车搜索,并添加你的白名单目录

示例:我这里添加 /usr/local/bin

1
open_basedir = "/usr/local/bin/:/root/:/tmp/:/var/tmp/:/proc/"