Fork me on GitHub

The WebDevil

Enjoy development

Довелось мне столкнуться с ситуацией, когда на сервере запущено 2 апача и у одного mod_php4 а у другого mod_php5. Ну и из-за этого возникает интересная ситуация – PHP4 был поставлен раньше и стал нормально, а PHP5 был поставлен с префиксом в /usr/local/php5. Все бы и хорошо, только я обнаружил полное отсутствие PDO.

PDO был добыт из самого PECL’а, в надежде что поставив его все обойдется без внесения изменений вкуда бы то нибыло. Если бы… Когда я скачивал PDO меня несколько смутило то, что отдельно есть еще и PDO_MYSQL и тому подобное. Но я привычно не обратил на это внимания. А зря…

Итак, развалил PDO и сделал phpize. первая моя ошибка состояла в том, что надо было делать /usr/local/php5/bin/phpize. Но я об этом догадался потом.

Далее был сделан ./configure и тут я понял, что что-то не так. пути мелькали -I/usr/local/lib/php… Но ведь там стоит РНР4!

Были опробованы все варианты ./configure –prefix=… и т.д. Ничего не помогло. Сегодня ковыряния продолжились. и, скажу сразу, завершились успехом.

Был расковырян до безобразия configure и в нем была обнаружена строка

PHP_CONFIG=php-config

я ее заменил и все вроде как стало работать и правильно… Но потом посмотрев выше я нашел, что за установку этой команды отвечает опция конфигурятора –with-php-config=PATH. Я-то наивный думал что это путь к php.ini.

Итого,

#/usr/local/php5/bin/phpize

#./configure –with-php-config=/usr/local/php5/bin/php-config

и PDO встал. Первая попытка отправить MySQL-запрос не удалась. Посмотрел phpinfo();. PDO есть, а драйверов БД к нему нет. Проклиная все и вся, скачал PDO_MYSQL и скомпилял его уже проверенным способом.

При попытке make вывалился с ошибкой на MYSQL_OPT_LOCAL_INFILE. Ну не знает оно такого. Мускуль стоит 4.0.какой-то-там. Пошел в /usr/local/include/mysql и поиском там не нашел упоминания такого. Хм. Остальные константы там нашлись. Полез в mysql_driver.c и закоментарил тот кусок (строки около 478й).

Скомпилил. В каком месте он перестанет работать я не догадываюсь, но твердо уверен, что рано или поздно это случится.

Потом вписал в конфиге extension=pdo.so и  extension=pdo_mysql.so и все взлетело.

Leave a Reply