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

Php open_basedir限制生效。文件(/)不在允许的路径内:,php,filesystems,Php,Filesystems,我在我的网站上的一个头像上传中遇到了这个错误。我以前从未得到过它,而且最近没有任何改变让我开始得到这个错误 Warning: is_writable() [function.is-writable]: open_basedir restriction in effect. File(/) is not within the allowed path(s): 您引用的路径是不正确的,并且不包含工作区的directoryRoot。尝试为要访问的文件构建一个绝对路径,现在可能正在使用相对路径…修

我在我的网站上的一个头像上传中遇到了这个错误。我以前从未得到过它,而且最近没有任何改变让我开始得到这个错误

Warning: is_writable() [function.is-writable]: 
open_basedir restriction in effect. 
File(/) is not within the allowed path(s):

您引用的路径是不正确的,并且不包含工作区的directoryRoot。尝试为要访问的文件构建一个绝对路径,现在可能正在使用相对路径…

修改PHP配置中的(请参阅)

open\u basedir
设置主要用于防止特定用户的PHP脚本访问其他用户帐户中的文件。因此,通常情况下,您自己帐户中的任何文件都应该可以由您自己的脚本读取

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

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

php_admin_value open_basedir”/home/sites/site81/:/tmp/:/“

如果您在ispconfig3中遇到此类问题并出现类似错误

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

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


希望它能帮助某人:)

对我来说,问题是运行整个程序的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/phperors.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
最后告诉普莱斯克你已经做出了改变

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

要解决此错误,必须编辑文件httpd.conf。 在apache2handler部分指令Server Root的phpinfo中可以看到它之前的方式。 例如,在我的例子中是这样的-/etc/httpd/httpd.conf。
打开文件httpd.conf,找到参数Open_basedir。并将其设置为“无”。(php\u admin\u value open\u basedir none

修改托管帐户中的open\u basedir设置并将其设置为none。在Plesk/cPanel的“PHP设置”区域下找到open_basedir设置。从这里给出的下拉列表中将其设置为“无”。 我已经在Plesk面板图片中显示了它们


如果您使用
php file.php
运行此程序。您需要编辑
php.ini
查找此文件:

: locate php.ini
/etc/php/php.ini
并将文件路径附加到
open\u basedir
属性:

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

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

在“上传路径”中签入数据库表“wp\u选项”并正确编辑…

只需搜索即可

开放式=

并将其禁用。这是解决这个问题的最简单的办法

更改前
open\u basedir=

更改后<代码>;打开\u basedir=

注意-更改后不要忘记重新启动服务器


享受;)

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

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

导航到给您写信带来痛苦的文件夹,然后右键单击它>打开属性>安全性

查看哪些用户有权访问该文件夹,哪些用户具有只读权限,哪些用户具有完全权限。您是否有阻止写入的组

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

无论如何,你最终会为IUSR、IIS_IUSR或你的应用程序池身份添加一个新的完整写入权限-就像我说的,这将根据你的设置和你想如何操作而有所不同,你可以为我在这篇文章(一篇这样的帖子)上进入谷歌兔子洞,我将anon与我的应用程序池标识一起使用,这样我就可以在任何临时文件夹或上载文件夹上进行完全读/写操作,而不必使用
MACHINE\u NAME\IIS\u IUSRS

我不需要向php.ini中的
open\u basedir=
添加任何额外内容。

此外,如果您使用的是DirectAdmin,请按照以下步骤操作:

  • 转到DirectAdmin的登录页面。通常,它的端口是2222
  • 以管理员身份登录。默认情况下,其用户名为
    admin
  • 从右侧面板上的“访问级别”中,确保您处于“管理级别”。如果没有,请改为
  • 在“额外功能”部分,单击“定制HTTPD配置”
  • 选择要更改的域
  • 在页面顶部的文本区域中输入要更改的配置。您应该考虑现有的配置文件并基于它修改值。例如,如果您看到
    中设置了
    open\u basedir
    ,可能您应该在相关的
    标记中包含您的更改:

    <Directory "/path/to/directory">
        php_admin_value open_basedir none
    </Directory>
    
  • 现在使用您选择的编辑器编辑配置文件。例如,将现有的
    open_basedir
    编辑为
    none
    。不要试图移除东西,否则您可能会遇到停机。编辑后保存文件

  • 使用以下方法之一重新启动Apache web服务器(如果需要,使用
    sudo
    ):

  • 如果遇到任何错误,请将主配置文件替换为
    cp httpd.conf httpd.conf.back
    
    httpd -k graceful
    apachectl -k graceful
    apache2 -k graceful
    
    php.exe -d open_basedir=;d:/www/applicationRoot;//internal.unc.path/ressource/