Php 当尝试访问本地文件时,什么会导致curl返回false?

Php 当尝试访问本地文件时,什么会导致curl返回false?,php,curl,Php,Curl,这个网站已经运行了几个月了,一直运行良好。我有一个PHP页面,它根据url中的数据创建发票(例如viewinvoice.PHP?id=250根据记录250生成发票)。此页面可以通过web浏览器访问,并且工作正常 在一个完全不同的页面(即test.php)上,我试图通过cURL访问该文件。然而,当我进行调用并var_转储结果时,我得到bool(false) 下面是进行cURL调用的函数: function file_get_contents_curl($url) { $ch = curl_init

这个网站已经运行了几个月了,一直运行良好。我有一个PHP页面,它根据url中的数据创建发票(例如viewinvoice.PHP?id=250根据记录250生成发票)。此页面可以通过web浏览器访问,并且工作正常

在一个完全不同的页面(即test.php)上,我试图通过cURL访问该文件。然而,当我进行调用并var_转储结果时,我得到bool(false)

下面是进行cURL调用的函数:

function file_get_contents_curl($url) {
$ch = curl_init();

curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_URL, $url);

$data = curl_exec($ch);
curl_close($ch);

return $data;
}
HOME是一个常量,表示完整的url(例如)

我尝试将url更改为外部url(即),页面加载很好。我得到谷歌的主页。但是在同一个域中的任何页面都不会加载。这有什么原因吗

我不是服务器管理员,但我拥有服务器的root访问权限。我最近没有更改任何设置,但服务器管理员可能升级了apache或php的版本

在任何情况下,是否有一个设置我可以修改,使这再次工作


另外,我刚刚尝试从外部服务器(不同的域)进行了这个精确的调用,效果很好。

在执行curl后,放置如下内容:

echo curl_getinfo($ch) . '<br/>';
echo curl_errno($ch) . '<br/>';
echo curl_error($ch) . '<br/>';
echo "<pre>";
var_dump( curl_getinfo($ch) ) . '<br/>';
echo curl_errno($ch) . '<br/>';
echo curl_error($ch) . '<br/>';
echo curl\u getinfo($ch)。'
; 回音旋涡(ch)。'
; 回波旋度误差($ch)。'
您将看到在curl执行期间失败的内容


更多信息:

执行后,将此变量用于测试错误

echo”“;
变量转储(curl\u getinfo($ch))。'
; 回音旋涡(ch)。'
; 回波旋度误差($ch)。'

我遇到了一个类似的问题,PHP curl返回false。公认的答案不能解决问题

我的案例:我有一个网站,可以调用PHP curl到我的私有服务器获取数据。它在两年内运行良好,但突然curl开始返回false

  • 我试图在浏览器中打开我的私人服务器页面,但它正常工作 好的

  • 我试过PHP
    file\u get\u contents(“http://my.server/page.php");并且工作正常

  • 但curl仍然返回false


    对于调试PHP curl,我在这里找到了一个更好的解决方案:

    问题:我的ISP出现网络问题,当时我的互联网连接速度从100Mbps下降到1.5Mbps-PHP curl没有花足够的时间等待响应


    解决方案:我在curl调用中添加了这两行:


    我在这里发现:

    我在curl\u close($ch)之前添加了这些行,并且能够看到关于请求的更多信息。我将来肯定会使用这种方法。不幸的是,在我开始尝试之前,问题已经自行解决了,因此没有出现错误。该网站恢复了以前的工作。我从没想过我会说我希望它还是坏的,但因为我不知道出了什么问题…我希望它是坏的。如果它再次发生,我一定会使用此信息。
    echo "<pre>";
    var_dump( curl_getinfo($ch) ) . '<br/>';
    echo curl_errno($ch) . '<br/>';
    echo curl_error($ch) . '<br/>';
    
    curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 0);
    curl_setopt($ch, CURLOPT_TIMEOUT, 300); //timeout in seconds