0
Iパスワードで保護されたhttps URLからxmlファイルを受け取るには、次の関数を使用します。PHPアップデート後にURLからのCURLの取得が中止されました
function get_fcontent($url, $javascript_loop = 0, $timeout = 5) {
$url = str_replace("&", "&", urldecode(trim($url)));
$cookie = tempnam ("/tmp", "CURLCOOKIE");
$ch = curl_init();
curl_setopt($ch, CURLOPT_USERAGENT, "Mozilla/5.0 (Windows; U; Windows NT 5.1; rv:1.7.3) Gecko/20041001 Firefox/0.10.1");
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_COOKIEJAR, $cookie);
curl_setopt($ch, CURLOPT_ENCODING, "");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_AUTOREFERER, true);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); # required for https urls
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, $timeout);
curl_setopt($ch, CURLOPT_TIMEOUT, $timeout);
curl_setopt($ch, CURLOPT_MAXREDIRS, 10);
$content = curl_exec($ch);
$response = curl_getinfo($ch);
curl_close ($ch);
if ($response['http_code'] == 301 || $response['http_code'] == 302) {
ini_set("user_agent", "Mozilla/5.0 (Windows; U; Windows NT 5.1; rv:1.7.3) Gecko/20041001 Firefox/0.10.1");
if ($headers = get_headers($response['url'])) {
foreach($headers as $value) {
if (substr(strtolower($value), 0, 9) == "location:")
return get_url(trim(substr($value, 9, strlen($value))));
}
}
}
if ( (preg_match("/>[[:space:]]+window\.location\.replace\('(.*)'\)/i", $content, $value) || preg_match("/>[[:space:]]+window\.location\=\"(.*)\"/i", $content, $value)) && $javascript_loop < 5) {
return get_url($value[1], $javascript_loop+1);
} else {
return array($content, $response);
}
}
当社のサーバーがバージョンへPHPのアップデートを得たまで、すべてが働いていた:私はもうxmlファイルを受信couldntのその後7.0.22
。私はちょうど空の応答を得る。 誰かがその理由を知っていますか?
私は以前にインストールされたPHPバージョンを知りません。ダウングレードすることはできません。
サーバのエラーログを見てください - 接続されている可能性のあるエラーはありますか? –
私の変数(内部のXMLデータを含む)が空であるという警告だけです – Remling
さて、デバッグを開始してください:そのコードのどの部分がまだ動作していますか? –