在Unix系统中给出完整的Web路径时,PHP move_uploaded_file不上传图像

时间:2013-12-16 17:56:03

标签: php html unix

当我设置

时,我的以下代码工作正常
  

$ target =“size_images / 14_20131216231522_cashew.jpg”;

实际的PHP代码中的 当提供完整的网址地址路径时,虽然系统会授予777 Unix访问权限。

  

我正在尝试将图片从SubDomain上传到主域,所以我需要提供完整路径。

页面:http:// 子域名 .examples.com /

代码:

$target = "http://examples.com/size_images/14_20131216231522_cashew.jpg";
move_uploaded_file($_FILES["item_image"]["tmp_name"],$target);

供您参考,以下是上述代码行的值...

echo $_FILES["item_image"]["tmp_name"]; --> "/tmp/php6RNC28"

echo $target --> "http://examples.com/size_images/14_20131216231522_cashew.jpg"

即使尝试过相对路径而不是http,也没有运气: / home / direc / www / size_images

不使用放置错误代码。它没有返回任何错误。

error_reporting(E_ERROR | E_PARSE);

4 个答案:

答案 0 :(得分:3)

试试这个,您只需要使用相对路径而不是域路径。域路径不起作用

$target = "size_images/14_20131216231522_cashew.jpg";
move_uploaded_file($_FILES["item_image"]["tmp_name"],$target);

代替,

$target = "http://examples.com/size_images/14_20131216231522_cashew.jpg";
move_uploaded_file($_FILES["item_image"]["tmp_name"],$target);

使用cURL和PHP通过POST发送文件参考:http://blog.derakkilgo.com/2009/06/07/send-a-file-via-post-with-curl-and-php/

答案 1 :(得分:2)

尝试使用:

$target = $_SERVER['DOCUMENT_ROOT']."/size_images/14_20131216231522_cashew.jpg";

如果您要从 subdomain.mydomain.com 上传到 mydomain.com ,只需将上传脚本放在 mydomain.com 上,然后使用相对路径。

答案 2 :(得分:1)

您误解了move-uploaded-file()的工作原理。它类似于“文件保存”,即你必须告诉PHP脚本一个本地可写的目录和文件所在的文件名。

你提到你试图从“子域”转到“主域”......如果这两个网址都托管在同一台机器上,这将是可能的,你只需选择包含文件的目录对于“主域”网站。

答案 3 :(得分:0)

它必须是相对路径..绝对路径不起作用。

另外请确保您知道“/”和“./”之间的区别但是我强烈建议使用配置变量(在框架的情况下)或常量来存储文件路径。

前指向root,后来指向当前目录..