WordPressのPositeプラグインが動作しなくなった不具合をこうやって解決しましたよ、という話

数年前にホームページを納品したお客様から、「スマホからメール投稿した画像がホームページに取り込めなくなった」という連絡が来ました。

そのホームページ、ざっくり概要書くとこんな感じでした。

 ・WordPress使用
 ・サーバはロリポップ
 ・セキュリティ上、管理画面はお客様使用のプロバイダからのみアクセス可能
 ・なので、お客様のスマホからの管理画面へのアクセスは不可
 ・代替策としてpositeプラグインを組み込み、メールで投稿できるようにした
   (ただし、投稿可能なメールアドレスはお客様スマホのアドレスのみに限定)


という感じで構築してたんですが、突然スマホによるメール投稿が出来なくなったという状況だったのでした。

で、まずやってみた事は、

 ① WordPressのバックアップ取得
 ② 全ページのスクリーンショット画像の保存
   (万が一手を加えた為にレイアウトが崩れてしまった場合に備えて復旧手掛かり)
 ③ メールフォームの動作確認
   (これも万が一メールフォームが動作しなくなった事態に備えて)
 ④ positeも含めたプラグインを最新バージョンにアップデート
   (WP本体は自動アップデートされてたので割愛)

と、ここまで実施したところで、②で取得した画像とHPのデザインに相違がない事を確認しました。

さて、肝心のpositeプラグインの動作ですが、う~ん直ってませんねぇ。
一時的に私のスマホからもメール投稿を受け付ける設定にして検証してみたんですが、投稿は反映されません。


さてどうしよう?


という事で、エラーログを見てみる事にしました。
(こちらのサイトを参考にしました→ http://www.nxworld.net/wordpress/wp-debug-log.html )

そのエラーログがこちら↓


このログを見ると
[02-Dec-2016 09:12:40 UTC] PHP Fatal error: Allowed memory size of 134217728 bytes exhausted (tried to allocate 7339985 bytes) in /home/users/2/lolipop.jp-●●●●●●●●●●●/web/wp-content/plugins/postie/lib/pPop3MailServer.php on line 33

とありました。

どうやらメモリ不足でエラーが発生しているようです。

という事でpositeプラグインで設定したメールアドレスに送信されたメールをWebメールで確認したところ、フルサイズの画像を数枚貼ったメールが立て続けに投稿されていることが確認できました。

どうやらこれが原因ですね。
状況としては、

 投稿されたメールをPositeプラグインが受信しようとする
               ↓
 画像が多すぎてメモリ不足でエラーが発生。処理中断
               ↓
 5分後再びPositeプラグインが受信を試みる。でもやっぱりエラー発生。

これを延々と繰り返しているために、見かけ上Positeプラグインが動作していないように見えた模様です。

試しに、これらのメールをWebメール上で一旦手動で全部削除したうえで、改めてPositeプラグインにメール投稿を行ったところ、今度は無事投稿できるようになりました。

あとは、php.iniにてPHPの使用メモリを増やそうとしたんですが、ロリポップの場合増やせないようなので、お客様には、今後は一度に多量の画像を送信しないようお願いし、一件落着。


 

コメントを残す