Довелось мне столкнуться с ситуацией, когда на сервере запущено 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