用php更大的文件上传问题

时间:2010-04-15 11:54:05

标签: php .htaccess file-upload

我需要将csv文件上传到服务器。适用于较小的文件,但当文件为3-6 meg时,它不起作用。

$allowedExtensions = array("csv");
         foreach ($_FILES as $file) { 
            if ($file['tmp_name'] > '') { 
             if (!in_array(end(explode(".", strtolower($file['name']))), $allowedExtensions)) { 

              die($file['name'].' is an invalid file type!<br/>'. '<a href="javascript:history.go(-1);">'. '&lt;&lt Go Back</a>'); 

             }
             if (move_uploaded_file($file['tmp_name'], $uploadfile)) {
                    echo "File is valid, and was successfully uploaded.\n";
                } else {
                    echo "Possible file upload attack!\n";
              }

             echo "File has been uploaded";



            } 

//上传表单

 <form name="upload" enctype="multipart/form-data" action="<? echo $_SERVER['php_self'];?>?action=upload_process" method="POST">
                    <!-- MAX_FILE_SIZE must precede the file input field -->
                    <input type="hidden" name="MAX_FILE_SIZE" value="31457280" />
                    <!-- Name of input element determines name in $_FILES array -->
                    Send this file: <input name="userfile" type="file" />
                    <input type="submit" value="Send File" />
            </form>

我还将此添加到htaccess

php_value upload_max_filesize 20M
php_value post_max_size 20M
php_value max_execution_time 200
php_value max_input_time 200

我哪里错了?

4 个答案:

答案 0 :(得分:1)

$ _FILES ['userfile'] ['error']的值是多少?看看这里:

http://php.net/manual/en/features.file-upload.errors.php

此外,最新消息:

if ($file['tmp_name'] > '') { 

我认为这不是很健康。

答案 1 :(得分:0)

对您的代码提出一些建议

  • ($file['tmp_name'] > '')应该类似( ! empty($file['tmp_name']))
  • 回应“可能的文件上传攻击”对任何人都无济于事。如果您认为这是可能的攻击,请将其记录到文件中。
  • 表单操作属性$_SERVER['php_self']应该大写,因为它是常量,即$_SERVER['PHP_SELF']

答案 2 :(得分:0)

检查您的apache错误日志,错误应该在那里?

答案 3 :(得分:-1)

检查你的php.ini文件,看看upload_max_filesize是否设置高于3 MB,我不知道.htaccess是否优先于php.ini。

如果我没记错的话,debian php5的默认上传限制是2MB,但我不确定你在运行什么系统。

如果您创建文件,也可以检查php值。 info.php 将它放在与“问题php脚本”相同的目录中。

文件内容应如下所示 <?php phpinfo(); ?>

这将为您提供与您所在目录相关的所有php相关值,希望它有所帮助。