2010-05-14 21 views
8

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

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

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


我使用number5给出的建议是:

哥们,我在RedHat。我用你给的命令的“荫”的版本,我得到这个:

[根@英仙座〜]#百胜安装PHP-pgsql的 加载“installonlyn”插件 设置安装过程 设置存储库 无法检索镜像列表http://mirrorlist.centos.org/?release=5&arch=x86_64&repo=extras错误是 [错误4] IO错误: 错误:无法找到回购有效的baseURL时:演员


不幸的是,我使用的是Linux的服务器没有连接到互联网。任何其他方式来安装?

+1

这看起来像ServerFault问题。 – 2010-05-14 08:22:11

+0

希望你已经解决了你的问题。如果没有,您可以下载所需的RPM并使用rpm命令进行安装。 wget http://mirrors.gigenet.com/centos/5.4/os/x86_64/CentOS/php-pdo-5.1.6-23.2.el5_3.x86_64.rpm wget http://mirrors.gigenet.com/ centos/5.4/os/x86_64/CentOS/php-pgsql-5.1.6-23.2.el5_3.x86_64.rpm rpm -ivh * .rpm 如果它告诉你某些代码丢失了,你可以在这里找到它http ://mirrors.gigenet.com/centos/5.4/os/x86_64/CentOS/ 下载链接假设你的CentOS是5.4 x86_64 – number5 2010-05-16 15:31:51

+0

感谢number5,超级! – Obay 2010-05-17 09:04:07

回答

9

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

如果您正在使用的Ubuntu/Debian的,您需要:

sudo apt-get install php5-pgsql 

的Fedora/CentOS的

yum install php-pgsql 

通常你可以找出哪些发行你是由:

ls /etc/*-release 
+0

老兄我在 – Obay 2010-05-14 08:05:45

1
  • 删除您从其他机器上复制的.so文件e(虽然它可能工作,但不需要冒险)
  • 使用发行版的软件包管理器安装php_pgsql/php5_pqsql模块
  • 重新启动apache并重试。也许模块已被添加到一个.ini文件自动地
  • 如果没有,运行<?php echo 'ini: ', get_cfg_var('cfg_file_path');看哪个php.ini中,你必须编辑
  • 编辑该ini文件
  • 重新启动Apache
3

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

因此,不要修改main * .ini文件,而是创建/etc/php.d/pgsql。ini和添加有一行

extension=pgsql.so 

然后你需要使用

service httpd restart 

重新启动Apache的,但以最好的自动化的方法是只需键入

yum install php-pgsql 

在你的情况是没”因为yum配置中存在一些问题而工作。转到下/etc/yum-repos.d 类型

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

滚动到[额外]部分并确保它是这样的:

#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 
+0

上面添加了一些评论它说: 配置错误:文件包含解析错误:file://///etc/yum.repos.d/CentOS-Base.repo [line 41]:'= extras \ n' – Obay 2010-05-14 08:33:36

+0

谁说的?什么是你的CentOS版本?可能是,你应该删除“优先”字符串? – 2010-05-14 11:21:46

-1

我的操作系统Linux Mint的KDE和有同样的问题

pg_connect()

如果你使用php5.6

sudo apt-get install php5.6-pgsql 

后,必须在 “php.ini中” 更改extention名称,则必须安装文件。

;extension=php_pgsql.dll 

'DLL' 到 '所以'

例如

extension=php_pgsql.so 
+1

这似乎是一个不同的问题。首先,OP已经具有与写入完全一样的配置行。 – 2017-01-13 17:59:51