pgsql.so未在PHP中加载

时间:2010-05-14 07:35:08

标签: php apache php-extension

我的任务是创建一个访问现有PostgreSQL数据库的PHP应用程序。这是我第一次使用Postgre,更不用说PHP已经安装在应该运行应用程序的Linux机器中。我没有设置这些东西的经验,我只是编码。

我的问题是我似乎无法使用PHP进行Postgre扩展。我检查了php.ini文件,没有“extension = ...”行。所以我添加了“extension = pgsql.so”。然后我检查了“extension_dir”,发现那里只有2个文件(ldap.so,phpcups.so),我添加了一个从另一个Linux盒子中取出的pgsql.so文件。我重启了httpd。它不起作用。我在phpinfo()中找不到任何“pgsql”或“postgre”。

原谅我的无知。我知道Linux太少了。如果你能指出我正确的方向,我将非常感激。


我使用了number5给出的建议:

伙计,我在RedHat上。我使用了你给出的命令的“yum”版本,我得到了这个:

[root @ perseus~] #yum install php-pgsql 正在加载“installonlyn”插件 设置安装过程 设置存储库 无法检索mirrorlist http://mirrorlist.centos.org/?release=5&arch=x86_64&repo=extras错误 [Errno 4] IOError: 错误:无法为repo找到有效的baseur:extras


UNFORTUNATELY,我正在使用的Linux服务器未连接到Internet。还有其他安装方法吗?

4 个答案:

答案 0 :(得分:9)

这取决于您使用的是哪个Linux发行版。

如果您使用的是Ubuntu / Debian,则需要:

sudo apt-get install php5-pgsql

的Fedora / CentOS的

yum install php-pgsql
通常你可以找到你所在的发行版:

ls /etc/*-release

答案 1 :(得分:3)

在CentOS扩展上,在/etc/php.d中为每个php扩展创建一个单独的* .ini文件

所以,不要改变main * .ini文件,而是创建/etc/php.d/pgsql.ini并添加一行

extension=pgsql.so

然后您需要使用

重启Apache
service httpd restart

但最好的自动化方式是输入

yum install php-pgsql

在你的情况下由于yum配置中的一些问题而无效。转到/etc/yum-repos.d 型

nano /etc/yum.repos.d/CentOS-Base.repo

向下滚动到[extras]部分并确保它是这样的:

#additional packages that may be useful
[extras]
priority=1
name=CentOS-$releasever - Extras
=extras
#baseurl=http://mirror.centos.org/centos/$releasever/extras/$basearch/
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-5

如果需要,请更正它,保存文件(Ctrl-X)并执行以下操作:

yum clean all
yum upgrade

然后尝试重复

yum install php-pgsql

答案 2 :(得分:1)

  • 删除您从其他计算机复​​制的.so文件(虽然它可能有用,但不需要承担风险)
  • 使用发行版的包管理器安装php_pgsql / php5_pqsql模块
  • 重新启动apache并重试。也许该模块已自动添加到.ini文件中
  • 如果没有,请运行<?php echo 'ini: ', get_cfg_var('cfg_file_path');以查看您必须编辑哪个php.ini
  • 编辑此ini文件
  • 重新启动apache

答案 3 :(得分:-1)

我的操作系统Linux mint kde和同样的问题

  

pg_connect()

如果您使用的是php5.6

,则必须安装
sudo apt-get install php5.6-pgsql

必须在“php.ini”文件中更改扩展名后。

;extension=php_pgsql.dll

'dll'到'so'

例如

extension=php_pgsql.so