laravelamazon-web-servicesamazon-s3laravel-5xampp

Laravel + AWS S3: cURL error 60


I am attempting to create a web page through Laravel that can upload files (starting with images, though looking to upgrade to .doc/.pdf at some point) to an AWS S3 bucket. I've followed the following tutorial in regards to having a simple page to build on:

http://itsolutionstuff.com/post/laravel-5-amazon-s3-file-upload-tutorial-part-1example.html

Unfortunately, I'm currently facing the following error:

S3Exception in WrappedHttpHandler.php line 192:

Error executing "ListObjects" on "https://s3-us-west-2.amazonaws.com/..."; AWS HTTP error: cURL error 60: SSL certificate problem: unable to get local issuer certificate (see http://curl.haxx.se/libcurl/c/libcurl-errors.html)

I've already downloaded the cacert.pem file from https://curl.haxx.se/ca/cacert.pem and have inserted it into php.ini, and I'm still facing this error. For extra thoroughness, I added it into the php.ini-production and php.ini-development files as well, but nothing's changed. What am I still doing wrong?

(I'll add that I'm currently working on a Windows 10 laptop and have downloaded XAMPP, though I'm still using "php artisan serve" to set the local server. I'm unsure if this is a problem or not.)


Solution

  • Have you followed everything in this question https://stackoverflow.com/a/38667282/3429655 ?

    also one thing that might help is to add a parameter to not verify the SSL in your curl call for the S3 as this is your local environment this might be okay on your hosted dev environment since most hosting companies sort out their SSL cert.pem file etc.

    Set CURLOPT_SSL_VERIFYPEER to false in order to disable the CA check.

    // connect via SSL, but don't check cert
    $handle=curl_init('https://s3-us-west-2.amazonaws.com/');
    curl_setopt($handle, CURLOPT_VERBOSE, true);
    curl_setopt($handle, CURLOPT_RETURNTRANSFER, true);
    curl_setopt($handle, CURLOPT_SSL_VERIFYPEER, false);
    $content = curl_exec($handle);
    
    echo $content; // show target page