繁体   English   中英

PHP move_uploaded_file 无法进入公共服务器

[英]PHP move_uploaded_file not working into public server

我正在尝试将我的 php 项目上传到公共服务器。 我在创建产品或编辑产品时制作了图像上传文件。 它在本地主机上工作,但是当我移动到公共服务器时,它不起作用。 我认为 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();
}

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

尝试这个。

echo __FILE__;
echo dirname(__FILE__);
echo __DIR__;

确保您也为您尝试上传的文件夹设置了写入文件权限。

使用copy()方法。 对我来说它奏效了。

copy($tmp_file, Destination) or
copy($tmp_image, IMAGE_DIRECTORY . SAM . $product_image); 

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

这个问题有点老了,但我最近遇到了一个类似的问题,即使在上传文件夹上有 777 权限,它也不起作用。 问题是 SELinux ( https://wiki.centos.org/HowTos/SELinux ) 处于强制模式,所以我不得不将其更改为许可模式,然后上传工作正常。 我希望这可以帮助遇到这个问题的人。

暂无
暂无

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

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