WordpressのメディアライブラリでHTTPエラーの原因は意外な場所にあった

More than 1 year has passed since last update.

原因はパーミッションだったけど意外な場所のパーミッションだった話

メディアライブラリから画像をアップロードすると 10KB以下のファイルはできるのに、それ以上のファイルは全て「HTTPエラー」が表示されてしまいました。

「メディアライブラリ HTTPエラー」で検索すると皆さん苦労されているので情報はたくさんあったのですが、どれも自分の事例には当てはまらなかったのでメモしておきます。

環境

  • OSX El Capitan
  • Nginx 1.8.0
  • PHP 5.6.14
  • Wordpress 4.3.1

試してみたこと

ファイルサイズが 0byte になっていないか

プラグイン、パーミッション、php.ini

全てのプラグインを無効にし、
wp-content/upload/のパーミッションを確認し、
php.ini でメモリやファイルサイズ上限をあげましたがダメでした。

Nginxのアップロード上限を増やす

Wordpressのメモリ上限を増やす

How to Fix HTTP Error When Uploading Images?
wp-config.php に define('WP_MEMORY_LIMIT', '64MB'); を追加してみましたがダメでした。

意外(?)な場所のパーミッションが原因だった

他の事例をあてにするのは諦めて、素直にNginxのログを見てみることにしました(最初からそうしろ)。
すると下記のようなエラーが検出されていました。

2015/11/16 10:05:54 [crit] 1191#0: *231 open() "/usr/local/var/run/nginx/client_body_temp/0000000027" failed (13: Permission denied), client: 127.0.0.1, server: localhost, request: "POST /xxx/system/wp-admin/async-upload.php HTTP/1.1", host: "localhost:8080", referrer: "http://localhost:8080/xxx/system/wp-admin/upload.php"

問題となるのはここです。

/usr/local/var/run/nginx/client_body_temp/0000000027" failed (13: Permission denied)

Nginxがファイルアップロードを受け入れる時の一時的な保管場所だと思うのですが、ここをパーミッション 777 にしたら問題なくアップ出来るようになりました。

El Capitanで権限関係が厳しくなったらしいですが、その辺が原因でしょうか?

Sign up for free and join this conversation.
Sign Up
If you already have a Qiita account log in.