PHP move_uploaded_file()FAILS,我不知道为什么

时间:2011-12-10 15:43:50

标签: php file-upload

这是我的代码:

$uploaddir = '/temp/';
$uploadfile = $uploaddir.basename($_FILES['file']['name']);

if (move_uploaded_file($_FILES['file']['tmp_name'], $uploadfile))
    send_OK();
else
    send_error("ERROR - uploading file");

我尝试使用ftp_fput,ftp_put,move_uploaded_file,重命名,复制以及我可以放手的任何内容上传。似乎没什么用。

我无法理解是什么问题,因为move_uploaded_file只返回true或false而没有错误代码。

帮助??

7 个答案:

答案 0 :(得分:13)

  

我不知道为什么

但你必须这样做。

这就是错误信息的用途。
出现问题时,您是否看到任何错误消息?如果没有,那么你必须检查错误日志。

在代码顶部添加此行

error_reporting(E_ALL);

和这一个,如果它是你的本地(非现场)服务器

ini_set('display_errors',1);

这样您就可以在屏幕上看到错误

对于文件上传,您必须先检查$_FILES['file']['error'])。它不是0,请参阅实际消息的手册页。

答案 1 :(得分:11)

您确定目标目录是否具有world的写权限?即,权限表示中的第三个数字? php上传的文件归团体www-data

所有

您可以通过

更改所有权
[sudo] chown -R www-data folder // change owner
[sudo] chown -R www-data:www-data folder // change group and owner

答案 2 :(得分:4)

使用 move_uploaded_file 时遇到了类似的问题,无法使用 $ _ FILES ['filename'] ['error'] 代码0上传特定文件。

事实证明,文件名相对于目标目录必须是唯一的。 move_uploaded_file 不知道如何处理相同的文件名。

答案 3 :(得分:2)

您是否检查过文件大小的限制?崩溃的原因之一可能是您尝试上传大于配置限制的文件。查看php.ini中的config var“upload_max_filesize”并检查文件的大小。

答案 4 :(得分:1)

除权限外,请务必检查服务器上是否有可用的磁盘空间。如果没有,move_uploaded_file()将失败,错误为0。

答案 5 :(得分:1)

这也引起了我的注意。请注意:

  

move_uploaded_file()既是安全模式,也是open_basedir。但是,仅限于目标路径上的限制,以允许移动文件名可能与此类限制冲突的上载文件。 move_uploaded_file()通过仅允许移动通过PHP上传的文件来确保此操作的安全性。

如果您尝试将文件移到网站基本目录之外,这些设置可能会导致上传失败。

答案 6 :(得分:0)

您是否尝试激活error_reporting?

如果允许上传文件,你应该检查你的php-config。