【发布时间】:2017-02-13 02:32:32
【问题描述】:
我想摆脱这个错误。我读了similar question,其中一个答案建议我可以使用以下方法禁用验证:
$client->setDefaultOption('verify', false);
我的确切错误是:
在 C:\path\guzzle\src\Handler\CurlFactory 中未捕获异常 'GuzzleHttp\Exception\RequestException' 并带有消息 'cURL 错误 60:SSL 证书问题:无法获取本地颁发者证书(请参阅 http://curl.haxx.se/libcurl/c/libcurl-errors.html)'。 php:187 堆栈跟踪:#0 C:\path\guzzle\src\Handler\CurlFactory.php(150): GuzzleHttp\Handler\CurlFactory::createRejection(Object(GuzzleHttp\Handler\EasyHandle), Array) #1
C:\path\guzzle\src\Handler\CurlFactory.php(103): GuzzleHttp\Handler\CurlFactory::finishError(Object(GuzzleHttp\Handler\CurlHandler), Object(GuzzleHttp\Handler\EasyHandle), Object( GuzzleHttp\Handler\CurlFactory)) #2
C:\path\guzzle\src\Handler\CurlHandler.php(43): GuzzleHttp\Handler\CurlFactory::finish(Object(GuzzleHttp\Handler\CurlHandler), Object(GuzzleHttp\Handler\EasyHandle), Object( GuzzleHttp\Hand in C:\path\guzzle\src\Handler\CurlFactory.php 第 187 行
我阅读了所有这些行的代码,那里没有像$client 这样的变量,但我在CurlFactory.php 中找到了这个函数。请注意文件CurlFactory.php 不是我创建的。
public function release(EasyHandle $easy)
{
$resource = $easy->handle;
unset($easy->handle);
if (count($this->handles) >= $this->maxHandles) {
curl_close($resource);
} else {
// Remove all callback functions as they can hold onto references
// and are not cleaned up by curl_reset. Using curl_setopt_array
// does not work for some reason, so removing each one
// individually.
curl_setopt($resource, CURLOPT_HEADERFUNCTION, null);
curl_setopt($resource, CURLOPT_READFUNCTION, null);
curl_setopt($resource, CURLOPT_WRITEFUNCTION, null);
curl_setopt($resource, CURLOPT_PROGRESSFUNCTION, null);
curl_reset($resource);
$this->handles[] = $resource;
}
}
我可以在此处设置禁用验证的选项吗?
我知道禁用验证不是一个好主意,但代码仅供个人使用并用于测试某些内容。如果我禁用验证也没问题。这是我实际 PHP 文件中的代码。
require('vendor/autoload.php');
use JonathanTorres\MediumSdk\Medium;
$medium = new Medium('my-key');
$user = $medium->getAuthenticatedUser();
echo 'Authenticated user name is: ' . $user->name;
如您所见,我没有在任何地方的代码中使用 cURL。这些选项需要在库中的某个地方设置。是否可以在我自己的文件中禁用验证而不是更改库的源代码?
【问题讨论】: