PHP:空结果 - file_get_contents
PHP: Empty result - file_get_contents
我在我的网站上使用 file_get_contents 到 运行 一个 php 脚本,它将一些数据导出到文本文件中。 php 脚本 "export.php" 在作业完成时打印出 "OK",如果发生错误则打印出 "Error"。
如果我 运行 export.php 在我的浏览器中它会打印 "OK" 如果我 运行 它通过在另一个 php 中调用 file_get_contents脚本结果为空。但是 export.php 在任何情况下都会打印 "OK" 或 "Error"。
这是我调用 export.php:
的脚本
$opts = array('http' =>
array(
'method' => 'GET',
'timeout' => 240
)
);
$context = stream_context_create($opts);
$url_pre = "http://";
$url = "127.0.0.1/export.php";
$html = @file_get_contents($url_pre.$url,false,$context);
if ($html === false){
$job_ok=false;
$result=error_get_last();
echo "Error: ".$result."<br />";
}else{
if (substr($html,0,2)=="OK"){
$job_ok=true;
$errurl = "";
$result="Job done";
echo "Job done: ".$result."<br />";
}else{
$job_ok=false;
$errurl = $url_pre.$url;
$result=$html;
echo "Error: ".$result."<br />";
}
}
echo "HTML: $html <br />";
脚本的结果是:
Error:
如果我在浏览器中打开“http://127.0.0.1/export.php”,我会得到:
OK
也许有人可以帮助我!
谢谢!
我已将 file_get_contents 更改为 curl,现在可以使用了!
function curl_file_get_contents($url){
$curl = curl_init();
$userAgent = 'Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; .NET CLR 1.1.4322)';
curl_setopt($curl,CURLOPT_URL,$url); //The URL to fetch. This can also be set when initializing a session with curl_init().
curl_setopt($curl,CURLOPT_RETURNTRANSFER,TRUE); //TRUE to return the transfer as a string of the return value of curl_exec() instead of outputting it out directly.
curl_setopt($curl,CURLOPT_CONNECTTIMEOUT,5); //The number of seconds to wait while trying to connect.
curl_setopt($curl, CURLOPT_USERAGENT, $userAgent); //The contents of the "User-Agent: " header to be used in a HTTP request.
curl_setopt($curl, CURLOPT_FAILONERROR, TRUE); //To fail silently if the HTTP code returned is greater than or equal to 400.
curl_setopt($curl, CURLOPT_FOLLOWLOCATION, TRUE); //To follow any "Location: " header that the server sends as part of the HTTP header.
curl_setopt($curl, CURLOPT_AUTOREFERER, TRUE); //To automatically set the Referer: field in requests where it follows a Location: redirect.
curl_setopt($curl, CURLOPT_TIMEOUT, 240); //The maximum number of seconds to allow cURL functions to execute.
$contents = curl_exec($curl);
curl_close($curl);
return $contents;
}
我在我的网站上使用 file_get_contents 到 运行 一个 php 脚本,它将一些数据导出到文本文件中。 php 脚本 "export.php" 在作业完成时打印出 "OK",如果发生错误则打印出 "Error"。
如果我 运行 export.php 在我的浏览器中它会打印 "OK" 如果我 运行 它通过在另一个 php 中调用 file_get_contents脚本结果为空。但是 export.php 在任何情况下都会打印 "OK" 或 "Error"。
这是我调用 export.php:
的脚本$opts = array('http' =>
array(
'method' => 'GET',
'timeout' => 240
)
);
$context = stream_context_create($opts);
$url_pre = "http://";
$url = "127.0.0.1/export.php";
$html = @file_get_contents($url_pre.$url,false,$context);
if ($html === false){
$job_ok=false;
$result=error_get_last();
echo "Error: ".$result."<br />";
}else{
if (substr($html,0,2)=="OK"){
$job_ok=true;
$errurl = "";
$result="Job done";
echo "Job done: ".$result."<br />";
}else{
$job_ok=false;
$errurl = $url_pre.$url;
$result=$html;
echo "Error: ".$result."<br />";
}
}
echo "HTML: $html <br />";
脚本的结果是:
Error:
如果我在浏览器中打开“http://127.0.0.1/export.php”,我会得到:
OK
也许有人可以帮助我!
谢谢!
我已将 file_get_contents 更改为 curl,现在可以使用了!
function curl_file_get_contents($url){
$curl = curl_init();
$userAgent = 'Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; .NET CLR 1.1.4322)';
curl_setopt($curl,CURLOPT_URL,$url); //The URL to fetch. This can also be set when initializing a session with curl_init().
curl_setopt($curl,CURLOPT_RETURNTRANSFER,TRUE); //TRUE to return the transfer as a string of the return value of curl_exec() instead of outputting it out directly.
curl_setopt($curl,CURLOPT_CONNECTTIMEOUT,5); //The number of seconds to wait while trying to connect.
curl_setopt($curl, CURLOPT_USERAGENT, $userAgent); //The contents of the "User-Agent: " header to be used in a HTTP request.
curl_setopt($curl, CURLOPT_FAILONERROR, TRUE); //To fail silently if the HTTP code returned is greater than or equal to 400.
curl_setopt($curl, CURLOPT_FOLLOWLOCATION, TRUE); //To follow any "Location: " header that the server sends as part of the HTTP header.
curl_setopt($curl, CURLOPT_AUTOREFERER, TRUE); //To automatically set the Referer: field in requests where it follows a Location: redirect.
curl_setopt($curl, CURLOPT_TIMEOUT, 240); //The maximum number of seconds to allow cURL functions to execute.
$contents = curl_exec($curl);
curl_close($curl);
return $contents;
}