【发布时间】:2015-05-21 09:22:13
【问题描述】:
当我使用 PHP 上传图像时,我没有收到任何错误,并且图像在服务器上是 0 字节。 考虑的事情:
- File_uploads 在 phpinfo() 中打开
- phpinfo() 中的 Upload_max_filesize 为 8M
- Upload_tmp_dir 已设置并具有 777 个权限
- 如果我运行 file_exists($_FILES['userfile']['tmp_name']),它会返回 是的
- 如果我运行 getimagesize($_FILES['userfile']['tmp_name']),我会得到一个读取 错误通知。镜像有效,可用系统镜像打开 查看器
我正在使用一个非常简单的上传脚本进行测试:
HTML:
<form enctype="multipart/form-data" action="upload.php" method="POST">
<input type="hidden" name="MAX_FILE_SIZE" value="512000" />
Send this file: <input name="userfile" type="file" />
<input type="submit" value="Send File" />
</form>
PHP:
<?php
//$uploaddir = '/var/www/html/upload';
$uploaddir = '';
$uploadfile = $uploaddir . basename($_FILES['userfile']['name']);
echo "<p>";
if (move_uploaded_file($_FILES['userfile']['tmp_name'], $uploadfile)) {
echo "File is valid, and was successfully uploaded.\n";
} else {
echo "Upload failed";
}
echo "</p>";
echo '<pre>';
echo 'Here is some more debugging info:';
print_r($_FILES);
print "</pre>";
?>
当我提交文件时,我没有收到任何错误,并且图像在目标文件夹中创建,具有正确的名称和扩展名,但正如标题所说,它是 0 字节(当然,它不能打开)。
感谢您的宝贵时间。
编辑 Sajad Karuthedath 刚刚让我看到 $_FILE['file']['size'] 的值是 0 !!文件上传不正确可能是什么问题?
编辑 2 上传 txt、pdf、tar 文件正常工作。问题仅在于图像类型文件!
【问题讨论】:
-
没有错误,因为您没有检查它们,或者您的系统设置已启用它。 php.net/manual/en/function.error-reporting.php
-
如果从服务器根目录运行脚本,请尝试
$uploaddir = 'upload/';。 -
您好 Fred,日志中没有错误。此外,在脚本中尝试 error_reporting(E_ALL) 仍然没有显示任何内容。上传目录不是问题,因为它只设置新文件的创建位置,并且脚本在根目录或上传文件夹上正确创建文件(大小为 0 字节)。
-
您在更改最大上传大小后是否重新启动了服务器?? @dieguit
-
它们可能没有显示出来。试试
error_reporting(E_ALL); ini_set('display_errors', 1);。也可以试试$uploadfile = $uploaddir ."/" . basename($_FILES['userfile']['name']);,但你的$uploaddir = '';是空的,所以这可能是一个因素。