我正在尝试将我的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");
答案 0 :(得分:6)
首先检查注释中提到的目录的权限。 如果你有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();
}
您还可以使用文件或 DIR 常量(http://php.net/manual/en/language.constants.predefined.php)检查当前的工作目录。
试试这个。
echo __FILE__;
echo dirname(__FILE__);
echo __DIR__;
答案 1 :(得分:1)
确保您已将写入文件权限设置为您尝试上传的文件夹。
答案 2 :(得分:0)
我建议将文件夹设置为“ 755”权限,然后重试。这样会使权限更加严格。
答案 3 :(得分:0)
使用copy()
方法。对我来说,它奏效了。
copy($tmp_file, Destination) or
copy($tmp_image, IMAGE_DIRECTORY . SAM . $product_image);
答案 4 :(得分:0)
这个问题有点老了,但我最近遇到了一个类似的问题,即使在上传文件夹上有 777 权限,它也不起作用。 问题是 SELinux (https://wiki.centos.org/HowTos/SELinux) 处于强制模式,所以我不得不将其更改为许可模式,然后上传工作正常。 我希望这可以帮助遇到此问题的人。