我在本地开发环境中使用WAMP,试图向信用卡收费,但得到了错误信息。
cURL error 60: SSL certificate problem: unable to get local issuer certificate
我在谷歌上搜索了很多,很多人都建议我下载这个文件。cacert.pem,把它放在某个地方并在我的php.ini中引用它。这是我php.ini中的部分内容。
curl.cainfo = "C:\Windows\cacert.pem"
然而,即使重新启动我的服务器数次并改变了路径,我还是得到了同样的错误信息。
我在Apache模块中使用WAMP,并且启用了ssl_module。而从PGP扩展中我启用了php_curl。
还是同样的错误信息。为什么会出现这种情况?
现在我正在按照这个修复方法。如何修复PHP CURL Error 60 SSL 。
其中建议我在我的cURL选项中加入这几行。
curl_setopt($process, CURLOPT_CAINFO, dirname(__FILE__) . '/cacert.pem');
curl_setopt($process, CURLOPT_SSL_VERIFYPEER, true);
我在哪里给我的cURL添加选项?显然不是通过命令行,因为我的CLI找不到"curl_setopt"这个命令。
EDIT
这是我正在运行的代码。
public function chargeStripe()
{
$stripe = new Stripe;
$stripe = Stripe::make(env('STRIPE_PUBLIC_KEY'));
$charge = $stripe->charges()->create([
'amount' => 2900,
'customer' => Input::get('stripeEmail'),
'currency' => 'EUR',
]);
dd($charge);
// echo $charge[Input::get('stripeToken')];
return Redirect::route('step1');
}
由cartalyst/stripe使用的Guzzle将做以下工作,以找到一个合适的证书档案来检查服务器证书。
1.检查openssl.cafile
是否在你的php.ini文件中设置。
2.2. 检查curl.cainfo
是否在你的php.ini文件中设置。
3.3. 检查/etc/pki/tls/certs/ca-bundle.crt
是否存在(Red Hat, CentOS, Fedora; 由ca-certificates软件包提供)
4.4. 检查/etc/ssl/certs/ca-certificates.crt
是否存在 (Ubuntu, Debian; 由ca-certificates软件包提供)
5.检查/usr/local/share/certs/ca-root-nss.crt
是否存在 (FreeBSD; 由ca_root_nss软件包提供)
5.检查/usr/local/etc/openssl/cert.pem
是否存在 (OS X; 由 homebrew 提供)
5.检查C:\windows\system32\curl-ca-bundle.crt
是否存在 (Windows)
5.检查C:windows\curl-ca-bundle.crt
是否存在 (Windows)
你将想通过做一个简单的测试来确保前两个设置的值是正确定义的。
echo "openssl.cafile: ", ini_get('openssl.cafile'), "\n";
echo "curl.cainfo: ", ini_get('curl.cainfo'), "\n";
或者,尝试将文件写入#7或#8所示的位置。