我有一个简单的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'哦!请参阅以下评论,以接受我的错误思考的解释。答案 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())?