Блог им. RyoDC → Почему не работает mysql_connect()
Наверное, любому из вас, кто хоть немного имел смелость и желание ознакомиться с языком серверных сценариев php знакома такая функция как mysql_connect() , которая в качестве параметров, принимает, как правило, три строковых значения, а возвращает нам идентификатор (ссылку) подключения к базе данных. Лежит сея функция в славной подключаемой библиотеке php_mysql.dll, последняя же лежит в каталоге <ваш путь к php>\\ext\\
Все бы, казалось бы, ничего, да вот только одна загвоздка — при установке «пыха» нихрена не видит ни этот каталог, ни данную библиотеку, ни вообще ничего хоть как-то связанного с этим.
Я долго пытался решить данную проблему.
Как известно, путь к директории ext, где лежит такая необходимая нам библиотека php_mysql, проиписывается напрямую в директиве extension_dir инициализационного файла php, что по умолчанию кладется в папку windows, и оттуда же тем самым «пыхыпы» и смотрится в поисках данной директивы.
Но вот не все так просто, как кажется на первый взгляд.
Да, действительно, вызов phpinfo() честно сообщает нам, что каталог, в котором php ищет нужный нам ini-файл, является именно C:\WINDOWS\, и, как это ни странно, искать, стало быть, она действительно должна там.
Но не тут-то было!
Следующей, идущей за директивой «Configuration File (php.ini) Path», которую мы только что смотрели, идет как раз директива «Loaded Configuration File», и вот она то нам как раз говорит, что… none!
«Как же это так?!» — озадаченно чешем мы с вам репу, не понимая, что же это за дела такие. php.ini честно лежит себе в каталоге Windows, а самим php нихрена не загружается… Во дела!
Честно, я в поисках решения (очень простого и очевидного кстати), перелазил весь инет, поднял кучу форумов, залез даже в mail-листы и баг репорты php, где хоть как-то упоминались словосочетания «bug», «error», «extension_dir», менял переменные окружения среды, переписывал конфиги, матерился, перезагружал apache, пока наконец-то, спустя долгие круги мученичества, не понял в чем причина данной проблемы.
А оказалась она вот в чем:
Дело в том, что php не ищет свой *.ini файл в прописанном им же пути в переменной Configuration File (php.ini) Path. Он туда даже и не заглядывает. А файл этот по умолчанию он грузит из своей корневой директории, к примеру, C:\PHP\, т.е. там, куда он был изначально Вами установлен. Не находя там соответствующего файла (если вы только установили пыху), он, естественно, грузит все по-умолчанию, а Вам сообщает, что php.ini файл, мол, не был найден.
В-общем, все что Вам нужно сделать, как Вы уже сами успели понять, это всего навсего переименовать одну из лежащих заготовок .ini файла в каталоге с php из php.ini-dist, к примеру, просто в php.ini, прописать там верный путь к extension_dir, раскомментировать строчку extension=php_mysql.dll, перезагрузить Апач, и, профит!, наслаждаться своим творением, наконец :)
Вот так-то. Такой вот секс мы имеем с модулем php, а все из-за того, что разрабы забыли поменять значение строчки Configuration File (php.ini) Path в нашей с Вами сборке. В итоге…
Надеюсь, что я помог Вам сэкономиь хотя бы чуть-чуточку Вашего драгоценного времени, и Вам не придется теперь также ломать копья, как и мне :)
Приятной Вам разработки с PHP ver.5.4 :)
Все бы, казалось бы, ничего, да вот только одна загвоздка — при установке «пыха» нихрена не видит ни этот каталог, ни данную библиотеку, ни вообще ничего хоть как-то связанного с этим.
Я долго пытался решить данную проблему.
Как известно, путь к директории ext, где лежит такая необходимая нам библиотека php_mysql, проиписывается напрямую в директиве extension_dir инициализационного файла php, что по умолчанию кладется в папку windows, и оттуда же тем самым «пыхыпы» и смотрится в поисках данной директивы.
Но вот не все так просто, как кажется на первый взгляд.
Да, действительно, вызов phpinfo() честно сообщает нам, что каталог, в котором php ищет нужный нам ini-файл, является именно C:\WINDOWS\, и, как это ни странно, искать, стало быть, она действительно должна там.
Но не тут-то было!
Следующей, идущей за директивой «Configuration File (php.ini) Path», которую мы только что смотрели, идет как раз директива «Loaded Configuration File», и вот она то нам как раз говорит, что… none!
«Как же это так?!» — озадаченно чешем мы с вам репу, не понимая, что же это за дела такие. php.ini честно лежит себе в каталоге Windows, а самим php нихрена не загружается… Во дела!
Честно, я в поисках решения (очень простого и очевидного кстати), перелазил весь инет, поднял кучу форумов, залез даже в mail-листы и баг репорты php, где хоть как-то упоминались словосочетания «bug», «error», «extension_dir», менял переменные окружения среды, переписывал конфиги, матерился, перезагружал apache, пока наконец-то, спустя долгие круги мученичества, не понял в чем причина данной проблемы.
А оказалась она вот в чем:
Дело в том, что php не ищет свой *.ini файл в прописанном им же пути в переменной Configuration File (php.ini) Path. Он туда даже и не заглядывает. А файл этот по умолчанию он грузит из своей корневой директории, к примеру, C:\PHP\, т.е. там, куда он был изначально Вами установлен. Не находя там соответствующего файла (если вы только установили пыху), он, естественно, грузит все по-умолчанию, а Вам сообщает, что php.ini файл, мол, не был найден.
В-общем, все что Вам нужно сделать, как Вы уже сами успели понять, это всего навсего переименовать одну из лежащих заготовок .ini файла в каталоге с php из php.ini-dist, к примеру, просто в php.ini, прописать там верный путь к extension_dir, раскомментировать строчку extension=php_mysql.dll, перезагрузить Апач, и, профит!, наслаждаться своим творением, наконец :)
Вот так-то. Такой вот секс мы имеем с модулем php, а все из-за того, что разрабы забыли поменять значение строчки Configuration File (php.ini) Path в нашей с Вами сборке. В итоге…
Надеюсь, что я помог Вам сэкономиь хотя бы чуть-чуточку Вашего драгоценного времени, и Вам не придется теперь также ломать копья, как и мне :)
Приятной Вам разработки с PHP ver.5.4 :)
- 0
- RyoDC
- 08 апреля 2012, 04:42
Комментарии (0)
rss свернуть / развернуть