在 "file_get_contents()" 中加载 cafile 流失败?
Failed loading cafile stream in "file_get_contents()"?
我试图从 google 地理编码 api 中获取 json 数据。但是 php 警告显示了一些关于 "failed loading cafile stream"
的错误
这是我的代码:
$apiKey = 'apikey';
$address = urlencode( '1600 Amphitheatre Pkwy, Mountain View, CA 94043'
);
$url = "https://maps.googleapis.com/maps/api/geocode/json?address=
{$address}key={apiKey}";
$resp = json_decode( file_get_contents( $url ), true );
echo $url;
$lat = $resp['results'][0]['geometry']['location']['lat'] ?? '';
$long = $resp['results'][0]['geometry']['location']['lng'] ?? '';
这里是错误:
PHP Warning: failed loading cafile stream: `C:\xampp\apache\bin\curl-ca-
bundle.crt' in C:\Users\Desktop\test.php on line 7
Warning: failed loading cafile stream: `C:\xampp\apache\bin\curl-ca-
bundle.crt' in C:\Users\Desktop\test.php on line 7
PHP Warning: file_get_contents(): Failed to enable crypto in
C:\Users\Desktop\test.php on line 7
Warning: file_get_contents(): Failed to enable crypto in
C:\Users\Desktop\test.php on line 7
PHP Warning:
file_get_contents(https://maps.googleapis.com/maps/api/geocode/json?
address=1600+Amphitheatre+Pkwy%2C+Mountain+Vi
ew%2C+CA+94043key={apiKey}): failed to open stream: operation failed in
C:\Users\Desktop\test.php on line 7
Warning:
file_get_contents(https://maps.googleapis.com/maps/api/geocode/json?
address=1600+Amphitheatre+Pkwy%2C+Mountain+View%2C
+CA+94043key={apiKey}): failed to open stream: operation failed in
C:\Users\Desktop\test.php on line 7
https://maps.googleapis.com/maps/api/geocode/json?
address=1600+Amphitheatre+Pkwy%2C+Mountain+View%2C+CA+94043key={apiKey}
当 curl.cainfo 和 openssl.cafile 配置属性 php.ini文件不要针对任何允许您使用 ssl 创建连接的有效证书,因为它们将无效。
以CURL为例调用外部服务器请求时出现此情况
您必须从 link here
下载 casert.pem
并将认证文件放在路径中:
C:\xampp\apache\bin\cacert.pem
之后,检查名为 curl.cainfo 和 openssl.cafile[=30= 的配置键上的 php.ini ] 并进行此配置
示例:
curl.cainfo = "C:\xampp\apache\bin\cacert.pem"
openssl.cafile = "C:\xampp\apache\bin\cacert.pem"
除了 Mohammed Yassine CHABLI 的回答。更改 php.ini 中的文件名和路径并没有为我解决问题。
我必须将 'cacert.pem' 重命名为 'curl-ca-bundle.crt' 才能正常工作。
对于 MacOS 用户 brew install openssl
为我解决了这个问题
您只需要转到您的 ROUTE C: \ xampp \ perl \ vendor \ lib \ Mozilla \ CA
并复制名为 cacert.pem
的文件
然后输入你的 php.ini 文件并在 [curl] 中粘贴以下路径 C:\xampp\perl\vendor\lib\Mozilla\CA\cacert.pem
--curl.cainfo="C:\xampp\perl\vendor\lib\Mozilla\CA\cacert.pem"
您将在 [openssl] 中执行相同的操作
--openssl.cafile="C:\xampp\perl\vendor\lib\Mozilla\CA\cacert.pem"
我试图从 google 地理编码 api 中获取 json 数据。但是 php 警告显示了一些关于 "failed loading cafile stream"
的错误这是我的代码:
$apiKey = 'apikey';
$address = urlencode( '1600 Amphitheatre Pkwy, Mountain View, CA 94043'
);
$url = "https://maps.googleapis.com/maps/api/geocode/json?address=
{$address}key={apiKey}";
$resp = json_decode( file_get_contents( $url ), true );
echo $url;
$lat = $resp['results'][0]['geometry']['location']['lat'] ?? '';
$long = $resp['results'][0]['geometry']['location']['lng'] ?? '';
这里是错误:
PHP Warning: failed loading cafile stream: `C:\xampp\apache\bin\curl-ca-
bundle.crt' in C:\Users\Desktop\test.php on line 7
Warning: failed loading cafile stream: `C:\xampp\apache\bin\curl-ca-
bundle.crt' in C:\Users\Desktop\test.php on line 7
PHP Warning: file_get_contents(): Failed to enable crypto in
C:\Users\Desktop\test.php on line 7
Warning: file_get_contents(): Failed to enable crypto in
C:\Users\Desktop\test.php on line 7
PHP Warning:
file_get_contents(https://maps.googleapis.com/maps/api/geocode/json?
address=1600+Amphitheatre+Pkwy%2C+Mountain+Vi
ew%2C+CA+94043key={apiKey}): failed to open stream: operation failed in
C:\Users\Desktop\test.php on line 7
Warning:
file_get_contents(https://maps.googleapis.com/maps/api/geocode/json?
address=1600+Amphitheatre+Pkwy%2C+Mountain+View%2C
+CA+94043key={apiKey}): failed to open stream: operation failed in
C:\Users\Desktop\test.php on line 7
https://maps.googleapis.com/maps/api/geocode/json?
address=1600+Amphitheatre+Pkwy%2C+Mountain+View%2C+CA+94043key={apiKey}
当 curl.cainfo 和 openssl.cafile 配置属性 php.ini文件不要针对任何允许您使用 ssl 创建连接的有效证书,因为它们将无效。
以CURL为例调用外部服务器请求时出现此情况
您必须从 link here
下载 casert.pem并将认证文件放在路径中:
C:\xampp\apache\bin\cacert.pem
之后,检查名为 curl.cainfo 和 openssl.cafile[=30= 的配置键上的 php.ini ] 并进行此配置
示例:
curl.cainfo = "C:\xampp\apache\bin\cacert.pem"
openssl.cafile = "C:\xampp\apache\bin\cacert.pem"
除了 Mohammed Yassine CHABLI 的回答。更改 php.ini 中的文件名和路径并没有为我解决问题。
我必须将 'cacert.pem' 重命名为 'curl-ca-bundle.crt' 才能正常工作。
对于 MacOS 用户 brew install openssl
为我解决了这个问题
您只需要转到您的 ROUTE C: \ xampp \ perl \ vendor \ lib \ Mozilla \ CA 并复制名为 cacert.pem
的文件然后输入你的 php.ini 文件并在 [curl] 中粘贴以下路径 C:\xampp\perl\vendor\lib\Mozilla\CA\cacert.pem --curl.cainfo="C:\xampp\perl\vendor\lib\Mozilla\CA\cacert.pem"
您将在 [openssl] 中执行相同的操作 --openssl.cafile="C:\xampp\perl\vendor\lib\Mozilla\CA\cacert.pem"