LoginSignup
0
0

More than 1 year has passed since last update.

【ECS】LaravelからElasticCacheに接続しようとしたら「Unable to find the socket transport "ssl" - did you forget to enable it when you configured PHP?」というエラーが出た【AWS】

Posted at

前提情報

  • PHP7.4
  • Laravel 6.x
  • ECS/Fargate

エラーの原因と詳細

ローカル環境にあるredisコンテナには接続できたので、次にAWS上でElascitCacheの動作確認をするため、ECS/Fargate環境へデプロイしたらUnable to find the socket transport “ssl” – did you forget to enable it when you configured PHP?というエラーが発生してElasticCacheへ接続できない状況でした。

Redisクライアント(phpredis)から外部(ElasticCache)へ接続するときに、PHPのOpenSSLモジュールが有効になっていないのが原因っぽい。(Redisに限らず、外部へHTTPS接続する際にはOpenSSLモジュールを有効にしないといけないようです)

というか、そもそもLaravelのドキュメントにOpenSSLは必須だよって書いてあったのでそもそも最初から有効にされているべきものでしたね。。(リンクは9.xですが、6.xでも同じ)

解決方法

アプリケーションを動かしているイメージのDockerfileにlibssl-devopensslパッケージを追加し、OpenSSLを有効にする。

FROM php:7.4-fpm

…(省略)

RUN apt-get update \
  && apt-get install -y \
  zlib1g-dev \
(省略)
  vim \
+  libssl-dev \
+  openssl \

Docker環境においてPHPの拡張モジュールを有効にするとき、よく docker-php-ext-install pdo_mysqlなどと書くが、OpenSSLに関してはこのように書かなくても有効になるようです。
このあたりに関してなにか補足などありましたらコメント頂けるとうれしいです!!

参考サイト

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0