Actualmente estoy configurando Amazon s3 en mi configuración de laravel (es la primera vez que hago algo con AWS), y me encontré con un pequeño inconveniente. Como referencia, estoy usando XAMPP v.3.2.2 y PHP 7.0.5. Tal vez alguien pueda decirme dónde me equivoqué.
Primero, agregué estos a mi archivo composer.json:
"require": { "graham-campbell/flysystem": "^3.0", "league/flysystem-aws-s3-v3": "^1.0" },y ejecutó una actualización del compositor.
A continuación, agregué esto a mi archivo filesystems.php:
's3' => [ 'driver' => 's3', 'key' => 'A--------edited out for stackoverflow-------WA', 'secret' => 'h-------------edited out for stackoverflow-------------B', 'region' => 'us-east-1', 'bucket' => 'commendmeus', ],y finalmente intenté hacer una prueba para asegurarme de que todo funcionaba. En mi archivo de rutas agregué:
use Illuminate\Support\Facades\Storage; get('test', function () { echo 123; $s3 = Storage::disk('s3'); $s3->put('myfile.txt', 'test file', 'public'); });Desafortunadamente, me encontré con un error:
S3Exception en WrappedHttpHandler.php línea 192: Error al ejecutar "ListObjects" en " https://s3.amazonaws.com/commendmeus?prefix=myfile.txt%2F&max-keys=1&encoding-type=url "; Error HTTP de AWS: cURL error 60: problema con el certificado SSL: no se puede obtener el certificado del emisor local (consulte http://curl.haxx.se/libcurl/c/libcurl-errors.html )
Aquí hay una captura de pantalla como referencia:
No sé nada de SSL, y aunque he visto errores similares a los míos en stackoverflow, podría ser como leer chino para mí. ¿Alguien podría ayudarme con cuál sería el curso de acción adecuado?
Este problema generalmente es causado por la falta de cacert.pem en su configuración de PHP.
1) Descargue cacert.pem desde https://curl.haxx.se/ca/cacert.pem
2) Copie cacert.pem en su directorio PHP (o en cualquier ubicación).
3) Modifique su php.ini para incluir líneas similares a estas. Nota: la ruta debe ser absoluta y correcta para su sistema (Windows usa C:\path\cacert.pem por ejemplo):
curl.cainfo=/ruta/cacert.pem
openssl.cafile=/ruta/cacert.pem
Evite usar localhost , intente nombrar su dominio local usando el nombre de host y obtenga un certificado (ssl) y debería funcionar bien:
Ejemplo: https://local.dev