6

PHPで大きなファイルをアップロードしているときに奇妙な問題が発生しました。

php.iniでは、max_execution_time30にpost_max_size設定され、32Mに設定され、32Mにupload_max_filesize設定されます。サイズが40.2MBのファイルをアップロードしようとしても、エラーは表示されません。$_FILES変数には値がarray(0) { }あり、を示し$_FILES['userfile']ますNULL

ファイルサイズがphp.iniで設定された値より大きい場合は、エラーメッセージが返されます。

UPLOAD_ERR_INI_SIZE、値:1; アップロードされたファイルがphp.iniのupload_max_filesizeディレクティブを超えています。

ただし、エラーも表示されていません($_FILES空の配列も同様です)。なぜこれが起こっているのか私にはわかりません。

php.iniを変更し、post_max_sizeを64Mにupload_max_filesize設定し、64Mに設定すると、正常に動作します。そこで、php.iniファイルを変更する代わりに、次のコードを使用することにしました。

ini_set('upload_max_filesize', '64M');
ini_set('post_max_size', '64M');
ini_set('max_execution_time', 300);

私も増やしてみましたmax_execution_time。それでも、私は同じ問題を抱えています。ini_set()ここでは機能していません。

4

4 に答える 4

20

40 MBのファイルがアップロードエラーで失敗するようにするには、post_max_sizeを増やす必要があります。その変数の値を超えると、空の$_FILES配列が取得されます。マニュアルを見る

投稿データのサイズがpost_max_sizeより大きい場合、$_POSTおよび$_FILESスーパーグローバルは空です。

また、変更しようとしている変数の2つがPHP_INI_PERDIRであり、php.ini、.htaccess、またはhttpd.confで変更する必要があるため、ini_set()はそこで機能しません。たとえば、.htaccessのこれらの設定を使用して40MBのファイルを試す必要があります

php_value upload_max_filesize 32M
php_value post_max_size 64M
php_value max_execution_time 300
于 2010-08-22T20:28:12.463 に答える
3

確認する必要のある設定がもう1つあります。それは、ApacheのLimitRequestBodyです。

ファイルがそれを超えると、PHPに到達する前にアップロードがブロックされる可能性があります。

Apacheドキュメント

于 2010-08-22T20:28:33.650 に答える
2

ini_set()はここでは機能しません。

で変更しようとしている値はini_set()、を除いてmax_execution_time、で変更することはできませんini_set()php.iniディレクティブ
のリストでは、タイプが報告されています。つまり、(構成設定を設定できる場所で説明されているように)php.ini、.htaccess、またはhttpd.confで変更できます。で変更できる構成設定は、でマークされているものです。PHP_INI_PERDIRini_set()PHP_INI_USER

于 2010-08-22T20:43:12.113 に答える
0

サーバーの場合:

cPanelでphpを検索すると、[ソフトウェア]の下に[PHPバージョンの選択]が表示されます。ソフトウェア->PHPバージョンの選択->Phpオプションへの切り替え->値の変更->保存。

ローカルの場合:

xamppの下のphpフォルダーでPHPini(構成設定)ファイルを見つけます。変更 post_max_size = 40Mしてupload_max_filesize = 40M

于 2018-03-02T10:03:46.340 に答える