WordPressでプラグインをインストールしようとしたら出るエラー

  • 投稿日:
  • by
  • カテゴリ:

やや面倒です。

こういうのは何も考えずにchmod 777 hgoe-dirs的な対応が一番楽なんです。

プラグインインストールは一時的な作業ですから、終わったら戻しておけばよいのです。

しかしいまどきはおそろしい数のボットが蠢いているので、もしかするとそれほど運が悪くなくても、”ほんの1時間だけあいた穴”でどえらい目にあってしまうのかもしれません。

# そういう杞憂を金に換える商売にする人も多数いるようですが。

 

さて、実際に表示されるエラーメッセージは以下のようなものです。

20140717104848

Web(HTTP)経由でファイルアップロードできないから、FTPでアップロードさせろ、というわけです。

日本語メッセージ

要求されたアクションを実行するには、WordPress が Web サーバーにアクセスする必要があります。 次に進むには FTP の接続情報を入力してください。 接続情報が思い出せない場合は、ホスティング担当者に問い合わせてください。

英語メッセージ

To perform the requested action, WordPress needs to access your web server. Please enter your FTP credentials to proceed. If you do not remember your credentials, you should contact your web host.

 

レンサバ、共用サーバ、はてはVPSやMac上のMAMP環境で発生しやすいとかなんとか。ようするにパーミションやファイルオーナー、Webサーバのユーザの違いなどが原因というわけです。

 

公式のフォーラムにも情報が。

WordPress › Support » Cannot upgrade - WP wants FTP access

・・・

It seems that when it finally has managed to create and write to a file, it still isn't satisfied and goes all out:
if ( getmyuid() == @fileowner($temp_file_name) )
To check whether the current user is the file's owner. This cannot happen in my setup. The file's owner is not the current user, even if that user created the file. WP should not expect this to always happen and fail if it doesn't.

・・・

(2つ目のカキコより引用)

これに対してモデレータが二人がかりで噛み付き返していますが、最後は開発者が登場して、5年前(!)のTracチケットを引用して収めています。

その際、ワークアラウンドとして、wp-config.phpに以下の行を追加せよということのようで、これは公式見解と思われます。

define( 'FS_METHOD', 'direct' );

 

個人的には、sshでつながるんなら、zipでアップロードしてプラグインをインストールしたほうが手っ取り早いです。

問題はセットアップする人とプラグインをインストールするユーザが違う場合などですかね。

 

 

さて、5年前のチケットを眺めます。

 

#10205 getmyuid() called instead of posix_getuid() in get_filesystem_method() (wp-admin/includes/file.php)

As part of the function, in a particular case it writes a temporary file and compares it to the return value of getmyuid(). I think this is a mistake - the return value of getmyuid() is the owner of the current _file_ that's being run, not the current process - so if the file is owned by a user other than that of the web server's UID, it thinks it can't install directly (even if it actually can, because the directories are group writable).

※太字はsyasudaがつけました

冒頭はこんな感じですが、延々と続いてますね。(笑

 

最近は、セキュリティ専門家が多いので、ハイパーレアケースであっても、うかつにチェックをはずすと、いろいろつっつかれてしまうのかもしれません。