PHP move_uploaded_file()失败,并且我没有';我不知道为什么

PHP move_uploaded_file()失败,并且我没有';我不知道为什么,php,file-upload,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上传文件,ftp上传文件,移动上传文件,重

这是我的代码:

$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上传文件,ftp上传文件,移动上传文件,重命名,复制和任何我能做的事情。似乎什么都不管用

我不明白是什么问题,因为move\u上传的\u文件只返回true或false,没有错误代码


帮助???

您是否尝试激活错误报告

如果允许上传文件,您应该检查php配置

我不知道为什么

但你必须这么做

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

在代码顶部添加这一行

error_reporting(E_ALL);
如果这是您的本地(非实时)服务器

所以你可以在屏幕上看到错误


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

您检查过文件大小的限制吗?如果崩溃,其中一个原因可能是您试图上载的文件超过了配置中的限制。查看php.ini中的配置变量“upload\u max\u filesize”,并检查文件的大小。

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

您可以通过以下方式更改所有权:

[sudo] chown -R www-data folder // change owner
[sudo] chown -R www-data:www-data folder // change group and owner

我在使用move\u-uploaded\u-file时遇到了类似的问题,该问题将无法上载带有$\u-files['filename']['error']代码为0的特定文件


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

除了权限外,请确保检查服务器上是否有可用的磁盘空间。否则,移动上传的文件()将失败,错误为0。

这也让我大吃一惊。注意:

move_uploaded_file()是安全模式,并支持open_basedir。但是,仅在目标路径上设置限制,以允许移动文件名可能与此类限制冲突的上载文件。move_upload_file()只允许移动通过PHP上传的文件,从而确保此操作的安全性


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

谢谢您的快速评论。这是我在phpinfo中看到的:file\u uploads=On,max\u file\u uploads=20,upload\u max\u filesize=2M,upload\u tmp\u dir=C:\Windows\Temp。关于错误报告,我刚从你的帖子中了解到,所以我正在努力。。。顺便说一句-我上传的文件很小(最大10kb),因为我在我大学的远程服务器上工作,我没有权限访问c:\Windows\Temp,这是PHP INI文件中的值,我要求他们将其更改为我有权限访问的路径,它工作了。。。谢谢你抽出时间!你和@Col.shrapanel这是我得到的:$\u FILES['file']['error']=0警告:移动上传的文件(/temp/754327953-129265952-content):无法打开流:在第16行的C:\inetpub\wwwroot\LocalUser\notebook\server\UploadFile.php中没有这样的文件或目录警告:移动上传的文件():无法将第16行C:\inetpub\wwwroot\LocalUser\notebook\server\UploadFile.php中的“C:\Windows\Temp\phpCC2E.tmp”移动到“/Temp/bla.txt”!一切都清楚了!:)感受错误信息的力量!文件目标似乎有问题。它试图打开一些奇怪的文件
/temp/754327953-129265952-content
。尝试使用另一个目的地目录?嗯。。。我想是的,因为我不明白。。。我从警告文件名754327953-129265952-content编辑了一小部分到bla.txt,但我没有得到打开流失败的部分:中没有这样的文件或目录。我该拿它怎么办!?你的磁盘上有一个C:\temp\目录吗?问题是这是一个远程服务器(在我的大学里),所以我不知道这个目录是否存在或者是否有问题。我唯一能做的就是使用ftp客户端上传一个php文件,然后使用它…你是对的,我已经解决了它,嗯。。。不是我,我打电话给托管服务器技术人员,告诉他们我的问题,很明显,他们没有给PHP(www数据)或其他什么授予权限。。。他们换了之后,一切都很好!对于安装了Avast的用户,可以查看以下答案:
[sudo] chown -R www-data folder // change owner
[sudo] chown -R www-data:www-data folder // change group and owner