サポート » 使い方全般 » PDFアップロード時のエラー

  • 「メディアの選択またはアップロード」※より
    「ファイルをドロップしてアップロード」をしたところ、
    画面右側に下記のエラーメッセージが表示されました。
    ———————————
    サーバーから予期しないレスポンスがありました。ファイルは正しくアップロードされているかもしれません。メディアライブラリもしくはページをリロードして確認してください。
    ———————————
    ※https://ドメイン名/wp-admin/post.php?post=XXX&action=edit

    .pdfのファイル場合のみ発生し、
    .xlsxや.txt、.jpgなどのファイルでは発生しません。

    Google Chromeでエラーを確認し、
    エラー発生時にブラウザのログを確認したところ下記のエラーも表示されていました。
    .pdfの時のみ発生し、.xlsxや.txtをアップロード時は下記のエラーも発生しません。
    ———————————
    POST https://ocean-test.valuesv.jp/wp-admin/async-upload.php Failed to load resource: the server responded with a status of 500 (Internal Server Error)
    ———————————

    同じファイル・データベースにて3つの環境で調査し、
    以下の結果となりました。

    (共通)WordPressバージョン:5.8.2

    A社ホスティングサーバー(PHP7.4)・・・再現
    A社ホスティングサーバー(PHP7.3)・・・再現
    A社ホスティングサーバー(PHP5.6)・・・再現せず
    当方ローカル環境(PHP7.3)・・・再現せず

    再現時にPHPエラーが出力されているか確認しましたが、
    見当たらないようです(見逃している可能性もあるかもしれません)

    最終的にはA社ホスティングサーバー(PHP7.4)にて、再現しないように
    調整したいと考えております。

    問題調査の手がかりなどアドバイスいただけると幸いです。

6件の返信を表示中 - 1 - 6件目 (全6件中)
  • @tkitdoi さん

    こんにちは。

    POST https://ocean-test.valuesv.jp/wp-admin/async-upload.php Failed to load resource: the server responded with a status of 500 (Internal Server Error)

    →このエラーがブラウザコンソールに出ているという事は、サーバ側のPHPレベルでエラーが起こっている可能性が高いです。

    そのため、デバッグモードを有効にした上で、サーバに記録されているエラーログを確認すれば、具体的な症状・原因が分かると思います。

    スレッド開始 tkitdoi

    (@tkitdoi)

    ご教示いただきありがとうございます。

    いただいた内容を参考に、
    デバッグモードを有効にして、試してみました。

    すると、今回発生している問題の操作を行なった場合は、
    デバッグログに情報は出力されず、
    別の問題を発生させると(wp-config.phpに誤った記述をする)、
    デバッグログに情報が出力されました。

    この場合は、phpエラーの確認の前に、Apacheのエラーログを確認することも有効でしょうか?

    また、先ほど確認してみると、
    問題の発生時に、Google Chromeのコンソールログを展開すると、下記の情報も
    記録されておりましたので、書き込ませていただきます。
    ———————————

    POST https://ocean-test.valuesv.jp/wp-admin/async-upload.php 500 (Internal Server Error) `moxie.js?ver=1.3.5:7173 POST https://ocean-test.valuesv.jp/wp-admin/async-upload.php 500 (Internal Server Error)
    send @ moxie.js?ver=1.3.5:7173
    exec @ moxie.js?ver=1.3.5:2247
    shimExec @ moxie.js?ver=1.3.5:2417
    exec @ moxie.js?ver=1.3.5:2435
    exec @ moxie.js?ver=1.3.5:5369
    _doXHR @ moxie.js?ver=1.3.5:5407
    send @ moxie.js?ver=1.3.5:5058
    uploadNextChunk @ plupload.js?ver=2.1.9:1522
    onUploadFile @ plupload.js?ver=2.1.9:1559
    dispatchEvent @ plupload.js?ver=2.1.9:2107
    trigger @ moxie.js?ver=1.3.5:2070
    uploadNext @ plupload.js?ver=2.1.9:933
    start @ plupload.js?ver=2.1.9:1865
    (anonymous) @ wp-plupload.js?ver=5.8.2:399
    dispatchEvent @ plupload.js?ver=2.1.9:2107
    trigger @ moxie.js?ver=1.3.5:2070
    (anonymous) @ plupload.js?ver=2.1.9:2017
    (anonymous) @ moxie.js?ver=1.3.5:249
    setTimeout (async)
    (anonymous) @ plupload.js?ver=2.1.9:1989
    (anonymous) @ moxie.js?ver=1.3.5:249
    (anonymous) @ plupload.js?ver=2.1.9:1940
    (anonymous) @ plupload.js?ver=2.1.9:696
    (anonymous) @ plupload.js?ver=2.1.9:1939
    callNext @ moxie.js?ver=1.3.5:247
    (anonymous) @ moxie.js?ver=1.3.5:249
    (anonymous) @ plupload.js?ver=2.1.9:1940
    (anonymous) @ plupload.js?ver=2.1.9:717
    (anonymous) @ plupload.js?ver=2.1.9:1939
    callNext @ moxie.js?ver=1.3.5:247
    (anonymous) @ moxie.js?ver=1.3.5:249
    (anonymous) @ plupload.js?ver=2.1.9:1940
    (anonymous) @ plupload.js?ver=2.1.9:677
    (anonymous) @ plupload.js?ver=2.1.9:1939
    callNext @ moxie.js?ver=1.3.5:247
    inSeries @ moxie.js?ver=1.3.5:253
    filterFile @ plupload.js?ver=2.1.9:1945
    (anonymous) @ plupload.js?ver=2.1.9:1980
    callNext @ moxie.js?ver=1.3.5:247
    inSeries @ moxie.js?ver=1.3.5:253
    addFile @ plupload.js?ver=2.1.9:2014
    fileInput.onchange @ plupload.js?ver=2.1.9:1089
    (anonymous) @ moxie.js?ver=1.3.5:2086
    (anonymous) @ moxie.js?ver=1.3.5:2020
    callNext @ moxie.js?ver=1.3.5:247
    inSeries @ moxie.js?ver=1.3.5:253
    dispatchEvent @ moxie.js?ver=1.3.5:2025
    trigger @ moxie.js?ver=1.3.5:2070
    onChange @ moxie.js?ver=1.3.5:6610`

    スレッド開始 tkitdoi

    (@tkitdoi)

    連続投稿にて失礼致します。

    調べたところ、
    phpinfoにてimagickに関する情報が表示される場合のみエラーが発生するようです。
    WordPressを使用しているレンタルサーバーでは、phpのバージョンを任意に変更でき、
    php7.3,php7.4を選択した時のみ、phpinfoの情報に「imagick」に関する情報が表示されます。

    php8.0やphp5.6なども選択でき、その場合は、imagickに関する情報が表示されません。
    (imagickが無効であると認識しております)

    なお、どのphpバージョンを選択した時でも、GDはサポートしております。

    おそらく、WordPressのpost.phpにて、ファイルをアップロードする際に、
    PDFファイルなどからサムネイル画像を作成する処理が動作し、
    imagickが使用された時のみ、サムネイル作成に失敗しているのではないかと推測致しました。

    レンタルサーバーの運営元に、imagickを無効化できないか確認してみようと思います。
    同時に、imagickを使用しないように、WordPressの設定やphpファイルの編集などで対応できるか
    確認したいと考えております。

    ishitaka

    (@ishitaka)

    こんにちは

    下記ページの「9. Imagickと共有ホスティング会社のパフォーマンス異常を処理する」セクションが参考になると思います。
    https://kinsta.com/jp/blog/wordpress-http-error/

    nobita

    (@nobita)

    こんにちは、

    https://wordpress.stackexchange.com/questions/59763/how-to-fix-http-error-when-uploading-images#answer-142867

    このフィルターで、GD と imagick の動作順を変更できたと思います。

    私が使った事があるのは4-5年前なので、今もうまくいくかはわかりませんが、ダメもとで良ければ

    スレッド開始 tkitdoi

    (@tkitdoi)

    ご教示いただきありがとうございます。

    wp-includes/media.phpの関数「_wp_image_editor_choose」において、

    call_user_func( array( $implementation, ‘test’ ), $args )
    の処理では、
    imagickがインストールされていない場合、
    $implementationがWP_Image_Editor_Imagickの場合、false
    $implementationがWP_Image_Editor_GDの場合、true

    call_user_func( array( $implementation, ‘supports_mime_type’ ), $args[‘mime_type’]
    の処理(※)では、
    $implementationがWP_Image_Editor_Imagickかつ$args[‘mime_type’]がapplication/pdfの場合、true
    $implementationがWP_Image_Editor_GDかつ$args[‘mime_type’]がapplication/pdfの場合、false

    結果、_wp_image_editor_chooseの返り値として、
    imagickがインストールされている場合、
    WP_Image_Editor_Imagickが返されることになりました。

    下記ページの「9. Imagickと共有ホスティング会社のパフォーマンス異常を処理する」セクションで紹介されている「function.php」への追記処理は、配列「$editors」の要素の順番を入れ替える(WP_Image_Editor_GDを先に持ってくる)処理だと思いますが、$implementationがWP_Image_Editor_GDかつ$args[‘mime_type’]がapplication/pdfの場合は、(※)の処理でfalseとなってしまい、結局その後の要素「WP_Image_Editor_Imagick」が_wp_image_editor_chooseの返り値として採用されてしまうと認識しました。
    そして、私がレンタルしているサーバーでは、Imagickが正しく動作しない(※2)ので、問い合わせのエラーが発生してしまっているのではないかと考えました。((※2)の理由はまだわかっていません。)

    https://kinsta.com/jp/blog/wordpress-http-error/

    ですので、function.phpに下記を追記して、対処することにしました。(配列「$editors」から「WP_Image_Editor_Imagick」を消すfunctionを定義)

    ———————————
    function wpb_image_editor_delete_imagemagick( $editors ) {
    $gd_editor = ‘WP_Image_Editor_GD’;
    $im_editor = ‘WP_Image_Editor_Imagick’;
    $editors = array_diff( $editors, array( $im_editor ) );
    array_unshift( $editors, $gd_editor );
    return $editors;
    }
    add_filter( ‘wp_image_editors’, ‘wpb_image_editor_delete_imagemagick’ );
    ———————————

    現時点では、この処置によって、問い合わせのエラーは発生しなくなっております。

    (※2)の理由をもう少し追求してみたいと思います。

    • この返信は1ヶ月、 3週前にtkitdoiが編集しました。
6件の返信を表示中 - 1 - 6件目 (全6件中)
  • このトピックに返信するにはログインが必要です。