如何在启用 PDO 的情况下让 PHP 5.3 在 Red Hat Enterprise Linux 上运行?PHP53 已使用 yum 安装

如何在启用 PDO 的情况下让 PHP 5.3 在 Red Hat Enterprise Linux 上运行?PHP53 已使用 yum 安装

这个问题很复杂,我根本不是专家,所以请耐心听我说。我的服务器管理团队为我设置了一个标准的 RHEL 盒子。它预装了 PHP 和 Apache。

我现在正尝试在机器上安装 Drupal 7,但它提醒我一个问题:

数据库支持已禁用

您的 Web 服务器似乎不支持任何常见的 PDO 数据库扩展。请咨询您的托管服务提供商,了解他们是否支持 PDO(PHP 数据对象)并提供 Drupal 支持的任何数据库。

通过 Google 搜索此主题并与我们的服务器人员交流,我们发现我们需要在 php.ini 文件中启用 PDO 扩展。太好了,我在 /etc/php.ini 中添加了 extension=pdo.so 和 extension=mysql_pdo.so 行。

什么都没变,我有几个担心。当我们在服务器上搜索 pdo.so 文件时,它会在modules/usr/ 深处的某个目录中找到。我们将该目录的路径复制到 php.ini 中extension_dir=[that path]。重新启动 apache,没有变化。

当我运行 php -version 时,我看到一条错误消息,提示无法加载动态库,但它正在 /usr/local/lib/php/extensions/some-strange-no-debug-non-zts-0330i504065/ 目录中查找 pdo.so 库。它不在我们刚刚在 php.ini 中设置为“extensions_dir”的目录中。在 phpinfo() 输出中,它列出了我们在 php.ini 中设置的扩展目录。

其次,在 phpinfo() 输出的“配置命令”部分中,--disable-pdo存在该标志。

如果我检查which php,然后导航到那里,该目录中还有另一个名为 php-config 的文件。打开它,TA DA!有一个与/some-strange-no-debug-non-zts-92ur9u92i/前面提到的目录匹配的“extension_dir”值。

是否需要使用适当的标志重新编译所有这些?可以在 php.ini 中修复吗?如果不行,如果使用 yum 或 rpm 安装 php,我们该如何重新编译它?

谢谢!!!

更新 1
我应该说,我正在使用 RHEL5 php53 包。我已经运行了 yum install php53-pdo。如果我尝试运行 yum install php-pdo(或任何其他非 php53 php 包),我会收到 php53-common 和 php-common 之间的冲突错误,这就是我首先开始运行 php53 包的原因。

答案1

假设您使用的是 RHEL5 php53 包:

# yum install php53-pdo

如果您仍在使用默认的 RHEL5 PHP 5.1 RPM,则首先请将它们全部卸载,然后安装您认为需要的 php53 链中的所有内容。

# yum search php53

但是,RHEL php 5.3 RPM 不支持 PEAR 或 PECL。它们还缺少旧 RPM 中提供的一些其他 php 扩展。如果您需要这些软件包中的任何一个,您可以自己安装它们(从源代码安装),找到您认为可以信任的另一个存储库,或者咬紧牙关,转到 RHEL6。如果您使用 RHEL 的 php53 软件包链,您绝对希望测试您的所有代码是否仍然有效。测试开销实际上可能会使使用 RHEL6 变得更容易。

答案2

您可以这样做来启用 pdo :

yum install php-pdo

答案3

根据您使用的数据库(MySQL、PostgreSQL 等),确保您已启用相应的扩展pdo_mysql.sopdo_pgsql.so不要忘记重新启动 Apache。

$ php -i | grep pdo
/etc/php.d/pdo.ini,
/etc/php.d/pdo_mysql.ini,
/etc/php.d/pdo_odbc.ini,
/etc/php.d/pdo_pgsql.ini,
/etc/php.d/pdo_sqlite.ini,
pdo_mysql
pdo_pgsql
Revision =>  $Id: pdo_pgsql.c 300351 2010-06-10 12:11:19Z iliaa $ 
pdo_sqlite

相关内容