Пока не вышло следующей версии Denwer, решаем задачу перехода с Apachе 2.2 на Apache 2.4. Проблема миграции в том, что конфигурации окажутся не совместимыми из-за изменений в синтаксисе ряда команд более свежего http сервера. Давайте поправим конфигурацию и заставим работать новый Apache в составе Denwer.
Что нужно поменять, чтобы Apache 2.4 ожил под denwer?
Далее по шагам.
- Переименуйте папку со старым сервером (2.2) из \denwer\usr\local\apache в \denwer\usr\local\apache.old
- Место старой версии займет новый дистрибутив с Apache 2.4. Его нужно скачать, например, вот от сюда — Apache 2.4.x VC9 x32 на этот момент это был — httpd-2.4.18-x86-r3.zip. Скачивайте, распаковывайте и копируйте в папку \denwer\usr\local\apache.
- Сохраните отдельно \conf\httpd.conf из 2.4, он нам ещё понадобится.
- Из папки старого дистрибутива \denwer\usr\local\apache.old\bin нам нужны 2 файла : TrayApache.exe и Apache.ico, скопируйте их в 2.4 — \denwer\usr\local\apache\bin.
- Скопируйте все файлы конфигурации apache для денвера из старого проекта, т.е. папку \denwer\usr\local\apache.old\conf накатите поверх \denwer\usr\local\apache\conf.
- Теперь займемся правкой конфигурации, а именно файлом — \denwer\usr\local\apache\conf\httpd.conf. Он соответствует старой версии сервера и его нужно «подлатать».
- Мы сохранили отдельно в п.3. файл конфигурации от нового апача. Возьмите от туда список подключаемых модулей (портянка инструкций LoadModule почти в начале файла) и скопируйте его вместо того списка, что в текущем файле httpd.conf.
- Теперь необходимо произвести замену устаревших команд Apache на новые варианты в файлах конфигурации. Ищите и заменяйте следующие варианты:
1 2 3 4 5 6 |
#в Apache 2.2 Order deny,allow Deny from all #для Apache 2.4 Require all denied |
1 2 3 4 5 6 |
#в Apache 2.2 Order allow,deny Allow from all #для Apache 2.4 Require all granted |
1 2 3 4 5 6 |
#ддя 2.2 config Deny from all Allow from example.org #в 2.4 выглядит как Require host example.org |
1 2 3 4 5 6 |
#в Apache 2.2 Win32DisableAcceptEx On #для Apache 2.4 AcceptFilter http none AcceptFilter https none |
Директивы AcceptMutex, LockFile, RewriteLock, SSLMutex, SSLStaplingMutex, and WatchdogMutexPath заменяются одной командой Mutex.
Где вылавливать ошибки конфигурации Apache в Denwer?
Ошибки конфигурации Apache будет вам сообщать при запуске сервера. Консоль с сообщением об ошибке можно вызвать, кликнув на иконку апача в трее. Там вы увидите что то вроде следующего:
В данном случае конфигуратор не может распознать команду «Satisfy», для неё нужно раскомментировать модуль mod_access_compat.so.
1 |
LoadModule access_compat_module modules/mod_access_compat.so |
Я подозреваю, что все эти операции вы проделали лишь чтобы обновить версию PHP в вашем Denwer, поставить что то выше чем PHP 5.4, который ещё работает с Apache 2.2. Потому не забудьте поменять в httpd.conf строку
1 |
LoadModule php5_module "/usr/local/php5/php5apache2_2.dll" |
на
1 |
LoadModule php5_module "/usr/local/php5/php5apache2_4.dll" |
Более свежий PHP под Denwer понадобится вам для работы с Drupal 8 (PHP 5.5.9 и выше) и Symfony 3 (тоже PHP от 5.5.9 и выше).
если используется php openssl нужно в файле apache.pl заменить часть кода на:
if (my $p = fsgrep { /^openssl.cnf$/i } $phpdir)
{
$ENV{OPENSSL_CONF} = Installer::getSubstDriveConfig() . $p;
}
иначе не будут ssl функции работать выдавая ошибку error:0E06D06C:configuration file routines:NCONF_get_string:no value
нормально обяснить не умеешь кароч не помогло нехрена все только хуже стало запутался бля
5 стадий принятия неизбежного:
отрицание
гнев — ты здесь :)
торг
депрессия
принятие