Estoy clonando un repositorio de un proyecto Laravel. Clono el repositorio y hago la php artisan key: generate que establece correctamente las claves en .env. Sin embargo, cuando la aplicación realiza una solicitud de API externa, falla con el error
openssl_seal(): not a public key (1th member of pubkeys)Lo he comprobado y las variables env('API_KEY') y 'API_URL' son correctas.
public static function request(string $url, $data = []): Response { //This is where the code fails $encrypt_result = self::encrypt($data, env('API_KEY')); return Http::asForm()->post(env('API_URL') . $url, [ 'key' => env('API_KEY'), 'hash' => $encrypt_result['hash'], 'e_key' => $encrypt_result['key'] ]); } public static function encrypt(array $data, string $public_key): array { //This is where the code fails openssl_seal(json_encode($data), $encrypted, $e_keys, [base64_decode($public_key)]); return [ 'hash' => base64_encode($encrypted), 'key' => base64_encode($e_keys[0]) ]; }Anteriormente he visto preguntas que atribuyen esto a un error con XAMPP, y estaba usando XAMPP en Windows, aunque posteriormente lo reemplacé con Wampserver y el problema persiste.
Si bien usar Linux en este proyecto a tiempo completo no es viable, lo probaré más adelante.
¿Hay algo simple que podría estar pasando por alto?
El problema parece ser un problema de Windows. Como dijiste que se ejecutaría en Linux, movería la aplicación a un contenedor docker de Linux. Puede contener proyectos Laravel existentes en unos pocos pasos. Con Laravel Vela. La documentación lo explica muy bien: https://laravel.com/docs/8.x/sail .
Si no hay Sail en su composer.json, agréguelo a composer require laravel/sail --dev .
Pero si está familiarizado con docker-compose, simplemente use docker plain sin Laravel Sail.