WordPress: Fatal error: Maximum execution time of 30 seconds exceeded

WordPress に画像ファイルをまとめてアップロードしようとしたところ、20個ほどあった jpeg, gif ファイルの中で、なぜか1個だけエラーが発生。

Fatal error: Maximum execution time of 30 seconds exceeded in /usr/local/wordpress/wp-includes/class-wp-image-editor-gd.php on line 162

メディアアップローダーを使用して、複数のファイルをドラッグ&ドロップしたのだけど、なぜ、一つのファイルだけ?
ファイルは、約250kBのJPEGファイル。

一つのファイルだけに発生したので、原因はファイル側にあると考えて、画像エディターで若干解像度を変更して新たに保存したファイルをアップロードしてみた。

しかし結果は同じくエラー。

次にブラウザーアップローダーを使ってみた。
エラーメッセージを控えなかったが、これもエラー。

Webサーバー側の問題か?と考えて、WebサーバーとProxyサーバーを再起動してみた。

しかし、結果は変わらず。そこで素直にエラーメッセージを疑うことにした。30秒のタイムアウトになるということなので、タイムアウト時間を2分にしてみることにしたが、その方法がわからない。
googleで検索してみると、単純に .htaccess に

php_value max_execution_time 120

と追加すればよいとの情報を発見。そのとおりにこの記述を .htaccess に記述。ちなみに .htaccess は wordpress の制御下にあり、mod_rewrite 用の記述の上に追加した。

そして、無駄だろうな~という気持ちで、再度アップロードを試してみたところ、なんとアップロードが完了。ファイルが壊れたりサーバーに問題があったわけではなく、サーバーの処理能力が低くてタイムアウトに達していただけでした。単純にアップロードしてファイルを保存するだけじゃなくて、その後、wordpress用の処理が発生していて、それと画像ファイルコンテンツの相性が悪かったんでしょう。

エラーメッセージは、まずは素直に信じるべし!

そして、アップロードが完了した!と思って、メディアライブラリーをアクセスすると、先ほど失敗したと思っていた画像が何個も登録されていました。ファイルアップロードは完了したけれども、エラーだけが表示されていたというのが実際の状況だったみたいです。

この苦労は何だったの!?

コメントを残す