web-dev-qa-db-ja.com

upload_max_sizeがファイルサイズよりも大きい場合でも、$ _ FILE大きなファイルをアップロードするとエラー1が発生します

私はシンプルなアップロードフォームを持っています:

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ディレクティブを超えています。

誰が何が起こっているのか手がかりがありますか?

27
mgpepe

これはタイプミスによるものだと思います。の代わりに

_upload_max_filesize = 7MB
_

読むはずです

_upload_max_filesize = 7M
_

実際に適用される値を確認するには、phpinfo()を再度使用します。

53
Pekka 웃

また、「php.ini」でpost_max_sizeを設定する必要があります

7
Lawrence
_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 }を使用して、上記のエラーメッセージを出力することもできます。

3
yasin

ここに私がやった大きな間違いがあります:

本当に大きなファイルをアップロードしたい場合、KeepAliveTimeout5秒のデフォルト値よりも高く設定する必要があります。

例えば:

KeepAliveTimeout 300

このプロパティは/etc/Apache2/Apache2.confにあります

1
pdschubert

wHM->Service Configuration->PHP Configuration Editorに移動し、upload_max_filesizeの値を更新します。

0
nisam