您的位置:首页 > Web前端

php 运行时 is not writable、open_basedir restriction in effect

2017-06-05 18:37 861 查看
在命令行运行php时,如果命令中有文件操作,经常会出现如下错误。

PHP Warning:  realpath(): open_basedir restriction in effect. File(/a/apps/linuxdef/composer) is not within the allowed path(s): (/tmp/) in - on line 626
PHP Warning:  is_writeable(): open_basedir restriction in effect. File(/a/apps/linuxdef/composer) is not within the allowed path(s): (/tmp/) in - on line 628
The installation directory "/a/apps/linuxdef/composer" is not writable


这是因为php.ini中open_basedir可将用户访问文件的活动范围限制在指定的区域。

可用符号”.”来代表当前目录。注意用open_basedir指定的限制实际上是前缀,而不是目录名 。

举例来说: 若”open_basedir = /dir/user”, 那么目录 “/dir/user” 和 “/dir/user1”都是

可以访问的。所以如果要将访问限制在仅为指定的目录,请用斜线结束路径名。例如设置成:

“open_basedir = /dir/user/”

open_basedir也可以同时设置多个目录, 在Windows中用分号分隔目录,在任何其它系统中用

冒号分隔目录 。当其作用于Apache模块时,父目录中的open_basedir路径自动被继承。

有三种方法可以在Apache中为指定的用户做独立的设置:

(a) 在Apache的httpd.conf中Directory的相应设置方法:

php_admin_value open_basedir /usr/local/apache/htdocs/


设置多个目录可以参考如下:

php_admin_value open_basedir /usr/local/apache/htdocs/:/tmp/


(b) 在Apache的httpd.conf中VirtualHost的相应设置方法:

php_admin_value open_basedir /usr/local/apache/htdocs/

设置多个目录可以参考如下:

php_admin_value open_basedir /var/www/html/:/var/tmp/

最能解决一切问题的是 加一个/
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  php