web-dev-qa-db-ja.com

ワードプレスがあなたのウェブサーバーにアクセスするために必要な要求された行動を実行するために。あなたのftpを入力してください

私はフォローしています ファイルアクセス権の変更"WordPress Codexpluginthemeからwp-adminを更新またはインストールしようとすると、次のようになります。

要求されたアクションを実行するために、WordPressはあなたのウェブサーバーにアクセスする必要があります。続行するには、FTP認証情報を入力してください。認証情報を覚えていない場合は、Webホストに連絡してください。

ファイルシステムレベルから:

# ls -ld wp-content/ wp-content/plugins/ wp-content/themes/
drwxrwxr-x.  6 root Apache 4096 Jun  2 12:01 wp-content/
drwxrwxr-x. 28 root Apache 4096 Jun  2 00:00 wp-content/plugins/
drwxrwxr-x. 11 root Apache 4096 May 11 16:34 wp-content/themes/
# 

httpdApacheとして実行されます。

$ ps auxw | grep httpd
root     20158  0.0  0.1 533080 26192 ?        Ss   15:03   0:00 /usr/sbin/httpd -DFOREGROUND
Apache   20233  0.0  0.2 612608 34908 ?        S    15:03   0:00 /usr/sbin/httpd -DFOREGROUND
Apache   20234  0.0  0.2 538772 46904 ?        S    15:03   0:00 /usr/sbin/httpd -DFOREGROUND
Apache   20235  0.0  0.1 536832 24268 ?        S    15:03   0:00 /usr/sbin/httpd -DFOREGROUND
Apache   20236  0.0  0.2 626272 35640 ?        S    15:03   0:00 /usr/sbin/httpd -DFOREGROUND
Apache   20237  0.0  0.0 535296  9592 ?        S    15:03   0:00 /usr/sbin/httpd -DFOREGROUND
Apache   20322  0.0  0.1 537088 26620 ?        S    15:03   0:00 /usr/sbin/httpd -DFOREGROUND
Apache   20380  0.0  0.2 626060 33816 ?        S    15:04   0:00 /usr/sbin/httpd -DFOREGROUND
Apache   20429  0.0  0.1 538216 29184 ?        S    15:04   0:00 /usr/sbin/httpd -DFOREGROUND
Apache   20447  0.0  0.2 629380 43180 ?        S    15:04   0:00 /usr/sbin/httpd -DFOREGROUND
Apache   20448  0.0  0.2 626172 35224 ?        S    15:04   0:00 /usr/sbin/httpd -DFOREGROUND
alexus   24073  0.0  0.0 112652   972 pts/9    R+   15:13   0:00 grep --color=auto httpd
$ 

/wp-adminwithout FTP資格情報を使って、要求されたアクション(installupdate)を実行できるようにしたいです。

どうやってやるの?

21
alexus

以下をwp-config.phpに追加してください。

define( 'FS_METHOD', 'direct' );

それがあなたにとってどのように機能するのか教えてください。

42

これはWordPressがそれがインストールされたフォルダに変更を加えるための限られた許可を持っていることを意味します。

これを修正するために、あなたがする必要があるのは同じのために必要な許可を与えることだけです。

SSH経由でサーバーに接続した後、ターミナル/ PuTTY /コマンドラインプロンプトで次のコマンドを実行します。

Sudo chown -R Apache:apache /var/www/html

チェックアウト この記事 詳細については/。

12
Syamraj K

所有権がroot:Apacheであり、権限が775であり、httpdがApacheとして実行することは完全に正しいことですが、Wordpressはこれを好みません。 wp-admin/includes/file.phpに従って、所有者をApacheにしたい:

    // Attempt to determine the file owner of the WordPress files, and that of newly created files
   $wp_file_owner = $temp_file_owner = false;
   if ( function_exists('fileowner') ) {
      $wp_file_owner = @fileowner( __FILE__ );
      $temp_file_owner = @fileowner( $temp_file_name );
  }

あなたのものになります:
wp_file_owner = root
temp_file_owner = Apache

if ( $wp_file_owner !== false && $wp_file_owner === $temp_file_owner ) {
    // WordPress is creating files as the same owner as the WordPress files,
    // this means it's safe to modify & create new files via PHP.
    $method = 'direct';
    $GLOBALS['_wp_filesystem_direct_method'] = 'file_owner';
} elseif ( $allow_relaxed_file_ownership ) {
    // The $context directory is writable, and $allow_relaxed_file_ownership is set, this means we can modify files
    // safely in this directory. This mode doesn't create new files, only alter existing ones.
    $method = 'direct';
    $GLOBALS['_wp_filesystem_direct_method'] = 'relaxed_ownership';
}

$ wp_file_ownerが$ temp_file_ownerと同じ場合は、続行してください。コメントは、削除/作成を許可せず、更新のみを許可するelseifに引っかかることになります(Wordpress内からプラグインのコードを更新することでこれを確認し、機能しました)。

注:コード全体を詳しく調べたわけではないことに注意してください。これは単に私の簡単な解釈です。同じ問題が発生し、httpdユーザーがファイル所有者でもあるようにuser:groupを切り替えると、FTP資格情報の入力を求めなくなりました。

2
w00t

直接的な答えではありませんが、おそらく言わなければならないでしょう - これはあなたがローカル開発について話しているのでなければ解決しないべき1つの問題です。

その理由は、Webサーバがあなたのコードを上書きすることができれば、その上で実行されている悪意のあるコードもそれを実行できるようになるからです。このリスクは、ftp認証情報を入力しなくても数秒節約できるという利便性よりもはるかに大きいものです。

1
Mark Kaplun

私の場合は、GITからFTPモードに戻すことでこれを解決しました。

これ以上警告はありません。

おそらくそれは他の誰かにも役立つでしょう。

0
MarkPraschan

問題はもうそれほど新しいものではありませんが、私はこの問題についても2セント追加したいと思います。

多くのpplが彼らのVPSサーバ上にCentos(7)を持っていて、以下のコード行が彼らの問題を解決することができました。

Imhoは、WordPressが望んだように仕事をするのを差し控えるSELinuxとすべて関係があります。 SELinux が何であるか、そしてそれが何をするのかを説明するのは遠くなります。参考までに、はじめに

Security-Enhanced Linux(SELinux)は、カーネルに実装されている必須のアクセス制御(MAC)セキュリティメカニズムです。

フォローするのはたった3ステップ:

  • 1端末を開く(またはSSH経由でサーバにアクセスする)
  • 2次のコード行を追加chcon -R -t httpd_sys_content_t /var/www/html/wordpress
  • 3 2行目のコード行を追加chcon -R -t httpd_sys_rw_content_t /var/www/html/wordpress

サーバーから再起動する必要も、デーモンから再起動する必要もありません。

私はそれがすべての人を助けるとは言いませんが、SELinuxを無効にしなかった人たちにとっては安心です。

乾杯

注:自分のニーズに合わせて調整してください(WordPressへのパスを意味します)

edit:wp-config.phpで使用されていた行はdefine("FS_METHOD", "direct");を削除するようにしてください。これは、上記のコード行が必要に応じて実行される場合には絶対に不可能だからです。

0
Charles