【问题标题】:pgsql.so is not loaded in PHPpgsql.so 未在 PHP 中加载
【发布时间】:2010-05-14 07:35:07
【问题描述】:

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

我的问题是我似乎无法让 Postgre 扩展在 PHP 中工作。我检查了 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”插件 设置安装过程 设置存储库 无法检索镜像列表 http://mirrorlist.centos.org/?release=5&arch=x86_64&repo=extras 错误是 [Errno 4] IO 错误: 错误:无法为 repo 找到有效的 baseurl:extras


很遗憾,我使用的 Linux 服务器未连接到 Internet。还有其他安装方式吗?

【问题讨论】:

标签: php apache php-extension


【解决方案1】:

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

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

sudo apt-get install php5-pgsql

Fedora/CentOS

yum install php-pgsql

通常您可以通过以下方式了解您所在的发行版:

ls /etc/*-release

【讨论】:

  • 老兄,我在上面添加了一些 cmets
【解决方案2】:

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

所以,不要修改主 *.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

【讨论】:

  • 它说:配置错误:文件包含解析错误:file://///etc/yum.repos.d/CentOS-Base.repo [line 41]: '=extras\n'
  • 谁说的?你的 CentOS 版本是多少?可能是,您应该删除“优先级”字符串吗?
【解决方案3】:
  • 删除您从另一台机器复制的 .so 文件(虽然它可能有效,但无需冒险)
  • 使用发行版的包管理器安装 php_pgsql/php5_pqsql 模块
  • 重新启动 apache 并重试。也许该模块已自动添加到 .ini 文件中
  • 如果没有,请运行 <?php echo 'ini: ', get_cfg_var('cfg_file_path'); 以查看您必须编辑哪个 php.ini
  • 编辑这个ini文件
  • 重启apache

【讨论】:

    【解决方案4】:

    我的操作系统 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
    

    【讨论】:

    • 这似乎是一个不同的问题。首先,OP 已经拥有与所写完全相同的配置行。
    猜你喜欢
    • 2021-10-05
    • 1970-01-01
    • 2018-04-16
    • 2014-01-26
    • 2015-08-27
    • 2013-02-22
    • 1970-01-01
    • 2016-10-09
    • 2011-05-27
    相关资源
    最近更新 更多