簡體   English   中英

cURL error 60: SSL certificate in Laravel 5 while Facebook authentication 如何解決

[英]How to solve cURL error 60: SSL certificate in Laravel 5 while Facebook authentication

目前,我正在做一個關於 laravel5 的項目。

我使用 socialize 進行 Facebook 身份驗證,但是我得到了下面提到的 cURL 錯誤。

 RequestException in CurlFactory.php line 162:
cURL error 60: SSL certificate problem: unable to get local issuer certificate (see http://curl.haxx.se/libcurl/c/libcurl-errors.html)

我在 inte.net 上搜索並做了以下更改但沒有幫助

  • 下載的 cart.pem 文件
  • 設置路徑“curl.cainfo ="C:\xampp\cacert.pem"
  • 也取消注釋“extension=php_curl.dll”

我的代碼在 controller

public function fb()  
{
    return Socialize::with('facebook')->redirect();
}
public function cb()    //callback for facebook
{
    $user = Socialize::with('facebook')->user();
    var_dump($user);
}

https://laracasts.com/discuss/channels/general-discussion/curl-error-60-ssl-certificate-problem-unable-to-get-local-issuer-certificate

https://laracasts.com/discuss/channels/general-discussion/curl-error-60-ssl-certificate-problem-unable-to-get-local-issuer-certificate/replies/52954

我只是花了幾個小時來解決這個問題。 正確答案是

“確實把 cacert.pem 文件並修改 php.ini 文件以匹配上面 Moez 的建議......但我不斷收到 CURL 錯誤 60 的訣竅是獲得 PEM 文件的干凈副本!任何涉及 Windows 記事本或其他編輯器的方法會損壞文件並給出 cURL 錯誤 60 等。最后我找到了https://gist.github.com/VersatilityWerks/5719158/download並下載了一個帶有 cacert.pem 干凈副本的 tar 文件文件......然后一切正常。”

而且由於您在 Windows 上工作,這可能是問題所在。

在使用 Laravel 的本地主機上,您可以輕松繞過 cURL 錯誤。

導航到 Client.php 文件 (vendor\\guzzlehttp\\guzzle\\src\\Client.php)

將“驗證”更改為假

$defaults = [
        'allow_redirects' => RedirectMiddleware::$defaultSettings,
        'http_errors'     => true,
        'decode_content'  => true,
        'verify'          => false,
        'cookies'         => false
    ];

視窗:php.ini 在此處輸入圖片說明

並且工作正常

經過如此多的研究,我找到了最好的解決方案。 您只需要在 vendor/guzzlehttp/guzzle/src/Client.php 文件中將驗證設為 false。

    $defaults = [
        'allow_redirects' => RedirectMiddleware::$defaultSettings,
        'http_errors'     => true,
        'decode_content'  => true,
        'verify'          => true, // make this false
        'cookies'         => false,
        'idn_conversion'  => true,
    ];

對於任何人都說“我已經下載了一個原始的 cacert.pem 文件,把它放在正確的位置,正確地設置 curl.cainfo,然后重新啟動我的 APACHE 服務器,但它根本不起作用!?!?”。 .. 如果您使用的是 php-fpm,那么service apache2 restartservice apache2 reload不會更新引用,您將繼續收到錯誤 60。如果您故意將 curl.cainfo 指向錯誤路徑,您將無法獲得預期錯誤 77(第一條線索)。

要重新啟動 php-fpm 並更新該引用(無需重新啟動整個服務器),請使用service php-fpm restartservice php5-fpm restartservice php7-fpm restartservice php7.0-fpm restart等,具體取決於您的 php版本。 希望這有助於節省某人的時間。

好吧,它有時可能會令人困惑。 當你查看php.ini文件時,你會看到;curl.cainfo = “certificate path\\cacert.pem”你要注意前面有一個分號。 刪除它和所有引號,然后簡單地將文件路徑設置為如下所示curl.cainfo = C:\\xampp\\php\\extras\\ssl\\cacert.pem你可以看到我的cacert.pem在路徑 C 中: \\xampp\\php\\extras\\ssl\\cacert.pem 這就是它應該在的地方。 保存並重新啟動您的服務器。

您可以禁用 SSL

composer config disable-tls true
composer config secure-http false
composer clearcache

之后執行= composer install

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM