2016-06-24 115 views
0

编辑:这是不是重复的open_basedir restriction in effect. File(/) is not within the allowed path(s):。这个问题与PHP设置无关,因为我有几个网站在相同的地图结构和相同的PHP设置下工作。在将其标记为一个副本之前,请先阅读整个问题,正如我在这个问题的最后4段所解释的那样。另外,另一个问题的答案是针对Apache,而我使用的是不使用CPanel或httpd.conf的Nginx。警告:is_dir():有效的open_basedir限制。文件(/)不在允许的路径内

我已经手动将我的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 

我与之前的网站类似的错误,但这是由于upload文件夹没有被链接到正确的从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_parent,但我不知道那是指什么,因为我对PHP不太好。

现在我知道一个open_basedir restriction错误一般意味着PHP.ini文件有不正确的安全设置,它不允许PHP函数访问所需的文件夹。但是,我确定这不是这种情况。

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

在之前的案例中,问题出在'上传'文件夹,我仍然能够进入wp-admin并通过Wordpress设置更改上传文件夹位置。但是,我现在无法进入任何页面,因为我只能看到上面的错误,这个错误重复到了无穷大。

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

有没有人知道原因可能在哪里?

+1

我不知道$ target来自哪里,但看起来它是空的或等于'/'而不是代表允许文件路径的字符串。如果没有整个源代码,不能说太多,但我明白你不能在这里发布WordPress的源代码:) – Derek

+1

'$ target'从哪里来?它是有道理的,它是抛出一个错误,因为你肯定不希望应用程序有权访问你的根目录。 – Jonathan

+1

在这里找到源代码:https://github.com/WordPress/WordPress/blob/master/wp-includes/functions.php,但需要回溯了解发生了什么... – Derek

回答

2

警告:is_dir()[function.is-dir]:open_basedir限制有效。文件(/)不在允许的路径中:

如果您在Wordpress博客上收到上述错误消息,可能的原因是您已将您的网站从以前的托管提供程序和您的主目录的路径现在有所不同。幸运的是,修复非常简单。

登录到你的WordPress仪表盘,点击“设置”,然后选择“其他”,并确保“商店上传该文件夹”选项设置为:

的wp-content /上传

如果它已经设置为'wp-content/uploads'(不含引号),只需点击'保存'按钮,Wordpress将重新计算您的主目录路径。错误现在应该消失,您的网站应该正常工作。

+0

谢谢你试图回答这个问题,但正如问题中所述,我已经为不同的网站做过这个工作,但是对于这个网站我甚至无法登录仪表板。 – Tijmen

2

我遇到了同样的问题,并通过Google搜索发现了这个问题。 @ hicham的评论让我走上了正确的轨道,这是我能够在其他人期待的情况下解决它的方法。我通过phpMyAdmin的编辑的数据库,如下所示:

  1. 点击wp_options表
  2. 单击搜索,并在“OPTION_NAME”字段中输入“upload_path”
  3. 这应返回一行与旧主机的路径作为“option_value”。双击要编辑的值,并将其更改为新主机上“上传”文件夹的路径(您应该能够通过FTP或主机的控制面板找出它)。
+0

谢谢你的加入。对于无法访问Wordpress控制面板的用户,这可能是一种比像我一样重新上传所有内容的更好解决方案。 – Tijmen

相关问题