在Codespaces中安装php8.2-pgsql第一次不起作用,并解决了这个问题,我是不是该做点别的?

muk1a3rh  于 2023-08-02  发布在  PHP
关注(0)|答案(1)|浏览(123)

我正在使用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

d8tt03nd

d8tt03nd1#

我也遇到了同样的问题,看起来你只是取消注解扩展pgsql(不是pdo_pgsql扩展)并安装pgsql包。


的数据

sudo apt-get install php8.2-pgsql

字符串
这样,您将看到PDO已启用:



使用它,我能够连接到pgsql db并避免php cli错误:


相关问题