无法使用curl上传图片

时间:2015-07-07 16:13:03

标签: php curl

我想通过php curl将图像从我的服务器上传到另一台服务器。我在localhost上测试了我的脚本它可以工作,但在服务器上它不工作。

以下是我的步骤:

第一步

我将图片上传到我的服务器。图像的路径为"imgs/myimage.jpg"

第二步

我将此代码从我的服务器上传到另一台服务器。

$file_name_with_full_path = realpath("imgs/myimage.jpg");
$postdata = array('myfile'=>'@'.$file_name_with_full_path); 

$headers = array("Content-Type:multipart/form-data");
$ch = curl_init();
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS,$postdata);
curl_setopt($ch, CURLOPT_HEADER, 1);
curl_setopt($ch, CURLOPT_URL, "http://www.secondserver.com/image.php");    
$data = curl_exec($ch);        
curl_close($ch);

此代码来自第二台服务器的image.php。

print_r($_FILES["myfile"]);

我在localhost上测试了这段代码。但在服务器上它无法正常工作并显示错误。

Notice: Undefined index: myfile in ....

我尝试使用命令

获取服务器上图像的完整路径
echo realpath("imgs/myimage.jpg");

它显示了这个:

@/home/admin/domains/mydomain.com/public_html/member/imgs/myimage.jpg

我不确定它的权限是什么?但我还设置了文件权限是777。

我该怎么做才能解决这个问题?

我试图找到一整天的解决方案,但没有成功。

更新

我将代码应用于另一台服务器上进行测试。有效。 我尝试使用命令

获取服务器上图像的完整路径
echo realpath("imgs/myimage.jpg");

它显示了这个:

@/var/www/vhosts/myuser/mydomain.com/imgs/myimage.jpg

我想可能是关于Config Server。 我应该设置吗?

1 个答案:

答案 0 :(得分:0)

不确定您是否更新了此处发布的代码,但之前从未设置$postdata。在第二行中,您有$postimg = array('myfile'=>'@'.$file_name_with_full_path); 然后你做curl_setopt($ch, CURLOPT_POSTFIELDS,$postdata); 请使用正确的变量($postimg),你应该好好去。想知道它如何在当地工作:)