Назад | Перейти на главную страницу

Как заставить PHP 5.3 работать в Red Hat Enterprise Linux с включенным PDO? PHP53 был установлен с yum

Это сложная проблема, и я совсем не эксперт, так что потерпите меня. Моя группа администраторов сервера установила для меня стандартный блок 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