ホームページ >バックエンド開発 >PHPチュートリアル >PHP画像アップロード500内部サーバーエラーエラー
単純に画像をアップロードするために PHP を作成したところ、200k の画像をアップロードするときに内部サーバー エラーが発生したことがわかりました。upload_max_filesize、その他の post_max_size、max_input_time、memory_limit、max_execution_time の設定項目を確認しましたが、問題はありませんでした。ログ: mod_fcgid: HTTP リクエストの長さ 138296 (これまでのところ) MaxRequestLen (131072) を超えており、問題が見つかりました。
fastcgi モードの設定の問題であることが判明しました。HTTP リクエスト長 (138296) が長すぎて、既存の最大リクエスト長 131072 を超えていたためと思われます。 fcgid 構成ファイルを確認したところ、MaxRequestLen パラメーターが構成されていないことがわかりました。 131072の設定がデフォルトのようです。そこで、この設定を fcgid 設定ファイルに追加しました。 15728640 は 15M です。php.ini に設定されている最大 POST 長は 15M なので、同じ長さに設定しました: MaxRequestLen 15728640
MaxRequestLen 15728640
AddHandler fcgid-script .fcgi .php
# php.ini ファイルはどこで探しますか?
FcgidInitialEnv PHPRC ”e:/wamp/bin/apache/apache2.3.14 / bin”
# PHP_FCGI_MAX_REQUESTS を FcgidMaxRequestsPerProcess
# すべてのリクエストが完了する前に php-cgi プロセスが終了しないように設定します
FcgidInitialEnv PHP _FCGI_MAX_REQUESTS 1000
#プロセスが終了するまでに処理する必要があるリクエストの最大数
FcgidMaxRequestsPerProcess 1000
#PHP プロセスの最大数
FcgidMaxProcess es 15
# php-cgi プロセスが終了するまでのアイドル時間の秒数
FcgidIOTimeout 120
#php-cgi へのパス
FcgidWrapper 「e:/wamp/bin/php」 /php5.4/php-cgi.exe” .php
# ”.php” ファイルの MIME タイプを定義します
AddType application/x-httpd The "
MaxRequestLen" -php .phpの
は、fastcgi モードでファイルをアップロードするときに http によって受け入れられる最大ファイル長です。 問題は解決しました
注:
PHP のデフォルトのアップロード制限は最大 2M です。この設定を超えるファイルをアップロードする場合は、 PHP、Apacheの一部パラメータなどを調整します。以下に、PHP ファイルのアップロードに関連するいくつかのパラメーターを簡単に紹介します。
file_uploads
: HTTP を介したファイルのアップロードを許可するかどうかを切り替えます。デフォルトは ON です。
upload_tmp_dir
:upload_tmp_dir は、PHP によってアップロードされたファイルが配置される一時ディレクトリを記述するために使用されます。ファイルをアップロードする場合は、サーバーが一時ファイルを閉じていないことを確認する必要があります。フォルダーへの書き込み権限があります。指定されていない場合、PHP はシステムのデフォルトを使用します。
upload_max_filesize
: アップロードできる最大ファイル サイズ。デフォルトは 2M です。
post_max_size
: POST メソッドを使用したフォーム送信中に PHP が受信できるデータの最大量を制御します。 PHPファイルアップロード機能を使用する場合は、この値をupload_max_filesizeより大きく変更する必要があります。
max_input_time
: POST、GET、および PUT メソッドを介してデータを受信する時間を秒単位で制限します。アプリケーションが低速リンクで実行されている場合は、データの受信に必要な追加時間に対応するために、この値を増やす必要がある場合があります。
memory_limit
: スクリプトの実行によってシステムで使用可能な大量のメモリが使用されるのを避けるために、PHP ではメモリ使用量の制限を定義できます。単一のスクリプトが使用できる最大メモリ容量を指定するには、memory_limit 変数を使用します。memory_limit 変数の値は、post_max_size の値よりも適切に大きくする必要があります。
max_execution_time
: max_execution_time は、スクリプトを強制終了する前に PHP がスクリプトの完了を待機する時間を設定します。この時間は秒単位で計算されます。この変数は、スクリプトが無限ループに入った場合に役立ちます。ただし、完了までに時間がかかる正当なアクティビティ (大きなファイルのアップロードなど) がある場合、この機能により操作が失敗する可能性もあります。このような場合、重要なプロセスの実行中に PHP がスクリプトをシャットダウンしないように、この変数の値を増やすことを検討する必要があります。
Linux ホストの場合、/etc/httpd/conf.d/access.conf/ に php.conf ファイルがある可能性があり、このファイルにより、一部のシステムのファイル サイズ制限の問題が解決される可能性があります。