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

2022-08-30 20:22:55

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

在一个完全不同的页面上(即测试.php),我试图通过cURL访问该文件。但是,当我拨打电话并var_dump结果时,我得到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(例如 http://www.example.com/)。

$invoice_contents = file_get_contents_curl(HOME.'viewinvoice.php?id=242');
echo $invoice_contents;
var_dump( $invoice_contents );

我尝试将url更改为外部url(即 http://www.google.com/),页面加载良好。我得到谷歌的主页。但是,同一网域中的任何网页都不会加载。发生这种情况是有原因的吗?

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

无论如何,是否有我可以修改的设置以使其再次工作?

附言:我刚刚尝试从外部服务器(不同域)进行此确切调用,并且它工作正常。


答案 1

在你的卷曲执行后,放一些这样的东西:

echo curl_getinfo($ch) . '<br/>';
echo curl_errno($ch) . '<br/>';
echo curl_error($ch) . '<br/>';

你会看到在卷曲执行过程中失败的地方。

更多信息 : curl_getinfo curl_errno curl_error


答案 2

执行后,将此变量放入测试错误

echo "<pre>";
var_dump( curl_getinfo($ch) ) . '<br/>';
echo curl_errno($ch) . '<br/>';
echo curl_error($ch) . '<br/>';

推荐