خطای **cURL error 60: SSL certificate problem: unable to get local issuer certificate** به این معنی است که cURL نمیتواند اعتبار گواهی SSL سرور مقصد را تأیید کند، زیرا فایل **CA certificate bundle** به درستی تنظیم نشده یا موجود نیست. برای حل این مشکل در محیط **WAMP**، مراحل زیر را دنبال کنید:
1.دانلود فایل CA Certificate Bundle
ابتدا باید آخرین نسخه از فایل **cacert.pem** را دانلود کنید. این فایل شامل لیستی از گواهیهای مرجع (CA) است که cURL از آنها برای تأیید گواهیهای SSL استفاده میکند.
– به لینک زیر بروید و فایل `cacert.pem` را دانلود کنید:
[Download cacert.pem](https://curl.se/docs/caextract.html)
-
ذخیره فایل `cacert.pem`
– فایل دانلود شده `cacert.pem` را در یک مسیر مناسب در سیستم خود ذخیره کنید. به عنوان مثال:
“`
C:\wamp\bin\php\php[version]\extras\ssl\cacert.pem
“`
جایگزین `[version]` با نسخه PHP شما، مانند `php7.4`.
-
تنظیم فایل `php.ini`
باید فایل `php.ini` مربوط به PHP که WAMP استفاده میکند را ویرایش کنید تا به فایل `cacert.pem` اشاره کند.
پیدا کردن فایل `php.ini`:
– معمولاً فایل `php.ini` در مسیر زیر قرار دارد:
“`
C:\wamp\bin\apache\apache[version]\bin\php.ini
“`
یا
“`
C:\wamp\bin\php\php[version]\php.ini
“`
ویرایش فایل `php.ini`:
1.فایل `php.ini` را با یک ویرایشگر متنی (مثل Notepad++) باز کنید.
2.به دنبال خطهای زیر بگردید (ممکن است با علامت `;` کامنت شده باشند):
“`ini
;curl.cainfo =
;openssl.cafile=
“`
3. این خطوط را غیر کامنت کنید و مسیر فایل `cacert.pem` را مشخص کنید. به عنوان مثال:
“`ini
curl.cainfo = “C:/wamp/bin/php/php7.4/extras/ssl/cacert.pem”
openssl.cafile = “C:/wamp/bin/php/php7.4/extras/ssl/cacert.pem”
“`
**نکته:** از `/` به جای `\` در مسیر استفاده کنید یا مسیر را در کوتیشنها قرار دهید تا از مشکلات احتمالی جلوگیری شود.
4. ریستارت کردن سرویسهای WAMP
بعد از اعمال تغییرات در `php.ini`، باید سرویسهای WAMP را ریستارت کنید تا تغییرات اعمال شوند.
– روی آیکون WAMP در نوار وظیفه کلیک راست کنید.
– گزینه **Restart All Services** را انتخاب کنید.
5. بررسی تنظیمات
برای اطمینان از اینکه تنظیمات به درستی اعمال شدهاند، میتوانید یک فایل PHP با محتوای زیر ایجاد کرده و اجرا کنید:
“`php
<?php
phpinfo();
?>
“`
در خروجی صفحه به دنبال بخشهای `curl` و `openssl` بگردید و مطمئن شوید که مقدار `curl.cainfo` و `openssl.cafile` به درستی تنظیم شدهاند.
6. تنظیم موقت (اختیاری)
اگر به دلایلی نمیتوانید فایل `cacert.pem` را تنظیم کنید، میتوانید تأیید SSL را به طور موقت غیرفعال کنید. **توجه:** این روش **توصیه نمیشود** زیرا امنیت ارتباطات را کاهش میدهد.
در کدی که از cURL استفاده میکند، گزینه `CURLOPT_SSL_VERIFYPEER` را به `false` تنظیم کنید:
“`php
$ch = curl_init();
// تنظیمات دیگر cURL
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
“`
**توجه:** این روش فقط برای تست و اشکالزدایی مناسب است و نباید در محیطهای تولید استفاده شود.
7. بررسی مجدد
پس از انجام مراحل بالا، مجدداً تلاش کنید تا درخواست cURL خود را اجرا کنید. این مشکل باید برطرف شده باشد.
خلاصه
1.دانلود فایل `cacert.pem`: از https://curl.se/docs/caextract.html).
2.ذخیره فایل: در یک مسیر مناسب در سیستم شما.
3.ویرایش فایل `php.ini`: و تنظیم مسیر `curl.cainfo` و `openssl.cafile` به فایل `cacert.pem`.
4.ریستارت: سرویسهای WAMP.
5.تست : تنظیمات با استفاده از یک فایل PHP.