フォーラムへの返信

3件の返信を表示中 - 1 - 3件目 (全3件中)
  • フォーラム: 使い方全般
    返信が含まれるトピック: PDFアップロード時のエラー
    トピック投稿者 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)の理由をもう少し追求してみたいと思います。

    • この返信は2年、 9ヶ月前にtkitdoiが編集しました。
    フォーラム: 使い方全般
    返信が含まれるトピック: PDFアップロード時のエラー
    トピック投稿者 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ファイルの編集などで対応できるか
    確認したいと考えております。

    フォーラム: 使い方全般
    返信が含まれるトピック: PDFアップロード時のエラー
    トピック投稿者 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`

3件の返信を表示中 - 1 - 3件目 (全3件中)