繁体   English   中英

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

[英]php move_uploaded_file wont move the file to the hosted server

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

这是我收到的错误警告:move_uploaded_file(./userdata/profile_pics/iOy1pQXTZsLw7VA/) [function.move-uploaded-file]: failed to open stream: Is a directory in /home/a4640336/public_html/account_settings.php on line 103

以及这个错误代码

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

 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注释掉的部分是为了能够看到错误

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

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

你必须

  1. 确保文件不为空。

  2. 确保文件名中包含英文字符、数字和 (_-.) 符号,以获得更多保护。

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

还要检查dir是否具有可写权限

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

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

$_SERVER["DOCUMENT_ROOT"] 将获取服务器路径,如 var/host/public_html/your_folder

可能这对你有帮助

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM