我正在使用Codespaces来开发我的项目,但是由于某些原因,我在安装pdo_pgsql驱动程序以在我的symfony项目中使用Postgress时遇到了很多问题。
最后,我找到了一个解决方案,我已经在不同的代码空间中应用,它工作正常。但我不明白为什么会这样,我是不是真的做错了什么。
这里是一个小howto我如何安装驱动程序,在什么时候它给出错误,以及我如何解决它.我希望我们能找出我是否做错了什么,或者我们能帮助其他处于我处境的人:
1.在代码空间中安装php postgress驱动程序
$ sudo add-apt-repository ppa:ondrej/php
$ sudo apt-get update
$ sudo apt-get upgrade
$ sudo apt-get install php8.2-pgsql
字符串
1.现在我们需要在php.ini中激活扩展名,让我们看看php文件在哪里:
$ php --ini
型
1.编辑php.ini文件并取消该行的注解
extension=pdo_pgsql
型
1.现在要检查库是否处于活动状态,我们可以运行:
$ php -m | grep pdo_pgsql
$ php -i | grep pgsql
型
1.但是在代码空间中,由于一些未知的原因,库并不在PHP期望找到它的地方……在这两种情况下,它都会返回以下警告:
PHP Warning: PHP Startup: Unable to load dynamic library 'pdo_pgsql' (tried: /opt/php/8.2.5/lib/php/extensions/no-debug-non-zts-20220829/pdo_pgsql (/opt/php/8.2.5/lib/php/extensions/no-debug-non-zts-20220829/pdo_pgsql: cannot open shared object file: No such file or directory), /opt/php/8.2.5/lib/php/extensions/no-debug-non-zts-20220829/pdo_pgsql.so (/opt/php/8.2.5/lib/php/extensions/no-debug-non-zts-20220829/pdo_pgsql.so: cannot open shared object file: No such file or directory)) in Unknown on line 0
型
1.因此,我们必须找到库的安装位置,并将其放置在PHP期望的位置:(小心路径可能会改变……看看PHP的警告,它期望它在哪里,并在find的结果中找到它)。
$ find / -name "pdo_pgsql.so" 2>/dev/null
$ cp /usr/lib/php/20220829/pdo_pgsql.so /opt/php/8.2.5/lib/php/extensions/no-debug-non-zts-20220829/
$ chmod +wx /opt/php/8.2.5/lib/php/extensions/no-debug-non-zts-20220829/*
型
1.现在,如果我们再次检查它是否工作,警告已经消失,PHP正确地检测到库:
$ php -m | grep pdo_pgsql
$ php -i | grep pgsql
型
1条答案
按热度按时间d8tt03nd1#
我也遇到了同样的问题,看起来你只是取消注解扩展pgsql(不是pdo_pgsql扩展)并安装pgsql包。
的数据
字符串
这样,您将看到PDO已启用:
的
使用它,我能够连接到pgsql db并避免php cli错误:
的