这是我的代码:
$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,没有错误代码。
帮助吗? ?
您确定目标目录对world
(权限表示中的第三个数字)具有写权限吗?php上传的文件属于www-data
你可以通过
改变所有权[sudo] chown -R www-data folder // change owner
[sudo] chown -R www-data:www-data folder // change group and owner
我不知道为什么
但是你必须这么做。
这就是错误消息的作用。
当出现问题时,您是否看到任何错误消息?如果没有,那么您必须检查错误日志。
将这行添加到代码的顶部
error_reporting(E_ALL);
和这个,如果它是您的本地(非活动)服务器
ini_set('display_errors',1);
这样你就能在屏幕上看到错误了
对于文件上传,您必须先检查$_FILES['file']['error'])
。如果不是0
,请参考手册页面获取实际消息。
我在使用move_uploaded_file时遇到了类似的问题,当$_FILES['filename']['error']代码为0时,将无法上传特定的文件。
结果是,文件的名称相对于目标目录需要是唯一的。move_uploaded_file不知道如何处理相同的文件名
是否检查了文件大小限制?崩溃的原因之一可能是您试图上传一个大于配置限制的文件。查看php.ini中的配置变量"upload_max_filesize",并检查文件的大小。
这也让我大吃一惊。注意:
move_uploaded_file()既支持安全模式,也支持open_basedir。但是,限制仅放在目标路径上,以便允许移动上传的文件,其中文件名可能与此类限制冲突。move_uploaded_file()通过只允许那些通过PHP上传的文件被移动来保证这个操作的安全性。
这些设置可能会导致上传失败,如果您试图将文件移出您的网站基本目录,例如
除了权限之外,一定要检查服务器上是否有可用的磁盘空间。如果没有,move_uploaded_file()将失败,错误为0。
您是否尝试激活error_reporting?
你应该检查你的php-config是否允许文件上传