未設定だと何も出来ない(当たり前
前の記事でPHPとPostgreSQLの環境をDevContainerで作ってみた的なのをやってみましたが、作っただけだとPHPからPostgreSQLにPDO接続が出来ないと言う至極当たり前な状態だったたのと、それを設定するに当たり何か色々とハマったため備忘録も兼ねてPDOを入れる手順をココに残す。
PHP 8.3 を使いたいのにPDO 7.X 入れようとしててエラー
普通にsudo apt-get install php-pgsql
でイケるやろという安直な考えでコマンドぶっ叩いたのに。。。
エラー例
// 省略
Package php-pgsql is a virtual package provided by:
php7.3-pgsql 7.3.31-1~deb10u1 [Not candidate version]
php7.3-pgsql 7.3.29-1~deb10u1 [Not candidate version]
みたいなエラーが出てインストールに失敗するんじゃ。。。
おいおい、PHP8.3とバージョンが合わねぇって言ってるのはわかるけど、どうすりゃええんじゃ?
試したこと:バージョン指定してやればええんか?
sudo apt-get install php8.3-pgsql
これでイケると思うじゃん?
ところがどっこい同じエラーメッセージが出るんよ。
どんだけ7系を参照しに生きたいんだよお前は。。。
答え
これで完璧
sudo apt update -q
sudo apt install -q -y libpq-dev
sudo docker-php-ext-install pdo_pgsql pgsql
後はphp.iniのextensionsのコメントアウトを外すだけ
コレでPHPからPostgreSQLに接続などが出来るようになりました。
libpq-dev
を上げてdocker-php-ext-install
で入れないといけないと言うなんともDockerならではなエラーだったっぽい。
※ならではなのか?
普通にサーバー立てるだけならこんなんにハマることはなかったと思うので、まだまだコンテナ関係の知識がバブなんだなと。。。