无法上传文件,因为文件大小超限。

5

我正在尝试使用PHP上传文件!我已经尝试上传PNG、JPG、PDF、TXT文件,只有当文件大小约为20kb时才能成功上传。当我尝试上传大小约为150KB的文件时,它会打印$_FILE error = 3,文件名为'1234.png',其中tmp_name为空,图片本身也为空!以下是我的代码:

ini_set('display_errors',1);
error_reporting(-1);

$imageTmp = addslashes($_FILES['image']['tmp_name']);
//$imageTmp = $_FILES['image']['tmp_name'];
$imageOldName = addslashes($_FILES['image']['name']);
$imageData = file_get_contents($imageTmp);
//$imageData = base64_encode($imageTmp);

echo 'image temp name: '. $imageTmp .' ';
echo 'error: '. $_FILES['image']['error']. ' ';
echo 'image name: '. $imageOldName. ' ';
echo 'image data: '. $imageData. ' ';
echo 'image type:'. $_FILES['image']['type'];
echo "<pre>";
echo "POST:";
print_r($_POST);
echo "FILES:";
print_r($_FILES);
echo "</pre>";


$inipath = php_ini_loaded_file();

if ($inipath) {
echo 'Loaded php.ini: ' . $inipath;
} else {
echo 'A php.ini file is not loaded';
}

我尝试了多种解决方案,例如更改post_max_size = 200Mupload_max_filesize = 200M的值,而不是32M。

这是上传4KB文本文件的结果:

image temp name: /Applications/MAMP/tmp/php/phpOc7d6a error: 0 
image Name: test.txt image data: hello image type:text/plain
POST:Array
(
[submit] => Record Test
)
FILES:Array
(
[image] => Array
    (
        [name] => test.txt
        [type] => text/plain
        [tmp_name] => /Applications/MAMP/tmp/php/phpOc7d6a
        [error] => 0
        [size] => 405
    )

  )  
  Loaded php.ini: /Applications/MAMP/bin/php/php5.6.10/conf/php.ini

上传127KB的PNG文件的结果:

警告:file_get_contents():路径/test1.php中第10行的文件名不能为空; 图像临时名称:错误:3; 图像名称:IMG_8807.JPG; 图像数据:图像类型为空。

POST:Array
(
)
FILES:Array
(
[image] => Array
    (
        [name] => IMG_8807.JPG
        [type] => 
        [tmp_name] => 
        [error] => 3
        [size] => 0
    )

)
Loaded php.ini: /Applications/MAMP/bin/php/php5.6.10/conf/php.ini

顺便说一下,上传失败后,服务器会崩溃并显示502网关错误,我必须重新启动Apache!


你的php.ini中最大上传文件大小的设置是什么?你确定你修改了正确的php.ini吗?你在修改后重新启动了Apache吗? - Jay Blanchard
当您调用phpinfo()时,您是否会得到upload_max_filesize的值为200M - Anish Silwal
@ASK 是的,上传最大大小和POST最大大小都是200。 - Nawaf Altharwy
@JayBlanchard上传文件大小限制为200兆字节,我输出inipath的原因是为了确保我正在编辑正确的文件,是的,之后重启了Apache。 - Nawaf Altharwy
1个回答

0

正如 PHP 文档所述:

UPLOAD_ERR_PARTIAL is given when the mime boundary is not found after the file data. 
A possibly cause for this is that the upload was cancelled by the user (pressed ESC, etc).

可能的原因:

  • 权限不正确

  • 服务器上没有足够的可用空间。

  • 从iOS上传。

  • 由于浏览器限制,上传文件夹时可能会出现此错误。在Mac OS X上发生。

这些是您可以尝试的一些方法。希望能有所帮助。


我正在使用 Mac OS!我将在 Windows 机器上尝试。 - Nawaf Altharwy
尝试重新安装服务器。 - Anish Silwal

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接