WAMP Server: установка, настройка и сравнение с XAMPP — полный гайд

WAMP Server установка и настройка на Windows 10/11
Быстрый ответ
Скачай WAMP с официального сайта wampserver.com или XAMPP с apachefriends.org. Установи с правами администратора. Перед запуском освободи порт 80 — останови IIS или Skype. Запусти, проверь что иконка зелёная, открой localhost в браузере.

1. Диагноз: поставил, не работает

Поднял WAMP. Иконка оранжевая или красная. Apache не стартует. Localhost выдаёт ошибку 403 или вообще не открывается. Знакомо?

Или установил XAMPP, нажал Start у Apache — строчка мигнула и погасла. Control Panel пишет что-то про порты. MySQL тоже молчит.

Это решается за 15-30 минут. Нужны: Windows 10 или 11, права администратора, 10 минут терпения. На выходе получишь рабочий localhost с Apache, PHP и MySQL — всё что нужно для локальной разработки.

Что разберём в статье:

  • Установка WAMP и XAMPP по шагам
  • Почему не запускается и как чинить
  • Разбор 7 самых частых ошибок с командами
  • Сравнение WAMP vs XAMPP — когда что выбирать
  • 5 практических примеров из реальной работы
  • Установка WordPress на localhost
  • Безопасность и профилактика

Схема диагностики: с чего начать

%%{init: {
  'theme': 'base',
  'themeVariables': {
    'primaryColor': '#ffffff',
    'primaryTextColor': '#1e293b',
    'primaryBorderColor': '#94a3b8',
    'lineColor': '#64748b',
    'fontSize': '15px',
    'fontFamily': 'ui-sans-serif, system-ui, sans-serif'
  },
  'flowchart': {'curve': 'linear', 'nodeSpacing': 50, 'rankSpacing': 50}
}}%%
flowchart TD
    A["Иконка красная или оранжевая"] --> B{"Apache запустился?"}
    B -->|"Нет"| C["Проверь порт 80"]
    B -->|"Да"| D{"MySQL запустился?"}
    C --> E["netstat -ano | findstr :80"]
    E --> F{"Порт занят?"}
    F -->|"Да"| G["Останови IIS или другой сервис"]
    F -->|"Нет"| H["Проверь VC++ Redistributable"]
    G --> I["Перезапусти Apache"]
    H --> I
    D -->|"Нет"| J["Проверь порт 3306"]
    D -->|"Да"| K["Открой localhost в браузере"]
    J --> L["netstat -ano | findstr :3306"]
    K --> M{"Открылось?"}
    M -->|"403"| N["Проверь htdocs и конфиг Directory"]
    M -->|"Да"| O["Сервер работает"]
    style A fill:#f8fafc,stroke:#ef4444,stroke-width:2px,color:#991b1b
    style O fill:#f8fafc,stroke:#22c55e,stroke-width:2px,color:#15803d
    style G fill:#f8fafc,stroke:#f97316,stroke-width:2px,color:#9a3412
    style H fill:#f8fafc,stroke:#f97316,stroke-width:2px,color:#9a3412
    style N fill:#f8fafc,stroke:#f97316,stroke-width:2px,color:#9a3412

2. Причины — почему ломается сразу после установки

Перед тем как лезть в настройки, пойми откуда растут ноги. 90% проблем с WAMP и XAMPP — это одни и те же грабли.

Порт 80 занят

Самая частая причина. Apache хочет слушать порт 80, но там уже сидит IIS (встроенный веб-сервер Windows), Skype, nginx или ещё какой-нибудь сервис. Apache пытается занять порт, получает отказ, падает. Иконка WAMP становится оранжевой — Apache не запустился, MySQL запустился.

Не установлен Visual C++ Redistributable

WAMP особенно капризен на этот счёт. Если не хватает нужной версии VC++ Runtime — Apache или PHP просто не запустятся. Никакого внятного сообщения об ошибке при этом не будет. Просто ничего не работает.

Порт 3306 занят

MySQL не стартует если порт уже занят другим экземпляром MySQL или MariaDB. Особенно актуально если до этого что-то уже ставил и не почистил.

Антивирус блокирует Apache

Windows Defender или сторонний антивирус может блокировать httpd.exe при первом запуске. Apache пробует запуститься, антивирус хватает процесс за горло, Apache падает. В логах — тишина.

Неправильный путь установки

WAMP нельзя ставить в путь с пробелами или кириллицей. «C:\Program Files\wamp» — уже проблема. «C:\Users\Андрей\wamp» — вообще беда. Только C:\wamp или D:\wamp.

Конфликт PHP и расширений

Если вручную копировал dll-файлы или менял php.ini до запуска — PHP может не подняться. Apache стартует, PHP падает, сайты не работают.

3. Установка WAMP Server

3.1 Системные требования

Компонент Минимум Рекомендуется
ОС Windows 7 x64 Windows 10/11 x64
RAM 512 МБ 2 ГБ и больше
Диск 500 МБ 2 ГБ (под проекты)
VC++ Runtime x64 2012-2022 Все версии x64
Права Администратор Администратор

На момент публикации актуальна версия WampServer 3.3.x с Apache 2.4, PHP 8.2/8.1/7.4, MariaDB 10.11. Перед установкой проверь свежие релизы на wampserver.com.

3.2 Подготовка: Visual C++ Redistributable

Без этого шага WAMP не запустится. Скачай и установи все версии VC++ Redistributable x64 с сайта Microsoft — от 2012 до 2022. WAMP требует именно x64, даже если у тебя 32-битное приложение.

Ссылка для скачивания всех версий сразу: Microsoft Visual C++ Redistributable Downloads.

Проверь VC++ перед установкой WAMP
Если пропустишь установку VC++ Runtime — WAMP установится, но Apache не запустится. Никакой явной ошибки при этом не увидишь. Это самый частый вопрос на форумах: «Установил WAMP, иконка красная, что делать?» — ответ в 60% случаев именно здесь.

3.3 Скачивание и установка WAMP

Скачай актуальную версию с официального сайта wampserver.com. Берёшь версию x64. Файл весит около 300-400 МБ.

Запусти установщик от имени администратора. Правая кнопка мыши по файлу — «Запуск от имени администратора».

Выбери путь установки. Только латиница, только без пробелов:


C:\wamp64

Установщик спросит про браузер по умолчанию и текстовый редактор. Можешь оставить что предлагает или выбрать своё. На работу сервера не влияет.

После установки запусти WAMP через иконку на рабочем столе или из меню Пуск. Запускай от имени администратора.

Смотри на иконку в системном трее (правый нижний угол):

  • Красная — ничего не запустилось
  • Оранжевая — что-то запустилось, что-то нет (обычно Apache упал)
  • Зелёная — всё работает, можно открывать localhost

3.4 Установка XAMPP

Скачай XAMPP с официального сайта apachefriends.org. Выбери версию с нужным PHP. Файл весит 150-160 МБ.

Запусти установщик от администратора. Выбери компоненты — для базовой работы достаточно Apache, MySQL, PHP и phpMyAdmin. FileZilla и Mercury обычно не нужны.

Путь установки — без пробелов и кириллицы:


C:\xampp

После установки запусти XAMPP Control Panel. Нажми Start у Apache и MySQL. Если всё хорошо — строки подсветятся зелёным, в логах появятся сообщения о запуске.

Антивирус и брандмауэр при первом запуске
При первом запуске Apache Windows Firewall спросит разрешения для httpd.exe. Разреши доступ в частных сетях. Если пропустить или нажать Отмена — Apache будет работать, но могут быть проблемы с доступом с других устройств в локальной сети.

3.5 Архитектура: как работает стек

%%{init: {
  'theme': 'base',
  'themeVariables': {
    'primaryColor': '#ffffff',
    'primaryTextColor': '#1e293b',
    'primaryBorderColor': '#94a3b8',
    'lineColor': '#64748b',
    'fontSize': '15px',
    'fontFamily': 'ui-sans-serif, system-ui, sans-serif'
  },
  'flowchart': {'curve': 'linear', 'nodeSpacing': 50, 'rankSpacing': 50}
}}%%
flowchart TD
    A["Браузер (Chrome, Firefox)"] --> B["Apache httpd (порт 80/443)"]
    B --> C["PHP-CGI / PHP модуль"]
    C --> D["Твой PHP-скрипт"]
    D --> E["MySQL / MariaDB (порт 3306)"]
    B --> F["Статические файлы (HTML, CSS, JS)"]
    style A fill:#f8fafc,stroke:#3b82f6,stroke-width:2px,color:#1e40af
    style B fill:#f8fafc,stroke:#f97316,stroke-width:2px,color:#9a3412
    style C fill:#f8fafc,stroke:#8b5cf6,stroke-width:2px,color:#5b21b6
    style D fill:#f8fafc,stroke:#64748b,stroke-width:2px,color:#1e293b
    style E fill:#f8fafc,stroke:#22c55e,stroke-width:2px,color:#15803d
    style F fill:#f8fafc,stroke:#64748b,stroke-width:2px,color:#1e293b

Браузер отправляет запрос на localhost. Apache получает запрос на порту 80. Если запрошен PHP-файл — передаёт его PHP-модулю. PHP выполняет скрипт, при необходимости обращается к MySQL на порту 3306. Результат идёт обратно через Apache в браузер.

3.6 Таблица портов

Сервис Порт по умолчанию Протокол Альтернативный порт
Apache HTTP 80 TCP 8080, 8888
Apache HTTPS 443 TCP 8443
MySQL / MariaDB 3306 TCP 3307
phpMyAdmin 80 (через Apache) HTTP

4. Проверка работы

4.1 Открой localhost

Открой браузер и перейди по адресу:


http://localhost

WAMP покажет страницу с информацией о сервере. XAMPP — свою приветственную страницу. Если открылось — Apache работает.

4.2 Проверь phpMyAdmin


http://localhost/phpmyadmin

Если открылась страница входа — MySQL и phpMyAdmin работают. По умолчанию логин root, пароль пустой.

4.3 Проверь PHP через phpinfo()

Создай файл test.php в папке проектов. Для WAMP это C:\wamp64\www\, для XAMPP это C:\xampp\htdocs\.


<?php
phpinfo();
?>

Открой в браузере:


http://localhost/test.php

Должна появиться страница с подробной информацией о версии PHP, подключённых модулях и настройках. Видишь эту страницу — PHP работает.

4.4 Проверь порты через командную строку

Открой командную строку от администратора и выполни:


netstat -ano | findstr ":80 "

Должен увидеть строки с состоянием LISTENING на порту 80. Это Apache слушает входящие подключения.


netstat -ano | findstr ":3306"

Аналогично для MySQL — строки LISTENING на порту 3306.

5. Практические примеры из жизни

Пример 1: Освобождение порта 80

Apache не запускается. Открываем командную строку от администратора и смотрим кто занял порт:


netstat -ano | findstr ":80 "

Получишь что-то вроде:


TCP    0.0.0.0:80    0.0.0.0:0    LISTENING    4
TCP    0.0.0.0:80    0.0.0.0:0    LISTENING    1234

Число в конце — PID процесса. Узнаём что это за процесс:


tasklist | findstr "1234"

Если это IIS — останови его:


net stop w3svc

Если это не нужный сервис — убей процесс:


taskkill /PID 1234 /F

После этого запускай Apache снова.

IIS и WAMP/XAMPP - не дружат
IIS (Internet Information Services) — встроенный веб-сервер Windows. Он запускается автоматически на некоторых версиях Windows. Если нужен WAMP или XAMPP — IIS лучше отключить совсем. Через «Включение или отключение компонентов Windows» убери галку с «Службы IIS».

Пример 2: Смена версии PHP в WAMP

WAMP поставляется с несколькими версиями PHP. Переключаться между ними легко прямо из интерфейса.

Кликни левой кнопкой на иконку WAMP в трее. Найди раздел «PHP» — там будет подменю со списком установленных версий. Выбери нужную версию.

WAMP автоматически перезапустит Apache с выбранной версией PHP. Проверь через phpinfo() что версия переключилась.

Если нужно добавить версию PHP которой нет в стандартной поставке — скачай Add-on с официального сайта WAMP. Это отдельные установщики для конкретных версий PHP.

Пример 3: Создание виртуального хоста

Вместо localhost/myproject удобнее работать с myproject.local. Для этого нужен виртуальный хост.

Шаг 1. Открой файл hosts от имени администратора. Он находится по пути:


C:\Windows\System32\drivers\etc\hosts

Добавь строку в конец файла:


127.0.0.1    myproject.local

Шаг 2. Для XAMPP открой файл конфигурации виртуальных хостов:


C:\xampp\apache\conf\extra\httpd-vhosts.conf

Добавь блок виртуального хоста:


<VirtualHost *:80>
    DocumentRoot "C:/xampp/htdocs/myproject"
    ServerName myproject.local
    <Directory "C:/xampp/htdocs/myproject">
        Options Indexes FollowSymLinks Includes ExecCGI
        AllowOverride All
        Require all granted
    </Directory>
</VirtualHost>

Шаг 3. Убедись что в httpd.conf раскомментирована строка подключения vhosts:


Include conf/extra/httpd-vhosts.conf

Шаг 4. Перезапусти Apache. Открой myproject.local в браузере.

Для WAMP процесс аналогичный, но файлы конфигурации лежат в C:\wamp64\bin\apache\apache2.4.x\conf\.

Пример 4: Создание базы данных и подключение из PHP

Открой phpMyAdmin по адресу http://localhost/phpmyadmin. Войди под root с пустым паролем.

Создай новую базу данных. Нажми «Создать БД», введи имя (например, mydb), выбери сортировку utf8mb4_unicode_ci.

Создай пользователя для этой базы. Зайди в «Привилегии» — «Добавить пользователя». Заполни имя, хост (localhost), пароль. Дай все права на базу mydb.

Подключение из PHP:


<?php
$host = 'localhost';
$dbname = 'mydb';
$user = 'myuser';
$password = 'mypassword';

try {
    $pdo = new PDO("mysql:host=$host;dbname=$dbname;charset=utf8mb4", $user, $password);
    $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
    echo "Подключение успешно";
} catch (PDOException $e) {
    echo "Ошибка: " . $e->getMessage();
}
?>

Пример 5: Запуск phpinfo() и диагностика конфигурации

phpinfo() — это рентген твоего PHP. Смотри на что обращать внимание:

  • PHP Version — версия PHP
  • Loaded Configuration File — путь к активному php.ini
  • extension_dir — директория расширений PHP
  • Секция mysql или mysqli — если нет, модуль не подключён
  • display_errors — должно быть On на локальной разработке
  • max_execution_time, memory_limit, upload_max_filesize — часто нужно менять под задачу

Путь к php.ini берёшь из «Loaded Configuration File». Открываешь этот файл, правишь нужные параметры, перезапускаешь Apache.

6. Осложнения: разбор ошибок

Вот тут начинается самое интересное. Сервер установлен, но что-то идёт не так. Разбираем по симптомам.

Как читать логи — это первое что нужно уметь

Перед тем как гуглить ошибку — открой лог. Там написано всё. Прямым текстом. На английском, но понятно.

Логи Apache в XAMPP:


C:\xampp\apache\logs\error.log
C:\xampp\apache\logs\access.log

Логи MySQL в XAMPP:


C:\xampp\mysql\data\имя_компьютера.err

Логи WAMP доступны из трея: левый клик по иконке — Apache — Apache error log.

Смотришь последние строки в логе:


powershell -command "Get-Content C:\xampp\apache\logs\error.log -Tail 30"

Ищи строки с [error] или [crit]. Там написано что именно сломалось и почему.

Ошибка: Apache не запускается, иконка красная или оранжевая

Причина в 80% случаев — порт 80 занят. Проверяй так:


netstat -ano | findstr ":80 "

Нашёл чужой процесс — смотри PID, останови сервис. Самые частые виновники: IIS, Skype (старые версии используют порт 80), nginx, другой Apache.

Останови IIS полностью:


net stop w3svc
net stop was

Если хочешь чтобы IIS не запускался автоматически:


sc config w3svc start= disabled
sc config was start= disabled

После этого запусти Apache снова.

Второй вариант — изменить порт Apache на 8080 чтобы не конфликтовать с IIS. В httpd.conf найди строку:


Listen 80

Измени на:


Listen 8080

Тогда localhost перестанет работать, но http://localhost:8080 будет открываться. Это менее удобно, но решает конфликт если IIS нужен параллельно.

Ошибка: Apache стартует на секунду и падает

Смотри лог Apache. В XAMPP это C:\xampp\apache\logs\error.log. В WAMP это C:\wamp64\logs\apache_error.log.


type C:\xampp\apache\logs\error.log

Ищи строки с «Error» или «Fatal». Часто там написано прямым текстом: «no listening sockets available» означает порт занят, «Invalid Mutex» означает проблему с правами на директорию.

Если в логе видишь «AH00526: Syntax error on line N of httpd.conf» — ты сломал конфиг. Открой httpd.conf и проверь строку N на опечатки, непарные кавычки или скобки.

Быстрая проверка синтаксиса конфига Apache:


C:\xampp\apache\bin\httpd.exe -t

Если конфиг правильный — напишет «Syntax OK». Если нет — покажет где ошибка.

Ошибка: MySQL не запускается

Проверяем порт 3306:


netstat -ano | findstr ":3306"

Если порт занят другим процессом MySQL — возможно, уже есть установленный MySQL как системный сервис. Останови его:


net stop mysql

Или найди через диспетчер задач службу MySQL и останови её.

Смотри лог MySQL. В XAMPP это C:\xampp\mysql\data\имя_компьютера.err. Там будет подробно написано почему не стартует.

Одна из частых причин — повреждённый файл mysql.pid или ib_logfile. Это случается если MySQL был жёстко завершён. В логе будет что-то про «InnoDB: Error: log file».

Осторожно с файлами InnoDB
Никогда не удаляй файлы ib_logfile0, ib_logfile1 и ibdata1 пока не убедился что понимаешь что делаешь. Это файлы данных InnoDB. Удалишь — потеряешь все данные в таблицах InnoDB. Сделай бэкап через mysqldump перед любыми манипуляциями с этими файлами.

Если MySQL не запускается после сбоя питания или жёсткого выключения компьютера — попробуй такой порядок действий:

  1. Сделай копию папки C:\xampp\mysql\data\ на всякий случай
  2. Удали файл C:\xampp\mysql\data\mysql.pid если он существует
  3. Попробуй запустить MySQL снова
  4. Если не помогло — смотри лог, там будет конкретная причина

Ошибка: localhost открывается, но показывает 403 Forbidden

403 — это Apache запустился, но нет прав на чтение директории или нет индексного файла.

Проверь содержимое директории www (WAMP) или htdocs (XAMPP). Там должен быть хотя бы index.php или index.html. Если папка пустая — Apache выдаёт 403 когда листинг директорий отключён.

Проверь httpd.conf — ищи блок Directory для корневой папки:


<Directory "C:/xampp/htdocs">
    Options Indexes FollowSymLinks Includes ExecCGI
    AllowOverride All
    Require all granted
</Directory>

Строка «Require all granted» должна быть именно такой. Если там «Require all denied» — Apache намеренно запрещает доступ.

Если 403 появляется на конкретном проекте а не на localhost вообще — проверь .htaccess в папке проекта. Возможно там есть директива deny или неправильно настроены правила mod_rewrite.

Ошибка: PHP не работает, браузер скачивает .php файл

Браузер скачивает PHP-файл вместо его выполнения — PHP-модуль не подключён к Apache.

В XAMPP открой httpd.conf и найди строку:


LoadModule php_module "C:/xampp/php/php8apache2_4.dll"

Если строка закомментирована (начинается с #) — убери #. Если строки нет совсем — версия PHP несовместима с Apache, нужно переустановить XAMPP.

Также проверь что в httpd.conf есть строки для обработки PHP-файлов:


AddType application/x-httpd-php .php

Ошибка: phpMyAdmin не открывается или пишет «Access denied»

Access denied при входе в phpMyAdmin — неправильный пароль или конфигурация.

Найди файл конфигурации phpMyAdmin:


C:\xampp\phpMyAdmin\config.inc.php

Проверь строку:


$cfg['Servers'][$i]['password'] = '';

Если у root пустой пароль — должна быть пустая строка. Если ты уже менял пароль root в MySQL — укажи его здесь.

Если phpMyAdmin вообще не открывается и выдаёт 404 — проверь что папка phpmyadmin существует по пути C:\xampp\phpMyAdmin\ и что в httpd.conf есть Alias для phpMyAdmin. В XAMPP это обычно в файле C:\xampp\apache\conf\extra\httpd-xampp.conf:


Alias /phpmyadmin "C:/xampp/phpMyAdmin/"

Ошибка: WordPress или другой движок выдаёт «500 Internal Server Error»

500 ошибка означает что PHP скрипт упал с фатальной ошибкой. Первым делом смотри лог Apache — там будет написано что именно упало.

Вторая частая причина — .htaccess с директивами которые Apache не понимает. Переименуй .htaccess в .htaccess.bak и обнови страницу. Если 500 пропала — дело в .htaccess.

Для WordPress частая причина — отключён mod_rewrite. Убедись что в httpd.conf строка LoadModule rewrite_module не закомментирована и что для директории htdocs установлен AllowOverride All.

7. Сравнение WAMP vs XAMPP

Это отдельный вопрос который гуглят постоянно. Отвечу без воды.

Параметр WAMP XAMPP
Платформа Только Windows Windows, Linux, macOS
База данных MariaDB (последние версии) MariaDB
Переключение PHP Из трея, очень удобно Вручную через конфиги
Несколько PHP Да, встроено Требует ручной настройки
Дополнительные сервисы Только Apache+PHP+MySQL FTP, Mercury Mail, Tomcat
Интерфейс управления Иконка в трее Control Panel
Размер установки ~300 МБ ~160 МБ
Требования VC++ Нужно ставить вручную Встроено в установщик
Установка плагинов Add-on через сайт Ручная установка
SSL из коробки Да Да
Для новичков Чуть сложнее старт Проще начать
Поддержка Форум wampserver.com Активное сообщество

Если работаешь только на Windows и тебе нужно часто переключаться между версиями PHP — бери WAMP. Это его главное преимущество. Из трея выбрал PHP 7.4 — Apache перезапустился с нужной версией. Удобно когда ведёшь несколько проектов под разные версии PHP.

Если начинаешь с нуля, нужно что попроще или работаешь на разных ОС — бери XAMPP. Установка без геморроя с VC++, Control Panel понятна с первого взгляда, сообщество больше.

Альтернативы: когда WAMP и XAMPP не подходят

OpenServer Panel — российский проект, ospanel.io. Интерфейс на русском, много версий PHP, встроенные менеджеры доменов. Хорошая альтернатива если WAMP кажется сложным.

Laragonlaragon.org. Лёгкий, быстро стартует, хорошо работает с Laravel. Если пишешь на Laravel — смотри в эту сторону.

Docker — когда нужна среда максимально близкая к продакшну. Поднимаешь docker-compose с нужными версиями PHP, MySQL, nginx — и работаешь в контейнере. Настройка занимает больше времени, зато конфиг можно положить в репозиторий и у всей команды будет одинаковая среда. Это отдельная тема на отдельную статью. Одна строка в crontab без комментария убивает весь отдел — одна строка в docker-compose без документации работает ровно до следующего разработчика.

8. Безопасность локального сервера

Да, это localhost. Да, это только для разработки. Но привычки формируются на локалке и переносятся в продакшн.

Ограничь доступ к phpMyAdmin

По умолчанию phpMyAdmin доступен только с localhost — это хорошо. Убедись что так и есть. В конфиге phpMyAdmin:


$cfg['Servers'][$i]['host'] = '127.0.0.1';

Никогда не открывай phpMyAdmin на внешний интерфейс если работаешь не только на локальной машине.

Поставь пароль на root в MySQL

По умолчанию root без пароля — это норма для локальной разработки. Но если твоя машина в корпоративной сети — поставь пароль.

Открой phpMyAdmin, зайди под root. Перейди в «Привилегии» — «root» — «Изменить привилегии». Установи пароль.

После этого обнови конфиг phpMyAdmin и все конфиги своих приложений где прописан пустой пароль.

Не открывай Apache на все интерфейсы

По умолчанию Apache слушает на 0.0.0.0:80 — это значит на всех сетевых интерфейсах. Если ты в офисной сети — коллеги могут зайти на твой localhost.

Если это нежелательно — в httpd.conf замени:


Listen 80

на:


Listen 127.0.0.1:80

После этого сервер будет доступен только с твоей машины.

Брандмауэр Windows

Убедись что в правилах брандмауэра Apache (httpd.exe) разрешён только для частных сетей, не для публичных. Проверь через «Брандмауэр Windows» — «Дополнительные параметры» — «Правила для входящих подключений». Найди правило для httpd.exe и проверь галки.

8.5 Дополнительные настройки Apache и PHP

Настройка php.ini для разработки

Дефолтный php.ini в WAMP и XAMPP заточен под продакшн — ошибки скрыты, лимиты маленькие. Для локальной разработки нужно другое.

Найди путь к активному php.ini через phpinfo() — смотри строку «Loaded Configuration File». Открой этот файл в текстовом редакторе от имени администратора.

Включи отображение ошибок. Найди и измени эти строки:


display_errors = On
display_startup_errors = On
error_reporting = E_ALL
log_errors = On

Увеличь лимиты для работы с большими файлами и скриптами:


max_execution_time = 300
max_input_time = 300
memory_limit = 512M
post_max_size = 128M
upload_max_filesize = 128M

Для работы с базами данных убедись что включены нужные расширения. Найди строки и убери # в начале:


extension=mysqli
extension=pdo_mysql
extension=mbstring
extension=curl
extension=gd
extension=zip

После изменений в php.ini — обязательно перезапусти Apache. Изменения не применятся пока Apache работает со старой конфигурацией.

Настройка httpd.conf — основные параметры

httpd.conf — главный конфиг Apache. В XAMPP лежит по пути C:\xampp\apache\conf\httpd.conf. В WAMP — C:\wamp64\bin\apache\apache2.4.x\conf\httpd.conf.

Важные параметры которые часто нужно менять:

Корневая директория сервера:


DocumentRoot "C:/xampp/htdocs"

Если хочешь хранить проекты в другом месте — меняй здесь.

Разрешение .htaccess файлов (нужно для WordPress, Laravel и большинства фреймворков):


<Directory "C:/xampp/htdocs">
    AllowOverride All
</Directory>

AllowOverride None отключает .htaccess полностью — тогда перенаправления и красивые URL не работают. AllowOverride All разрешает все директивы в .htaccess.

Включение модуля mod_rewrite (нужен для большинства PHP-фреймворков):


LoadModule rewrite_module modules/mod_rewrite.so

Убедись что строка не закомментирована. После изменений — перезапусти Apache.

Настройка MySQL через my.ini

Конфиг MySQL в XAMPP: C:\xampp\mysql\bin\my.ini. В WAMP: C:\wamp64\bin\mysql\mysql8.1.0\my.ini.

Параметры которые часто нужно трогать:


[mysqld]
max_allowed_packet = 64M
innodb_buffer_pool_size = 256M
max_connections = 100
character-set-server = utf8mb4
collation-server = utf8mb4_unicode_ci

max_allowed_packet влияет на максимальный размер запроса к базе. Если импортируешь большой дамп базы и получаешь ошибку «Packet too large» — увеличь это значение.

innodb_buffer_pool_size — сколько RAM выделить MySQL под кэш. На машинах с 8 ГБ RAM можно поставить 1G. На 4 ГБ — 256M-512M.

SSL на localhost — настройка HTTPS

Некоторые приложения требуют HTTPS даже на локалке. Особенно актуально если тестируешь Service Workers, cookies с флагом Secure или Progressive Web Apps.

В XAMPP SSL поддерживается из коробки. Есть готовый самоподписанный сертификат. Включи SSL в httpd.conf:


Include conf/extra/httpd-ssl.conf

И раскомментируй загрузку модуля SSL:


LoadModule ssl_module modules/mod_ssl.so

После этого https://localhost будет работать, но браузер покажет предупреждение о недоверенном сертификате — это нормально для самоподписанного сертификата.

Чтобы убрать предупреждение в Chrome — добавь сертификат в доверенные. Файл сертификата: C:\xampp\apache\conf\ssl.crt\server.crt. Открой его двойным кликом, нажми «Установить сертификат», выбери «Локальный компьютер» — «Доверенные корневые центры сертификации».

9. Резервное копирование

Это про данные. Без шуток.

Что бэкапить

  • Папка с проектами: C:\wamp64\www\ или C:\xampp\htdocs\
  • Базы данных MySQL
  • Файлы конфигурации: php.ini, httpd.conf, my.ini
  • Конфиги виртуальных хостов

Бэкап баз данных через mysqldump

Открой командную строку и выполни:


C:\xampp\mysql\bin\mysqldump.exe -u root -p mydb > C:\backup\mydb_backup.sql

Для WAMP путь к mysqldump будет другим:


C:\wamp64\bin\mysql\mysql8.1.0\bin\mysqldump.exe -u root -p mydb > C:\backup\mydb_backup.sql

Для автоматического бэкапа всех баз — добавь в планировщик задач Windows скрипт который запускает mysqldump для каждой базы.

Восстановление базы из бэкапа


C:\xampp\mysql\bin\mysql.exe -u root -p mydb < C:\backup\mydb_backup.sql

10. Профилактика: как не сломать снова

Несколько правил которые избавят от большинства проблем.

  • Не устанавливай IIS параллельно с WAMP или XAMPP. Либо одно, либо другое.
  • Фиксируй версии PHP в конфигах проектов. Если проект работает на PHP 8.1 - запиши это в README.
  • Перед обновлением WAMP или XAMPP - сделай бэкап баз данных и конфигов.
  • Не правь файлы в C:\wamp64\bin\ или C:\xampp\ напрямую без понимания что делаешь. Обновление перезапишет твои изменения.
  • Логи Apache и MySQL читай регулярно. Там видно предупреждения до того как что-то сломается.
  • Делай бэкап баз данных перед каждым серьёзным изменением схемы.

Мониторинг: смотри что происходит

Логи Apache в XAMPP: C:\xampp\apache\logs\error.log

Логи MySQL в XAMPP: C:\xampp\mysql\data\имя_компьютера.err


type C:\xampp\apache\logs\error.log | more

Для WAMP логи доступны прямо из меню иконки в трее - "Apache" - "Apache error log".

Обновление

Перед обновлением WAMP или XAMPP:

  1. Сделай бэкап всех баз данных через mysqldump
  2. Скопируй папку с проектами
  3. Запиши текущие версии PHP, Apache, MySQL
  4. Сохрани php.ini и httpd.conf

После обновления:

  1. Проверь что Apache и MySQL запустились
  2. Проверь версии через phpinfo()
  3. Проверь что все проекты работают
  4. Восстанови кастомные настройки из сохранённых конфигов

Если что-то сломалось после обновления - не паникуй. Установщик старой версии обычно доступен на сайте. Удали новую версию, установи старую, восстанови бэкап баз данных.

11. FAQ

Почему иконка WAMP не зелёная после установки?

Оранжевая иконка означает что запустился только один из сервисов - обычно MySQL, а Apache упал. Красная - не запустился никто.

Первым делом проверяй порт 80. Откры командную строку от администратора:


netstat -ano | findstr ":80 "

Если порт занят - останови чужой сервис. Потом проверь что установлены все версии Visual C++ Redistributable x64. Скачай их с сайта Microsoft и установи. После этого перезапусти WAMP.

Как сменить версию PHP в WAMP?

Кликни левой кнопкой по зелёной иконке WAMP в системном трее. В меню найди раздел "PHP" или "PHP version". Там список всех установленных версий - выбери нужную. WAMP автоматически перезапустит Apache с новой версией PHP.

Если нужной версии нет в списке - скачай Add-on с сайта wampserver.com. Там есть отдельные установщики для PHP 7.4, 8.0, 8.1, 8.2 и других версий.

Что лучше - WAMP или XAMPP?

Зависит от задачи. WAMP удобнее когда нужно часто переключаться между версиями PHP - это делается в два клика без редактирования конфигов. XAMPP проще при первой установке - не нужно отдельно устанавливать Visual C++, установщик всё включает. XAMPP также работает на Linux и macOS - важно если команда работает на разных ОС. Для новичка - XAMPP. Для работы с несколькими PHP-версиями - WAMP.

Как проверить что PHP работает правильно?

Создай файл phpinfo.php в папке проектов с содержимым и открой его по адресу http://localhost/phpinfo.php. Если видишь большую страницу с информацией о PHP - всё работает. Если браузер скачивает файл или показывает текст PHP-кода - PHP не подключён к Apache, нужно проверить конфигурацию.

Что делать если localhost показывает 403 Forbidden?

403 означает что Apache запустился, но нет прав на доступ к директории. Проверь что в папке www (WAMP) или htdocs (XAMPP) есть хотя бы один файл index.php или index.html. Также проверь httpd.conf - блок Directory для корневой папки должен содержать строку "Require all granted". Ещё одна причина - .htaccess файл в папке проекта с неправильными директивами.

MySQL запускается но phpMyAdmin не открывается?

Проверь что Apache тоже запущен - phpMyAdmin работает через Apache, не напрямую. Если Apache запущен - открой http://localhost/phpmyadmin (не https). Проверь что папка phpmyadmin существует в корневой директории проектов. В XAMPP это C:\xampp\phpMyAdmin\ - она должна быть доступна как C:\xampp\htdocs\phpmyadmin\ или через Alias в конфигурации Apache.

12. Итог

Бонус: установка WordPress на localhost за 10 минут

Раз уж всё работает - покажу как поднять WordPress локально. Это стандартная задача для всех кто разрабатывает или тестирует сайты на WordPress.

Шаг 1. Скачай свежую версию WordPress с официального сайта wordpress.org. Распакуй архив в папку проектов.

Для XAMPP распакуй в C:\xampp\htdocs\wordpress\. Для WAMP - в C:\wamp64\www\wordpress\.

Шаг 2. Создай базу данных для WordPress. Открой phpMyAdmin по адресу http://localhost/phpmyadmin. Нажми "Создать базу данных". Введи имя wordpress, выбери кодировку utf8mb4_unicode_ci. Нажми "Создать".

Шаг 3. Открой в браузере http://localhost/wordpress. WordPress запустит мастер установки. Укажи данные базы данных:


Database Name: wordpress
Username: root
Password: (пустое поле)
Database Host: localhost
Table Prefix: wp_

Шаг 4. WordPress проверит подключение и предложит создать wp-config.php автоматически или скопировать текст вручную. Если автоматически не получается - скопируй предложенный текст, создай файл wp-config.php в папке wordpress вручную и вставь туда.

Шаг 5. Нажми "Установить WordPress". Заполни название сайта, имя пользователя администратора, пароль и email. Нажми "Установить WordPress".

Всё. WordPress установлен. Панель управления доступна по адресу http://localhost/wordpress/wp-admin.

Если получаешь ошибку "Error establishing a database connection" - проверь что MySQL запущен и что данные в wp-config.php правильные.

13. Работа с несколькими проектами: организация рабочего пространства

Один проект в htdocs - это просто. Но когда проектов пять, десять, двадцать - нужна система. Иначе через месяц не вспомнишь что где лежит.

Структура папок

Стандартная практика - каждый проект в отдельной папке внутри htdocs или www:


C:\xampp\htdocs\
    project1\
        index.php
        .htaccess
    project2\
        public\
            index.php
        src\
    wordpress-site\
        wp-config.php
        wp-content\

Доступ: http://localhost/project1/, http://localhost/project2/. Просто и без лишних настроек.

Для серьёзной разработки удобнее виртуальные хосты - тогда project1.local и project2.local работают как отдельные сайты. Инструкцию по настройке смотри выше в разделе "Пример 3: Создание виртуального хоста.

Разные версии PHP для разных проектов в WAMP

WAMP поддерживает переключение PHP на уровне виртуального хоста. Это значит что project1 может работать на PHP 8.2, а project2 - на PHP 7.4. Без переустановки сервера.

Для этого в конфиге виртуального хоста добавь директиву PHPVersion:


<VirtualHost *:80>
    DocumentRoot "C:/wamp64/www/project1"
    ServerName project1.local
    php_admin_value extension_dir "C:/wamp64/bin/php/php8.2.12/ext/"
    php_admin_value extension "C:/wamp64/bin/php/php8.2.12/php8apache2_4.dll"
</VirtualHost>

В WAMP это делается через меню в трее: левый клик по иконке - Apache - httpd-vhosts.conf - выбрать виртуальный хост - PHP version.

Composer на localhost

Если работаешь с современным PHP-кодом - рано или поздно понадобится Composer. Скачай установщик с getcomposer.org.

При установке Composer укажи путь к PHP. Для XAMPP это:


C:\xampp\php\php.exe

Для WAMP путь зависит от версии PHP:


C:\wamp64\bin\php\php8.2.12\php.exe

После установки проверь что Composer работает:


composer --version

Если выдаёт версию - всё хорошо. Если "команда не найдена" - Composer не добавился в PATH. Добавь C:\ProgramData\ComposerSetup\bin\ в переменную PATH через "Свойства системы" - "Переменные среды".

14. Автозапуск и запуск как служба Windows

По умолчанию WAMP и XAMPP не запускаются автоматически при загрузке Windows. Каждый раз нужно запускать вручную. Это нормально если сервер нужен иногда. Если работаешь с ним постоянно - настрой автозапуск.

Автозапуск XAMPP

В XAMPP Control Panel есть галочки "Svc" напротив каждого сервиса. Поставь галку у Apache и MySQL - они установятся как службы Windows и будут запускаться автоматически.

Нажимать нужно с правами администратора. Если не получается - запусти XAMPP Control Panel от администратора.

Проверь что службы установлены:


sc query apache2.4
sc query mysql

Должны показать STATE: RUNNING.

Чтобы убрать автозапуск - убери галки Svc в XAMPP Control Panel.

Автозапуск WAMP

WAMP можно добавить в автозагрузку Windows через ярлык в папке автозагрузки:


C:\Users\ИмяПользователя\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup

Скопируй туда ярлык wampmanager.exe. При следующей загрузке Windows WAMP запустится автоматически.

Или через реестр - но это уже лишнее для большинства случаев.

Запуск Apache и MySQL как отдельных служб Windows

Если нужен полный контроль без WAMP/XAMPP Control Panel - Apache и MySQL можно установить как системные службы напрямую.

Установка Apache как службы (из командной строки администратора):


C:\xampp\apache\bin\httpd.exe -k install -n "Apache2.4"

Запуск и остановка через командную строку:


net start Apache2.4
net stop Apache2.4

Установка MySQL как службы:


C:\xampp\mysql\bin\mysqld.exe --install MySQL --defaults-file="C:\xampp\mysql\bin\my.ini"

Запуск и остановка:


net start MySQL
net stop MySQL

После установки как служб они появятся в "Службы Windows" (services.msc) и будут запускаться автоматически согласно настройкам типа запуска.

15. Диагностика производительности: когда всё работает, но медленно

Иногда локальный сервер работает, но медленно. Страницы грузятся долго, запросы к базе тормозят. Это тоже лечится.

PHP OPcache - ускорение PHP без усилий

OPcache кэширует скомпилированный PHP-код в памяти. Страницы загружаются быстрее потому что PHP не компилирует каждый файл заново при каждом запросе.

Включи OPcache в php.ini:


[opcache]
zend_extension=opcache
opcache.enable=1
opcache.memory_consumption=128
opcache.interned_strings_buffer=8
opcache.max_accelerated_files=4000
opcache.revalidate_freq=60
opcache.fast_shutdown=1
opcache.enable_cli=1

Перезапусти Apache. Проверь через phpinfo() что OPcache включён - ищи раздел "opcache" или "Zend OPcache".

На локалке opcache.revalidate_freq=0 может быть удобнее - тогда OPcache каждый раз проверяет изменился ли файл. Это чуть медленнее чем production, но зато при изменении PHP-файла сразу видишь результат без сброса кэша.

Медленные запросы к MySQL - включи slow query log

Если сайт работает медленно из-за базы данных - включи лог медленных запросов в MySQL. Это покажет какие запросы тормозят.

В my.ini добавь:


[mysqld]
slow_query_log = 1
slow_query_log_file = C:/xampp/mysql/data/slow-queries.log
long_query_time = 1

long_query_time = 1 означает что в лог попадут все запросы которые выполняются дольше 1 секунды. Перезапусти MySQL. Теперь тормозящие запросы будут записываться в лог-файл.

Открой лог и посмотри что там:


type C:\xampp\mysql\data\slow-queries.log

Там будут запросы с временем выполнения. Эти запросы нужно оптимизировать - добавить индексы, переписать JOIN-ы, или просто убрать N+1 проблемы в коде.

Xdebug для отладки PHP

Xdebug - расширение PHP для отладки. Позволяет ставить точки останова в коде, смотреть значения переменных, трассировать выполнение. Незаменимо при серьёзной разработке.

Скачай Xdebug с официального сайта xdebug.org/wizard. Вставь туда вывод phpinfo() - сайт сам скажет какую версию Xdebug скачать под твой PHP.

Скопируй скачанный .dll файл в папку расширений PHP. Путь к папке расширений смотри в phpinfo() - строка extension_dir.

Добавь в php.ini:


[xdebug]
zend_extension=xdebug
xdebug.mode=debug
xdebug.start_with_request=yes
xdebug.client_host=127.0.0.1
xdebug.client_port=9003

Перезапусти Apache. Проверь через phpinfo() что Xdebug появился.

Для использования в VS Code установи расширение "PHP Debug". В PhpStorm Xdebug поддерживается из коробки. Настрой IDE на прослушивание порта 9003.

16. Типичные сценарии использования

Разработка WordPress тем и плагинов

Стандартная задача. Установи WordPress на localhost как описано выше. Для разработки тем - создай папку в C:\xampp\htdocs\wordpress\wp-content\themes\mytheme\.

Включи режим отладки WordPress. Открой wp-config.php и найди строку:


define( 'WP_DEBUG', false );

Замени на:


define( 'WP_DEBUG', true );
define( 'WP_DEBUG_LOG', true );
define( 'WP_DEBUG_DISPLAY', true );
define( 'SCRIPT_DEBUG', true );

Теперь WordPress будет показывать PHP-ошибки и записывать их в wp-content/debug.log.

Тестирование PHP-приложений перед деплоем

Если деплоишь на Linux-сервер с PHP 8.1 - локально тоже ставь PHP 8.1. Несоответствие версий PHP между локалкой и продакшном - источник половины "у меня работало" историй.

Проверь что на локалке и продакшне совпадают:

  • Версия PHP
  • Включённые расширения PHP
  • Версия MySQL
  • Настройки php.ini которые влияют на поведение: short_open_tag, error_reporting, date.timezone

Посмотри включённые расширения на локалке:


<?php
print_r(get_loaded_extensions());
?>

Сравни с тем что установлено на сервере. Если есть расширение на сервере которого нет у тебя - включи его в php.ini.

Импорт большой базы данных

Типичная ситуация: надо поднять копию продакшн-базы на локалке. База весит 500 МБ или больше. phpMyAdmin не справляется - таймаут.

Используй командную строку напрямую:


C:\xampp\mysql\bin\mysql.exe -u root mydb < C:\backup\production_dump.sql

Это работает для любого размера файла. phpMyAdmin имеет ограничения на размер загружаемого файла - они в php.ini (upload_max_filesize и post_max_size). Через CLI таких ограничений нет.

Если база очень большая и импорт идёт долго - добавь флаги для ускорения:


C:\xampp\mysql\bin\mysql.exe -u root --max_allowed_packet=512M mydb < C:\backup\production_dump.sql

Прогресс можно отслеживать через размер файла - MySQL читает дамп последовательно.

17. Итог

Ты поднял локальный сервер. Apache отвечает на localhost, MySQL принимает подключения на 3306, PHP выполняет скрипты. phpMyAdmin открывается и даёт доступ к базам данных.

Теперь у тебя есть рабочее окружение для разработки PHP-приложений на Windows. Можешь создавать виртуальные хосты для разных проектов, переключаться между версиями PHP, тестировать SQL-запросы через phpMyAdmin. Всё локально, без удалённых серверов и лишних расходов.

Не заработало - разберёмся
Если после всех шагов что-то всё равно не работает — пиши в комментарии. Укажи: ОС и версию Windows, какой сервер ставил (WAMP или XAMPP) и какую версию, что конкретно не работает (иконка красная / 403 / PHP не выполняется / MySQL падает), и что показывает лог ошибок. Разберёмся.
Андрей Анатольевич
Author: Андрей Анатольевич

Руководитель ИТ / Кризис-менеджер 25 лет в IT: от инженера в МегаФоне до руководителя отдела. Знаю, как выглядит бардак: нестабильные сети, устаревшая инфраструктура, конфликты в команде, раздутые сроки. Помогаю бизнесу выходить из кризиса: навожу порядок в легаси, стабилизирую то, что разваливается, выстраиваю прогнозируемые процессы. Не раз возвращал к жизни ИТ-структуры — знаю цену хаосу. 📍 Ищу проект для полной реорганизации / стабилизации. 📬 Telegram: @over_dude ✉️ mail@it-apteka.com

Оставайтесь на связи

Рецепты от IT-боли. Без воды, без рекламы, без маркетинговой шелухи.

Подписаться на IT-Аптеку →

Мы ВКонтакте

IT-Аптека — советы, новости и помощь рядом.

Вступить в группу ВКонтакте →
Поделитесь:

Оставьте комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Прокрутить вверх