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

Php 警告:is_dir():open_basedir限制生效。文件(/)不在允许的路径内,php,wordpress,nginx,open-basedir,Php,Wordpress,Nginx,Open Basedir,编辑:这不是的副本。这个问题与PHP设置无关,因为我有几个网站在相同的地图结构和相同的PHP设置下工作。请先阅读整个问题,然后再将其标记为副本,因为我已在问题的最后4段中对此进行了解释。另外,另一个问题的答案是针对Apache的,而我使用的是Nginx,它不使用CPanel或httpd.conf 我已手动将Wordpress站点移动到新服务器。最后一个错误是: Warning: is_dir(): open_basedir restriction in effect. File(/) is

编辑:这不是的副本。这个问题与PHP设置无关,因为我有几个网站在相同的地图结构和相同的PHP设置下工作。请先阅读整个问题,然后再将其标记为副本,因为我已在问题的最后4段中对此进行了解释。另外,另一个问题的答案是针对Apache的,而我使用的是Nginx,它不使用CPanel或httpd.conf

我已手动将Wordpress站点移动到新服务器。最后一个错误是:

  Warning: is_dir(): open_basedir restriction in effect. File(/) is not
  within the allowed path(s):
    (/var/hpwsites/u_bcsautoborg:/usr/share/pear/) in 
    /var/hpwsites/u_bcsautoborg/website/html/webroot/wp-includes/functions.php on
 line 1585
我以前在这个网站上也遇到过类似的错误,但那是因为没有从Wordpress设置中正确链接到
上传
文件夹。因此,错误显示了不同的行号

第1585行是:

while ( '.' != $target_parent && ! is_dir( $target_parent ) ) {
并且是更大区块的一部分:

/*
     * Safe mode fails with a trailing slash under certain PHP versions.
     * Use rtrim() instead of untrailingslashit to avoid formatting.php dependency.
     */
$target = rtrim($target, '/');
if ( empty($target) )
    $target = '/';

if ( file_exists( $target ) )
    return @is_dir( $target );

// We need to find the permissions of the parent folder that exists


and inherit that.
    $target_parent = dirname( $target );
    while ( '.' != $target_parent && ! is_dir( $target_parent ) ) {
        $target_parent = dirname( $target_parent );
}
这是来自Wordpress函数文件。从代码来看,我假设问题出在
$target\u parent
上,但我不知道这指的是什么,因为我对PHP不是很在行

现在我知道一个
open\u basedir restriction
错误通常意味着PHP.ini文件的安全设置不正确,不允许PHP函数访问所需的文件夹。然而,我确信这里的情况并非如此

这是一个工作网站,与我所有其他网站的结构相同。所有这些都托管在Apache服务器上,我将迁移到Nginx服务器,它们都有自己的目录,有自己的MySQL数据库,所有目录都包含相同的文件和文件夹(当然,除了特定于网站的文件夹)。所有其他网站都在与此相同的设置中完美工作,因此我无法想象这是一个php.ini问题

在上一个例子中,问题出在“uploads”文件夹上,我仍然能够进入wp admin并通过Wordpress设置更改uploads文件夹的位置。然而,我现在无法进入任何页面,因为我只得到上面的错误,它会复制到无穷大

我已经通过PHPmyAdmin禁用了所有插件,但是没有用。显然,我已经在wordpress论坛、Google和DuckDuckGo上寻找解决方案。我发现了许多类似的问题,但我发现的解决方案都不适合我

有人知道原因在哪里吗?

警告:is\u dir()[function.is dir]:open\u basedir限制生效。文件(/)不在允许的路径内:

如果您在Wordpress博客上收到上述错误消息,可能的原因是您的站点已从以前的主机提供商传输到我们,并且到您的主目录的路径现在不同。幸运的是,修复非常简单

登录Wordpress仪表板,单击“设置”,然后单击“杂项”,并确保“将上载存储在此文件夹中”选项设置为:

wp内容/上传


如果已经设置为“wp content/uploads”(不带引号),只需点击“Save”按钮,Wordpress就会重新计算您的主目录路径。这些错误现在应该消失了,你的网站应该可以正常工作了。

我也有同样的问题,是通过谷歌搜索发现的@hicham上面的评论让我走上了正确的道路,下面是我如何修复它以防其他人看到。我通过phpMyAdmin编辑了数据库,如下所示:

  • 单击wp_选项表
  • 单击搜索,并在“选项名称”字段中输入“上传路径”
  • 这将返回一行,其中旧主机的路径作为“选项值”。双击要编辑的值,并将其更改为新主机上“uploads”文件夹的路径(您应该能够通过FTP或主机的控制面板找到它)

  • 我不知道$target来自何处,但它似乎是空的或等于“/”而不是表示允许文件路径的字符串。如果没有完整的源代码,我不能说太多,但我知道你不能在这里发布Wordpress源代码:)
    $target
    来自哪里?它抛出错误是有道理的,因为您肯定不希望应用程序访问您的根目录。在此处找到源代码:但需要回溯才能知道发生了什么…@Derek感谢您的回复。我不确定你说的“回溯”是什么意思。这是我可以检索的东西吗?如果是,如何检索?@Derek@Jonathan我已经查看了由Derek链接的源代码,但我注意到源代码与我的
    functions.php
    文件不同。明显地;在我的网站上产生错误的那一行是1585,但在链接源中,第1585行的内容可以在第1609行找到,而链接源中的第1585行的内容完全不同。似乎我的
    函数.php
    中缺少了一些东西,这可能是由于在服务器之间复制/粘贴文件时出错造成的吗?感谢您尝试回答这个问题,但正如问题中所述,我已经为另一个网站做了这件事,但对于这个网站,我甚至无法登录到仪表板。它适用于wordpress。我忘了关闭插件,在转移之前关闭主题。现在我得到了我应得的。谢谢你的帮助。和平!谢谢你的加入。对于无法访问Wordpress仪表板的用户,这可能是一个比像我一样重新上传所有内容更好的解决方案。