[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» запущенные модули автоматически не останавливаются.
В файле 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» по адресу 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».
Чтобы отправляемые 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».
Здравствуйте!
У вас есть вопрос или вам нужна помощь?
Спасибо, ваш вопрос принят.
Ответ на него появится на сайте в ближайшее время.