Всем привет! Предлагаю к прочтению мой перевод заметки в буржуйском блоге, которая очень помогла с настройкой WAMP (сокр. Windows/Apache/MySQL/PHP) после переустановки винды. В конце поста добавил свои 5 копеек. Поехали!
Ошибка "Faulting application httpd.exe, faulting module php5ts.dll"
Не так давно я настраивал типичную среду веб-разработки на машине с установленной Windows Vista, делая все как обычно . Единственным отличием на сей раз были более свежие версии компонентов: Apache HTTP 2.2.10, PHP 5.2.8 и MySQL 5.1.
При попытке достучаться к базе, phpMyAdmin все время падал и в виндовых логах было следующее:
Faulting application httpd.exe, version 2.2.10.0, time stamp 0x48ef9351, faulting module php5ts.dll, version 5.2.8.8, time stamp 0x493d75fc, exception code 0xc0000005, fault offset 0x00009fe6, process id 0x18c, application start time 0x01c95d543b01222a.
Сначала я решил, что все дело в новых версиях софта, которые, вероятно конфликтуют между собой, не хотят работать вместе. Но, полуглив по поводу библиотеки php5ts.dll, обнаружил, что подобные проблемы случались и у людей с более старыми версиями php и апача.
Читая пост на форуме, где высказывалось несколько предположений о данной проблеме, вспомнил, что ранее настраивал веб-сервер под Windows XP и не получалось соединиться с mySQL до тех пор, пока в переменной окружения Path не будет прописан путь к библиотеке PHP\libmysql.dll. Я частенько вижу в интернете советы скопировать эту библиотеку в %WINDIR%\system32, Apache\bin, либо еще куда-то. Однако, поступать подобным образом не следует. Если вы обновите PHP в дальнейшем и дистрибутив будет содержать в себе свежую версию libmysql.dll, то вам придется не забыть скопировать ее снова в системную папку, чтобы не столкнуться с какими-либо ошибками в работе веб-сервера.
К своему стыду, признаюсь, что раньше и я тупо копировал библиотеку в system32, лишь бы побыстрее развязаться с настройкой сервера и приступить непосредственно к работе. Лучше всего будет добавить в переменную окружения Path путь к php (у меня это C:\Program Files\PHP). Когда вы в следующий раз обновите php, свежая dll-ка подхватится автоматически.
Чтобы убедиться, что наша проблема именно в настройках пути к библиотеке, я запустил утилиту ProcMon и поставил в ней фильтрацию по процессу httpd.exe и пути libmysql.dll. Как видно в статистике ProcMon, апач ищет библиотеку в папке MySQL\bin, где может лежать новая ее версия, несовместимая с текущим расширением php_mysql.dll. Итого, в переменной Path я поместил путь к php перед MySQL\bin и перезапустил апач. Веб-сервер заработал на ура, проблема решилась!
Мои 5 копеек
Превосходная заметка! Действительно, и я раньше просто копировал бездумно libmysql.dll в System32, только бы быстрее настроить WAMP, не задумываясь о последствиях.
К сожалению, в моем случае проблема крылась совсем в другом... Вкратце, напортачил в конфигурационном файле php.ini при прошлой установке. На старой винде все работало лишь благодаря удачному стечению обстоятельств. Статья очень помогла, с помощью procmon смог быстро разобраться в неочевидной ситуации и все пофиксить! И вообще, отличная утилита из разряда must have!
Замечу также, что проблемы старта апача могут быть вызваны конфликтом со Skype. Он как и апач слушает 80й порт по дефолту. В таком случае, можно в конфигах апача прописать другой порт, скажем так - Listen 8080.
Комментариев нет:
Отправить комментарий