file_get_contents()GET请求未显示在我的Web服务器日志中

时间:2009-11-01 19:33:19

标签: php http file-get-contents

我有一个简单的PHP脚本使用file_get_contents()ping我的一些域名,但是我已经检查了我的日志,他们没有记录任何获取请求。

我有

$result = file_get_contents($url);
echo $url. ' pinged ok\n';

其中每个域的$ url只是http://mydomain.com/形式的简单字符串,echo验证了这一点。我自己提出的手动请求正在显示。

为什么get请求不会显示在我的日志中?

实际上,当我将$ result发送到浏览器时,我已经注册了它。我想这意味着网络服务器只记录浏览器请求?有没有办法模仿这样的PHP?

好的尝试了curl php:

// create curl resource
$ch = curl_init();

// set url
curl_setopt($ch, CURLOPT_URL, "getcorporate.co.nr");

//return the transfer as a string
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);

// $output contains the output string
$output = curl_exec($ch);

// close curl resource to free up system resources
curl_close($ch);   

虽然效果相同 - 但没有在日志中注册。到目前为止,只有当我将http响应从我的脚本反馈到浏览器时它才会注册。显然,这只适用于单个请求,而不是我的脚本的目的。

如果出现其他问题,我可以查看哪些调试输出?

编辑:D'哦!请参阅以下评论,以接受我的错误思考的解释。

3 个答案:

答案 0 :(得分:2)

如果实际发出了请求,它将在日志中。

您的示例代码可能会无声地失败。

如果您这样做会发生什么:

<?PHP
if ($result = file_get_contents($url)){
    echo "Success"; 
}else{
    echo "Epic Fail!";
}

如果失败了,你会想要打开一些错误报告或记录,并试图找出原因。

注意:如果您处于安全模式或具有fopen url wrappers disabled,则file_get_contents()将不会获取远程页面。这是事情失败的最可能原因(假设$ url的内容中没有拼写错误)。

答案 1 :(得分:0)

使用curl代替?

答案 2 :(得分:0)

这很奇怪。也许有一些缓存正在进行中?您是否尝试动态更改URL($ url = $ url。“?timestamp =”。time())?