PHP-从远程服务器复制图像时出现大问题

PHP-从远程服务器复制图像时出现大问题,php,copy,Php,Copy,我想把图片从遥控器复制到我的服务器上,但它有时会复制错误的图片。我尝试了几乎所有的解决方案,但我将添加下面最简单的一个作为示例 这个问题很奇怪。如果我从curl中解析一个具有该值的变量,然后从中下载图像,那么我会得到一个错误的图像 1) 这不起作用($image的值为) 2) 当我直接定义图像url时,这是有效的 //url of a picture pulled by curl $image = $result->xpath('image-url'); $image = (string)

我想把图片从遥控器复制到我的服务器上,但它有时会复制错误的图片。我尝试了几乎所有的解决方案,但我将添加下面最简单的一个作为示例

这个问题很奇怪。如果我从curl中解析一个具有该值的变量,然后从中下载图像,那么我会得到一个错误的图像

1) 这不起作用($image的值为)

2) 当我直接定义图像url时,这是有效的

//url of a picture pulled by curl
$image = $result->xpath('image-url');
$image = (string)$image[0];


if($image == 'http://www.domain.com/image.jpg') {

 $image = 'http://www.domain.com/image.jpg';
}


copy($image, '/patch/image.jpg');
在这两种情况下,$image的值是完全相同的,但第一个有时下载错误的图像,而第二个总是下载正确的图像

你能帮忙吗

 I have tried few variation:
 1) $img = file_get_contents('http://placehold.it/150x150');  - WORKS
 2) $img = file_get_contents('http://www.domain.com/image.jpg');  -WORKS
 3) $img = file_get_contents($image);   where  
 var_dump($image) = string(66) "http://www.domain.com/image.jpg"
 echo $image =   http://www.domain.com/image.jpg Doesn't work.

这根本不符合逻辑:

if($image == 'http://www.domain.com/image.jpg') {

 $image = 'http://www.domain.com/image.jpg';
}
试试这个:

$img = file_get_contents('http://placehold.it/150x150');
$fh = fopen('path/to/image/new', 'w+');
if (is_resource($fh)) {
    fwrite($fh, $img);
    fclose($fh);
}
对于这种情况,我不使用
copy()


最好使用
file\u get\u contents()
curl

这根本不符合逻辑:

if($image == 'http://www.domain.com/image.jpg') {

 $image = 'http://www.domain.com/image.jpg';
}
试试这个:

$img = file_get_contents('http://placehold.it/150x150');
$fh = fopen('path/to/image/new', 'w+');
if (is_resource($fh)) {
    fwrite($fh, $img);
    fclose($fh);
}
对于这种情况,我不使用
copy()


最好使用
file\u get\u contents()
curl

我怀疑它们是否相同。在第一个例子中做一个
var\u dump($image)
,看看图像的实际值,决定哪一个有效,哪一个无效。第二个总是有效,第一个有时有效。它通常会显示一个错误的图像。我情不自禁,但您对xpath()和$image[0]的使用在我看来是错误的。谁认为xpath产生的图像就是您想要的?因为你总是拿第一个数组element@Najzero. xpatch部分完全正常。我附和了$image,它总是好的。我怀疑它们是一样的。在第一个例子中做一个
var\u dump($image)
,看看图像的实际值,决定哪一个有效,哪一个无效。第二个总是有效,第一个有时有效。它通常会显示一个错误的图像。我情不自禁,但您对xpath()和$image[0]的使用在我看来是错误的。谁认为xpath产生的图像就是您想要的?因为你总是拿第一个数组element@Najzero. xpatch部分完全正常。我附和了$image,它总是好的。我问,因为这对我来说也没有意义。我只有在使用这个部件时才得到了好的结果。我已经试过curl和fopen,但结果是一样的。但我将再次尝试您的示例。我尝试了几个变体:1)$img=file\u get\u contents(');-作品2)$img=file_get_contents(')-作品3)$img=文件获取内容($image);其中var_dump($image)=string(66)”“echo$image=不工作。string(66)”domain.com/image.jpg”-错误!必须指定HTTP协议!尝试
(string)$image
而不是
$image
$img=file\u get\u contents((string)$image)无论如何都要尝试强制转换为字符串。我这样问是因为这对我来说没有意义。我只有在使用这个部件时才得到了好的结果。我已经试过curl和fopen,但结果是一样的。但我将再次尝试您的示例。我尝试了几个变体:1)$img=file\u get\u contents(');-作品2)$img=file_get_contents(')-作品3)$img=文件获取内容($image);其中var_dump($image)=string(66)”“echo$image=不工作。string(66)”domain.com/image.jpg”-错误!必须指定HTTP协议!尝试
(string)$image
而不是
$image
$img=file\u get\u contents((string)$image)尝试强制转换为字符串。