Установка и настройка 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>
Если нужна поддержка HTTS (SSL), то дополнительно нужно добавить эти строчки.
<VirtualHost *:443>
ServerName vhost
DocumentRoot "C:/Web/vhost"
SSLEngine on
SSLCertificateFile "conf/ssl.crt/server.crt"
SSLCertificateKeyFile "conf/ssl.key/server.key"
<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».
Комментарии
@ltkssfb
Здравствуйте!
У вас есть вопрос или вам нужна помощь?

Спасибо, ваш вопрос принят.
Ответ на него появится на сайте в ближайшее время.