私はシンプルなアップロードフォームを持っています:
enctype="multipart/form-data"/>
そして
input type="hidden" name="MAX_FILE_SIZE" value="5900000" />
そして、以下の設定が適用されます(php.iniのphpini()でチェックされます):
upload_max_filesize = 7MB
memory_limit = 64M
post_max_size = 8MB
500kの小さなファイルをアップロードしようとすると、
5MB(両方より小さいupload_max_filesize
およびpost_max_size
設定)、エラーコード1で失敗します。
UPLOAD_ERR_INI_SIZE値:1;アップロードされたファイルは、php.iniのupload_max_filesizeディレクティブを超えています。
誰が何が起こっているのか手がかりがありますか?
これはタイプミスによるものだと思います。の代わりに
_upload_max_filesize = 7MB
_
読むはずです
_upload_max_filesize = 7M
_
実際に適用される値を確認するには、phpinfo()
を再度使用します。
また、「php.ini」でpost_max_size
を設定する必要があります
_upload_max_filesize = 7M
_
ここで、値は_7M
_または_10M
_のようなものですが、MB
ではありません。
実際に適用された値を確認するには、phpinfo()
を再度使用します。
以下のコードを使用して、問題が何であるかを理解してください。ファイルサイズに問題がある場合は、_upload_max_filesize
_の_php.ini
_ディレクティブを超える出力を出力するだけです。
_<?php
$error_types = array(
1 => 'The uploaded file exceeds the upload_max_filesize directive in php.ini.',
'The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in the HTML form.',
'The uploaded file was only partially uploaded.',
'No file was uploaded.',
6 => 'Missing a temporary folder.',
'Failed to write file to disk.',
'A PHP extension stopped the file upload.'
);
// Outside a loop...
if ($_FILES['userfile']['error'] == 0) {
// here userfile is the name
// i.e(<input type="file" name="*userfile*" size="30" id="userfile">
echo "no error ";
} else {
$error_message = $error_types[$_FILES['userfile']['error']];
echo $error_message;
}
?>
_
これにより、問題を簡単に特定できます。 switch(){ case }
を使用して、上記のエラーメッセージを出力することもできます。
ここに私がやった大きな間違いがあります:
本当に大きなファイルをアップロードしたい場合、KeepAliveTimeout
を5
秒のデフォルト値よりも高く設定する必要があります。
例えば:
KeepAliveTimeout 300
このプロパティは/etc/Apache2/Apache2.conf
にあります
wHM->Service Configuration->PHP Configuration Editor
に移動し、upload_max_filesize
の値を更新します。