3

HTTP Error大きな jpg ファイル (約 30 ~ 40 MB) をアップロードするとメッセージが表示さ500 Internal Server Errorれ、Chrome 開発ツールのネットワーク タブでasync-upload.php.

ファイルのアップロード後にエラーが表示されます。ディレクトリにファイルが表示されているwp-content/uploadsので、問題はアップロード プロセスとは関係ありません。

問題は、ファイルがアップロードされた後に発生する画像のサイズ変更プロセスに関連していると思います。問題がサイズ変更プロセスに関連していることを証明するために、サムネイルを手動で再構築しようとしました (いくつかの再生成サムネイル プラグインを使用)。それらはすべて、大きな画像のサイズ変更に失敗しました。

この質問を投稿する前に私がしたこと:

  • php.iniファイルのメモリ制限を 256MB に増やしました( memory_limit = 256M)
  • 設定post_max_size = 256M
  • 新しい WP インスタンスをセットアップします。プラグインなし、デフォルトのテーマ。
  • 別のマシンでテスト済み (VPS、同じ PHP 設定)
  • 設定をオフにしましたmod_security

    <IfModule mod_security.c>
        SecFilterEngine Off
        SecFilterScanPOST Off
    </IfModule>
    
  • また、デフォルトの画像ライブラリを変更しようとしました:

    add_filter('wp_image_editors', function () {
        return ['WP_Image_Editor_GD', 'WP_Image_Editor_Imagick'];
    });
    

アップデート:

適用したフィルターが何もしないことに気付きました。WP ソース コードを確認したところ、このフィルターの既定値は['WP_Image_Editor_Imagick', 'WP_Image_Editor_GD']. 順番を変えましたが、Image Magic ライブラリをインストールしていなかったので、WordPress はとにかく GD ライブラリを使用していました。

そこで、Image Magic PHP 拡張機能をインストールして試してみました。デフォルト値が機能するため、フィルターも削除しました。

GD ライブラリを Image Magic に置き換えると、問題は解決しました。、しかし、なぜGDライブラリがそのような大きな画像を処理できないのか、私はまだ興味があります. この問題を別の方法で解決する方法はありますか? サードパーティのライブラリに依存したくありません。標準の PHP セットアップを使用したいと思います (カスタム PHP 拡張機能をインストールできない共有ホスティングにサイトをデプロイする場合)。

4

4 に答える 4