web-dev-qa-db-fra.com

Comment déplacer wp-content (ou uploads) en dehors du répertoire Wordpress

J'essaie de déplacer le répertoire wp-content en dehors du répertoire wordpress et de faire face à toutes sortes de problèmes étranges. Même si http://codex.wordpress.org/Editing_wp-config.php#Moving_wp-content_folder indique que vous pouvez le faire, il semble que la structure de répertoires est profondément liée au code WP. . Par exemple, je reçois des messages d'erreur tels que:

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

Tout ce que j'ai à faire est de déplacer le répertoire de téléchargement en dehors de la hiérarchie principale. J'ai essayé de faire un lien symbolique aussi, mais alors je reçois des erreurs d'autorisation.

Quelqu'un at-il réussi à avoir avec succès le répertoire wp-content, ou au moins, le répertoire de téléchargement en dehors du répertoire racine?

4
Sasha O

Vous devez définir WP_CONTENT_DIR et WP_CONTENT_URL:

const WP_CONTENT_DIR = '/path/to/new/directory';
const WP_CONTENT_URL = 'http://content.wp';

Le nouveau chemin doit être accessible en lecture et en écriture à partir du répertoire principal WordPress. Vous aurez peut-être besoin d'une fonction d'assistance pour ajouter le nouveau chemin de répertoire à la liste 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 ) );
}

Maintenant, appelez ça comme ça:

extend_base_dir( WP_CONTENT_DIR );
5
fuxia

Nous sommes venus ici pour savoir comment déplacer les envois en dehors de la racine WordPress. En fin de compte, je l'ai gardé aussi simple que de créer un lien symbolique et cela fonctionne très bien.

$ pwd
/var/www/wordpress
$ cd ..
$ mkdir uploads
$ chmod 755 uploads
$ ln -sf /var/www/uploads /var/www/wordpress/wp-content/uploads

Source: Télécharger le dossier de Wordpress en dehors du projet


Pour un projet existant:

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