Установка Apache 2.4 + PHP 5.6 + MySQL 5.6 на Windows 7 ­- 10

В статье описывается установка Apache 2.4 + PHP 5.6 + MySQL 5.6 на операционную систему Windows 7 / 8 / 8.1 / 10

Прежде чем продолжить чтение, обратите внимание на то, действительно ли вам необходимо устанавливать и настраивать всё это под Windows?Может быть Вам стоит обратить внимание на быстрый способ развернуть более качественное окружение для разработки под Windows, основанное на виртуализации Vagrant и не тратить свое время и нервы на настройку того же самого напрямую в Windows? В любом случае, прочтите статью про Vagrant. Возможно она сэкономит вам не только время, но и здоровье.

Данная инструкция будет полезна начинающим WEB-разработчикам, которые собираются установить на своем ПК с ОС Windows WEB-сервер Apache с интерпретатором PHP последних версий. Конечно же, намного проще установить сборку, наподобие Denwer или прибегнуть к использованию инсталляторов и не париться по поводу настроек. Однако каждый WEB-разработчик обязан понимать процесс работы WEB-сервера, процесс его установки и настройки.

Если Вы хотите установить PHP 7, то обратитесь пожалуйста к этой статье.

Если в процессе сборки сервера по этой инструкции Вы столкнулись с проблемами и все еще считаете себя WEB-разработчиком, то будет правильным шагом разобраться в возникших проблемах, а не писать в комментарии что инструкция говно. Инструкция рабочая. Проверено временем и сотнями инсталляций. Будьте внимательней при выполнении простых шагов. Выполнение шагов вручную и разбор ситуаций, если не заработало, добавит Вам skill как разработчику. Если Вы не WEB-разработчик и не планируете им быть, то подыщите простой способ установки в интернете — данная инструкция не для Вас.

Обратите внимание, что под Windows XP данные версии VC11 запустить будет невозможно (или крайне затруднительно).

Подготовительные работы

Убедитесь, что у вас именно Windows 7 или новее. Если у Вас Windows XP, данная инструкция не поможет Вам, так как описанная здесь версия Apache не работает под Windows XP.

Удалите все WEB-серверы, которые устанавливали до этого, зайдите в службы и убедитесь, что там нет служб Apache или IIS. Если у вас уже установлен какой-либо веб-сервер, второй параллельно скорее всего не заработает вовсе.

Если у Вас есть Скайп, обязательно отключите в настройках использование 80 порта. В конечном итоге Вы должны убедиться, что ни одна служба не использует 80й порт.

Для работы очень желательно иметь файловый менеджер, позволяющий создавать файлы с любыми расширениями, либо, что еще лучше, редактор кода, наподобие Sublime Text или Notepad++ или полноценную IDE.

Структура папок может быть различной, однако данная инструкция написана под определенную структуру и, если ей следовать, всё гарантированно заработает.
Перед тем как начать, создайте на диске D папку USR, внутри которой создайте 5 подпапкок: apache, php, tmp, www, log. Именно так. Без указания номеров версий.

В каталоге www создаем индексные файлы (при помощи файлового менеджера или редактора кода), которые будут нужны для проверки того, что все работает:

  • index.html с содержимым: It works!
  • index.php с содержимым: <?php phpinfo(); ?>

Если файлового менеджера / редактора кода / IDE нет, скачайте архив с этими двумя файлами по этой ссылке. Но, если Вы считаете себя WEB-разработчиком, Вы должны обзавестись инструментами.

В системную переменную PATH добавляем:

;D:\USR\apache;D:\USR\apache\bin;D:\USR\php;

Если кто не знает, как найти то место, где меняется PATH, прочитайте вот этот комментарий.

Замечания!

Приведенные в примерах конфигурационных файлов номера строк могут отличаться для других версий apache и php.
Все команды, включая редактирование файлов, должны осуществляться от имени Администратора.

Установка Apache 2.4

Хотя для простой разработки на PHP и нет необходимости в отдельном WEB-сервере (в PHP встроен собственный WEB-сервер, которого почти всегда достаточно для разработки одного проекта), все же рекомендуется произвести установку и настройку WEB-сервера Apache, хотя бы потому, что программист обязан знать эти тонкости. В конечном итоге придется работать с WEB-сервером и придется разбираться с его конфигурацией. Так что приступим.

  1. Загружаем Apache 2.4 binaries VC11 под свою систему по ссылке http://www.apachelounge.com/download/VC11/ Скорее всего у Вас 64 разрядная ОС, поэтому Вам понадобится файл с именем, наподобие httpd-2.4.xx-win64-VC11.zip
  2. Если нужны какие-то дополнительные модули, их можно загрузить там же (для базовой установки нет необходимости)
  3. Разархивируем содержимое папки Apache24 из скаченного архива в D:\USR\apache. Обратите внимание, что в D:\USR\apache нужно положить не папку Apache24 из архива, а ее содержимое. Инсталлировать ничего не требуется.
  4. В файле D:\USR\apache\conf\httpd.conf изменяем значение ServerRoot на "d:/USR/apache" (строка 37) и значение DocumentRootDirecroty) на "d:/USR/www" (строки 242 и 243). Так же следует раскомментировать строку 218 и изменить ее на: ServerName localhost:80
  5. Изменяем параметры хранения логов в том же файле (находим параметры и изменяем):
    ErrorLog "D:/USR/log/apache-error.log"
    CustomLog "D:/USR/log/apache-access.log" common
  6. Устанавливаем сервис Apache (от имени Администратора). Открываем командную строку от имени Администратора и вставляем туда следующую строку:
    D:\USR\apache\bin\httpd.exe -k install
  7. Следим за сообщениями об ошибках во время установки сервиса. Если все сделано верно, никаких ошибок быть не должно. Если у вас после выполнения строки не появилась снова командная строка, то вы что-то сделали неправильно. Просто воспользуйтесь функциями скопировать и вставить, чтобы не допускать ошибок при перепечатке.
  8. Создаем на рабочем столе ярлык для D:\USR\apache\bin\ApacheMonitor.exe и/или помещаем его в автозагрузку (для открытия окна автозагрузки в WIN8 необходимо нажать WIN+R, затем ввести shell:Startup и нажать ОК)
  9. Запускаем ApacheMonitor. В системном трее появится ярлык. Нажимаем на него левой кнопкой, выбираем Apache24 -> Start.
  10. В браузере заходим на http://localhost/ — должны увидеть It works!
  11. Если не увидели такой надписи, разбираемся, что пошло не так (читаем логи, гуглим, пытаемся самостоятельно разобраться с проблемой, раз уж решили разбираться в тонкостях работы веб-сервера)

Установка PHP 5.6

  1. Загружаем последнюю версию VC11 x86 Thread Safe или VC11 x64 Thread Safe по ссылке http://windows.php.net/download/. Обратите внимание, что нужен именно VC11 и именно Thread Safe. Разрядность должна быть как у Apache. Файл, который Вам нужен, скорее всего будет называться наподобие: php-5.6.11-Win32-VC11-x86.zip или php-5.6.11-Win32-VC11-x64.zip
  2. Извлекаем содержимое архива в D:\USR\php. Как в случае с Apache, инсталлировать ничего не требуется.
  3. В файл D:\USR\apache\conf\httpd.conf добавляем строки:
    LoadModule php5_module "d:/USR/php/php5apache2_4.dll"
    AddHandler application/x-httpd-php .php
    # Путь к файлу php.ini
    PHPIniDir "D:/USR/php"
  4. И изменяем значение DirectoryIndex на index.html index.php (строка 276)
  5. Используя ApacheMonitor перезапускаем Apache (Apache24 -> Restart)
  6. Заходим браузером http://localhost/index.php и убеждаемся, что PHP работает.
  7. Делаем копию файла D:\USR\php\php.ini-development с именем D:\USR\php\php.ini
  8. Пользуясь поиском находим, раскомментируем и изменяем параметры:
    extension_dir = "D:/USR/php/ext"
    sys_temp_dir = "D:/USR/tmp"
    extension=php_mysql.dll
    extension=php_mysqli.dll
    extension=php_openssl.dll
    date.timezone = Europe/Zaporozhye
  9. Выполняем в командной строке php -m чтобы просмотреть список подключенных модулей.
  10. Перезапускаем Apache используя ApacheMonitor

Виртуальные хосты в Apache

  1. Если на компьютере производится отладка нескольких проектов, то могут понадобиться виртуальные хосты (сайты). На примере будем рассматривать два виртуальных хоста: s1.localhost и s2.localhost. Для удобства будем создавать папки с такими же названиями, что совсем не обязательно в реальной системе.
  2. Следует учесть, что при использовании виртуальных хостов, параметр DocumentRoot конфигурационного файла Apache более не имеет смысла. Основным хостом сервера (который будет доступен по адресу http://localhost/) теперь является первый виртуальный хост в конфигурационном файле виртуальных хостов!
  3. Для начала необходимо добавить в файл c:\Windows\System32\drivers\etc\hosts строки:
    127.0.0.1 s1.localhost
    127.0.0.1 s2.localhost

    Делать это нужно от имени Администратора. Желательно после этого перезагрузиться, но на практике этого не требовалось. Если изменить файл не удается (права доступа), вы можете скопировать его на рабочий стол, изменить, а затем скопировать обратно.

  4. Создаем папки для виртуальных хостов D:\USR\www\s1.localhost и D:\USR\www\s2.localhost, в которых будут располагаться файлы. В каждой из папок создаем файл index.html с содержимым S1 и S2 соответственно (для контроля того, что все работает как нужно)
  5. Затем создаем папки для логов: D:\USR\log\s1.localhost и D:\USR\log\s2.localhost — тут будут храниться логи каждого из сайтов. Вообще-то, логи можно хранить в одной папке, но я привык делать так — мне так более удобно.
  6. Далее необходимо включить поддержку виртуальных хостов. В файле D:\USR\apache\conf\httpd.conf раскомментировать строку Include conf/extra/httpd-vhosts.conf
  7. Далее редактируем файл d:\USR\apache\conf\extra\httpd-vhosts.conf — он должен выглядеть так (каждому виртуальному хосту свой блок VirtualHost):
    <VirtualHost *:80>
        ServerAdmin webmaster@s1.localhost
        DocumentRoot "D:/USR/www/s1.localhost"
        ServerName s1.localhost
        ServerAlias www.s1.localhost
        ErrorLog "D:/USR/log/s1.localhost/error.log"
        CustomLog "D:/USR/log/s1.localhost/access.log" common
    </VirtualHost>
    
    <VirtualHost *:80>
        ServerAdmin webmaster@s2.localhost
        DocumentRoot "D:/USR/www/s2.localhost"
        ServerName s2.localhost
        ServerAlias www.s2.localhost
        ErrorLog "D:/USR/log/s2.localhost/error.log"
        CustomLog "D:/USR/log/s2.localhost/access.log" common
    </VirtualHost>
  8. Первый виртуальный хост s1.localhost теперь будет основным хостом системы, т.к. его блок следует первым в конфигурационном файле, т.е. будет доступен при входе на http://localhost/
  9. Перезапускаем Apache используя ApacheMonitor и заходим по очереди на http://s1.localhost/ и http://s2.localhost/.
  10. Итак. Для добавления нового виртуального хоста будет достаточно: создать папку для файлов хоста в D:\USR\www, создать папку для логов хоста в D:\USR\log, прописать имя хоста в файле hosts, добавить блок VirtualHost в файл конфигурации виртуальных хостов.

Установка MySQL 5.6

  1. Загружаем MySQL Installer MSI (mysql-installer-community) по ссылке: http://dev.mysql.com/downloads/windows/installer/5.6.html
  2. Во время установки на этапе Choosing a Setup Type выбираем: Custom, затем удаляем из устанавливаемых продуктов всё (в правой колонке), за исключением самого MySQL сервера (автоматически будут добавлены необходимые обязательные модули). Проще удалить все и добавить только сервер — все необходимые компоненты при этом добавятся сами
    mysql-win-choose
  3. Запускаем установку, нажав на Execute в следующем окне
  4. После установки сервера нажимаем несколько раз Next и переходим к конфигурированию сервера
  5. Выбираем тип Development Machine, опции оставляем как есть и нажимаем Next
  6. Устанавливаем пароль основного пользователя root (обязательно) — здесь же можно добавить пользователей, но пока этого делать не нужно, нажимаем Next
  7. Указываем, нужно ли сделать так, чтобы сервер запускался автоматически со стартом Windows (у меня автозапуск выключен, т.к. локальный MySQL-сервер используется только для отладки в очень редких случаях), нажимаем Next
  8. Запускаем конфигурирование кнопкой Execute. Всё должно пройти успешно, после чего нажимаем Next и затем Finish.
  9. Установка сервера MySQL завершена. Поздравляем!
  10. Если вы оставили в настройках автозагрузку сервера, то более ничего делать не нужно. Сервер MySQL будет запускаться автоматически вместе со стартом операционной системы Windows. Иначе придется запускать сервер из окна Службы панели Управления компьютером Windows (или написать свой минискрипт для запуска и остановки службы). Я работаю на ноутбуке и постоянно запущенный сервер мне не нужен (расход ресурсов).
  11. Для работы с MySQL сервером есть множество полезных и удобных утилит. Я рекомендую использовать dbforge Studio for MySQL. При помощи этого инструмента можно создавать пользователей БД и назначать права доступа. Возможно, есть более удобные и быстрые инструменты. Из всех, что я использовал, этот наиболее функциональный, хоть и не особо быстрый.

Часто задаваемые вопросы (FAQ)

Q: В браузере отображается РНР-сценарий вместо результата.
A: Вы невнимательно читали статью и все таки скачали не ту версию РНР, которая требуется. Обращаю еще раз внимание — нужна именно Thread Safe версия РНР, разрядность которой должна совпадать с разрядностью Apache. Убедиться в том, что ошибка именно в этом можно по отсутствию файла d:/USR/php/php5apache2_4.dll. Почему-то это самая частая проблема, хотя в тексте на этом специально заострено внимание.

Q: При старте Apache ошибка: The requested operation has failed.
A: Apache VC11 не работает под Windows XP. Если у Вас Windows 7-10, то проверьте, чтобы порт 80 не был занят другими процессами, например каким нибудь другим WEB-сервером, который Вы устанавливали до этого. Проверьте, чтобы в приложении Skype было отключено использование 80 порта.

Q: При старте Apache ошибка об отсутствии библиотек типа VCRUNTIME140.dll и тому подобных, название которых содержит VC.
A: Установите пакет Visual C++ с сайта Microsoft по ссылке.

Q: Как установить PHPMyAdmin?
A: PHPMyAdmin — это такое же WEB-приложение, как и любое другое. Создайте для него виртуальный хост по инструкции из этой статьи, как для любого другого сайта, разархивируйте архив с PHPMyAdmin в созданную для хоста папку, перейдите в браузере на адрес этого виртуального хоста и следуйте инструкция по установке. За более подробной информацией обращайтесь на сайт PHPMyAdmin.

Установка Apache 2.4 + PHP 5.6 + MySQL 5.6 на Windows 7 ­- 10: 347 комментариев

  1. После правки DocumentRoot «${SRVROOT}/htdocs» на DocumentRoot «d:/usr/www» надо еще поменять на , а то получите ошибку доступа, во всяком случае на apache 2.4.

    1. К сожалению, текст, похожий на теги, «съел» вордпресс.
      Я могу догадываться, что речь шла о правах доступа в Directory.
      Об этом сказано в статье.

      изменяем значение ServerRoot на «d:/USR/apache» (строка 37) и значение DocumentRoot (и Direcroty) на «d:/USR/www» (строки 242 и 243)

  2. Автор спасибо, все работает, нигде не ругается.
    Есть вопрос по поводу постановки apache+php+mysql+phpmyadmin на XP на работе.
    Соответственно, на офисной машине стоят версии apache 2.2+php 5.3.5+mysql 5.5+phpmyadmin 3.5. 32-разрядная операционка. Учусь ставить сервер и создавать веб сервер 1С. Офисные айтишники установили блокировку на многие внешние сайты, при этом, следуя инструкциям других блогеров по установке и настройке, вышеупомянутого ПО, столкнулся с проблемами: http://localhost/index.php — не отображается в браузере — forbidden. — такая же проблема. В общем, простые команды php не выполняются в браузере. Либо проверить правильность написания искомого сайта просит. Имеется proxy-сервер рабочей группы. Для тестов в самом браузере указываю исключения (делал и с ними и без) по сайтам. Также не работает созданная виртуальная машина в файлах — vhosts. А по результатам установки и настройки phpmyadmin перестал включаться Apache (запускаться сервер). Что делать, не знаю.

    1. Если ваш офисный компьютер контролируется администраторами, то что либо подсказать будет сложно. Все зависит от того, что они там заблокировали и как они это сделали.
      По идее, локалхост не должен работать через прокси. Можно для проверки попробовать на время отключить прокси-сервер вообще, если это возможно. Виртуальный хост будет работать, если вы в hosts пропишите имя этого виртуального хоста. В противном случае, нужно видеть, какая ошибка возникает и уже разбираться с ней.
      Просто «не работает» не бывает — нужно обязательно понять, какая ошибка возникает. Это уже половина ответа на вопрос «почему не работает?». Если браузеру не удается определить узел (ошибка DNS), то вы забыли прописать его в hosts. Для проверки можете пингануть этот адрес, будет ли пинговаться при этом ваш 127.0.0.1?
      Ну а вообще, если администраторы заблокировали на компьютере некоторые возможности, то будет проблематичным что либо установить и настроить без возникновения проблем.

  3. всё делаю точь в точь как написано, работать не хочет да и к тому же небольшие отклонения есть между написанным здесь и между тем что по факту. например не совпадают номера строк. к слову у меня винда десятая

    1. 4 года прошло с момента написания статьи.
      Номера строк, по идее, в пределах версии 5.6.х не должны меняться. Там конфиги должны быть примерно одинаковые +/-
      Но за 4 года, вы уж извините. Странно, что вообще что-то получается. Кстати, у большинства до сих пор все гладко получается.

    2. Из текста:

      Замечания!

      Приведенные в примерах конфигурационных файлов номера строк могут отличаться для других версий apache и php.
      Все команды, включая редактирование файлов, должны осуществляться от имени Администратора.

  4. Спасибо большое автору, сделал все по инструкции — работает (установил Apache + PHP)!

  5. Здравствуйте! Спасибо за прекрасную статью! Во время установки возникла только одна проблема: MySQL упорно устанавливается в папку C:/Program Files и не предлагает выбрать папку для установки. Можно ли это исправить? Мне нужно установить MySQL на другой диск, а не на С.
    Спасибо за ответ!

    1. Добрый день. Спасибо за оценку.
      Дело в том, что таким способом я устанавливал MySQL последний раз уже больше трех лет назад. Мы давно перешли на Vagrant и Docker (в зависимости от проекта) и не устанавливаем ничего на локальную машину вручную.
      Поэтому, к сожалению, я не знаю даже каким способом спустя столько лет происходит установка MySQL в Windows.

  6. Во время установки PHP когда нужно apachi перезагружать, во время перезагрузки сервер не запускается(выбивает ошибку), когда нажимаешь запустить выбивает ошибку

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

  7. Во время установки PHP после 4-го шага (когда надо перезагружать Apache) он не включается, сделал все как прописано. В чем проблема?

  8. Проблемка вылезла, во время установки PHP, после 4-го шага надо перезапустить apache а он не врубается. Что делать?

  9. LoadModule php5_module «C:/PHP/php7apache2_4.dll» НЕ правильно
    LoadModule php7_module «C:/PHP/php7apache2_4.dll» Правильно

  10. Возникла проблема, при установке Apache, когда в командной строке пишу указанную команду, выдается ошибка «Устройство не готово». Что делать?

  11. В инете есть такой комментарий про conf:Любой текстовой редактор как notepad, открывает , но после записи , этот файл больше не работает.
    У меня такая же проблема

  12. А у меня такая проблема. То, что должно лечь в www- index.php. Превратилось в что то типа веб-сайтов значка.
    А эти расширения conf не открывалось . А при открытии блокнот или WordPad какие-то сбои
    Что я делаю не так ?
    Впервые делаю такое возможно, по непониманию столько ошибок

  13. Спасибо, Денис, все получилось
    а как и сервера и клиента на одном компе поставить?

  14. Скажите, подойдет ли эта инструкция для установки на удаленный сервер на Windows Server 2016 для полноценной работы веб проектов?

    1. В продакшене под Windows Server, наверное, лучше будет использовать IIS, а не Apache.
      Данная статья не затрагивает вопросов безопасности веб-сервера, так как речь идет об установке на компьютер с целью разработки.
      Если же Вам хочется использовать Apache под Windows в продакшене, то эта инструкция подойдет, только поищите в ести статьи, касательно безопасности веб-серверов. Тут одним комментарием, да и даже одной статьей всего не объяснить.

  15. Спасибо большое за отличную и понятную статью!
    Всё получилось :)

    Может кому-то пригодится: после нажатия на installer mysql программа потребовала установки .net framework 4.0. Переживала, что что-то пошло не так или пойдет не так после, но установила и всё вроде как хорошо)

    Подскажите, может есть в планах написание такой инструкции под macOS?

    1. Инструкция написана для начинающих разработчиков, которые хотят установить и настроить это все под Windows с целью самообучения разработке.
      Для MacOS, как и для Linux, скорее всего, такие инструкции не нужны. Потому что там все происходит просто и автоматически, введя одну или несколько команд.
      Да и в любом случае я рекомендую использовать Vagrant везде, чтобы получить идентичное окружение для разработки на всех рабочих станциях.

    1. Эх :(

      Специально для вас в статье есть абзац:

      Если в процессе сборки сервера по этой инструкции Вы столкнулись с проблемами и все еще считаете себя WEB-разработчиком, то будет правильным шагом разобраться в возникших проблемах, а не писать в комментарии что инструкция говно. Инструкция рабочая. Проверено временем и сотнями инсталляций. Будьте внимательней при выполнении простых шагов. Выполнение шагов вручную и разбор ситуаций, если не заработало, добавит Вам skill как разработчику. Если Вы не WEB-разработчик и не планируете им быть, то подыщите простой способ установки в интернете — данная инструкция не для Вас.

      Так что не мучайтесь, установите Denwer в два клика. Это ведь так просто.

    1. Да. У вас DocumentRoot указывает на d:/USR/www, как это было описано в разделе «Установка Apache 2.4».
      Чтобы было так, как вы хотите, прочитайте еще раз раздел «Виртуальные хосты в Apache» и не забудьте перезапустить Apache после перенастройки.

Прокомментировать