php - 由于大小无法上传文件

标签 php file-upload mamp

我正在尝试使用 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 的 txt 文件的结果:

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

上传PNG文件127KB的结果:

Warning: file_get_contents(): Filename cannot be empty in path/test1.php on line 10 image temp name: error: 3 image name: IMG_8807.JPG image data: image type:

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 文档所说:

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 上。

这些是您可以尝试的一些事情。希望这会有所帮助。

关于php - 由于大小无法上传文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34315978/

相关文章:

php - 如何使 laravel 多对一(hasMany)关系有效

javascript - PHP 和 JS - 上传图片不显示

javascript - 不用activexobject获取上传文件大小?

macos - 要从 OSX 中完全删除 MAMP 安装,需要做什么?

php - MAMP Pro 2.2 不读取 httpd.conf 更改

php - MAMP 服务器正在运行但显示 "Oops! Google Chrome could not find localhost:8888"

javascript - 我试图从 Angular js 中的 http 请求返回一些数据,但它给出了一个未定义的

php - "libcrypto.so.1.0.0: version ' OPENSSL_1.0.1 ' not found "在 shell_exec 期间

php - 更新不起作用的 PHP MYSQL CRUD

javascript - 如何将文件内容上传到变量 Javascript/HTML?