我正在尝试使用Google Cloud Platform从PHP本地调用我的PostgreSQL实例。 PHP部署在与PostgreSQL相同的项目中。
我的电话是:
$conn_string = "host='/cloudsql/<MY_INSTANCE_CONNECTION_NAME>' dbname='<MY_DB>' user='<USER>' password='<PASSWORD>' options='--client_encoding=utf8'";
$db = pg_connect($conn_string);
我收到以下错误:
PHP Fatal error: Call to undefined function pg_connect() in ...
在 phpinfo 方法中,我可以看到以下内容:
在向php.ini添加PostgreSQL扩展时,我收到以下错误:
PHP Warning: PHP Startup: Unable to load dynamic library '/base/php_experiment_runtime/modules/pgsql.so' - /base/php_experiment_runtime/modules/pgsql.so: cannot open shared object file: No such file or directory in Unknown on line 0
PHP Warning: PHP Startup: Unable to load dynamic library '/base/php_experiment_runtime/modules/php_pgsql.so' - /base/php_experiment_runtime/modules/php_pgsql.so: cannot open shared object file: No such file or directory in Unknown on line 0
我的php.ini:
extension=pgsql.so
extension=php_pgsql.so
默认情况下,这些扩展程序似乎没有安装在App Engine上,或类似的东西。 由于它是一个App Engine,它没有VM实例,我不知道如何自己连接和安装模块。
感谢。
更新
我尝试使用PDO类,如建议的那样:
$pdo = new PDO('pgsql:unix_socket=/cloudsql/<MY_INSTANCE_CONNECTION_NAME>;dbname=<MY_DB>', $username, $password)
我得到的错误是:
PHP Fatal error: Uncaught exception 'PDOException' with message 'could not find driver' in ...
同样,我没有在App Engine中看到手动安装软件包的方法。