Как установить веб-сервер Apache с PHP, MySQL и phpMyAdmin на Windows
Веб-сервер — это программа, которая предназначена для обработки запросов к сайтам и отправки пользователям страниц веб-сайтов. Самый популярный пример веб-сервера это Apache.
PHP — это язык программирования. Также называется среда для выполнения скриптов, написанных на PHP. В операционной системе, в том числе и Windows, PHP может быть установлен самостоятельно, без веб-сервера. В этом случае программы (скрипты) на PHP можно запускать из командной строки. Но веб-приложения очень часто используют PHP, данный интерпретатор стал, фактически, стандартом веб-серверов и поэтому они почти всегда устанавливаются вместе.
MySQL — это система управления базами данных (СУБД). Это также самостоятельная программа, она используется для хранения данных, поиска по базам данных, для изменения и удаления данных. Веб-приложения нуждаются в постоянном хранилище, поэтому для веб-сервера дополнительно устанавливается и СУБД. Кстати, вполне возможно, что вы слышали про MariaDB — это тоже СУБД. Первой появилась MySQL, а затем от неё ответвилась MariaDB. Для веб-приложений обе эти СУБД являются взаимозаменяемыми, то есть никакой разницы нет. В этой инструкции я буду показывать установку на примере MySQL, тем не менее если вы хотите попробовать новую MariaDB, то смотрите статью «Инструкция по установке веб-сервера Apache c PHP, MariaDB и phpMyAdmin в Windows».
Что касается phpMyAdmin, то это просто скрипт на PHP, который предназначен для работы с базами данных — наглядно выводит их содержимое, позволяет выполнять в графическом интерфейсе такие задачи как создавать базы данных, создавать таблицы, добавлять, изменять и удалять информацию и т. д. По этой причине phpMyAdmin довольно популярен, хотя и не является обязательной частью веб-сервера.
Особенность Apache и других компонентов веб-сервера в том, что их корни уходят в Linux. И эти программы применяют в своей работе основные концепции этой операционной системы. Например, программы очень гибки в настройке — можно выполнить установку в любую папку, сайты также можно разместить в любой папке, в том числе на другом диске, не на том, где установлен сам веб-сервер. Даже файлы журналов можно вынести на третий диск и так далее. У веб-сервера много встроенных модулей — можно включить или отключить их в любом сочетании, можно подключить внешние модули. Можно создать много сайтов на одном веб-сервере и для каждого из них установить персональные настройки. Но эта гибкая настройка выполняется через текстовые файлы — именно такой подход (без графического интерфейса) позволяет описать любые конфигурации
Не нужно этого боятся — я расскажу, какие файлы нужно редактировать и что именно в них писать.
Мы не будем делать какие-то комплексные настройки — наша цель, просто установить веб-сервер на Windows. Тем не менее было бы странно совсем не использовать такую мощь в настройке. Мы разделим сервер на две директории: в первой будут исполнимые файлы, а во второй — данные (файлы сайтов и баз данных). В будущем, когда возникнет необходимость делать резервные копии информации или обновлять веб-сервер, вы поймёте, насколько удобен этот подход!
Мы установим сервер в отдельную директорию. Для этого в корне диска C:\ создайте каталог Server. В этом каталоге создайте 2 подкаталога: bin (для исполнимых файлов) и data (для сайтов и баз данных).
Перейдите в каталог data и там создайте подпапки DB (для баз данных) и htdocs (для сайтов).
Перейдите в каталог C:\Server\data\DB\ и создайте там пустую папку data.
Для работы всех компонентов веб-сервера необходим файл «Visual C++ Redistributable for Visual Studio 2015-2022» — это официальный файл от Microsoft. Чтобы его скачать перейдите по ссылке. После скачивания, запустите этот файл и выполните установку.
Подготовительные действия закончены, переходим к установке компонентов веб-сервера.
Как установить Apache на Windows
Перейдите на сайт apachelounge.com/download и скачайте .zip архив с веб-сервером:
Распакуйте папку Apache24 из этого архива в C:\Server\bin\.
Перейдите в каталог C:\Server\bin\Apache24\conf\ и откройте файл httpd.conf любым текстовым редактором.
В нём нам нужно заменить ряд строк.
Define SRVROOT "c:/Apache24"
Define SRVROOT "c:/Server/bin/Apache24"
#ServerName www.example.com:80
ServerName localhost
DocumentRoot "$/htdocs"
DocumentRoot "c:/Server/data/htdocs"
DirectoryIndex index.html
DirectoryIndex index.php index.html index.htm
# AllowOverride controls what directives may be placed in .htaccess files. # It can be "All", "None", or any combination of the keywords: # AllowOverride FileInfo AuthConfig Limit # AllowOverride None
# AllowOverride controls what directives may be placed in .htaccess files. # It can be "All", "None", or any combination of the keywords: # AllowOverride FileInfo AuthConfig Limit # AllowOverride All
#LoadModule rewrite_module modules/mod_rewrite.so
LoadModule rewrite_module modules/mod_rewrite.so
Сохраняем и закрываем файл. Всё, настройка Apache завершена! Описание каждой изменённой директивы вы найдёте на этой странице.
Откройте командную строку (это можно сделать нажав одновременно клавиши Win+x).
Выберите там Windows PowerShell (администратор) и скопируйте туда:
c:\Server\bin\Apache24\bin\httpd.exe -k install
Если поступит запрос от файервола в отношение Apache, то нажмите Разрешить доступ.
Теперь вводим в командную строку:
c:\Server\bin\Apache24\bin\httpd.exe -k start
И нажмите Enter.
Теперь в браузере набираем http://localhost/ и видим следующее:
Это означает, что веб-сервер работает. Чтобы увидеть там файлы, добавьте их в каталог c:\Server\data\htdocs\ — это главная папка для данных сервера, где будут размещаться все сайты.
Как установить PHP на Windows
PHP 8 скачайте со страницы windows.php.net/download/. Выберите версию Thread Safe, обратите внимание на битность. Если вы затрудняетесь, какой именно файл скачать, то посмотрите эту заметку.
В папке c:\Server\bin\ создаём каталог PHP и копируем в него содержимое только что скаченного архива.
В файле c:\Server\bin\Apache24\conf\httpd.conf в самый конец добавляем строчки:
PHPIniDir "C:/Server/bin/PHP" AddHandler application/x-httpd-php .php LoadModule php_module "C:/Server/bin/php/php8apache2_4.dll"
И перезапускаем Apache:
c:\Server\bin\Apache24\bin\httpd.exe -k restart
В каталоге c:\Server\data\htdocs\ создаём файл с названием i.php, копируем в этот файл:
В браузере откройте ссылку http://localhost/i.php. Если вы видите что-то похожее, значит PHP работает:
Настройка PHP 8
Настройка PHP происходит в файле php.ini. В zip-архивах, предназначенных для ручной установки и для обновлений, php.ini нет (это сделано специально, чтобы при обновлении случайно не удалить ваш файл с настройками). Зато есть два других, которые называются php.ini-development и php.ini-production. Любой из них, при ручной установке, можно переименовать в php.ini и настраивать дальше. На локалхосте мы будем использовать php.ini-development.
Открываем файл php.ini любым текстовым редактором, ищем строчку
;extension_dir = "ext"
и заменяем её на
extension_dir = "C:\Server\bin\PHP\ext\"
Теперь найдите группу строк:
;extension=bz2 ;extension=curl ;extension=ffi ;extension=ftp ;extension=fileinfo ;extension=gd ;extension=gettext ;extension=gmp ;extension=intl ;extension=imap ;extension=ldap ;extension=mbstring ;extension=exif ; Must be after mbstring as it depends on it ;extension=mysqli ;extension=oci8_12c ; Use with Oracle Database 12c Instant Client ;extension=odbc ;extension=openssl ;extension=pdo_firebird ;extension=pdo_mysql ;extension=pdo_oci ;extension=pdo_odbc ;extension=pdo_pgsql ;extension=pdo_sqlite ;extension=pgsql ;extension=shmop
и замените её на:
extension=bz2 extension=curl extension=ffi extension=ftp extension=fileinfo extension=gd extension=gettext extension=gmp extension=intl extension=imap extension=ldap extension=mbstring extension=exif ; Must be after mbstring as it depends on it extension=mysqli ;extension=oci8_12c ; Use with Oracle Database 12c Instant Client extension=odbc extension=openssl ;extension=pdo_firebird extension=pdo_mysql ;extension=pdo_oci extension=pdo_odbc extension=pdo_pgsql extension=pdo_sqlite extension=pgsql extension=shmop
теперь раскомментируйте эту группу строк:
;extension=soap ;extension=sockets ;extension=sodium ;extension=sqlite3 ;extension=tidy ;extension=xsl
extension=soap extension=sockets extension=sodium extension=sqlite3 extension=tidy extension=xsl
Этими действиями мы включили расширения. Они могут понадобиться в разных ситуациях для разных скриптов. Сохраняем файл и перезапускаем Apache.
c:\Server\bin\Apache24\bin\httpd.exe -k restart
Материалы по дополнительной настройке, в том числе подключение поддержки PERL, Ruby, Python в Apache (только для тех, кому это нужно):
- Как тестировать отправку писем в PHP на Windows
- Настройка веб-сервера Apache для запуска программ Ruby на Windows
- Настройка веб-сервера Apache для запуска программ Perl на Windows
- Как настроить веб-сервер Apache на запуск Python в Windows
Как установить MySQL в Windows
Бесплатная версия MySQL называется MySQL Community Server. Её можно скачать на странице https://dev.mysql.com/downloads/mysql/. На этой же странице есть установщик в виде исполнимого файла, но я рекомендую скачать ZIP-архив.
На странице скачивания нам предлагают зарегистрироваться или войти в существующую учётную запись — но это делать необязательно. Достаточно нажать на ссылку «No thanks, just start my download».
В каталог c:\Server\bin\ распаковываем файлы из только что скаченного архива. Распакованная папка будет называться примерно mysql-8.0.17-winx64 (зависит от версии), переименуйте её в mysql-8.0.
Заходим в эту папку и создаём там файл my.ini. Теперь открываем этот файл любым текстовым редактором и добавьте туда следующие строки:
[mysqld] sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES datadir="c:/Server/data/DB/data/" default_authentication_plugin=mysql_native_password
Сохраните и закройте его.
Настройка завершена, но нужно ещё выполнить инициализацию и установку, для этого открываем командную строку от имени администратора и последовательно вводим туда:
C:\Server\bin\mysql-8.0\bin\mysqld --initialize-insecure --user=root C:\Server\bin\mysql-8.0\bin\mysqld --install net start mysql
По окончанию этого процесса в каталоге C:\Server\data\DB\data\ должны появиться автоматически сгенерированные файлы.
Теперь служба MySQL будет запускаться при каждом запуске Windows.
Как установить phpMyAdmin в Windows
Сайт для скачивания phpMyAdmin: phpmyadmin.net.
Прямая ссылка на самую последнюю версию: phpMyAdmin-latest-all-languages.zip.
В каталог c:\Server\data\htdocs\ копируем содержимое только что скаченного архива. Переименовываем эту папку в phpmyadmin.
В каталоге c:\Server\data\htdocs\phpmyadmin\ создаём файл config.inc.php и копируем туда:
В качестве имя пользователя вводим root. Поле пароля оставляем пустым.
Заключение
Вот и всё — теперь у вас есть свой персональный локальный веб-сервер на своём домашнем компьютере.
Если вдруг у вас что-то не получилось, то скорее всего вы пропустили какой-то шаг или сделали его неправильно — попробуйте всё сделать в точности по инструкции. Если проблема осталась, то ознакомьтесь со справочным материалом «Ошибки при настройке и установке Apache, PHP, MySQL/MariaDB, phpMyAdmin» и если даже он не помог, то напишите о своей ошибке в комментарии.
Большое количество материалов по Apache на русском языке специально для Windows вы найдёте на этой странице.
Примеры материалов, которые могут вам пригодиться в первую очередь:
- Как защитить веб-сервер Apache от взлома в Windows
- Несколько сайтов на Apache
- Apache Forwarding — проброска портов веб-сервера
- Как сделать резервную копию баз данных MySQL (MariaDB) в Windows без phpMyAdmin
- Почему в логах ошибок Apache не сохраняются записи об ошибке 404
- Как в Windows поменять сообщения ошибок Apache
- Как настроить PHP для работы с get_browser (browscap.ini) в Windows
- Файл .htaccess в Apache
- Как обновить Apache на Windows
- Как обновить PHP
- Как обновить MySQL
- Как обновить phpMyAdmin
Связанные статьи:
- Ошибки при настройке и установке Apache, PHP, MySQL/MariaDB, phpMyAdmin (97.9%)
- Установка Apache, PHP, MySQL и phpMyAdmin на Windows XP (60.3%)
- Готовая сборка Apache для Windows XP (60.3%)
- Что делать если PHP скрипту не хватает времени и памяти. Почему большой файл не загружается на сайт или в phpMyAdmin (58.4%)
- Ошибка «Composer detected issues in your platform: Your Composer dependencies require the following PHP extensions to be installed: mysqli, openssl» (РЕШЕНО) (58.4%)
- Модуль Apache mod_alias (RANDOM — 53%)
Установка Apache, PHP, MySQL и phpMyAdmin в Windows
Разберём, как установить веб-сервер Apache, препроцессор PHP, СУБД MySQL и инструмент взаимодействия с MySQL – phpMyAdmin.
- Подготовка
- Apache
- Что такое Apache?
- Скачивание
- Установка
- Виртуальные хосты
- Примеры работы с виртуальными хостами
- Пример 1 – сервер для локальной разработки
- Пример 2 – сервер в локальной сети
- Пример 3 – сервер, доступный из глобальной сети
- Что такое PHP?
- Скачивание
- Установка
- Расширения
- Проверка корректной установки
- Что такое MySQL?
- Скачивание
- Установка
- Защищённая инициализация
- Незащищённая инициализация
- Авторизация в защищённом режиме
- Авторизация в незащищённом режиме
- Смена пароля
- Смена пароля в старых версиях MySQL
- Что такое phpMyAdmin?
- Скачивание
- Установка
- Установка без виртуальных хостов Apache
- Установка с виртуальными хостами Apache
1. Подготовка
Дабы не разводить беспорядок на компьютере, давайте условимся, что упорядочим папки, в которых будут располагаться нужные нам компоненты веб-сервера.
В корне системного локального диска (диск C: ), создайте папку WebServer. Сюда мы засунем всё, что будет относиться к веб-серверу.
Внутри папки WebServer создайте две папки: core и sites. Внутри core мы будем хранить основные компоненты веб-сервера (Apache, PHP, MySQL, phpMyAdmin), а внутри sites – непосредственно Web-сайты (Apache поддерживает возможность разместить несколько веб-сайтов на одном веб-сервере).
Далее в папке core создайте четыре папки: apache, php, mysql и pma. Каждая из папок будет отвечать за свой компонент.
Таким образом мы получим следующее дерево папок:
2. Apache
2.1. Что такое Apache?
Apache HTTP Server, или просто Apache – это свободно распространяемый веб-сервер, который может быть установлен на различных операционных системах, включая Windows, macOS и Linux. Apache является одним из самых популярных веб-серверов в мире и используется для хостинга миллионов веб-сайтов.
Apache предоставляет возможность обрабатывать запросы от клиентов, которые могут быть отправлены через Интернет или через локальную сеть. При получении запроса Apache ищет соответствующий файл на сервере и отправляет его обратно клиенту.
Apache также поддерживает модульную архитектуру, что означает, что пользователи могут добавлять дополнительные функции и возможности, чтобы улучшить производительность и безопасность веб-сервера. Это делает Apache гибким и мощным инструментом, который может быть настроен на различные нужды и требования пользователей.
2.2. Скачивание
Скачать Apache можно с сайта Apache Lounge. Перейдите на данный сайт и нажмите в меню слева «Downloads»:

Здесь требуется определиться, какую версию Apache вы будете использовать. Выбирать версию Apache необходимо в зависимости от того, на какой операционной системе вы будете запускать Apache. Список версий и совместимых версий Windows приведён ниже.
VC10 VC11 VC14 VC15 VS16 VS17 Примечание Windows XP + – – – – – Windows Vista + + + + + + Требуется SP2 Windows 7 + + + + + + Требуется SP1 Windows 8 + + + + + + Windows 8.1 + + + + + + Windows 10 + + + + + + Windows 11 ~ ~ ~ + + + Windows Server 2003 + – – – – – Windows Server 2008 + + + + + + Требуется SP2 или R2 SP1 Windows Server 2012 + + + + + + Windows Server 2016 + + + + + + Windows Server 2019 ~ ~ + + + + Windows Server 2022 ~ ~ ~ + + + «–» – не поддерживается
«+» – поддерживается
«~» – поддержка официально не заявленаИ так, вы выбрали подходящую вам версию. Смело нажимайте на ссылку, которая начинается с «httpd-. » (1). Ссылок может быть две: для 32-разрядных систем и для 64-разрядных.
32-разрядный веб-сервер Apache запустится и на 32-разрядной системе, и на 64-разрядной (с ограничением используемой ОЗУ), а 64-разрядный запустится только на 64-разрядной системе.
Также обратите внимание: для работы Apache, вам необходимо установить библиотеки Visual C++. Ссылка на библиотеки нужной версии располагаются в верхней части той же страницы (2).
Если у вас установлена операционная система с 32-битной разрядностью, скачать необходимо только 32-разрядные библиотеки (обозначаются как x86 или 32bit), а если система 64-разрядная, то желательно скачать обе версии библиотек: и 32-бит, и 64-бит.
2.3. Установка
Откройте скачанный архив с Apache любым архиватором, например 7-Zip. Внутри вы увидите папку «Apache24». Скопируйте всё содержимое папки «Apache24» из архива в папку C:\WebServer\core\apache. Убедитесь в том, что вы скопировали не всю папку Apache24 целиком в папку apache, а лишь её содержимое.
Далее, чтобы избежать ошибки при установке Apache, откройте файл C:/WebServer/core/apache/conf/httpd.conf любым текстовым редактором (можно стандартным Блокнотом, но мы рекомендуем что-нибудь более продвинутое, например Notepad++, так как стандартный блокнот сохраняет файлы в кодировке Windows-1251, а файлы конфигурации по умолчанию в кодировке UTF-8, и их изменение в блокноте может привести к неожиданным ошибкам) и найдите строку, в которой аргументом будет стандартный путь к папке Apache:
"c:/Apache24"
Замените этот путь на путь, где вы разместили Apache. В нашем случае новый путь будет таков:
"C:/WebServer/core/apache"
Далее запустите командную строку от имени администратора и введите следующую команду:
C:\WebServer\core\apache\bin\httpd -k install
Данная команда установит сервис Apache, который будет автоматически запускать веб-сервер при каждой загрузке операционной системы.
Как можно заметить, при установке Apache как сервиса, возникло замечание проверки конфигурационного файла. Представленное замечание не критично и лишь говорит о том, что в конфигурационном файле не указана директива ServerName, которая не является обязательной.
Вернитесь в окно командной строки (запущенной от имени администратора) и введите команду, которая запустит сервис Apache:
net start Apache2.4
Вы должны получить сообщение о том, что служба успешно запущена или служба уже была запущена ранее:
После этого перейдите в браузере по адресу http://127.0.0.1/. Если всё установлено корректно, перед вами должна открыться страница с надписью «It works!»:
Данная страница означает, что веб-сервер успешно запустился и отобразил файл C:\WebServer\core\apache\htdocs\index.html. Для проверки, вы можете открыть данный файл текстовым редактором, что-нибудь написать, сохранить файл и перезагрузить страницу.
В принципе, вы уже можете пользоваться веб-сервером Apache, размещая необходимые вам файлы в каталоге C:\WebServer\core\apache\htdocs, однако это позволит развернуть лишь один сайт на веб-сервере. Если же вы хотите развернуть несколько сайтов – необходимы виртуальные хосты.
2.4. Виртуальные хосты
Виртуальные хосты позволяют развернуть на веб-сервере несколько сайтов. Это полезно, если вы хотите работать с несколькими проектами на одном компьютере, или же собираетесь «хостить» несколько сайтов на одном сервере.
Для включения виртуальных хостов, откройте в текстовом редакторе файл C:\WebServer\core\apache\conf\httpd.conf.
В этом файле найдите блок кода, отвечающий за подключение файла виртуальных хостов. Он выглядит так: «#Include conf/extra/httpd-vhosts.conf». Раскомментируйте данную строку, убрав из её начала символ «#».
Также найдите строку: «#LoadModule vhost_alias_module modules/mod_vhost_alias.so» и раскомментируйте её – это модуль псевдонимов для доменных имён виртуальных хостов, он нам пригодится:
В самом начале файла, где вы указывали путь к папке с Apache, вставьте следующую строку, заменив путь на каталог к папке с сайтами. Мы будем использовать эту переменную SITES для подстановки в пути в виртуальные хосты:
Define SITES "c:/WebServer/sites"
Также в этом же файле нужно найти строку DocumentRoot, закомментировать её и следующей за ней блок Directory:
А также нужно найти блок
и тоже его закомментировать:
Также по желанию вы можете закомментировать строку ServerAdmin, поскольку она не влияет на работоспособность сервера:
На этом мы закончили с файлом httpd.conf. Далее откройте в текстовом редакторе файл с виртуальными хостами: C:\WebServer\core\apache\conf\extra\httpd-vhosts.conf
В этом файле вы увидите два стандартных блока виртуальных хостов (в начале файла будет около 20 строк комментариев, их можно удалить):
Разберём, из чего эти блоки состоят:
- Части
и отвечают за один виртуальный хост и описывают его. То есть это открывающий и закрывающий теги блока.
Комбинация символов астериска-двоеточия-цифр ( *:80 ) в данном контексте определяет, что Apache будет обрабатывать этим виртуальным хостом запросы, пришедшие на любой IP-адрес этого компьютера по 80 порту. - DocumentRoot – директория, из которой веб-сервер будет брать файлы при обращении к определённому виртуальному хосту.
- ServerName – основное имя домена, на который будет срабатывать виртуальный хост.
- ServerAlias – альтернативные имена домена, на которые будет срабатывать виртуальный хост. Может быть несколько, перечисленных через запятую. Для работы этой директивы необходимо подключить модуль mod_vhost_alias.so.
- ServerAdmin – электронная почта администратора сервера. Используется в основном при запросах с сервисов Whois.
- ErrorLog – путь к файлу лога ошибок при обращении к конкретно этому виртуальному хосту.
- CustomLog – путь к файлу пользовательских логов.
Давайте разберём небольшой простенький пример конфигурации виртуальных хостов:
- Первый виртуальный хост будет «заглушкой». Всё, что он будет делать – это загружать каталог C:\WebServer\sites\dummy в том случае, если клиент обращается к нашему веб-серверу, но на веб-сервере отсутствует виртуальный хост с таким именем (ServerName или ServerAlias).
- Второй виртуальный хост будет загружать каталог C:\WebServer\sites\example.com\www в том случае, если пользователь заходит по адресам http://example.com/ (ServerName) или http://www.example.com/ (ServerAlias).
- Третий виртуальный хост будет загружать каталок C:\WebServer\sites\example.com\second при обращении к адресу http://second.example.com/
Обратите внимание: обработка адресов виртуальных хостов (ServerName, ServerAlias) возможна только в том случае, если запрос от клиента приходит именно на наш сервер. Переадресация запросов с имени домена на ваш сервер возможна только в случае, если DNS-сервер, используемый клиентом, ассоциирует имя домена с IP-адресом вашего сервера.
Изменения, внесённые в конфигурационные файлы Apache и PHP, вступают в силу только после перезапуска службы Apache!
Для перезапуска можно использовать команду в командной строке:
net stop Apache2.4 & net start Apache2.4
2.5. Примеры работы с виртуальными хостами
2.5.1. Пример 1 – сервер для локальной разработки
Предположим, вы хотите запустить несколько сайтов, которые будут доступны только на вашем компьютере. Такой вариант полезен, например, для локальной разработки веб-сайтов, когда к ним не нужен доступ ни из локальной сети, ни из глобальной сети. То есть вы будете с ними работать единолично, всегда из под одного компьютера.
Предположим, что вы хотите развернуть три локальных сайта: mysite.com, client.mysite.com и myanothersite.com. В этом случае конфигурация виртуальных хостов будет представлять из себя что-то вроде:
При этом, должны существовать каталоги:
- C:\WebServer\sites\mysite.com\www – для mysite.com и www.mysite.com
- C:\WebServer\sites\mysite.com\client – для client.mysite.com
- C:\WebServer\sites\myanothersite.com\www – для myanothersite.com и www.myanothesite.com
Также вам нужно ассоциировать перечисленные адреса именно с вашим компьютером. То есть компьютер должен понимать: «Если я обращаюсь к домену mysite.com – значит я должен обратиться к своему же IP-адресу».
Если вы используете эти сайты именно для локальной разработки, то есть не обязательно, чтобы эти сайты работали из локальной или глобальной сети, вы можете использовать для этого файл C:\Windows\System32\drivers\etc\hosts.
Файл hosts играет роль простенького «DNS-сервера» (очень утрированно, но всё же). При обращении к любому доменному имени, система сначала проверяет, присутствует ли запись об этом доменном имени в файле hosts. Если такая запись присутствует – все запросы к этому доменному имени в будущем направляются на указанный в этом файле IP-адрес. В случае, если доменное имя в этом файле не указано, то отправляется запрос на DNS-сервер в локальной сети (если таковой существует), а далее – на глобальный DNS-сервер.
В контексте нашего примера, содержимое файла hosts будет представлять из себя следующее:
IP-адреса в диапазоне 127.X.X.X (кроме 127.0.0.0 и 127.255.255.255) всегда ссылается на текущий компьютер.
В случае, если вы внесли изменения и в файл виртуальных хостов, и в hosts, а также создали перечисленные папки, все перечисленные сайты откроются:
2.5.2. Пример 2 – сервер в локальной сети
Предположим, что вы хотите развернуть все те же самые сайты, что и в примере 1, но чтобы они были доступны в пределах локальной сети. Такое полезно, например, для организации веб-платформ внутри предприятия.
В этом случае конфигурация виртуальных хостов в Apache не изменится, однако необходимо каким-либо образом дать понять другим компьютерам в пределах локальной сети, что при обращении к mysite.com, они должны будут не искать этот домен на глобальных DNS-серверах, а отправляться на сервер внутри локальной сети.
Предположим, что Apache развёрнут на компьютере с именем Server и статическим IP-адресом 192.168.1.100. Остальные компьютеры в организации имеют имена и IP-адреса: PC1 — 192.168.1.101, PC2 — 192.168.1.102, PC3 — 192.168.1.103.
В этом случае есть два варианта:
-
Простой вариант. На всех компьютерах клиентов (PC1, PC2 и PC3) в файл hosts добавить строки, которые будут перенаправлять запросы к необходимым нам сайтам на IP-адрес 192.168.1.100 (IP-адрес сервера):
192.168.1.100 mysite.com 192.168.1.100 www.mysite.com 192.168.1.100 client.mysite.com 192.168.1.100 myanothersite.com 192.168.1.100 www.myanothersite.com
Также существует обходной, несколько «костыльный» вариант, не требующий редактирования файла hosts на клиентах, а также не требующий поднятия DNS-сервера. Однако данный вариант не позволяет использовать доменные имена. Доступ к сайтам в этом случае будет происходить по IP-адресам.
Для данного варианта необходимо задать сетевому адаптеру сервера несколько статических IP-адресов, например 192.168.1.10, 192.168.1.11, 192.168.1.12 (количество IP-адресов должно быть больше или равно количеству сайтов).
Конфигурацию виртуальных хостов же следует переделать, придав ей вид наподобие:
В этом случае, любой из клиентов, который зайдёт по адресу http://192.168.1.10/ попадёт в каталог C:\WebServer\sites\mysite.com\www, при входе на http://192.168.1.11/ – в каталог C:\WebServer\sites\mysite.com\client, а при входе на http://192.168.1.12/ – в каталог C:\WebServer\sites\myanothersite.com\www.
2.5.3. Пример 3 – сервер, доступный из глобальной сети
Предположим, что вы хотите, чтобы сайт был доступен из глобальной сети (пожалуй, самое популярное использование веб-серверов в принципе).
В этом случае вам необходимо приобрести домен у регистратора доменных имён. Регистраторов существует огромное множество, например: nic.ru, reg.ru, 2domains.ru, beget.com, timeweb.com и прочие. Вы можете приобрести у регистратора любой домен при условии, что данный домен свободен и доступен для покупки. Цена варьируется в зависимости от доменной зоны (.ru, .com, .net и пр.), а также от востребованности домена: например домен a.travel будет стоить значительно дороже, чем какой-нибудь HelloIAmVasyaPupkinThisIsMyFirstWebSite.ru.
Также необходимо, чтобы шлюз, через который сервер получает доступ к интернету, имел статический «белый» IP-адрес. Арендовать статический публичный IP-адрес можно у интернет-провайдера, который предоставляет доступ к интернету. Цены варьируются в зависимости от провайдера, региона и вашего юридического статуса (физическое или юридическое лицо). Кроме того, некоторые (в частности местечковые) провайдеры не предоставляют возможность аренды «белого» IP-адреса физическим лицам из-за ограниченного количества таких адресов «в наличии» – учитывайте это.
Предположим, вы хотите приобрести доменное имя mycompany.ru, и хотите, чтобы у вас работали непосредственно сам домен, а также поддомены: cabinet.mycompany.ru, landing.mycompany.ru и help.mycompany.ru.
В данном случае ваш алгоритм действий будет примерно следующим:
- Арендовать «белый» IP-адрес у провайдера
- Арендовать домен у регистратора доменных имён
- Запустить веб-сервер на компьютере в локальной сети, сконфигурировать виртуальные хосты. Одна из возможных реализаций файла виртуальных хостов:

- Настроить переадресацию портов на шлюзе, чтобы запросы, приходящие на шлюз, например на 80 порт, перенаправлялись на «серый» IP-адрес машины, на котором запущен веб-сервер
- У регистратора доменных имён изменить DNS-записи вашего домена, заменив/добавив DNS-записи типа A, ссылающиеся на «белый» IP-адрес, который вам выдал провайдер:
Имя Тип Значение @ A IP-адрес от провайдера cabinet A IP-адрес от провайдера landing A IP-адрес от провайдера help A IP-адрес от провайдера
Через несколько часов после внесения DNS-записей, сайт заработает.
2.6. Поиск ошибок в конфигурации Apache
Если сервис Apache не может запуститься, необходимо понять, из-за какой ошибки он не запускается. Для того, чтобы понять, какие вообще ошибки и замечания содержатся в конфигурационном файле, введите следующую команду:
C:\WebServer\core\apache\bin\httpd -t
Данная команда произведёт проверку используемого файла конфигурации и всех подключаемых файлов и оповестит вас о всех найденных ошибках и замечаниях. Если ошибок и замечаний нет, команда проверки конфигурации выдаст лишь сообщение «Syntax OK»:
Разберём устранение ошибки на примере замечания о том, что в конфигурационном файле не указана директива ServerName. Данное замечание не является критичным и не мешает работе Apache, но дабы оно не мозолило глаза, исправим его.
Дело в том, что по умолчанию директива ServerName просто-напросто закомментирована. Вы можете раскомментировать её в конфигурационном файле C:\WebServer\core\apache\conf\httpd.conf – убрать символ «#» в начале строки и изменить www.example.com, например, на test.local, после чего ошибка пропадёт.

Обратите внимание: после любых изменений конфигурационных файлов Apache или PHP, требуется перезапустить Apache, так как изменения применятся только при следующем запуске веб-сервера.
Перезапустить веб-сервер можно командами в командной строке:
net stop Apache2.4 net start Apache2.4
На этом с установкой Apache мы закончили. Перейдём к установке PHP.
3. PHP
3.1. Что такое PHP?
PHP — это язык программирования, который используется для создания веб-приложений и динамических сайтов. Он был создан в 1995 году Расмусом Лердорфом и с тех пор стал одним из наиболее популярных языков программирования для веб-разработки.
Основная цель PHP — обработка данных на сервере. Он может быть использован для работы с базами данных, чтения и записи файлов, отправки электронной почты и многого другого. Кроме того, PHP имеет множество библиотек и фреймворков, которые упрощают и ускоряют процесс разработки.
Существует множество крупных веб-сайтов, которые используют PHP в своей основе, таких как Facebook, Wikipedia и WordPress. Он также поддерживается на большинстве серверов и операционных систем, что делает его доступным для широкого круга разработчиков.
3.2. Скачивание
Для скачивание препроцессора PHP перейдите на сайт в раздел Downloads на Windows.PHP.net
В этом разделе вам необходимо найти версию PHP, подходящую к версии Apache. Например, если вы скачали Apache VS17, то необходимо использовать и PHP для версии VS17.
На момент публикации этой статьи, PHP VS17 ещё не вышла, поэтому мы используем VS16 (они совместимы).
Найдите раздел под разрядность вашей системы с припиской «Thread Safe» и скачайте Zip-архив:
Разархивируйте содержимое архива в папку C:\WebServer\core\php:
3.3. Установка
В каталоге с распакованным PHP переименуйте файл php.ini-development в php.ini:
Далее откройте файл конфигурации Apache – C:\WebServer\core\apache\conf\httpd.conf и вставьте в конец файла следующий текст:
LoadModule php_module "C:/WebServer/core/php/php8apache2_4.dll" PHPIniDir "C:/WebServer/core/php" AddHandler application/x-httpd-php .php
- LoadModule – загружает модуль с названием «php_module» из DLL-файла, находящегося по пути C:/WebServer/core/php/php8apache2_4.dll.
- PHPIniDir – указывает, в каком каталоге располагается файл php.ini. Если в данном каталоге нет файла php.ini (например вы забыли его переименовать из php.ini-development в php.ini), то PHP использует стандартные настройки.
- AddHandler – указывает веб-серверу Apache, что файлы с расширением *.php будут обрабатываться препроцессором PHP.
В случае со старыми версиями PHP (до PHP 7 включительно), первая строка может отличаться: вместо «LoadModule php_module» должно быть «LoadModule php7_module», где цифра 7 – версия PHP. Также для версии PHP 5: «LoadModule php5_module»
Также в этом же файле найдите строку: «DirectoryIndex index.html» и замените её на «DirectoryIndex index.php index.html».
Данная строка отвечает за то, чтобы при открытии пути-директории, без имени файла, открывать перечисленные файлы. То есть, если пользователь зайдёт по адресу http://example.com/ , Apache попытается найти файл http://example.com/index.php, и если он существует – он откроется без изменения URL. Если файла index.php в этом каталоге нет, будет произведён поиск файла index.html. Если он есть – он откроется, а если его нет – будет либо выдан список файлов в этой директории, либо ошибка «403 Forbidden» (в зависимости от настроек Apache).
3.4. Расширения
Большинство сайтов используют не только «голый» функционал PHP, но и дополнительные функции, идущие в комплекте расширений для PHP. По умолчанию все расширения PHP отключены, и было бы полезно включить некоторые из них, чтобы впоследствии не столкнуться с ошибками при работе с сайтами.
Откройте файл C:\WebServer\core\php\php.ini и найдите строку «;extension_dir = «ext»». Раскомментируйте её, убрав точку с запятой из начала строки, и укажите верный путь к папке расширений PHP (C:\WebServer\core\php\ext):
Сами расширения можно включить в этом же файле, найдя и раскомментируя строку «extension=ИМЯ_РАСШИРЕНИЯ» (или добавив свою строку того же формата, разместив расширение в папке php/ext):
Наиболее часто используемыми дополнениями являются: gd, mbstring, exif, mysqli, pdo_mysql. Можете их сразу раскомментировать, чтобы в будущем не сталкиваться с ошибкой отсутствия этих расширений.
3.5. Проверка корректной установки
После внесения изменений в httpd.conf и php.ini, необходимо перезапустить Apache:
net stop Apache2.4 & net start Apache2.4
Теперь вы можете создать файл в любой директории, указанной в созданном виртуальном хосте (или в C:\WebServer\core\apache\htdocs, если не создавали виртуальные хосты), например index.php, и добавить в него следующий текст:
Если всё настроено правильно, при входе на страницу с адресом этого файла, вы увидите стандартную страницу с информацией о PHP, которая выводится функцией phpinfo():
4. MySQL
4.1. Что такое MySQL?
MySQL — это система управления реляционной базой данных (СУБД), которая широко используется для создания и управления различными типами веб-приложений. Она является одной из самых популярных СУБД в мире благодаря своей простоте, надежности и гибкости.
Работа с MySQL поддерживается множеством языков программирования, включая PHP, Python, Ruby, Java и другими.
4.2. Скачивание
Перейдите на сайт MySQL.com в раздел Downloads:
Внизу страницы перейдите по ссылке «MySQL Community (GPL) Downloads»:
На этой странице нажмите по ссылке «MySQL Community Server»:
На этой странице можно скачать MySQL в двух форматах: установщик (1) и ZIP-архив (2). Поскольку установщик – это слишком просто (¯\_(ツ)_/¯), разберём ручную установку из ZIP-архива.
После перехода по ссылке для скачивания архива, входить/регистрироваться не обязательно. Просто нажмите «No thanks, just start my download»:
После скачивания, откройте архив, перейдите внутри архива в папку «mysql-версия-разрядность» и распакуйте всё содержимое папки в C:\WebServer\core\mysql:
4.3. Установка
Для установки MySQL, в первую очередь необходимо установить сервис MySQL. Сделать это можно следующей командой:
C:\WebServer\core\mysql\bin\mysqld --install
Результатом данной команды должно быть сообщение о том, что сервис успешно установлен:
Теперь нужно создать пустую базу данных. Данный процесс в рамках MySQL называется «инициализация».
Инициализировать базу данных можно двумя способами:
- В защищённом режиме
- В незащищённом режиме
В защищённом режиме, при инициализации, пользователю root – основному пользователю базы с полными правами на управление базой задастся случайный пароль. В незащищённом режиме – пароль будет пустым.
Oracle, владельцы MySQL, всегда рекомендуют использовать только защищённый режим инициализации, поскольку пароль задан буквально с создания базы, и недоброжелатель не сможет «достучаться» до базы в промежуток времени между незащищённой инициализацией и заданием пароля для рута.
4.3.1. Защищённая инициализация
Для защищённой инициализации введите в командной строке следующую команду:
C:\WebServer\core\mysql\bin\mysqld --initialize
После выполнения этой команды, в папке C:\WebServer\core\mysql появится папка data: в этой папке и хранится база данных.
Как мы уже упомянули, при защищённой инициализации, MySQL создаёт случайный пароль для пользователя root. Данный пароль можно узнать в файле лога ошибок, который создаётся в каталоге созданной базы.
Найдите в папке C:\WebServer\core\mysql\data файл с расширением .err. Его название также генерируется случайным образом и при каждой инициализации будет разным.
Откройте данный файл с помощью блокнота. В нём вы найдёте строку: «A temporary password is generated for root@localhost: . » – это и есть случайный пароль пользователя root.
4.3.2. Незащищённая инициализация
Для защищённой инициализации введите в командной строке следующую команду:
C:\WebServer\core\mysql\bin\mysqld --initialize-insecure
При этом, как и в случае с защищённой инициализацией, будет создана папка data, где будут располагаться все файлы базы данных.
Не забудьте запустить службу
После инициализации базы данных, необходимо запустить службу MySQL, так как она не запускается после установки.
Запустить службу MySQL можно следующей командой:
net start MySQL
В принципе, установка MySQL на этом окончена. Однако, вам может потребоваться изменить пароль пользователя root, поскольку, например, phpMyAdmin не позволяет авторизоваться в БД, если для авторизации используется пустой пароль (если вы использовали незащищённую авторизацию —initialize-insecure ).
4.4. Смена пароля пользователя root
После инициализации, вне зависимости от её типа (защищённая, незащищённая) вам может потребоваться изменение пароля пользователя root.
Для смены пароля рута (да и любого пользователя), необходимо подключиться к базе данных. Убедитесь, что вы запустили службу MySQL, иначе получите ошибку: «Can’t connect to MySQL server on. »:
Для подключения к базе данных, нам необходим файл mysql.exe из папки C:\WebServer\core\mysql\bin.
Заметьте: утилита mysqld.exe (которую мы использовали для установки сервиса и инициализации БД) – отвечает за сервер MySQL, а mysql.exe – это клиент подключения к БД. Не путайте их.
4.4.1. Авторизация в защищённом режиме
Если вы инициализировали базу в защищённом режиме (аргументом —initialize ), вам необходимо авторизоваться в базе данных с использованием пароля. Воспользуйтесь следующей командой для подключения к БД:
C:\WebServer\core\mysql\bin\mysql -u root -p
После ввода команды, MySQL запросит пароль от пользователя root (как уже упоминалось, найти его вы можете в файле с расширением .err в каталоге с базой данных – папке data).
После ввода команды нажмите Enter. MySQL спросит пароль для пользователя root, введите его.
В случае успешной авторизации, вы увидите приветственное сообщение: «Welcome to the MySQL monitor».
Аргумент -u root в данном контексте обозначает, что мы будем авторизоваться от имени пользователя root, а аргумент -p означает, что для входа в базу данных будет использован пароль. Без этого аргумента, MySQL выдаст ошибку: «Access denied for user. ».
4.4.2. Авторизация в незащищённом режиме
Данный вариант возможен только в случае, если вы инициализировали базу данных в незащищённом режиме (аргументом —initialize-insecure ).
Для авторизации используйте команду:
C:\WebServer\core\mysql\bin\mysql -u root
После этого вы сразу же попадёте в монитор MySQL, без необходимости вводить пароль.
Использование аргумента -p , как в случае с авторизацией в защищённом режиме, здесь наоборот не нужно, так как пользователь root в данном случае – беспарольный, и попытка выполнить вход с любым паролем выдаст ту же ошибку «Access denied for user. »:
4.4.3. Смена пароля
Для смены пароля пользователя root введите следующую команду:
ALTER USER 'root'@'localhost' IDENTIFIED BY 'НОВЫЙ_ПАРОЛЬ';
Результатом выполнения данной операции должен быть ответ: «Query OK». После смены пароля, вы можете выйти из базы командой quit, после чего попробовать вновь авторизоваться с использованием нового пароля:
C:\WebServer\core\mysql\bin\mysql -u root -p
4.4.4. Смена пароля в старых версиях MySQL
MySQL до версии 5.7.5 включительно и MariaDB (базированная на MySQL) до 10.1.20 включительно не поддерживают команду ALTER USER . Для этих версий необходимо использовать иной синтаксис команды:
SET PASSWORD FOR 'root'@'localhost' = PASSWORD('НОВЫЙ_ПАРОЛЬ');После изменения пароля перезагрузите привилегии командой:
FLUSH PRIVILEGES;
4.5. Восстановление пароля MySQL
Данный способ поможет вам в случае, если вы по какой-то причине потеряли пароль пользователя root, а соответственно и доступ к MySQL.
Узнать установленный пароль MySQL, к сожалению, нельзя. Однако можно установить новый пароль для пользователя.
Для этого в корне диска C: создайте текстовый файл init.txt. Внутрь данного файла напишите команду изменения пароля, например:
ALTER USER 'root'@'localhost' IDENTIFIED BY 'new-root-password';
Далее завершите службу MySQL командой:
net stop MySQL
Теперь запустите сервер MySQL с указанием пути к файлу инициализации и включении консольного вывода:
C:\WebServer\core\mysql\bin\mysqld --init-file=C:\init.txt --console
Когда в выводе увидите строку вида: «C:\WebServer\core\mysql\bin\mysqld: ready for connections. Version. », нажмите сочетание клавиш Ctrl+C – это завершит сервер MySQL.
После этого вновь запустите сервер MySQL командой:
net start MySQL
Готово. Теперь вы можете авторизоваться по паролю, который установили в команде в файле init.txt. Не забудьте удалить файл init.txt чтобы избежать компрометации пароля.
5. phpMyAdmin
5.1. Что такое phpMyAdmin?
phpMyAdmin — это бесплатный инструмент с открытым исходным кодом, который предоставляет веб-интерфейс для управления базами данных MySQL. С помощью phpMyAdmin вы можете легко создавать, редактировать и удалять базы данных, таблицы, записи и пользователей.
Кроме того, phpMyAdmin предоставляет множество функций для работы с данными, таких как импорт и экспорт данных, выполнение SQL-запросов, создание отчетов и диаграмм и многое другое. Он широко используется веб-разработчиками и администраторами баз данных для управления своими базами данных MySQL.
Кроме того, phpMyAdmin работает скорее как веб-проект (например как тот же WordPress), а не как отдельный компонент, требующий установки (как Apache, PHP и MySQL).
5.2. Скачивание
Для скачивания phpMyAdmin перейдите на сайт phpMyAdmin.net и нажмите кнопку «Download».
Откройте скачанный архив. Внутри вы увидите папку phpMyAdmin-версия-языки, перейдите в неё.
5.3. Установка
5.3.1. Если вы не используете виртуальные хосты в Apache
Создайте в папке C:\WebServer\core\apache\htdocs папку pma. Скопируйте всё содержимое из папки phpMyAdmin-версия-языки из архива в папку pma.
Теперь вы можете войти по адресу http://127.0.0.1/pma/ и попасть в интерфейс phpMyAdmin.
5.3.2. Если вы используете виртуальные хосты Apache
Распакуйте из папки phpMyAdmin-версия-языки из архива в папку C:\WebServer\core\pma.
Далее откройте файл конфигурации виртуальных хостов в Apache: C:\WebServer\core\apache\conf\extra\httpd-vhosts.conf. Добавьте новый виртуальный хост:
ServerName pma.localhost DocumentRoot "c:/WebServer/core/pma" В файл C:\Windows\system32\drivers\etc\hosts добавьте следующую строку:
127.0.0.1 pma.localhost
В файле C:\WebServer\core\php\php.ini убедитесь, что строка подключения расширения mysqli раскомментирована:
Перезапустите веб-сервер Apache командой:
net stop Apache2.4 & net start Apache2.4
После этого зайдите через любой браузер по адресу http://pma.localhost/. У вас должна открыться страница авторизации phpMyAdmin. Для авторизации используйте логин-пароль от MySQL.
На этом установка Apache, PHP, MySQL и phpMyAdmin окончена.
При возникновении вопросов, вы можете задать их в комментариях к статье. Мы постараемся ответить на все вопросы, а так же, при необходимости – дополним статью ответами на эти вопросы.
6. Добавление нового сайта
Для создания нового сайта (например mysite.ru) в пределах веб-сервера, выполните следующие действия:
- В каталоге C:\WebServer\sites создайте папку mysite.ru, внутри неё – папку www.
- В файле виртуальных хостов C:\WebServer\core\apache\conf\extra\httpd-vhosts.conf создайте следующий блок виртуального хоста:
DocumentRoot "$\mysite.ru\www ServerName mysite.ru ServerAlias www.mysite.ru 127.0.0.1 mysite.ru 127.0.0.1 www.mysite.ru
net stop Apache2.4 & net start Apache2.4
7. Сборка Apache+PHP+MySQL+phpMyAdmin
Скачать сборку можно по следующей ссылке: https://profit-zip.ru/eniweb/apmp.zip (обновлено 11.07.2023, обновлена версия PHP до 8.2.8).
Разархивируйте *.bat-файл в любое место и запустите от имени администратора.
Данный bat-файл загрузит Apache, PHP, MySQL и phpMyAdmin, а также несколько необходимых компонентов, после чего установит компоненты, отредактирует файлы конфигураций, инициализирует пустую базу данных и запустит службы.
После запуска bat-файла, для авторизации в MySQL (например через phpMyAdmin или через CMS) используйте имя пользователя/пароль: root/root или из под рута создайте отдельного пользователя.
Проверено на Windows 10 x64 и Windows 11 x64. За фидбек по другим версиям и разрядностям Windows будем признательны.
Как установить apache php mysql на windows 10
Этот раздел содержит примечания и подсказки к установке PHP, связанной с Apache 2.x на системах Microsoft Windows.
Крайне рекомендуется обратиться к » Документации Apache, чтобы получить базовое представление о сервере Apache 2.x. Также подумайте о чтении » Примечаний для Windows для Apache 2.x перед чтением этого руководства.
Загрузите последнюю версию » Apache 2.x и подходящую версию PHP. Следуйте шагам ручной установки и возвращайтесь, чтобы продолжить интеграцию PHP и Apache.
Существует три способа настроить PHP для работы с Apache 2.x в Windows. PHP можно запускать как обработчик, как CGI или под FastCGI.
Замечание: Помните, что при указании путей в конфигурационных файлах Apache под Windows, все обратные слеши, например, c:\directory\file.ext должны быть изменены на прямые: c:/directory/file.ext . Для путей с директориями также может понадобиться слеш в конце.
Установка в качестве обработчика Apache
Чтобы загрузить модуль PHP для Apache 2.x, необходимо вставить следующие строки в файл конфигурации Apache httpd.conf :
Пример #1 PHP и Apache 2.x в качестве обработчика
# до PHP 8.0.0 имя модуля было php7_module LoadModule php_module "c:/php/php8apache2_4.dll"
SetHandler application/x-httpd-php # укажите путь до php.ini PHPIniDir "C:/php"Замечание: В приведённых выше примерах необходимо подставить фактический путь к PHP вместо C:/php/ . Убедитесь, что файл, указанный в директиве LoadModule , находился в указанном месте. Используйте php7apache2_4.dll для PHP 7 или php8apache2_4.dll для PHP 8.
Запуск PHP как CGI
Настоятельно рекомендуется обратиться к » Документации Apache CGI для более полного понимания того, как запускать CGI в Apache.
Чтобы запустить PHP как CGI, файлы php-cgi должны быть помещены в каталог, обозначенный как каталог CGI с использованием директивы ScriptAlias.
Строку #! необходимо будет поместить в файлы PHP, которые указывают на расположение бинарного файла PHP:
Пример #2 PHP и Apache 2.x как CGI
#!C:/php/php.exe
ВниманиеИспользуя установку CGI, ваш сервер открыт перед несколькими возможными уязвимостями. Пожалуйста, ознакомьтесь с разделом «Безопасность CGI» чтобы узнать, как можно защитить себя от таких атак.
Запуск PHP под FastCGI
Запуск PHP под FastCGI имеет ряд преимуществ перед запуском как CGI. Настройка таким способом довольно проста:
Загрузите mod_fcgid с » https://www.apachelounge.com. Бинарные файлы Win32 доступны для загрузки с этого сайта. Установите модуль в соответствии с прилагаемой к нему инструкцией.
Настройте свой веб-сервер, как показано ниже, позаботившись о том, чтобы скорректировать все пути в соответствии с тем, как вы провели установку в своей конкретной системе:
Пример #3 Настройка Apache для запуска PHP как FastCGI
LoadModule fcgid_module modules/mod_fcgid.so # Где находится ваш файл php.ini? FcgidInitialEnv PHPRC "c:/php"
SetHandler fcgid-script FcgidWrapper "c:/php/php-cgi.exe" .phpФайлы с расширением .php теперь будут исполняться обёрткой PHP FastCGI.
User Contributed Notes 33 notes
9 years ago
Please for the love of god, download the threaded version. I spent over an hour trying to figure out why php5apache2.dll could not be found, and while desperately looking through manuals I went into the php 5 structure and found that it doesn’t exist in the non-threaded version.
This really could use a mention somewhere other than the PHP 5 structure, like the paragraph to the left of the homepage which talks about which PHP version to choose, or this part of the manual which covers Apache. Anywhere but structure, seriously. I would have never guessed to look there.
8 years ago
If you come with an error like this: Wrapper xxxx cannot be accessed: blah blah blah when starting Apache.
You have 3 choices to solve this problem. Any one of them would work.
1. Reinstall your applictions in paths that do not contain spaces.
2. Place a backslash before every space in the path set to the FcgidWrapper directive in httpd.conf, like:
FcgidWrapper «C:/Program\ Files/PHPServer/PHP/php-cgi.exe» .php
3. Use mklink (or junction for windows XP/2003) to create a symbol link to the path of php-cgi.exe’s containing folder.
run cmd.exe and type this command:
mklink /j C:\php\ «C:\Program Files\PHPServer\PHP».
or this command if you are on Windows XP/2003
junction C:\php\ «C:\Program Files\PHPServer\PHP»
Remember this : you need to download junction.exe to use it. Don’t know where to download? Google it.
Then the FcgidWrapper directive should be like this:
FcgidWrapper «C:/php/php-cgi.exe» .php
Don’t forget to change the paths above to your working paths.
12 years ago
Running PHP under FastCGI:
Besides the following in your httpd.conf
LoadModule fcgid_module modules/mod_fcgid.so
FcgidInitialEnv PHPRC «c:/php»
AddHandler fcgid-script .php
FcgidWrapper «c:/php/php-cgi.exe» .phpRemember to add the following to the default block (or virtual host blocks):
8 years ago
With Apache 2.4 in Windows, it seems that PHPIniDir directive must come before LoadModule directive to be used. Also, name of the DLL file seems to be php5apache2_4.dll, not php5apache2.dll.
This configuration in httpd.conf works for me (Apache 2.4.10, PHP 5.6.5):
LoadModule php5_module «c:/php/php5apache2_4.dll»
SetHandler application/x-httpd-php15 years ago
If you use the PHP 5 installer, you’ll notice that it uses the wrong type of slash on Windows!
Change C:/Program Files/PHP/» to C:\Program Files\PHP\» and everything works great!
13 years ago
If anybody here encounters an error regarding PHPIniDir, change PHPIniDir «C:/php/» to PHPIniDir «C:\php\».
12 years ago
Here is yet another aspect of the «faulting module php5ts.dll» crash when trying to start apache.
I installed Apache 2.2.18, Mysql 5.1.57 and PHP 5.2.17 (apache module, VC6 thread-safe — initially with no extensions) on a fresh WinXP SP3 system. The versions chosen were because I was trying to replicate as near as possible apps on my Linux server.Everything configured and ran properly without php extensions, so I then reran the msi installer and chose the necessary extensions. I reconfigured httpd.conf but apache then just kept crashing.
Eventually I came across the «fix» mentioned elsewhere «copy libmysql.dll to apache folder» and suddenly it worked. But why? I checked and the php installation folder was in the system path. The answer was simply that I had never rebooted. It seems that whatever process controls windows services only reads the path at boot time. I was thrown by assuming that if I started httpd from the command line then it would inherit that path.Here are a few diagnostic tips that helped me along the way:
Try the CLI command:
php -m
and see that the command line version loads all the modules you asked for.in php.ini, enable
display_errors = On
and
display_startup_errors = On
The latter pops up a window saying which extension it has trouble loading. Of course it is not perfectly clear, because it says something like ‘unable to load «C:\php\ext\php_mysql.dll» — The specified module could not be found’. It lies — it really does find that dll, but it must have failed on the dependency of libmysql.dll.11 years ago
Installing Apache and PHP on Windows 7 Home Premium on a Gateway NV75S laptop with a quad AMD A6-3400M
All I need to do with these programs is to test my website out on my laptop. I have HTML and PHP files. I do not need MySQL as I use html5 storage.
Getting and installing Apache
1 In your browser go to h t t p : / / h t t p d . a p a c h e . o r g / d o w n l o a d . c g i
(without the spaces)
2 Click on httpd-2.2.22-win32-x86-no_ssl.msi
(this is a self-installing executable file without crypto . no Secure Socket Layer)
(2.2.22 was the latest version on April 25, 2012)
3 Click on the httpd-2.2.22-win32-x86-no_ssl.msi file after it downloads
(single click on the file tab in Chrome or double click on the actual file in Downloads)
4 Click Next
5 Click I accept the terms in the license agreement
6 Click Next
7 Click Next
8 Type localhost in the top box
9 Type localhost in the middle box
10 Type admin@localhost.com in the bottom box
11 Click Next
12 Click Next
13 Click Next
14 Click Install and wait
15 Cick Yes to allow the program to make changes
16 Click Finish1 Type localhost in your browser location box (I use Chrome) or type h t t p : / / l o c a l h o s t
(without the spaces)
2 The message It works! should appear.Getting and installing PHP
1 In your browser go to h t t p : / / w i n d o w s . p h p . n e t / d o w n l o a d /
(without the spaces)
2 Click on the Installer link under PHP 5.3 (5.3.10) VC9 x86 Thread Safe
(Ignore the Do NOT use VC9 version with apache.org binaries comment on the side panel)
3 Click on the php-5.3.10-Win32-VC9-x86.msi file after in downloads
(single click on the file tab in Chrome or double click on the actual file in Downloads)
4 Click Next
5 Click I accept the terms in the License Agreement
6 Click Next
7 Click Next
8 Click Apache 2.2.x Module
9 Click Next
10 Click Browse
11 Double click Apache Software Foundation
12 Double click Apache 2.2
13 Double click conf
14 Click OK
15 Click Next
16 Click Next
17 Click Install and wait
18 Cick Yes to allow the program to make changes
19 Click FinishTesting PHP with Apache
1 Open Notepad
2 Type ‘left bracket character’?php phpinfo(); ?’right bracket character’
3 Save the file to C:\Program Files (x86)\Apache Software Foundation\Apache2.2\htdocs as test.php
4 Type localhost/test.php in your browser location box (I use Chrome) or type h t t p : / / l o c a l h o s t / t e s t . p h p
5 A table with title PHP Version . should appear10 years ago
I am using Windows 8 x64, running Apache 2.2 and php 5.4.20
I found that it is necessary to add System Environment Variable PHPRC=[PHP path], so that php.ini is loaded using your PHP path, instead of C:\Windows.
This is how I do for my laptop
Go to Control Panel\System and Security\System\Advanced System Settings\Environment VariablesAdd New System Variable
Name: PHPRC
Value: C:\php-5.4.20Hope it relieve those who keep having empty string for Loaded Configuration File under phpinfo();
11 years ago
After spending few hours finally figured out that PHPINIDir path should be in single quotes and with backslash and php module with double quotes and regular slashes:
PHPIniDir ‘c:\apps\php\’
LoadModule php5_module «c:/apps/php/php5apache2_2.dll»
AddHandler application/x-httpd-php .php13 years ago
After using the Windows installer for Apache 2.2 and PHP 5.3.2, and installing PHP as an Apache module (not CGI), Apache would crash and fail to start. There were two problems with the configuration files for Apache and PHP.
First, make sure your Apache configuration file reads something similar to:
LoadModule php5_module «C:/Program Files/PHP/php5apache2_2.dll»
PHPIniDir «C:/Program Files/PHP/»While other users have disabled some or all of the MySQL extensions to prevent all three from running at the same time, I have all of them enabled. However, I do not have PostgreSQL, so I needed to comment out loading the php_pgsql.dll in my php.ini file, as follows:
This stopped Apache from crashing and started successfully.
7 years ago
If you are having issues getting the PHPIniDir or LoadModule directives to work and all the suggestions already given do not help, double-check if you are not using fancy quotes around your paths (‘ ’ “ ”).
This happened to me because I copied the statements from a random website. In my text editor the difference was barely noticeable, but to Apache it certainly is!
For example, this will not work:
PHPIniDir “C:/PHP7”But this will work:
PHPIniDir «C:/PHP7»8 years ago
If you come with an error like this: Wrapper xxxx cannot be accessed: blah blah blah when starting Apache.
You have 3 choices to solve this problem. Any one of them would work.
1. Install your applictions in paths that do not contains spaces.
2. Place a backslash before every space in the path set to Wrapper, like:
FctidWrapper «C:/Program\ Files/PHPServer/PHP/php-cgi.exe» .php
3. Use mklink (or junction for windows XP/2003) to create a link to the path you have installed php in.
run cmd.exe and type this command:
mklink /j C:\php\ «C:\Program Files\PHPServer\PHP».
or this command if you are on Windows XP/2003
junction C:\php\ «C:\Program Files\PHPServer\PHP»
Remember this : you have to download online to use this application. Don’t know where to download? Go and Google it.
Then the FctidWrapper directive should be like this:
FctidWrapper «C:/php/php-cgi.exe» .php
Don’t forget to change the paths above to your working paths.
8 years ago
Windows Apache 2.4.12 (x64) PHP 5.6.5 (x64)
If your Apache still outputs code instead of parsing a script. Make sure you put a trailing «\» at the end of the PHPIniDir value and use ONLY «\» in path to PHPIniDir. And «/» in LoadModule. A very subtle «feature» of Apache module. Lost several hours after upgrading to apache x64 to resolve the issue.9 years ago
****Installed and Working 1- Fell Swoop — UPDATED****
Installed on Windows 8.1 XPS 12 — Dell 8GB RAM 128GB SSD —
Notes — Complications due to Apache latest version causes issues with the PHP handler on install. Following below will get it run right off the bat.Getting and installing Apache
1 In your browser go to h t t p : / / h t t p d . a p a c h e . o r g / d o w n l o a d . c g i
(without the spaces) — You will need to go ‘Other Files’ , ‘Binaries’ , ‘W32’, and then your installer MSI will be listed as below.
2 Click on httpd-2.2.25-win32-x86-no_ssl.msi
(this is a self-installing executable file without crypto . no Secure Socket Layer)
(2.2.25was the latest version on June 4, 2014)
3 Click on the httpd-2.2.25-win32-x86-no_ssl.msi file after it downloads
(single click on the file tab in Chrome or double click on the actual file in Downloads)
4 Click Next
5 Click I accept the terms in the license agreement
6 Click Next
7 Click Next
8 Type localhost in the top box
9 Type localhost in the middle box
10 Type admin@localhost.com in the bottom box
11 Click Next
12 Click Next
13 Click Next
14 Click Install and wait
15 Cick Yes to allow the program to make changes
16 Click Finish1 Type localhost in your browser location box (I use Chrome) or type h t t p : / / l o c a l h o s t
(without the spaces)
2 The message It works! should appear.Getting and installing PHP
1 In your browser go to h t t p : / / w i n d o w s . p h p . n e t / d o w n l o a d /
(without the spaces)
2 Click on the Installer link under PHP 5.3 (5.3.10) VC9 x86 Thread Safe
(Ignore the Do NOT use VC9 version with apache.org binaries comment on the side panel)
3 Click on the php-5.3.10-Win32-VC9-x86.msi file after in downloads
(single click on the file tab in Chrome or double click on the actual file in Downloads)
4 Click Next
5 Click I accept the terms in the License Agreement
6 Click Next
7 Click Next
8 Click Apache 2.2.x Module
9 Click Next
10 Click Browse
11 Double click Apache Software Foundation
12 Double click Apache 2.2
13 Double click conf
14 Click OK
15 Click Next
16 Click Next
17 Click Install and wait
18 Cick Yes to allow the program to make changes
19 Click FinishTesting PHP with Apache
1 Open Notepad
2 Type ‘left bracket character’?php phpinfo(); ?’right bracket character’
3 Save the file to C:\Program Files (x86)\Apache Software Foundation\Apache2.2\htdocs as test.php
4 Type localhost/test.php in your browser location box (I use Chrome) or type h t t p : / / l o c a l h o s t / t e s t . p h p
5 A table with title PHP Version . should appearHow to setup Apache, PHP and MySQL on Windows 10

In this tutorial, you will learn about how you can setup Apache, PHP and MySQL server on Windows 10.
If you are planning to install Apache, MySQL and PHP on Windows 10, you have two options:
- you can download and install a free web development environment (WampServer, XAMPP)
- you can create your own environment by installing Apache, PHP and MySQL manually
For beginners I recommend the first option. For the second option you have to decide as to which version of each application will be installed. In this tutorial I am going to setup
- Apache 2.4.46
- PHP 7.4 (7.4.13RC1)
- MySQL 5.7.31
Download the installation packages:
Apache 2.4 setup on Windows 10
- Unzip the downloaded files to the C:\Apache24 directory if possible (this is the default ServerRoot directory in the Apache configuration file)
- You can unzip to another location, but remember the path, you will have to change the SRVROOT variable in the http.conf file later
- Install the Visual C++ Redistributable for Visual Studio 2015-2019 x64
- After unzipping and installing the Visual C++ Redistributable package go to the C:\Apache24\conf directory and open httpd.conf in any text editor
- If you unzipped the files to other location as C:\Apache24, change the path to your location in the line below:
Define SRVROOT "c:/Apache24"- Add a line right after #ServerName www.example.com:80 like this:
#ServerName www.example.com:80 ServerName localhost- You are ready to go. I recommend to change the following lines too:
- Change AllowOverride None to AllowOverride All to enable .htaccess files in your projects:
# # AllowOverride controls what directives may be placed in .htaccess files. # It can be "All", "None", or any combination of the keywords: # AllowOverride FileInfo AuthConfig Limit # AllowOverride None- Check if you the mod_rewrite module is enabled. Find the line
#LoadModule rewrite_module modules/mod_rewrite.soand remove the # from the beginning to enable the module:
LoadModule rewrite_module modules/mod_rewrite.so- To serve index.php file automatically if a directory is requested append index.php to the DirectoryIndex variable
DirectoryIndex index.html index.php To test the installation, open up the command prompt, go to C:\Apache24\bin and run Apache by typing httpd.exe:

If there is no error, open up a browser of your choice and go to http://localhost where you will see this page:

To run Apache automatically on startup, register it as a service. Open the Command Prompt as administrator (right click -> Run as administrator) and type in these lines:

Check Apache service in Services and click Start the service:

PHP 7.4 installation on Windows 10
- Unzip the downloaded package to C:\php74
- Go to the C:\php74 directory
- Rename php.ini-development to php.ini
- Add PHP 7.4 to system environment variable in Command Prompt:
C:>setx path "%PATH%, C:\php74" /M- Open the C:\Apache24\conf\httpd.conf apache configuration file again and add these lines to the end of the file:
PHPIniDir "C:/PHP74" AddHandler application/x-httpd-php .php LoadModule php7_module "C:/PHP74/php7apache2_4.dll"- Restart Apache 2.4 service in Services, or open the Command prompt and type
C:\>httpd -k restart- To test the installation, create a file named phpinfo.php in C:\Apache24\htdocs directory and copy these lines to the file:

- Open a browser of your choice and open http://localhost/phpinfo.php
MySQL 5.7 installation on Windows 10
- Download the installer
- Run the installer
- In the first step pick server-only and hit Next


- Download and install Microsoft Visual C++ 2013 Redistributable Package if you don’t have it already
- After installing Microsoft Visual C++ 2013 Redistributable Package click Next again
- If you downloaded the smaller package, click Execute in the third step and wait while the download ends
- Click Next, the next step is Product Configuration
- In the Product Configuration window click Next and pick the Standalone MySQL Server option in the first step
- Click Next
- In the Type and Networking step you can leave everything as it is (Config Type: Development Computer, Port: 3306), click Next again
- Set your MySQL Root Password and go to the next step
- Leave everything as it is in the next two steps (Next, then execute)
- The installation is done, click Finish
- Open Services and verify that the service named MySQL57 is running

- If you are not comfortable with the command line, you can download and install MySQL Workbench, or install phpmyAdmin to manage your databases through a graphical user interface
