Очень часто возникает такая проблема. Причем имногда эта проблемка даже прям удивительной может показаться, но оказывается, что всё закономерно.
Может быть, кто еще столкнется. Описание.
- Не работают функции mysql_connect и компания. Ну на их месте могут, разумеется, оказаться и любые другие функции, требующие дополнительных библиотек. Пишет, что функция неизвестна. Ну это мы знаем: идем в php.ini, раскомментирует extension=php_mysql.dll, проверяем extension_dir, там всё нормально.
Но оказалось, что это не всё. Симптомы остались.
- Залазим в логи Апача, а там
CODE (
text):
скопировать код в буфер обмена
PHP Warning: PHP Startup: Unable to load dynamic library 'C:\\Program Files\\Apache Software Foundation\\Apache2.2\\PHP\\ext\\php_mysql.dll' - \xcd\xe5 \xed\xe0\xe9\xe4\xe5\xed \xf3\xea\xe0\xe7\xe0\xed\xed\xfb\xe9 \xec\xee\xe4\xf3\xeb\xfc.\r\n in Unknown on line 0
По-русски - Не найден указанный модуль.
Убеждаемся, что модуль есть и именно в указанной директории.
Решение. Если всё так, то не найден на самом деле не сам модуль, а одна из зависимостей. Штука в том, что он ссылается еще на кучу библиотек и не может найти какую-то из них. Надо понять, какую. Узнать зависимости можно в Windows, например, утилитой
DEPENDS[dot]EXE. Открываем нашу дллку этой утилитой и смотрим. Там показано, на какие библиотеки ссылается наша.
Если вы видете рядом с именем библиотеки желтый вопросительный знак, значит этой библиотеки нету. А она нужна.
Во-первых, поиском поищите ее на своем копмьтере. Если она нашлась, то либо нужно скопировать ее в одну из директорий, указанных в переменной %PATH%, либо дописать в эту переменную недостающую директорию.
Если она не нашлась, то нужно раздобыть ее каким-либо другим способом и скопировать в одну из директорий %path%.
Еще библиотека может подсвечивается красным. Это значит, что она есть, но в ней нет одной из функций. Какой функции нет, можно узнать глядя на список функций. Там есть красненькие и зелененькие. Что означают эти цвета - догадайтесь сами. Если вы почувствовали такой симптом, то значит, что библиотека не той версии. Ищите другую. Версию можно увидеть в окне Модули в depends.exe.
Перезапускаем Апач. Возможны два случая.
1 - Всё работает. Тогда надо обрадоваться и скушать пирожок.
2 - Проблема осталась. Тогда пирожок есть рано, но можно съесть пока что-нибудь еще, потому что минутки три мы еще будем голодать.
Создаем файлик <?php phpinfo() ?> , открываем браузер, пишем его в адресной строке, переходим. Находим блок Apache Environment. Там есть переменная PATH. Видимо, она отличается от системной.
Тогда все необходимые библиотеки и зависимости нужно переместить в любой каталог, присутствующий в этом PATH.
3. Еще возможно, что версия скачанной библиотеки все же не та, теперь это будет написано в логе апача и указано различие версий. Тогда надо найти нужную версию.
Ну вот и всё.