WordPressで画像ファイルのアップロード時にエラーが発生した際の対処についての備忘録です。
現象
新規投稿画面上で「メディアを追加」を利用して画像を挿入しようとしたところ、
「アップロードしたファイルをwp-content/uploads/2014/10に移動できませんでした。」
というエラーメッセージが出てしまう現象が発生しました。
比較的長い期間運用しているサイトでの現象で、今までは特に問題なくアップロードできていたのが突然のエラー。
発生したのが月初だったこともあり、uploads内にフォルダが正常に生成されていないのかも、とFTPにて確認したところ、該当フォルダは生成されており、FTPでのファイルアップロードも問題なくできることを確認。
パーミッションも書き込み可能な設定になっていました。
うーん、ここは問題なさそうだ。
次に疑ったのは、バックアップファイルなどによるサーバの空き容量の不足。
サーバ管理システム上で確認してみましたが、残容量は十分あり、こちらも問題はなさそう。
ムムムムム。
原因
同じ問題に陥っているケースはないかとWebで検索してみたところ、こちらの記事を発見しました。
WordPressでファイルがアップロードできない場合の対策
上記の記事中で、”XREAサーバではPHPのセーフモードが有効になっているためにWordPressのアップローダーが上手く機能しない”と解説されています。
現象が発生したサイトはまさにXREAサーバ……これかも!
簡単に書くと、XREAサーバはディレクトリ権限のミスマッチが発生してしまう環境、ということのようです。
PHPのセーフモードによるWordpressの機能の制限については、WordPress Codexでも解説されていました。
WordPress CodexでもXREAとCORESERVERは別途対応が必要な旨が明記されてますね orz
対策
以下のように記述した.htaccessファイルを、Wordpressインストールディレクトリ内のwp-adminディレクトリに設置することで解決できました。
<files async-upload.php> AddHandler application/x-httpd-phpcgi .php </files>
phpをcgiモードで動かすことでアップローダを正常に機能させる、という対応です。
これでアップロードが正常にできるようになりました。
今後、XREAサーバで同様の現象が発生した際の参考として、記録した次第です。
参照サイト様、ありがとうございました!