Mã lỗi cURL PHP 60


85

Trong khi cố gắng thiết lập môi trường php trên windows (sử dụng wamp) để sử dụng Amazon PHP SDK, khi tôi cố gắng chạy thử nghiệm mẫu, tôi gặp lỗi sau:

Fatal error: Uncaught exception 'cURL_Exception' with message 'cURL resource: Resource id #10; cURL error: SSL certificate problem: unable to get local issuer certificate (cURL error code 60). See http://curl.haxx.se/libcurl/c/libcurl-errors.html for an explanation of error codes.' in C:\wamp\www\AWSSDKforPHP\lib\requestcore\requestcore.class.php on line 848

Tôi đã thêm dòng sau vào php.ini của mình

curl.cainfo = C:\Windows\ca-bundle.crt

là vị trí của chứng chỉ tôi đã tạo bằng tập lệnh VBS VBS-Script này

Tôi cũng đã khởi động lại dịch vụ WAMP của mình.

Tham chiếu chỉ số PHP curl


6
Trong trường hợp bạn không quan tâm đến quá trình cấp giấy chứng nhận, bạn có thể tắt nó hoàn toàn curl_setopt($rest, CURLOPT_SSL_VERIFYPEER, false);
denispyr

Đây giải quyết vấn đề đối với tôi - stackoverflow.com/a/32095378/178163 Về cơ bản có thể có 2 file php.ini
George Kagan

2
Đối với những người lần đầu tiên gặp phải vấn đề này, như tôi đã làm, lý do đằng sau điều này, theo như tôi hiểu (hãy sửa cho tôi nếu tôi sai), là không giống như tình huống của kết nối HTTPS qua trình duyệt, yêu cầu CURL không nhận được chứng chỉ từ máy chủ. Vì vậy, chúng tôi cần tải xuống thủ công chứng chỉ của trang web và thêm nó vào ini PHP. Việc xác minh chứng chỉ này ở phía khách hàng là một phần của quy trình kết nối HTTPS và có vẻ như nó có thể bị bỏ qua. Đây là nơi curl_setopt($ch, CURLOPT_SSL_VERIFYPEER,false);xuất hiện hình ảnh.
Sandeepan Nath

làm việc như một sự quyến rũ !!!! cảm ơn!
Rodrigo Serzedello,

Câu trả lời:


226

Sử dụng gói chứng chỉ gốc chứng chỉ này:

https://curl.haxx.se/ca/cacert.pem

Sao chép gói chứng chỉ này trên đĩa của bạn. Và sử dụng cái này trênphp.ini

curl.cainfo = "path_to_cert\cacert.pem"

10
Và trong trường hợp điều này không giải quyết được vấn đề? Tôi đặt curl_setopt($ch, CURLOPT_CAINFO, ini_get('curl.cainfo'));và trong php.ini [cURL] curl.cainfo = C:\dev\xampp\php\cacert.pem . Tệp ở đó, nhưng tôi vẫn gặp lỗi 60. Tôi còn thiếu thứ gì đó?
Overflowh

3
@Overflowh có hai loại php.ini: Một cho php-cli thứ hai cho php-web (apache, nginx, ...). Bạn cần thiết lập curl.cainfo = "path_to_cert\cacert.pem"cho web một. Mặt khác, Nếu bạn có thể thấy curl.cainfolà đúng trong chế độ xem thông tin php của mình, thì thời điểm đó có thể có vấn đề về quyền.
Hüseyin BABAL

Thực sự thì tôi không thấy curl.cainfotrong thông tin php của mình. Điều này có nghĩa là tôi đã đặt giá trị vào tệp sai?
Overflowh

1
Có, vui lòng kiểm tra lại vị trí tệp php.ini của bạn. Bạn cần phải đặt rằng trong phiên bản web
Hüseyin BABAL

Tôi đã được thêm vào trong apache php.ini, nhưng điều này không làm việc
kasim Badami

31

tôi đã sửa lỗi này bằng cách sửa đổi php.initệp tạiC:\wamp\bin\apache\apache2.4.9\bin\

curl.cainfo = "C:/wamp/bin/php/php5.5.12/cacert.pem"

đầu tiên tôi đã thử bằng cách sửa đổi php.initệp tại C:\wamp\bin\php\php5.5.12\và nó không hoạt động.

hy vọng điều này sẽ giúp ai đó đang tìm kiếm quyền php.inisửa đổi


1
Cảm ơn. Tất cả những gì cần làm là tải xuống tệp từ curl.haxx.se/ca/cacert.pem và đặt đường dẫn đến tệp đó trong tệp apache php.ini như bạn đã nói. Xin lưu ý mọi người, bạn có thể đặt cacert bất cứ nơi nào bạn muốn, chỉ cần đảm bảo bạn đặt đường dẫn vào chính xác. Ngoài ra, hãy chắc chắn rằng bạn bỏ dấu chấm phẩy!
Dan Zuzevich

1
Đừng quên tải lại apache sau khi này.
hcker2000

17
php --ini

Điều này sẽ cho bạn biết chính xác tệp php.ini đang được tải, vì vậy bạn biết tệp nào cần sửa đổi. Tôi đã lãng phí rất nhiều thời gian để thay đổi tệp php.ini sai vì tôi đã cài đặt WAMP và XAMPP.

Ngoài ra, đừng quên khởi động lại máy chủ WAMP (hoặc bất cứ thứ gì bạn sử dụng) sau khi thay đổi php.ini.


1
tiết kiệm cuộc sống! 3 ngày chết tiệt khắc phục sự cố và điều này hóa ra là vấn đề
suo

13

@Overflowh Tôi đã thử câu trả lời trên mà không gặp may. Tôi đã thay đổi phiên bản php từ 5.3.24 thành 5.5.8 vì cài đặt này sẽ chỉ hoạt động trong php 5.3.7 trở lên. Sau đó, tôi tìm thấy http://flwebsites.biz/posts/how-fix-curl-error-60-ssl-issue này. Tôi đã tải xuống cacert.pem từ đó và thay thế cái tôi đã tải xuống / được tạo từ curl.hxxx.se được liên kết ở trên và tất cả đã bắt đầu hoạt động. Tôi đang cố gắng lấy IPN hộp cát paypal để xác minh. Thật vui khi nói rằng sau khi hoán đổi .pem, tất cả đều ổn bằng cách sử dụng cài đặt curl.cainfo trong php.ini mà vẫn không có trong 5.3.24.


2
Tôi đã gặp phải vấn đề tương tự và đã được khắc phục bằng cách chỉ tải xuống biểu mẫu tệp .pem được đề cập ở trên. Cảm ơn
saqibahmad

4
Haha Tôi không thể tin được điều này! Tôi sở hữu FLWebsites.biz và tôi chạy vào bài đăng này hoàn toàn không biết rằng tôi đã được đề cập đến ... Tôi đã viết blog đó!
HTMLGuy

Tôi đã cố gắng tìm ra vấn đề và sau 3-4 giờ cuối cùng tôi đã tìm ra câu trả lời này. Tôi đã nói ồ, tại sao không thử lại một tệp pem khác. Và thật bất ngờ: nó cuối cùng đã hoạt động. Cảm ơn cho việc tìm kiếm blog mà :)
Sauleil

Điều này đã giải quyết vấn đề cacert.pem của tôi trong Windows 10, IIS. Cảm ơn.
jacouh

3
Xin lỗi, tôi đã gỡ trang web của mình xuống. Truy
HTMLGuy


5

Trước tiên, chúng tôi cần tải xuống gói chứng chỉ gốc chứng chỉ này:

https://curl.haxx.se/ca/cacert.pem

Di chuyển tệp này đến một nơi nào đó chẳng hạn như thư mục PHP trong thư mục Wamp / Xampp.

Sau đó, chỉnh sửa "php.ini" của bạn:

curl.cainfo = "C: /path/to/your/cacert.pem"

openssl.cafile = "C: /path/to/your/cacert.pem"

QUAN TRỌNG:

Đảm bảo rằng bạn mở tệp "php.ini" trực tiếp bằng Window Explorer của bạn. (trong trường hợp của tôi: “C: \ DevPrograms \ wamp64 \ bin \ php \ php5.6.25 \ php.ini”).

Không sử dụng phím tắt đến "php.ini" trong menu của biểu tượng Wamp / Xampp trong Khay Hệ thống. Lối tắt này không hoạt động trong một số trường hợp tôi gặp phải.

Sau khi lưu "php.ini", bạn không cần phải "Khởi động lại Tất cả Dịch vụ" trong biểu tượng Wamp hoặc đóng / mở lại CMD.

Hãy thử với "var_dump (openssl_get_cert_locations ());" và nhìn vào dòng: ["ini_cafile"] => string (40) "C: /path/to/your/cacert.pem"

Làm xong.


Ghi chú của bạn về việc mở tệp php.ini thông qua explorer đã thực sự hoạt động! Và cuối cùng tôi đã phát hiện ra rằng php.ini từ biểu tượng wamp có một đường dẫn khác. Cảm ơn bạn!!!
Doctiger

3

Sự cố đã được khắc phục, tải xuống https://curl.haxx.se/ca/cacert.pem và đặt nó "ở đâu đó", và thêm dòng này vào php.ini:

curl.cainfo = "C:/somewhere/cacert.pem"

Tái bút: Tôi gặp lỗi này khi cố gắng cài đặt mô-đun trên drupal bằng xampp.


3

Giải pháp đơn giản nhất cho vấn đề là thêm lệnh dưới đây vào trường.

curl_setopt($ch, CURLOPT_SSL_VERIFYPEER,false);

Sử dụng điều này sẽ không cần thêm bất kỳ chứng chỉ hay bất kỳ thứ gì.


2

Thêm phần bên dưới vào php.ini [sử dụng '/' thay vì '\' trong đường dẫn] curl.cainfo = "path / cacert.pem"

Đã khởi động lại XAMPP của tôi. Nó làm việc tốt cho tôi. Cảm ơn



1

Trước tiên, bạn phải tải xuống chứng chỉ từ liên kết này

https://curl.haxx.se/ca/cacert.pem

và đặt nó ở vị trí bạn muốn, tên của tệp có thể tải xuống là: cacert.pem Vì vậy, trong trường hợp của tôi, tôi sẽ đặt nó dưới C: \ wamp64 \ bin \ php \ cacert.pem

Sau đó, bạn phải chỉ định vị trí của tệp php.ini

Ví dụ: tôi đang sử dụng php 7, tệp php.ini được đặt tại: C: \ wamp64 \ bin \ php \ php7.0.10 \ php.ini

Vì vậy, hãy truy cập vào tệp đó và bỏ ghi chú dòng này; openssl.cafile

cũng cập nhật nó giống như sau openssl.cafile = "C: \ wamp64 \ bin \ php \ cacert.pem"

Cuối cùng khởi động lại máy chủ apache của bạn và đó là tất cả


1

QUAN TRỌNG : sau 4 giờ, làm việc với laravel 5.7 và php 7. + và chạy / sử dụng php Artion serve trên localhost đang cố gắng kết nối với mailgun.

QUAN TRỌNG để Giải quyết vấn đề không hoạt động với ip http://127.0.0.1:8000 sử dụng localhost hoặc đặt tên miền theo tệp máy chủ lưu trữ

đồng ý ,


0

Giải pháp là chỉnh sửa tệp php.ini nằm trong phiên bản php của bạn (đối với tôi là php7.0.10) không phải là php.ini của apache. Bạn sẽ tìm thấy một tệp được nhận xét như thế này; curl.cainfo Chỉ cần thay đổi dòng này như sau curl.cainfo = "C: \ permCertificate \ cacert.pem"

Đừng quên tạo thư mục "permCertificate" và sao chép tệp "cacert.pem" bên trong nó.


Công trình đối với tôi trong Ampps, Cảm ơn
Alejandro Aranda

-1

Mong bạn biết điều gì đã hiệu quả với tôi, Tệp tại https://curl.haxx.se/ca/cacert .... không hoạt động, tuy nhiên, tệp trong thư mục zip trong bài đăng tại ( http:// flwebsites .biz / posts / how-fix-curl-error-60-ssl-issue ) đã hoạt động với tôi mà không gặp vấn đề gì.

Như những người khác đã nói, hãy sao chép tệp chứng chỉ vào một vị trí trên ổ cứng của bạn, cập nhật dòng

;curl.cainfo 

trong tệp php.ini của bạn để đọc

curl.cainfo= "path_to_cert\cacert.pem"

Khởi động lại máy chủ Apache của bạn.


Trang web được liên kết là spam.
Rick Kukiela
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.