Установка и настройка XAMPP под Windows

Долгое время пользовался «Денвером», но он, видимо, больше не поддерживается, а в «Open Server» не понравилась архитектура. Поэтому «XAMPP».

Установка

Скачиваем, запускаем. В выборе компонентов достаточно оставить: «Apache», «MySQL», «PHP» и «phpMyAdmin».

Возможно перед установкой пондобится отключить антивирус и понизить уроверь User account control в Windows. Папка для установки не должна содержать пробелов, иначе в процессе возникнут ошибки. Можно оставить предлагаемую C:/XAMPP.

Снимаем галочку «Learn more about Bitnami for XAMPP».

Проблема с 80-м портом, занятым «Skype»

Если при запуске контрольной панели «XAMPP» в логе отображаются следующие ошибки, то скорее всего 80-й порт занят «Скайпом».

[Apache] Apache WILL NOT start without the configured ports free!
[Apache] You need to uninstall/disable/reconfigure the blocking application
[Apache] or reconfigure Apache and the Control Panel to listen on a different port

Необходимо зайти в «Skype», в меню выбрать «Tools / Options / Advanced / Connection», снять галочку «Use port 80 and 443 for additional incoming connections» и перезапустить «Skype».

Настройка

Если после нажатия кнопок «Start» напротив модулей «Apache» и «MySQL» в логе нет ошибок, то всё установилось корректно и по адресу localhost можно увидеть приветственное окно.

В настройках программы можно в блоке «Autostart of modules» поставить галочки «Apache» и «MySQL» и снять «Enable Tomcat output window». Важно помнить, что после выхода из контрольной панели «XAMPP» запущенные модули автоматически не останавливаются.

Настройка PHP

В файле C:/XAMPP/php/php.ini нужно поменять значение short_open_tag на on, если вы используете <? вместо <?php.

Настройки вступят в силу после перезагрузки модуля «Apache».

Мухи отдельно, котлеты отдельно

Вовсе не обязательно хранить все ваши сайты в папке с программой. Папки с виртуальными хостами и базами данных можно вынести за пределы «XAMPP». Создание виртуальных хостов я опишу чуть ниже, а путь к папке с базами данных настраивается в файле C:/XAMPP/mysql/bin/my.ini путём замены всех вхождений C:/XAMPP/mysql/data на нужное вам значение. Разумеется саму папку тоже надо перенести на новое место. Изменения вступят в силу после перезагрузки модуля «MySQL».

Создание виртуальных хостов

Адрес localhost непонятным для меня образом работает без каких-либо настроек сразу же после запуска модуля «Apache». Для создания новых виртуальных хостов необходимо выполнить несколько простых шагов.

В файле C:/XAMPP/apache/conf/extra/httpd-vhosts.conf добавляем эти строчки, где vhost — имя виртуального хоста.

<VirtualHost *:80>
  ServerName vhost
  DocumentRoot "C:/Web/vhost"
  <Directory "C:/Web/vhost">
    AllowOverride All
    Require all granted
  </Directory>
</VirtualHost>

Сточка Require all granted служит для того, чтобы не было ошибки «Access Forbidden», а AllowOverride All для того, чтобы работал файл .htaccess. Важно помнить, что первый виртуальных хост в этом файле является дефолтным, поэтому им должен быть localhost (на этом этапе он уже нуждается в настройке).

Настройки вступят в силу после перезагрузки модуля «Apache».

Далее в файле %WINDIR%/System32/drivers/etc/hosts необходимо добавить эту строчку (в том числе для localhost).

127.0.0.1  vhost

Разумеется, процесс синхронизации виртуальных хостов можно автоматизировать. Для своих нужд я написал соответствующий PHP-скрипт.

Настройка phpMyAdmin

Если вы будете использовать свою версию «phpMyAdmin» по адресу localhost/phpmyadmin то в файле C:/XAMPP/apache/conf/extra/httpd-xampp.conf необходимо закомментировать эти строчки.

Alias /phpmyadmin "C:/XAMPP/phpMyAdmin/"
<Directory "C:/XAMPP/phpMyAdmin">
  AllowOverride AuthConfig
  Require local
  ErrorDocument 403 /error/XAMPP_FORBIDDEN.html.var
</Directory>

Настройки вступят в силу после перезагрузки модуля «Apache».

Заглушки «mailtodisk» и «sendmail» для PHP-функции mail()

Чтобы отправляемые PHP-скриптами писма сохранялись на жёсткий диск есть два способа.

Штатная заглушка «mailtodisk». Для её подключения необходимо в файле C:/XAMPP/php/php.ini заменить текущее значение sendmail_path на "C:/XAMPP/mailtodisk/mailtodisk.exe". Перехваченные письма будут складываться в папку C:/XAMPP/mailoutput и иметь формат mail-YYYYMMDD-HHMM-XXXXXX.txt. Адрес папки и формат файла писем не настраивается. А для их просмотра необходимо поменять расширение на eml. Просто, но неудобно.

Второй способ — перехватывать поток средствами PHP. Я назвал его условно «sendmail», хотя к нему он не имеет никакого отношения, кроме того, этот компонент мы даже не отмечали во время установки «XAMPP».

Создадим файл C:/XAMPP/sendmail.php со следующим содержимым.

<?
  if($stream = fopen('php://stdin', 'r'))
  {
    $data = '';

    while($d = fread($stream, 4096))
      $data .= $d;

    $data = str_replace("\n", "\r\n", $data);

    $dir = 'C:/XAMPP/tmp/sendmail';

    if(!file_exists($dir))
      mkdir($dir);

    $try = 0;

    while(file_exists($file = $dir.'/'.date('Y-m-d H.i.s').($try? '-'.$try: '').'.eml'))
      $try++;

    file_put_contents($file, $data);
  }
?>

Здесь мы уже можем настроить папку для писем и формат файла самих писем. Останется лишь в файле C:/XAMPP/php/php.ini прописать sendmail_path равный C:/XAMPP/php/php.exe C:/XAMPP/sendmail.php.

Настройки вступят в силу после перезагрузки модуля «Apache».

Комментарии

Электронное письмо

Подпишись на новости сайта