web-dev-qa-db-ja.com

Www-dataが書き込み権限を持っていてもプラグインをインストールできない

私のWordPressパスにあるファイルはすべてmyuser:www-dataが所有しており、Apacheはwww-dataとして実行されています。すべてのファイルとフォルダはグループ書き込み権限を持ちます。 -rw-rw----、私はプラグインをインストールしようとすると私はFTPの詳細を求められ続けます。

Www-dataユーザーへのパスを変更した場合、プラグインのインストールと削除は期待どおりに機能しますが、 myuser はファイルを編集できません。 myuser www-data グループに追加することもできますが、 myuser は他のすべてのサイトにアクセスできます。

私のファイルは次のように分類されています。

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

そして次のようにchmodしました:

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

私のファイルがwww-dataグループによって所有されていて、グループ書き込み可能である場合、WordPressは確実にプラグインをインストールできるはずです。 WordPressがプラグインをインストールできないのはなぜですか?

これが私のプラグインフォルダにあるls -laの出力です。

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

あなたがあなたのwp-config.phpファイルに以下を追加するならば、それはWordPressに '直接'ファイルシステムメソッドを使わせるでしょう:

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

私は思う、私は前にここで同様の質問に答えました。 OPはすべてのファイル許可が正しく設定されていると主張しますが、それでもftp認証情報を要求します。

まあ、これはとても変です。しかし、それはまだ許可についてです。

Wordpressは一時ファイルを書き、ファイル所有者をgetmyuid() == @fileowner($temp_file_name)で比較します。

よくわからない場合は、ftpの詳細を尋ねずに直接プラグインをインストールします。

詳しくは、wp-admin/includes/file.phpおよびget_filesystem_method関数を参照してください。

だから、私はあなたをお勧めします、チェックアウトするためにwordpressのインストールのルートフォルダに独立したphpスクリプトを書く。

1、一時ファイルを書く

2、一時ファイルの所有者を確認してください

$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

簡単な回避策は、wp-config.phpファイルの中に次のようにFTP証明書を追加することです。

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

しかし、問題はsuPHPの代わりにいくつかの異なるPHPプロセスを使用しているホスティングに関連している可能性があります。

0
Mladen Petrovic