这是我的代码:
$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而没有错误代码。
帮助??
答案 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。