关于php:open_basedir限制有效。 文件(/)不在允许的路径内:

open_basedir restriction in effect. File(/) is not within the allowed path(s):

我在网站上的头像上传中遇到此错误。 我从来没有得到过它,最近没有任何改变让我开始出现此错误...

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


修改托管帐户中的open_basedir设置,并将其设置为none。在Plesk / cPanel的" PHP设置"区域下找到open_basedir设置。从此处提供的下拉菜单中将其设置为"无"。
我已经在Plesk面板图片中显示了它们。

enter image description here
enter image description here


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


对我而言,问题是运行整个程序的Plesk服务器的配置值错误/丢失。
我只是按照这里的指示进行操作:
http://davidseah.com/blog/2007/04/separate-php-error-logs-for-multiple-domains-with-plesk/

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

1
2
3
4
5
6
cgi-bin/
conf/
error_docs/
httpdocs/
httpsdocs/
...and so on

您需要在域目录的conf /文件夹中用以下几行创建一个vhost.conf文件:

1
2
3
4
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文件后,请使用以下命令从控制台中测试配置:

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

/etc/init.d/httpd configtest

最后,告诉Plesk您已进行了此更改。

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

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

1
2
: 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


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

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


如果您在使用ispconfig3时遇到这种问题,并且出现了这样的错误

open_basedir restriction in effect.
File(/var/www/clients/client7/web15) is not within the allowed
path(s):.........

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

希望它可以帮助某人:)


您所引用的路径是错误的,并且没有工作空间的directoryRoot。尝试为要访问的文件构建绝对路径,现在可能正在使用相对路径...


除了@yogihosting的答案之外,如果您使用的是DirectAdmin,请按照以下步骤操作:

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

    1
    2
    3
    <Directory"/path/to/directory">
        php_admin_value open_basedir none
    </Directory>
  • 进行必要的更改后,单击"保存"按钮。

  • 现在,如果更改有效,您应该看到所做的更改已保存到配置文件中。
  • 但是,还有另一种编辑配置文件的方式:

    注意:请小心,并使用以下步骤,后果自负,因为您可能会遇到错误,或导致停机。推荐的方法是前一种,因为它可以防止您不正确地修改配置文件并向您显示错误。

  • 以root用户身份登录到服务器。
  • 转到/usr/local/directadmin/data/users。从列出的用户中,转到与要更改的域相关的一个。
  • 在这里,有一个httpd.conf文件。从中备份:

    1
    cp httpd.conf httpd.conf.back
  • 现在,使用您选择的编辑器编辑配置文件。例如,将现有的open_basedir编辑为none。请勿尝试移除物品,否则可能会导致停机。编辑后保存文件。

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

    1
    2
    3
    httpd -k graceful
    apachectl -k graceful
    apache2 -k graceful
  • 如果遇到任何错误,请用备份的文件替换主配置文件,然后重新启动Web服务器。

  • 同样,第一种解决方案是首选的解决方案,您不应在第一时间尝试第二种方法。请注意,第一种方法的优点是它可以防止保存配置错误的内容。

    希望能帮助到你!


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

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

    导航到该文件夹??,让您对其写入感到悲伤,然后右键单击它>打开属性>安全性。

    查看哪些用户有权访问该文件夹,哪些用户具有只读权限,哪些用户具有完整权限。您是否有一个阻止写操作的组?

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

    无论如何,您最终都将为IUSR,IIS_IUSRS或您的应用程序池标识之一添加新的完全写入权限-正如我说的那样,这将取决于您的设置和操作方式,您可以在此页面上找到Google兔子漏洞(一个这样的帖子-IIS8中的IIS_IUSRS和IUSR权限)对我来说,我将anon与我的应用程序池标识一起使用,这样我就可以摆脱MACHINE_NAME\IIS_IUSRS的要求,对任何内容进行完全读/写临时或上传文件夹。

    我不需要在php.ini中的open_basedir =中添加任何其他内容。


    只是搜索

    open_basedir =

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

    更改之前open_basedir =

    更改后;open_basedir =

    附言:更改后,请不要忘记重新启动服务器。

    请享用 ;)


    修改PHP配置中的open_basedir设置(请参阅运行时配置)。

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

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

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