外部サーバーから画像をダウンロードする際にcURLを使用しようとしています。このコードは、私の地元のWindows XAMPPのインストールで動作します:cURLが異なるサーバーで異なる動作をする
$ch = curl_init("http://some.server.com/some-image.jpg");
$fp = fopen("testimage.jpg", 'wb');
curl_setopt($ch, CURLOPT_FILE, $fp);
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
curl_exec($ch);
curl_close($ch);
fclose($fp);
をしかし、私はそれとまったく同じコードを取り、私の本番サーバー上でそれを実行すると、イメージが正常にダウンロードされません。 testimage.jpgは作成されますが、ファイルサイズは0です。 curl_errnoを呼び出すと0が返されます。cURLの動作に影響を与えるシステム設定はありますか?
私が使用しているURLは、リダイレクトが発生する原因となります。ブラウザにURLを入力すると、画像が表示されるときに別のURLがアドレスバーに表示されます。しかし、私はCURLOPT_FOLLOWLOCATIONがリダイレクトに従うために必要なすべてであるという印象を受けていました。特に、これをローカルで行う必要があるためです。何か不足していますか?
これを設定すると、「警告:curl_setopt():safe_modeが有効になっているかopen_basedirが設定されているとCURLOPT_FOLLOWLOCATIONをアクティブにできません」という警告が表示されました。それはかなり自明で、私はここからそれを取ることができるはずです。ありがとう! –