Это сложная проблема, и я совсем не эксперт, так что потерпите меня. Моя группа администраторов сервера установила для меня стандартный блок RHEL. В нем был предустановлен PHP и apache.
Сейчас я пытаюсь установить Drupal 7 на машине, что предупредило меня о проблеме:
Поддержка базы данных отключена
Ваш веб-сервер не поддерживает какие-либо распространенные расширения базы данных PDO. Уточните у своего хостинг-провайдера, поддерживают ли они PDO (объекты данных PHP) и предлагают ли какие-либо базы данных, поддерживаемые Drupal.
Погуглив эту тему и поговорив с нашими серверными парнями, выяснилось, что нам нужно включить расширения PDO в файле php.ini. Отлично, в /etc/php.ini я добавил строки extension = pdo.so и extension = mysql_pdo.so.
Ничего не изменилось, и у меня есть несколько опасений. Когда мы ищем на сервере файл pdo.so, он находится в modules
каталог где-то глубоко внутри / usr /. Мы скопировали путь к этому каталогу в php.ini как extension_dir=[that path]
. Перезагрузите apache, без изменений.
Когда я запускаю php -version, я вижу сообщение об ошибке, в котором говорится, что он не может загрузить динамическую библиотеку, но он ищет библиотеку pdo.so в / usr / local / lib / php / extensions / some-странно-no- debug-non-zts-0330i504065 / каталог. Не в каталоге, который мы только что установили как «extension_dir» в php.ini. И в выводе phpinfo () он перечисляет каталог расширений, как мы установили его в php.ini.
Во-вторых, в выводе phpinfo () в разделе «Настроить команду» --disable-pdo
флаг присутствует.
Если я проверю which php
, а затем перейдите туда, в этом каталоге есть еще один файл с именем php-config. Откройте это, и TA DA! Имеется значение extension_dir, которое соответствует /some-strange-no-debug-non-zts-92ur9u92i/
каталог, упомянутый ранее.
Нужно ли это все перекомпилировать с соответствующими флагами? Можно ли это исправить в php.ini? Если нет, как бы мы вообще перекомпилировали php, если бы он был установлен с помощью yum или rpm?
СПАСИБО!!!
ОБНОВЛЕНИЕ 1
Должен сказать, я использую пакеты RHEL5 php53. Я уже запустил yum install php53-pdo. Если я попытаюсь запустить yum install php-pdo (или любой другой пакет php, отличный от php53), я получаю ошибки конфликта между php53-common и php-common, поэтому я начал запускать пакеты php53 в первую очередь.
Предполагая, что вы используете пакеты RHEL5 php53:
# yum install php53-pdo
Если вы по-прежнему используете RPM RHEL5 PHP 5.1 по умолчанию, сначала удалите их все, а затем установите все в цепочке php53, которые, по вашему мнению, вам понадобятся.
# yum search php53
Однако RPM-пакеты RHEL php 5.3 не поддерживают ни PEAR, ни PECL. Им также не хватает некоторых других расширений php, доступных в старых RPM. Если вам нужен какой-либо из этих пакетов, вы можете либо установить их самостоятельно (из исходного кода), либо найти другое репо, которому, по вашему мнению, вы можете доверять, либо укусите пулю и перейдите к RHEL6. Если вы выберете цепочку пакетов php53 от RHEL, вы обязательно захотите проверить, что весь ваш код все еще работает. Накладные расходы на тестирование могут облегчить переход с RHEL6.
Вы можете сделать это, чтобы включить pdo:
yum install php-pdo
В зависимости от того, какую базу данных вы используете (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