
2020/03/03 技術系 投稿者:王
SSHからPostgresSQLを操作するPHPスクリプトを実行するクーロンを設定しようとしたところ、
「The pgsql driver is not currently installed」とのエラーメッセージが表示されました。
PDOを使ったPHPでデータベースを操作するときに要注意かもしれません。
作業環境
・Linux
・Plesk Onyx
・PostgresSQL
・Plesk Onyx
・PostgresSQL
やりたいこと
SSHにログインし、PDOでPostgresSQLに接続して操作するPHPスクリプト(index.php)を実行したい。


失敗
文章冒頭の「The pgsql driver is not currently installed」(pgsqlドライバは現在インストールされていません)というメッセージが表示されました。
疑問に思ったこと
pgsqlドライバがインストールされてないと言われていますが、IDE(筆者はPhpStorm使用)から問題なくデータベース操作できたところがおかしい。
確認したこと
「php -i」で、まずpgsqlドライバの設定を確認しました。
PDOを使っているので、青い枠の部分に注目しましたが、pgsql入ってません。
そしてPHPバージョンは5.4.16となっています。
Pleskのコントロールパネルで、このバージョンが実際にドメイン別で設定されたバージョンと一致するかどうかを確認します。
ここでは7.0.33になっています。
PHPのバージョン違いのようです。PHP5.4.16はデフォルト設定で、SSHからPHPスクリプトを実行する前に、必要なバージョンを特定しなければデフォルトバージョンで実行されるようです。
ではPHPバージョン7.0のpgsqlドライバ設定はどうなっているでしょう?
【PHPファイルのパスはこちら】
再び青い枠の部分に注目。pgsqlとodbcがインストールされたのが確認できます。
解決策
PHPのバージョン間違いによるエラーメッセージだと分かりましたので、PHPバージョンを特定して改めて先ほどのPHPスクリプト(index.php)を実行してみます。

エラーメッセージが表示されなくなり、うまく接続できました。

エラーメッセージが表示されなくなり、うまく接続できました。
まとめ
Pleskは複数のPHPバージョンをサポートしていて、ドメインごとにバージョン指定ができる利便性があります。
その反面、使い慣れるまでには混乱しやすいこともあるでしょう。
そのため、Pleskを使う時にPHPバージョンの選択に問題ないかと念頭に置いてもいいかもしれません。
その反面、使い慣れるまでには混乱しやすいこともあるでしょう。
そのため、Pleskを使う時にPHPバージョンの選択に問題ないかと念頭に置いてもいいかもしれません。