2014-08-27 133 views
0

我有一个移动的WordPress到我的服务器后,一些奇怪的东西中:WordPress的 - 文件(/)是不是在允许的路径(S)

Wed Aug 27 18:10:43 2014] [warn] [client 77.21.106.179] mod_fcgid: stderr: PHP Warning: is_dir(): open_basedir restriction in effect. File(/) is not within the allowed path(s): (/var/www/vhosts/xyz/:/tmp/:/usr/share/pear/) in /var/www/vhosts/xyz/xyz/wp-includes/functions.php on line 1425 

为什么WordPress的尝试的访问/?有任何想法吗?

在呼吁的WordPress的1GB ERR-日志将产生^^

我做主持人大约100 WP情况下,都做的非常好,没有安装改掉以访问“/”。

编辑

这是函数至极失败:

function wp_mkdir_p($target) { 
    $wrapper = null; 

    // strip the protocol 
    if(wp_is_stream($target)) { 
     list($wrapper, $target) = explode('://', $target, 2); 
    } 

    // from php.net/mkdir user contributed notes 
    $target = str_replace('//', '/', $target); 

    // put the wrapper back on the target 
    if($wrapper !== null) { 
     $target = $wrapper . '://' . $target; 
    } 

    // safe mode fails with a trailing slash under certain PHP versions. 
    $target = rtrim($target, '/'); // Use rtrim() instead of untrailingslashit to avoid formatting.php dependency. 
    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); 

    // MY MODIFICATION 
    if ($target_parent = '/') { 
     var_dump($target, $target_parent); 
     die(debug_print_backtrace()); 
    } 
    // MY MODIFICATION END 

    while ('.' != $target_parent && ! is_dir($target_parent)) { 
     $target_parent = dirname($target_parent); 
    } 

    // Get the permission bits. 
    $dir_perms = false; 
    if ($stat = @stat($target_parent)) { 
     $dir_perms = $stat['mode'] & 0007777; 
    } else { 
     $dir_perms = 0777; 
    } 

    if (@mkdir($target, $dir_perms, true)) { 

     // If a umask is set that modifies $dir_perms, we'll have to re-set the $dir_perms correctly with chmod() 
     if ($dir_perms != ($dir_perms & ~umask())) { 
      $folder_parts = explode('/', substr($target, strlen($target_parent) + 1)); 
      for ($i = 1; $i <= count($folder_parts); $i++) { 
       @chmod($target_parent . '/' . implode('/', array_slice($folder_parts, 0, $i)), $dir_perms); 
      } 
     } 

     return true; 
    } 

    return false; 
} 

我增加了一些修改,阅读评论找到它,我得到以下输出:

string(95) "/var/www/vhosts/xyz/xyz.kunden.xyz/wp-content/uploads/2014/09" 
string(1) "/" 
#0 wp_mkdir_p(/var/www/vhosts/xyz/xyz.kunden.xyz/wp-content/uploads/2014/09) called at [/var/www/vhosts/xyz/xyz.kunden.xyz/wp-includes/functions.php:1743] 
#1 wp_upload_dir() called at [/var/www/vhosts/xyz/xyz.kunden.xyz/wp-content/themes/legatus-theme/functions/other.php:360] 
#2 require(/var/www/vhosts/xyz/xyz.kunden.xyz/wp-content/themes/legatus-theme/functions/other.php) called at [/var/www/vhosts/xyz/xyz.kunden.xyz/wp-includes/template.php:503] 
#3 load_template(/var/www/vhosts/xyz/xyz.kunden.xyz/wp-content/themes/legatus-theme/functions/other.php,) called at [/var/www/vhosts/xyz/xyz.kunden.xyz/wp-includes/template.php:477] 
#4 locate_template(Array ([0] => functions/other.php), 1,) called at [/var/www/vhosts/xyz/xyz.kunden.xyz/wp-includes/general-template.php:179] 
#5 get_template_part(functions/other) called at [/var/www/vhosts/xyz/xyz.kunden.xyz/wp-content/themes/legatus-theme/functions/init.php:9] 
#6 require(/var/www/vhosts/xyz/xyz.kunden.xyz/wp-content/themes/legatus-theme/functions/init.php) called at [/var/www/vhosts/xyz/xyz.kunden.xyz/wp-includes/template.php:503] 
#7 load_template(/var/www/vhosts/xyz/xyz.kunden.xyz/wp-content/themes/legatus-theme/functions/init.php,) called at [/var/www/vhosts/xyz/xyz.kunden.xyz/wp-includes/template.php:477] 
#8 locate_template(Array ([0] => functions/init.php), 1,) called at [/var/www/vhosts/xyz/xyz.kunden.xyz/wp-includes/general-template.php:179] 
#9 get_template_part(functions/init) called at [/var/www/vhosts/xyz/xyz.kunden.xyz/wp-content/themes/legatus-theme/functions.php:32] 
#10 include(/var/www/vhosts/xyz/xyz.kunden.xyz/wp-content/themes/legatus-theme/functions.php) called at [/var/www/vhosts/xyz/xyz.kunden.xyz/wp-settings.php:328] 
#11 require_once(/var/www/vhosts/xyz/xyz.kunden.xyz/wp-settings.php) called at [/var/www/vhosts/xyz/xyz.kunden.xyz/wp-config.php:111] 
#12 require_once(/var/www/vhosts/xyz/xyz.kunden.xyz/wp-config.php) called at [/var/www/vhosts/xyz/xyz.kunden.xyz/wp-load.php:29] 
#13 require_once(/var/www/vhosts/xyz/xyz.kunden.xyz/wp-load.php) called at [/var/www/vhosts/xyz/xyz.kunden.xyz/wp-blog-header.php:12] 
#14 require(/var/www/vhosts/xyz/xyz.kunden.xyz/wp-blog-header.php) called at [/var/www/vhosts/xyz/xyz.kunden.xyz/index.php:17] 

什么是不正确的,因为dirname(/var/www/vhosts/xyz/xyz.kunden.xyz/wp-content/uploads/2014/09)应该返回/var/www/vhosts/xyz/xyz.kunden.xyz/wp- content/uploads/2014,而不仅仅是/ ...

有什么想法吗?

+0

你好,你需要提供被称为:)的代码 – Mez 2014-08-27 16:22:39

+0

什么样的代码?我打电话给WordPress,不要紧,如果它是头版或wp-login.php ^^ – lippoliv 2014-08-27 16:30:50

+0

我编辑了我的代码,请看一看 – lippoliv 2014-09-02 21:11:10

回答

1

仔细检查$target中的路径确实存在。在使用不同的内部文件夹设置将Wordpresses从一台服务器移动到另一台服务器之后,发生了此错误。

如果服务器上不存在$target中的路径,则需要在代码和数据库中更正每次出现的路径。

为了安全地更正数据库中的值,请使用像https://github.com/interconnectit/Search-Replace-DB这样的工具来处理数据库中类似字典的结构。

相关问题