php move_uploaded_file不会将文件移动到托管服务器

时间:2016-02-13 05:56:33

标签: php

我不知道如何解决这个问题,但问题是它不会上传到服务器,我用来托管网站,它创建文件夹就好了,但不会移动它。移动的编码如下。

  

这是我得到的错误   警告:move_uploaded_file(./ userdata / profile_pics / iOy1pQXTZsLw7VA /)[function.move-uploaded-file]:无法打开流:第103行/home/a4640336/public_html/account_settings.php中的目录

以及此错误代码

  

警告:move_uploaded_file()[function.move-uploaded-file]:无法在/ home / a4640336 / public_html / account_settings中将'/ tmp / phpX1zVno'移动到'./userdata/profile_pics/iOy1pQXTZsLw7VA/'第103行的.php

 move_uploaded_file(@$_FILES["profilepic"]["tmp_name"],"./userdata/profile_pics/$rand_dir_name/".$FILES["profilepic"]["name"]);
        echo "Your profile pic has been updated!".@$_FILES ["profilepic"]["name"];
        //$profile_pic_name = @$_FILES["profilepic"] ["name"];
        //$profile_pic_query= mysql_query("UPDATE users SET profile_pic='$rand_dir_name/$profile_pic_name' WHERE username='$username'");
        //header("location: account_settings.php");

总而言之,我试图改变它所处的位置,让它直接从魔法中领先,但它并没有改变。如果有人可以帮忙请帮助我!

PS注释掉的部分是为了能够看到错误

2 个答案:

答案 0 :(得分:1)

对于那些在Windows和IIS上使用 PHP 的人,您应该将"upload_tmp_dir"中的php.ini值设置为您的网站目录所在的某个目录,创建该目录,以及然后为您为网站目录设置相同的权限。否则,当您上传文件并进入C:\ WINDOWS \ Temp,然后将其移至您的网站目录,其权限将无法正确设置。如果您尝试上传大于post_max_size值的文件(或多个文件),页面只会自行刷新,不会抛出任何错误。

目标目录必须存在; move_uploaded_file()不会自动为您创建。

  

您必须

     
      
  1. 确保该文件不为空。

  2.   
  3. 确保文件名用英文字符,数字和(_-。)符号表示,以获得更多保护。

  4.   
  5. 确保文件名不超过250个字符。
  6.   
  7. 检查您要允许的文件扩展名和Mime类型   项目。您可以使用:pathinfo()。或者您可以使用正则表达式来检查文件扩展名,例如
  8.   
  9. 检查文件大小并确保php.ini上传文件的限制   是你想要的,你可以从here开始。
  10.   
  11. 检查文件内容是否有错误的代码或类似的内容   功能
  12.   
 move_uploaded_file($_FILES["file"]["tmp_name"], "../uploads/" . $_FILES["file"]["name"]);

同时检查dir是否具有可写权限

答案 1 :(得分:0)

您需要使用服务器路径进行文件上传

$files = glob($_SERVER["DOCUMENT_ROOT"]."/myFolder/*");

$ _ SERVER [" DOCUMENT_ROOT"]将获得服务器路径,如var / host / public_html / your_folder

这可以帮助你