这个问题很复杂,我根本不是专家,所以请耐心听我说。我的服务器管理团队为我设置了一个标准的 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.so
。pdo_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