open_basedir限制生效。文件(/)不在允许的路径中:

问题描述 投票:74回答:10

我在我网站上的头像上传时收到此错误。我以前从来没有得过它,最近没有任何改变让我开始得到这个错误......

Warning: is_writable() [function.is-writable]: 
open_basedir restriction in effect. 
File(/) is not within the allowed path(s):
php filesystems
10个回答
-14
投票

修改PHP配置中的open_basedir settings(请参阅Runtime Configuration)。

open_basedir设置主要用于防止特定用户的PHP脚本访问另一个用户帐户中的文件。通常,您自己帐户中的任何文件都应该由您自己的脚本读取。

如果PHP在Linux系统上作为Apache模块运行,则通过.htaccess进行示例设置:

<DirectoryMatch "/home/sites/site81/">
    php_admin_value open_basedir "/home/sites/site81/:/tmp/:/"
</DirectoryMatch>

-1
投票

只是搜索

open_basedir =

在php.ini中禁用它。这是解决此问题的最简单的解决方案。

在改变之前open_basedir =

改变之后;open_basedir =

P.s - 更改后不要忘记重新启动服务器。

请享用 ;)


91
投票

修改主机帐户中的open_basedir设置并将其设置为none。找到Plesk / cPanel的“PHP设置”区域下给出的open_basedir设置。从那里给出的下拉列表中将其设置为“none”。我在Plesk面板图片中展示了它们。

enter image description here enter image description here


35
投票

要解决此错误,您必须编辑httpd.conf文件。之前的方法可以在apache2handler section指令Server Root中的phpinfo中看到。例如,在我的情况下这样 - / etc / httpd / httpd.conf。打开文件httpd.conf,找到open_basedir参数的提及。并将其设置为无。 (php_admin_value open_basedir无)


5
投票

对我来说,运行整个事情的Plesk服务器的问题是糟糕/缺少配置值。我只是按照这里的指示:http://davidseah.com/blog/2007/04/separate-php-error-logs-for-multiple-domains-with-plesk/

您可以将PHP配置为每个VirtualHost定义都有一个单独的错误日志文件。诀窍是确切知道如何设置它,因为你不能在不破坏Plesk的情况下直接触摸配置。您(dv)上的每个域名在/ var / www / vhosts中都有自己的目录。典型目录具有以下顶级目录:

cgi-bin/
conf/
error_docs/
httpdocs/
httpsdocs/
...and so on

您将要在域目录的conf /文件夹中创建一个vhost.conf文件,其中包含以下行:

php_value error_log /path/to/error_log
php_flag display_errors off
php_value error_reporting 6143
php_flag log_errors on

更改第一个值以匹配您的实际安装(我使用/tmp/phperrors.log)。完成vhost.conf文件的编辑后,从控制台测试配置:

apachectl configtest
…or if you don’t have apachectl (as Plesk 8.6 doesn’t seem to)…

/etc/init.d/httpd configtest

最后告诉Plesk你已经做出了这个改变。

/usr/local/psa/admin/bin/websrvmng -a

3
投票

如果你用php file.php运行它。你需要编辑php.ini找到这个文件:

: locate php.ini
/etc/php/php.ini

并附加文件到open_basedir属性的路径:

open_basedir = /srv/http/:/home/:/tmp/:/usr/share/pear/:/usr/share/webapps/:/etc/webapps/:/run/media/andrew/ext4/protected


2
投票

您引用的路径是incorect,而不是工作区的directoryRoot。尝试构建您要访问的文件的绝对路径,现在您可能正在使用相对路径...


2
投票

如果你有ispconfig3的这种问题,并得到这样的错误

open_basedir限制生效。文件(/ var / www / clients / client7 / web15)不在允许的路径内:.........

要解决它(在我的例子中),只需在网站的ispconfig3面板中将PHP设置为SuPHP

希望它可以帮助别人:)


2
投票

更新和/或移动后我的一个wordpress网站遇到了这个问题:)

在数据库表'wp_options'中检查'upload_path'并正确编辑它...


0
投票

如果您正在运行PHP IIS堆栈并出现此错误,则通常是快速权限修复。

如果您自己管理Windows服务器并具有访问权限,请首先尝试:

导航到令您感到悲痛的文件夹,然后右键单击它>打开属性>安全性。

查看用户有权访问该文件夹,哪些文件具有只读权限,哪些文件已满。你有一个阻止写的小组吗?

该修复程序将特定于您的IIS设置,您使用匿名身份验证与特定用户IUSR或应用程序池标识?

无论如何,您最终会为IUSR,IIS_IUSRS或您的应用程序池标识之一添加新的完全写入权限 - 就像我说的,这将根据您的设置和您希望的方式而有所不同,你可以去这个谷歌兔子洞(一个这样的帖子 - IIS_IUSRS and IUSR permissions in IIS8)对我来说,我使用anon与我的应用程序池身份,所以我可以逃脱MACHINE_NAME\IIS_IUSRS与任何临时或上传文件夹完全读/写。

我不需要在php.ini中添加任何额外的open_basedir =

© www.soinside.com 2019 - 2024. All rights reserved.