Не удается заставить PHP работать с MySQL в Vista 64 - PullRequest
3 голосов
/ 20 февраля 2009

Я использую Vista 64 box и пытаюсь настроить Joomla с помощью IIS7 (мне нравится Joomla, я хочу, чтобы на моем веб-сайте были некоторые компоненты asp.net, поэтому я хочу использовать IIS7, а не Apache). Я впервые устанавливаю php и mysql, поэтому вполне возможно, что я делаю что-то явно неправильное ... хотя я думаю, что я пробовал достаточно диагностических шагов (описанных ниже), что нет ничего явно неправильного для меня ...

Я установил PHP (32-битная, 5.2.8), и это, кажется, работает нормально: я получил test.php, который отображает phpinfo на веб-странице, обслуживаемой IIS7.

Я также установил mySQL (32-битная, 5.1.31, загруженная с http://dev.mysql.com/downloads/mysql/5.1.html#win32). Кажется, это тоже хорошо работает (я могу подключиться к нему с помощью MySQL Administrator).

Я настроил php.ini и не включаю расширение mySQL. Если я делаю php -m из командной строки, я вижу mysql в списке. Однако с phpinfo (либо из командной строки (php -info), либо через IIS (в файле test.php)) раздел mysql отсутствует. Поскольку mysql даже не отображается в вызове командной строки php, я не думаю, что это имеет какое-либо отношение к IIS - просто установка mysql & php на vista.

Я не установил mysql 64bit, потому что у меня 32-битная установка php, и поскольку mysql 32 bit работает нормально, я предполагаю, что это не проблема. Кажется, официальной 64-битной версии php не существует, поэтому я установил ее (и опять же, похоже, она работает нормально).

В настоящее время UAC отключен, поэтому проблема не в этом.

Если я поставлю точку с запятой перед расширением = php_mysql.dll в моем php.ini, то при запуске php -m модуль mysql не появится. Если я возьму это снова, тогда это обнаружится. Так что я по крайней мере уверен, что я изменяю правильный php.ini.

Я скопировал libeay32.dll, libmysql.dll и php_mysql.dll в c: \ windows \ system32. Я удалил их, и это, похоже, не имеет значения для вывода php -m (то есть, там будет отображаться mysql, если модуль не закомментирован из php.ini).

Я также попытался скопировать dlls ibeay32.dll, libmysql.dll и php_mysql.dll в c: \ windows \ sysWOW64; это не имело значения.

Кажется, что наименьший положительный шаг был бы для mysql, чтобы показать при запуске php -info из командной строки. Есть ли что-то еще, что я должен попытаться выяснить, почему mysql появляется в php -m, а не в php -info? Или я не в курсе, как использовать это, чтобы оценить, может ли php общаться с mysql?

Спасибо!

Ответы [ 6 ]

2 голосов
/ 20 февраля 2009

Я решил большинство из них.

Ответом было скопировать libmysql.dll в sysWOW64. Другие dll не нужны, и ничего не нужно копировать в system32. Я думаю, это результат использования php32 в 64-битной системе.

Сначала я подумал, что это не сработало, потому что запуск php -info из командной строки все еще не показывает mysql. Однако запуск phpinfo из php-файла, обслуживаемого IIS, действительно показывает mysql.

Я до сих пор не знаю, почему mysql не появляется при запуске php -info из командной строки, но я думаю, что пока могу с этим справиться.

1 голос
/ 20 февраля 2009

Если вы хотите сосредоточиться на разработке php, я настоятельно рекомендую вам не устанавливать эти вещи вручную и скачать xampp с http://www.apachefriends.org/en/xampp.html

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

Есть и другие пакеты apache / php / mysql.

Дело в том, что как только у вас работает Apache php с MySQL, вы можете легко настроить IIS-коннектор, и вы не нарушите подключение MySQL

Также не забудьте проверить все с

0 голосов
/ 18 апреля 2009

Можно также попытаться настроить отдельный пул приложений в IIS7 для 32-разрядных приложений, а затем в разделе «Дополнительные настройки для пула» установить «Включить 32-приложения» на значение true (по умолчанию - false). Затем настройте php-сайт для использования этого пула приложений.

0 голосов
/ 22 февраля 2009

У меня была почти такая же проблема на Vista 64 проблема была в libmysql.dll из установки php в system32 был перезаписан установкой mysql я заменил его, и mysqladmin и joomla работали нормально.

0 голосов
/ 20 февраля 2009

Ниже приведена ссылка на хорошую пошаговую статью, за которой я успешно следил. Он не касается конкретно x64, но, честно говоря, я не думаю, что это проблема вашей конфигурации. Ссылка

0 голосов
/ 20 февраля 2009

Вы уверены, что тот же самый php.ini используется для CLI и IIS? В POSIX-совместимых системах php обычно использует два разных. По моему опыту, непреднамеренное использование неправильного php.ini является основным препятствием для php в Windows на .

Попробуйте немного изменить параметр в php.ini (например, memory_limit на 129M вместо 128M или около того) и используйте ini_get , чтобы узнать, влияет ли это изменение на php @ IIS / @ CLI. Если это действительно влияет только на php @ IIS, найдите php.ini на C: - возможно, есть второй (обычно в PATH, например, C:\Windows\php.ini).

...