本サイトではアフィリエイト広告を利用しています
[小ネタ] WordPress で「サーバーが画像を処理できません」に対処!

WordPress セキュリティ

[小ネタ] WordPress で「サーバーが画像を処理できません」に対処!

WordPress にメディア画像をアップロードできず、小一時間ほど悩んだ話です。小ネタです。

本ページはこんな方におすすめ

  • WordPress に急に画像がアップロードできなくなった人
  • 上のケースで、サーバーにもブラウザにも問題がなさそうな人
  • 上のケースで、リソースの問題にも心当たりがない人

WordPress のメディアライブラリへのアップロードが失敗する

投稿記事に画像を貼り付けるときに、WordPress のメディアライブラリに画像をアップロードするなどして使う人が多いと思います。

私の場合視、前回の小ネタを一つ投稿する際、サムネイルの画像をつけようと、fix-onclick-dropping-out.jpg という jpeg ファイルをアップロードしようしていました。

ところが、エラーになってしまいます。

WP 画像アップロードでエラー

fix-onclick-dropping-out.jpg

サーバーが画像を処理できません。このエラーは、サーバーが忙しいか、タスクを完了するために十分なリソースがない場合に発生します。小さな画像をアップロードすれば解決するかもしれません。推奨する最大サイズは2560ピクセルです。

WordPress ついては、しばらく意識しておらず、そのまま WordPress テーマをデフォルトのまま使う生活を続けていたので、鈍くなっていました。

そのため、そのままエラーメッセージを真に受けて、以下のような対応で乗り切ろうとしていました。

アップロードしようとしたファイルは、画像のピクセル数は 1,200 x 600 px 程度の画像で、今の基準で言えば大きなサイズでもありません。
そのため、解像度の大きな画像をアップロードしようとしたわけでもなく、大きすぎるファイルなのでサムネが作れないなどのエラーというわけでもなさそうです。

WordPress でメモリ不足、エラーが起きているのか?

エラーが実際にサーバーのメモリ不足で起こっているとして、今回の画像の画素数の問題ではないだろうと考えました。
何らかの理由で、WordPress のファイルを実行する際のメモリが不足している可能性を、まずはつぶして行いきます。

以下の内容を wp-config.php に書いて試します。

 WordPress
ini_set('memory_limit', '256M');
define( 'WP_MEMORY_LIMIT', '256M' );

まず、256MB から試し、512MB、次に 1024MB まで試しました。

しかし、アップロードエラーは収まらず、エラーのままです、

最近のレンタルサーバーでは、メモリまわりのエラーは標準設定のままでも問題はないことが普通です。

apache の場合

「Apache か nginx のリスタートもしないとだめなのでは....」と思いましたが、レンサバを再起動させるような権限はないので、これは試せません。
れんさばを再起動させなくても、apache だけを再起動させるか、HUP シグナルを送りたいのですが、これもできません。

というより、当サイトは現在、エックスサーバーで運営しているのですが、この程度の画像でメモリが足らないとかありえないです。

nginx の場合

サーバーが nginx の場合、設定する権限があれば client_max_body_size、php.ini 内の upload_max_filesize の値を書き換えてみます。
サイズ的には、512MB 程度まで試せば大丈夫です。ただし、設定値を変えた場合はデーモンを再起動して、再設定の設定値を読み込みなおす必要があります。


ロリポップ!レンタルサーバー

ロリポップ!公式サイトはこちら

ロリポップ!レンタルサーバー

ド基礎に戻って、初歩的手段から始めてみる

サーバーが「画像を処理できませんでした」と返しているので、サーバー側のエラーだと思いましたが、クライアント側、つまりブラウザ側の処理エラーという可能性もあります。
アップロード中にデータの整合性が失われたりってことですかね、ありそうです。

また、恥ずかしいミスの類としては、Wi-Fi から切断していて、オフライン状態だったとかいうケースもありそうです。普通は Wi-Fi 切れはブラウザにその旨のエラーが出るようになってますので、これでもなさそうです。

そのような場合は、クライアント側の PC を再起動する、あるいはブラウザを閉じて開き直うなどで解決する可能性もありそうです。また、WordPress からログアウトすることで、クッキーが更新され、データのアップロードに影響を与える可能性もゼロではなさそうです。

私は、「まぁ、そんなことはないわな」と疑いながら、再起動、クッキー削除、再ログインと試してみましたが、まったく改善できずエラーのままでした。

キャッシュの削除を片っ端から試す

キャッシュの削除

私のケースでは、キャッシュ関係はあまり悪さをしている可能性を考えていなかったので、「まぁ、無いわな」と思いつつやりました。キャッシャ関係のプラグインを導入している方は、まずキャッシュに問題がないことを確認してからでないと、次の大胆なことができません。

キャッシュはプラグイン関係のみならず、ブラウザのキャッシュも消して挑みましたが、結果を変わらずでした。さらに、WordPress からログアウトして、再度ログインして試すも、結果は動かず。

ファイル名が長いのかなとも、一瞬疑ったので、念のため
以下すべての作業は、アップロードするファイル名を短くして、fix-onclick-dropping-out.jpg から onclick-dropping-out.jpg で試します。

アップする画像ファイルそのものが壊れている可能性を疑う

ペイント
ふと思い出したことですが、WordPress は画像が壊れていたり、フォーマットが微妙に違えばエラーになった経験があります。例えば、.bmp ファイルを .jpg として拡張子を間違えてアップしたら、エラーになったように記憶しています。今でもそうなのかは試していませんが、jpeg のフォーマットが違うのでエラーなどのケースはありそうです。

今回は Windows 標準のペイントで、元画像を開き、.bmp 形式で保存し、そのファイルを再度ペイントで開き、次は .jpg で再保存します。これで、元画像(ファイルの破損)にエラーがあったとしても、ほぼほぼ解消(再生成)されるのではと思います。

で、試しましたが、結果はダメでした。結局、キャッシュは問題ないということなんだろうと思います。

さらに、.jpeg で保存したファイルを開き、今度は長手を 600px にリサイズして先ほどのファイル名の末尾に "_600px" とつけて区別して、アップロードしてみました。

でも、結果は変わらずでした。ここまでで、どうやらキャッシュ関係からエラーになっているわけでもなさそうです。

それでも、元の画像を変換・編集して新画像を様制した程度では、まだ画像ファイルそのものが壊れている恐れがないとは言えず、新規作成した画像で試します。
真っ白の画像を、1920 x 1080 の FHD サイズで作成し、ファイル名を先ほどと同じものに変更し、アップロードしてみます。

結果は、変わらず。

サイズが大きいということはありえないのですが、その白塗りの画像(.jpg)を 482 x 270px に縮小してアップロードしてみます。さらに、.png フォーマットに画像を変換してアップロードを試してみます。

ConoHa WING

ConoHa WING 公式サイトはこちら

初期費用無料!最低利用期間無し!国内最速・高性能レンタルサーバー【ConoHa WING】

アップロードエラー

結果は変わらず、ファイルサイズも小さいためかエラーは一瞬で表示されました。アップロードエラーは変わらずです。
サーバーが忙しい」とか「十分なリソースがない」などの理由が表示されています。

この段階で私は気づきました。

アップロードエラー

このアップロードエラー、ファイルをドラッグ&ドロップすると、一瞬で表示されるのですが、その間、ファイルの中身を処理している形跡がありません。サムネイルの作成処理そのものが行われているという感じではなく、アップロードした瞬間にアウトという感じでした。

理由は極めて単純だった。ファイル名が不正!

今回のエラーは、まともに対処しようとしたので解決までに時間がかかりすぎましたが、中身は大したことありませんでした。
悪さをしたのはファイル名でした。

ファイル名の不正というのは、改行コードが含まれていたり、表示できない文字が含まれているといったようなカッコの良いファイル名のエラーではありません。

最近の WordPress のプラグインやサーバーから提供されるセキュリティ機能の中には、SQL ジャンクションのようなものに過剰に対応しすぎているものがあります。

今回もこの類で、SQL ではありませんが、ファイル名の「-onclick-」部分に過剰反応したようです。

ファイル名にプログラム(今回の場合は JavaScript など)的なコード(テキスト)を含めてアップロードし、このファイル名をコード的に呼び出すことにより、ユーザーに意図しないコードを実行させるといった、プチ・ハック対策なのだろうと思います。

SQL ジャンクションより簡単にやれそうな手段ですが、そうしてくれることに異論はございません。でも、「ファイル名がヤバイ」程度のことは警告を出してほしかったです。意外に盲点で気づくのが遅れました。

なお、ファイル名を onclick-dropping-out.jpg から attribute-dropping-out.jpg に変更してアップロードすると、何の警告もなくサムネイル化され、アップロードが成功しました。

まとめ

WP に画像がアップできなくなった時に試す順番

  1. ヤバそうなファイル名を変更する
  2. wp-config.php のメモリ制限を変更する
  3. WordPress にログインしなおす
  4. アップロードに使う記事作成 PC を再起動させてから再度試す

上の順で試すと時間短縮になると思います。

[広告]どのレンサバがおすすめか?

レンタルサーバーですが、当サイトが使い続けているサーバーは、 無制限機能盛りだくさんのレンタルサーバー です。事実として10年以上、サーバーとしてのトラブル無しですので安定していると思います。価格を抑えたいなら、現在は、ロリポップ!が速くて安定しています。

関連記事
エックスサーバー陣
エックスサーバーと wpX Speed 、wpXシンどれを選ぶべき?

このページはエックスサーバーを使ってみたいという人が、「エックスサーバー」と「wpX Speed」、どれにするべきか悩ん ...

続きを見る

関連記事
ロリポップとエックスサーバー
【最新】ロリポップ VS エックスサーバー、速度対決結果は?

月額550円で、「エックスサーバーと同等の速度で他社サービスを利用できるかどうか」というのは、地味にレンサルサーバー契約 ...

続きを見る

無制限機能盛りだくさんのレンタルサーバー

エックスサーバー 公式サイトはこちら




他社VPSを凌駕する圧倒的性能!VPSサーバー『シン・VPS』

『シン・VPS』公式サイトはこちら


ロリポップ!レンタルサーバー

ロリポップ!公式サイトはこちら

ロリポップ!レンタルサーバー


ロリポップ!レンタルサーバー

ロリポップ!公式サイトはこちら

ロリポップ!レンタルサーバー

-WordPress, セキュリティ
-, ,