WordPressの「メディアが表示されない」「AmazonJSでエラー」はphpのメモリ不足でした

WordPressの「メディアが表示されない」「AmazonJSでエラー」はphpのメモリ不足でした

WordPressプラグイン”AmazonJS”がInternalServerErrorで商品検索できなくなったで脈絡の無いことを長々書きましたが、原因がわかりました。PHPのメモリ不足です。

前回の乱文は消さずに置いておきますので、話を整理しておきます

問題1:「メディア」でサムネイルが表示されない

本来アップロードした写真の一覧が表示される「メディア」ですが、読込中のアイコンがくるくる回り続けて一向に表示されないのが問題その1。

「Wordpress メディア 表示されない」などでググると非常に多くの事例や対策が出てきます。

  • functions.phpの書き間違い
  • 利用しているテーマの修正
  • wp-admin/admin-ajax.php の修正

WordPressの2.x世代ではディレクトリのパーミッションの問題でも起きたようですが、4.x世代の今にそれは当てはまりません。

メディアには二種類の表示があり、画像がタイル張りに表示されるビューのみajaxを利用しておりダンマリになります。リストビューではHTMLのみのため問題なく表示されます。

20160624-01

Google ChromeのDeveloper Toolでチェックしてみると、wp-admin/admin-ajax.phpの読みだしでエラーになっている様です。500エラーではなく確か

uncaught securityerror failed to read the ‘contentdocument’

みたいな事だったんだけど正確なメモが取れておりませんでした・・・。

問題2:AmazonJSで商品検索できない

現象については前回に書いたので割愛します。Developer Toolで見ると

http://example.com/wp-admin/admin-ajax.php?action=amazonjs_search&CountryCode=JP&SearchIndex=All&ItemPage=1&Keywords=o Failed to load

といった感じでこちらも窓口となるadmin-ajax.phpでエラーが出ています。

問題がプラグインを止めると解決してしまう

まずそれぞれの問題は特定のプラグインを止めると直ったりしました。

一つづつ設定を変えながら試した所

の2つをオフにした所AmazonJSは復旧しました。

とか

サムネが出ない事象が起きていた事がわかりました。
こっちの問題はとりあえず

を有効にすると発生する事が判明しました

とか。

AmazonJSだけの時は「プラグイン同士のコンフリクトだったのかなぁ。でもしばらく動いてたのに変だな」くらいに思っていました。ところがメディア問題もプラグインの停止で直ったりして「4つもおかしいってありえないよね?」と思うことに。

極めつけは公開されたWordPress Version 4.5.3にしたら上記プラグインを外しても直らなくなった事。この事から別の1つの原因が複数の問題に起因していて、それは場合によって変わる流動的なものではないかという予測を立てました。

その別の原因を探す

プラグインをあれこれOFF/ONするのはやめて、その別の原因を探すことに。
WordpressでInternal Server Errorで探すと結構色々な理由で発生するようです。

.htaccessで直るパターンが多く見受けられたものの、自分のは特にカスタムしてないため範囲外。MySQLのDB破損も疑いつつ絞っていった末[解決済み] 4.3でメディアライブラリになにも表示されないに書いてある「phpのmemory limit増加」を試したら解決しました。エラーにmemoryなんてフレーズは無かったため優先順位はかなり低かった・・・。

そういえばiPhoneが探すapple-touch-icon.pngを用意(サイト不調のお詫び) | 徒労日記でメモリが足りなくなったりしてデフォルトの128MBから減らしてたな~と今更になって思い出したり。

; Maximum amount of memory a script may consume (128MB)
; http://www.php.net/manual/en/ini.core.php#ini.memory-limit
memory_limit = 96M

ということでphp.iniを変更。メモリは変わらずキツイので80Mから96Mにちょっとだけ増量。その後もphp.iniの再読み込みにhttpdのリスタートが必要なのを知らずに悩みましたが

service httpd restart

ですんなり動くようになりました。確かにメモリ不足なら今回の「OFFにすると改善するプラグインが変動する」という状況も納得です。

また全部のプラグインを有効にできたし、これで更新も怖くない!(ホントかね

コメントを残す