0

誰かが私を正しい方向に向けることができることを願っています。メディア ファイルにリダイレクトする URL があります。それが私が取得しようとしている情報です。(実際のファイルのホストとパス)。

このコードの使用

<?php 
$url='http://urs.pbs.org/redirect/71201be9214242cbbc32633826f8092b';
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_HEADER, TRUE);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, TRUE);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);
curl_exec($ch);
$newurl=curl_getinfo($ch, CURLINFO_EFFECTIVE_URL);
$p = parse_url($newurl) ;
$rtmp=$p['scheme']."://".$p['host'];
$episode=$p['path'];
echo $rtmp.'<BR>';
echo $episode.'<BR>';
?>

ローカルでは、問題なく動作します。しかし、私の運用サーバーでは、$url をキックバックするだけです。

http://urs.pbs.org /redirect/71201be9214242cbbc3233826f8092bを出力し ます

また、 CURL が運用サーバーにインストールされ、正常に動作していることも指摘しておく必要があります。エラーは発生しません。

どんな助けでも感謝します。

4

1 に答える 1

1

CURLOPT_FOLLOWLOCATIONtrueセーフ モードが有効になっている場合は設定できません。これは、多くの運用環境に当てはまります。この場合、次のような警告がトリガーされます。

警告: curl_setopt() [function.curl-setopt]: safe_mode が有効になっている場合、または open_basedir が 56 行目の /home/xxx/public_html/xxx.php に設定されている場合、CURLOPT_FOLLOWLOCATION を有効にできません

この状況に対する私の解決策は、たとえば 10 レベルのリダイレクトを手動でたどって、再帰的な curl リクエストを作成することです。

アップデート:

またCURLOPT_RETURNTRANSFER、次のような結果を返すようにcurlに指示します。$result = curl_exec($ch);したがって、印刷したい場合は、echo前にcurl_exec()

于 2013-03-15T22:17:47.270 に答える