Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
Help us understand the problem. What is going on with this article?

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

More than 5 years have 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で権限関係が厳しくなったらしいですが、その辺が原因でしょうか?

sygnas
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away