如何将wp-content(或上传)移出WordPress目录

时间:2014-02-16 作者:Sasha O

我试图将wp内容目录移到wordpress目录之外,并遇到各种奇怪的问题。尽管http://codex.wordpress.org/Editing_wp-config.php#Moving_wp-content_folder 说你能做到这一点,似乎目录结构深深地连接到了WP代码中。例如,我收到如下错误消息:

PHP message: PHP Warning:  file_exists(): open_basedir restriction in effect.
File(/srv/wp.content/themes) is not within the allowed path(s): (/srv/wordpress/:/tmp) 
in /srv/wordpress/wp-includes/theme.php on line 369
我所需要做的就是将uploads目录移到主层次结构之外。我也尝试将其符号化,但后来我得到了权限错误。

是否有人成功地将wp内容目录上传到根目录以外的目录?

2 个回复
最合适的回答,由SO网友:fuxia 整理而成

你必须定义WP_CONTENT_DIRWP_CONTENT_URL:

const WP_CONTENT_DIR = \'/path/to/new/directory\';
const WP_CONTENT_URL = \'http://content.wp\';
新路径必须可以从WordPress核心目录访问以进行读写操作。您可能需要一个助手函数来将新目录路径添加到open_basedir 列表:

/**
 * Add a new directory to the \'open_basedir\' list.
 *
 * @link   http://www.php.net/manual/en/ini.core.php#ini.open-basedir
 * @param  string $new_dir
 * @return void
 */
function extend_base_dir( $new_dir )
{
    $separator = \':\'; // all systems, except Win

    // http://stackoverflow.com/a/5879078/299509
    if ( \'WIN\' === strtoupper( substr( PHP_OS, 0, 3 ) ) )
        $separator = \';\';

    $dirs = explode( $separator, ini_get( \'open_basedir\' ) );

    $found = array_search( $new_dir, $dirs );

    // Already accessible
    if ( FALSE !== $found )
        return;

    $dirs[] = $new_dir;

    ini_set( \'open_basedir\', join( $separator, $dirs ) );
}
现在这样称呼它:

extend_base_dir( WP_CONTENT_DIR );

SO网友:leymannx

来这里了解如何将上传移到WordPress根目录之外。最后,我让它像创建符号链接一样简单,效果很好。

$ pwd
/var/www/wordpress
$ cd ..
$ mkdir uploads
$ chmod 755 uploads
$ ln -sf /var/www/uploads /var/www/wordpress/wp-content/uploads
资料来源:Upload folder of Wordpress outside the project

现有项目:

$ pwd
/var/www/wordpress
$ mv /var/www/wordpress/wp-content/uploads /var/www/uploads
$ chmod -R 755 /var/www/uploads
$ ln -sf /var/www/uploads /var/www/wordpress/wp-content/uploads

结束