PHP move_uploaded_file无法在公共服务器上运行

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了PHP move_uploaded_file无法在公共服务器上运行相关的知识,希望对你有一定的参考价值。

我正在尝试将我的php项目上传到公共服务器。我在创建产品或编辑产品时制作了图片上传文件。它在localhost中工作,但是当我移动到公共服务器时,它不起作用。我认为move_uploaded_file部分不起作用。我该如何更改链接?还是我必须改变什么?当我看到Filzilla时,我可以看到它是'/ www / eshopProject / inventory_images'的远程站点。索引文件是'/ www / eshopProject / storeAdmin'。我必须像这样更改链接吗?我不知道如何更改链接。你可以帮帮我吗?将图像上传到公共服务器不起作用..是否存在安全问题?或者其他的东西?请帮我。谢谢。

--index.php--

$pid = mysql_insert_id();
//Place image in the folder
$newname = "$pid.jpg";
move_uploaded_file($_FILES['fileField']['tmp_name'], "../inventory_images/product_$newname");
答案

首先检查注释中提到的目录的权限。如果你有shell访问“chmod 777 target_dir”或“chmod 707 target_dir”就足够了。

第二次尝试使用if和file_exists函数(http://php.net/manual/en/function.file-exists.php)调试它。

像这样的东西。

$uploadedFile = $_FILES['fileField']['tmp_name'];
$destination = "../inventory_images/product_$newname";

if(file_exists($uploadedFile))
{
   echo "file uploaded to temp dir";
}
else
{
   echo "file upload failed";
   exit();
}

if(move_uploaded_file($uploadedFile, $destination))
{
   echo "upload complete";
}
else
{
   echo "move_uploaded_file failed";
   exit();
}

您还可以使用FILE或DIR常量(http://php.net/manual/en/language.constants.predefined.php)检查当前的工作目录。

试试这个。

echo __FILE__;
echo dirname(__FILE__);
echo __DIR__;
另一答案

确保您已将写入文件权限设置为您尝试上载的文件夹。

另一答案

我建议将文件夹设置为“755”权限并重试。这会使权限更紧凑。

以上是关于PHP move_uploaded_file无法在公共服务器上运行的主要内容,如果未能解决你的问题,请参考以下文章

Ubuntu Server不会使用PHP“move_uploaded_file”上传文件

move_uploaded_file 无法打开流:权限被拒绝 - Mac

在我完成所有配置后,move_uploaded_file给出“无法打开流:权限被拒绝”错误

提交的文件没有使用move_uploaded_file(),php移动到新文件夹

无法打开流:是一个目录

move_uploaded_file 返回 false 但 $_FILES 错误为 0