编辑:这是不是重复的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上寻找解决方案。我发现了很多类似的问题,但是我找到的解决方案都不适合我。
有没有人知道原因可能在哪里?
我不知道$ target来自哪里,但看起来它是空的或等于'/'而不是代表允许文件路径的字符串。如果没有整个源代码,不能说太多,但我明白你不能在这里发布WordPress的源代码:) – Derek
'$ target'从哪里来?它是有道理的,它是抛出一个错误,因为你肯定不希望应用程序有权访问你的根目录。 – Jonathan
在这里找到源代码:https://github.com/WordPress/WordPress/blob/master/wp-includes/functions.php,但需要回溯了解发生了什么... – Derek