XSERVER(エックスサーバー)で投稿記事への画像の挿入に失敗する/解決法

公開:

エックスサーバーにあるWordPressでページ作成中、画像を挿入しようとするとサイトに技術的な問題が発生しています。返答が正しい JSON レスポンスではありません。と表示される。

解決方法のみ知りたい方は記事の最後へどうぞ。

投稿記事のすべての画像の挿入に失敗するのではなく、はじめから成功するとき、失敗後に再トライして成功するとき、さらには、画像の挿入ができなかったが別の日に行うと成功する場合もあり、これをやったら必ず失敗するという再現性がない。

トライを繰り返すとエラー表示が増えていく

xserver err

エラー表示が途中から変わることもある

xserver err

はじめてエラーになったときはアップロードの容量制限に引っかかっているのだろうと、php.ini設定を確認したら upload_max_filesize は 30M になっていて問題なさそう。メディアライブラリを見るとサムネイル画像が表示されていないのでアップロードが失敗しているかと思いきや、FTPソフトで /wp-content/uploads/ を確認してみるとアップロードは成功している。

エラー時はメディアライブラリのサムネイルが白紙アイコン

xserver err

エックスサーバーの高速化やセキュリティ設定の他に .htaccess に追加で記述を加えていたり、一部ファイルのパーミッション変更を行っているが、他のレンタルサーバーでも同様にしていてそれが原因でエラーが起こったことはない。

画像の挿入に失敗するエラーはエックスサーバーがはじめて。アップロードはできているが表示ができない。記事作成、画像の挿入は、他のレンタルサーバーのWordPressでは普通に問題なくできていた手順で行っているので、エラーはエックスサーバーに起因するものだと推測される。

エラーが起こったときの設定など

エックスサーバーのx10プラン試用中、WordPressで記事「レンタルサーバー速度調査」のためのウェブサイトを作ろうとしていた。その中の「重いページ」で画像を挿入しようしたがエラーの為できなかった。

WordPress 5.2、プラグインはインストールなし(一度もインストールしていない、元からあるものは全削除)。テーマはTwenty Nineteen(一度も追加インストールしていない、他テーマ削除)。

WordPressセキュリティ設定(すべてON)、Xアクセラレータ Ver.1(ON)、サーバーキャッシュ設定(OFF)、ブラウザキャッシュ設定(ON)、WAF設定(すべてON)、.htaccess にログインページのIPアドレス制限などの記述を追加、ファイルのパーミッション変更(.htaccess 604, wp-config.php 400, xmlrpc.php 400)、PHP7.2.6(推奨バージョン)

試みた対策

サーバー設定変更

設定それぞれを単独で変更してみたが状況変わらず。WAF設定をOFF、ファイルのパーミッションを元通りに、.htaccess の追加記述を削除、Xアクセラレータ Ver.1 を OFF。

原因の切り分け

とりあえず、原因がサーバーにあるのかそれ以外のブラウザなどの環境にあるのか切り分けるために、エックスサーバーで画像の挿入エラーが起こった後にコアサーバーにあるWordPressに同じデータを挿入してみたところまったくエラーは起こらない。そして、再びエックスサーバーのWordPressにログインして作業するとエラー。また次にコアサーバーで作業するもエラーなし。エックスサーバーの時だけ挿入エラーが起こる。

コアサーバー以外にも、ConoHa WING、mixhost、ColorfulBox、XREA、スターサーバーでも同様のエラーは起こらない。

インストール直後のWordPressで試す

これはきっと気づかぬうちに何か設定を変えてしまったか、WordPressのインストール時にファイルが破損してそれが原因になっているのかもしれないと考えて、新しいドメインを取得してエックスサーバーに登録、エックスサーバーではドメインのSSL化のみ設定、WordPressをインストールしただけの状態で投稿記事に画像の挿入を試したところ、2カット目でサイトに技術的な問題が発生しています。エラー発生。

僕はもう疲れたよ……

xserver err

どうやらエックスサーバーの標準状態では掲載しようとしている画像はエラーなく挿入できないらしい。ただし、毎回エラーが起こるわけではないので辛抱強く何度もトライすれば全部の画像を挿入することはできると思う。ちなみに、他の画像では試していないので、すべての画像の挿入時にエラーが起こるかは分からない。

今回の記事「レンタルサーバー速度調査」は、各レンタルサーバーの標準的な設定で同じウェブサイトにアクセスして速さを計測するのが目的なので、エックスサーバーだけ特別に設定を変えるということは考えていなかったが、画像掲載ができないことには仕方がない。

解決方法

エックスサーバーはエラーログをコントロールパネルから簡単にダウンロードして見ることができます。ただし、ログの内容は毎日AM3:00頃にリセットされてしまうので、まず画像の挿入でエラーを起こしてからエラーログを見てみると……。

エックスサーバー > エラーログ

エラーログのダウンロード

[(エラーが起こった時間)] [fcgid:warn] [pid 372137] [client (IPアドレス)] mod_fcgid: stderr: PHP Fatal error: Maximum execution time of 30 seconds exceeded in /home/(サーバーアカウント)/(ドメイン)/public_html/wp-includes/class-wp-image-editor-imagick.php on line 391, referer: https://(ドメイン)/wp-admin/post.php?post=5&action=edit

実行時間が30秒に制限されているので起こったエラー。画像の挿入作業をしてエラー表示が出るまで30秒も過ぎていないと思うが、この制限時間を伸ばして解決を目指す。

サーバーパネルのphp.ini設定を開いて、max_execution_time の設定変更を行う。とりあえず「180」に書き換えて以後エラーなし。

エックスサーバー > php.ini設定

php.ini設定

関連記事