Pocket

WordPressの記事に画像のアップロード時、何回かに一回失敗する、ファイル名を変更したら成功する、何回やっても失敗する画像がある、わざわざサイズを変更して再度アップする、など挫折しそうになって色々調べた結果、簡単な設定を一度してしまえば解決するのでした・・・

画像をアップロードする時の画面

画像がアップロードできない時の様子

WordPressで画像をアップする際は、ブロックを追加し「画像」を選択、画像をドラッグするか、新規アップロードするか、ライブラリーからファイルを選択します。エラーパターンとしては3つあります。それぞれ以下のようなエラーが表示されます。

「返答が正しいJSONレスポンスではありません。」現象

画像というブロックの上にドラッグする、または新規アップロードでPC等からアップロードすると、以下の画像のように表示されます。
「返答が正しいJSONレスポンスではありません。」と表示され、どうしたらいいかわかりません。

アップロード失敗画面例① 「返答が正しいJSONレスポンスではありません。」

「HTTPエラー。」現象

画像というブロックの、メディアライブラリからアップロードしようとした時に「HTTPエラー。」と表示され、どうしたらいいかわかりません。

右下の「ファイルを選択」から画像を選びます。

アップロード失敗画面例② 「HTTPエラー。」

Fatal error: Maximum execution time of 30 seconds exceeded in /home/kapucc/kapucc.net/public_html/wp-includes/class-wp-image-editor-imagick.php on line 354」現象

ブラウザーアップローダーで画像をアップロードする際に発生するエラーです。うまくいかない場合にお試しください。とあるので救世主的な存在とみせかけて余裕でエラーを起こします。エラー名はFatal error: Maximum execution time of 30 seconds exceeded in ~ というもの。直訳すると致命的なエラーということで、何で勝手に30秒という制限をしているのだ、成功するまで延ばせばいいじゃないか、と思いますよね。後述しますが、結論この30秒という制約を伸ばすことが問題の解消方法になります。

メディアのアップロード時に、「うまくいかない場合はブラウザーアップローダーをお試しください。」
「参照」から対象の画像を選び、アップロードを押すと

アップロード失敗画面例③ 「Fatal error: Maximum execution time of 10 seconds exceeded in /home/kapucc/kapucc.net/public_html/wp-includes/class-wp-image-editor-imagick.php on line 354

解決方法

アップロード制限時間30秒を伸ばすことが解決方法です。
php.ini設定の、max_execution_timeの設定値を変更します。
以下手順概要です。私が使用しているXserverでの解決方法を記載します。
サーバーによって異なるかとは思いますが一般的にphp設定変更が必要のようです。

1. Xserverのサーバーパネルにログイン

2. 「php.ini設定」の「php.ini設定変更」に進む

3. 「その他の設定」の「max_execution_time」の30という数字を120に変更

4. 画面右下の「設定する(確認)」を押し「設定する(確定)」を押す
なんとこれだけです。この設定後、マルチアップローダーを使用するとおもしろいようにアップロードが成功します。

Xserver:インフォパネルへのログインではなく、サーバーパネルへログインを行います。その後、画面下のphp.ini設定をクリックします。その後対象のドメインを選びます。
php.ini設定変更のタブを押し、下にスクロールします。
ここは120でなくても構いません。最後に設定する(確認)を押し、
次の画面で設定する(確定)を押せば、設定完了です。
これで終わります。元のブログに戻り画像をアップロードしてみてください。

追記:ネットワーク不良でもアップロード出来ない事象が発生します。(HTTPエラー現象になります)
ネットワーク状態も確認してみてください。