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

4

J'essaie de déplacer le répertoire wp-content en dehors du répertoire wordpress et de résoudre toutes sortes de problèmes étranges. Même si enlace permet de le faire, il semble que la structure de répertoires soit 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 je dois faire est de déplacer le répertoire de téléchargement en dehors de la hiérarchie principale. J'ai aussi essayé de faire un lien symbolique, mais je reçois des erreurs d'autorisation.

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

    
posée Sasha O 16.02.2014 - 09:48

2 réponses

5

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 pour les opérations de lecture et d'é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 ) );
}

Appelez-le comme ceci:

extend_base_dir( WP_CONTENT_DIR );
    
réponse donnée fuxia 16.02.2014 - 11:06
0

Nous sommes venus ici pour savoir comment déplacer des 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: Répertoire de téléchargement 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
    
réponse donnée leymannx 20.09.2018 - 22:48

Lire d'autres questions sur les étiquettes