web-dev-qa-db-fra.com

Impossible d'installer des plugins même si www-data dispose d'autorisations en écriture

Tous les fichiers de mon chemin WordPress appartiennent à myuser:www-data et Apache s'exécute en tant que www-data. Tous les fichiers et dossiers ont des autorisations d'écriture de groupe, par exemple. -rw-rw----, mais je continue à être invité à fournir des détails FTP lorsque j'essaie d'installer un plugin.

Si j'ai indiqué le chemin d'accès à l'utilisateur www-data, l'installation et la suppression du plug-in fonctionnent comme prévu, mais ensuite myuser ne peut pas modifier les fichiers. Je pourrais ajouter myuser au www-data groupe, mais ensuite myuser pourrait accéder à tous les autres sites.

Mes fichiers sont chownés comme suit:

chown -R myuser:www-data wordpress-folder/*

Et chmod'ed comme suit:

find wordpress-folder/ -type d -exec chmod 755 {} \;
find wordpress-folder/ -type f -exec chmod 644 {} \;

Si mes fichiers appartiennent au groupe www-data et qu’ils sont en écriture, il est évident que WordPress devrait pouvoir installer des plugins. Pourquoi WordPress ne peut-il pas installer de plugins?

Voici la sortie de ls -la dans mon dossier plugins:

total 48
drwxrwx---  9 myuser www-data 4096 Aug  5 01:26 .
drwxrwx---  6 myuser www-data 4096 Aug  5 01:51 ..
drwxrwx---  6 myuser www-data 4096 Jul 10 16:27 disqus-comment-system
-rw-rw----  1 myuser www-data 6148 Jul 10 15:37 .DS_Store
drwxrwx---  7 myuser www-data 4096 Jul 10 16:30 gravityforms
-rw-rw----  1 myuser www-data   30 Jul 10 15:37 index.php
drwxrwx---  3 myuser www-data 4096 Jul 10 16:30 Lime-export
drwxrwx---  6 myuser www-data 4096 Aug  1 11:17 mp6
drwxrwx---  6 myuser www-data 4096 Aug  5 01:26 rewrite
drwxrwx--- 10 myuser www-data 4096 Jul 10 16:38 wordpress-seo
drwxrwx---  7 myuser www-data 4096 Jul 24 17:14 wp-minify
4
Petrus Theron

Si vous ajoutez les éléments suivants à votre fichier wp-config.php, cela forcera WordPress à utiliser la méthode de système de fichiers 'directe':

define( 'FS_METHOD', 'direct' );
7
bradt

Je pense avoir déjà répondu à une question similaire. Les revendications OP, toutes les autorisations de fichier sont définies correctement, mais demandent toujours des informations d'identification FTP.

Eh bien, c'est très bizarre. Mais je pense qu'il s'agit toujours de permission.

Wordpress écrira un fichier temporaire et comparera le propriétaire du fichier par getmyuid() == @fileowner($temp_file_name).

Si c'est le cas, le plugin sera installé directement sans demander les détails FTP.

Pour plus de détails, fonction wp-admin/includes/file.php et get_filesystem_method.

Donc, je vous suggère d’écrire un script php indépendant dans le dossier racine de l’installation de wordpress pour vérifier.

1, écrire un fichier temporaire

2, vérifiez le propriétaire du fichier temporaire

$dir = dirname(__FILE__);

$temp_file = $dir.'/wp-content/'.time();
$temp_handle = fopen($temp_file, 'w');
if ( $temp_handle ) {
    if ( getmyuid() == fileowner($temp_file) ){
        echo 'file owner correct';
    }

    fclose($temp_handle);
    unlink($temp_file);
}else{
    echo 'cant write file';
}
2
Jesse

Une solution simple consisterait à ajouter des informations d'identification FTP dans le fichier wp-config.php, comme suit:

define( 'FTP_USER', 'username' );
define( 'FTP_PASS', 'password' );
define( 'FTP_Host', 'ftp.example.org:21' );

Mais le problème pourrait être lié à votre hébergement en utilisant un processus différent de PHP au lieu de suPHP.

0
Mladen Petrovic