Денвер
Переход с Денвера-2 на Денвер-3 Доступ к Денверу из локальной сети или Интернета Другие распространенные вопросы

Другие распространенные вопросы

1. Общие вопросы

1.1. Что это вообще такое?

Это — комплекс, предназначенный для удобной отладки скриптов, не выходя в Интернет. Денвер включает в себя несколько наиболее популярных серверов сторонних производителей, работающих в Windows. Вы можете разрабатывать и тестировать сайты в Windows, а затем «минимальной кровью» переносить их на реальный хостинг, в Unix. Подробности здесь.

1.2. Почему проект называют «Денвер»?

Все дело в сокращениях. «Джентльменский набор Web-разработчика», урезанный до первых букв, выглядит как «Д.н.w.р.». При беглом прочтении и получается искомый город.

1.3. Кто создал Денвер? Что такое «команда dklab»? Можно ли к ней присоединиться?

Денвер был придуман и создан одним единственным человеком Дмитрием Котеровым. Команды dklab официально не существует. Это всего лишь небольшая группа людей-энтузиастов, которым нравится расслабляться при написании чего-то нового и интересного другим людям. К этой «команде» можно присоединиться в любой момент. Для этого не надо платить каких-либо взносов. Надо просто помогать проекту развиваться.

1.5. Существует ли версия Денвера на английском языке?

Нет, такой версии Денвера не существует и пока её разработка в планах не предвидится. Если Вы хотели бы помочь создать такую версию Денвера, прочитайте несколько тем, где обсуждались вопросы перевода («Документация по Денверу на английском?», «может все-таки продавать?») и напишите свои предложения.

1.6. Существует ли версия Денвера для Unix-подобных операционных систем?

Нет, такой версии Денвера пока не существует. См. обсуждение вопроса.


2. Установка и настройка

2.1. У меня установлен (или был установлен) другой сервер (например, Microsoft PWS), и Денвер не хочет работать...

Вы можете «перевесить» Денвер на другой порт. К примеру, если вы хотите использовать порт 8080, то исправьте в /usr/local/apache/conf/httpd.conf строчку $&{port:-80} на $&{port:-8080}. В этом случае адреса локальных хостов будут выглядеть примерно так: http://localhost:8080/ Если такое решение вам не очень нравится, просто удалите старый сервер или изыщите способ полностью его отключить.

2.2. Похоже, что у меня не работает утилита «subst». Может ли Денвер устанавливаться на обычный, невиртуальный диск?

Мастер установки был специально спроектирован так, чтобы разрешать инсталляцию только на виртуальный диск — это позволяет повысить автономность комплекса. Но Вы все же можете установить Денвер на обычный диск — при установке укажите корневую директорию (например, «C:/»).
Кроме того, Вы можете установить Денвер куда угодно минуя инсталлятор. Для этого необходимо просто развернуть содержимое архива в корень нужного диска и заменить в файле «/etc/CONFIGURATION.txt» букву «Z:» (или «Y:») на необходимый диск (это единственное место, которое нужно исправить). Конечно, после этого Вам придется еще руками создавать ярлыки для запуска и остановки сервера.
Для того чтобы развернуть дистрибутив Денвера не прибегая к помощи инсталлятора, необходимо скачать архиватор 7-Zip и распаковать EXE-файл, как обычный архив. Для совсем ленивых людей, которые не хотят скачивать программу 7-Zip для распаковки дистрибутива, есть ещё один способ достать содержимое EXE-архива. Для этого необходимо запустить процесс инсталляции, ответить «Да» («Yes»), дождаться распаковки файлов; когда появится чёрное окошко (только не закрывайте его пока!), отправиться по адресу «C:\Documents and Settings\Your Login Name\Local Settings\Temp\» или «C:\Windows\Temp\» (в зависимости от того, какая у Вас ОС) и найти там папку с именем, похожим на «7zS3A.tmp». В этой папке и содержится распакованный дистрибутив Денвера. После копирования содержимого директории с Денвером, чёрное окошко можно закрыть.

2.3. У меня не создаются ярлыки на десктопе (ОС WinXP). Почему?

Вероятно, это присходит из-за того, что Ваш аккаунт в Windows содержит русские буквы. Если это так, создайте ярлыки вручную (на десктоп и в автозагрузку). Zip-архив с ярлыками для стандартного варианта установки можно загрузить по этой ссылке.

2.4. Как вручную удалить виртуальный диск, созданный Денвером?

«Пуск» — «Выполнить» — «subst z: /d». Вместо «z» введите букву Вашего диска.

2.5. Где находится конфигурационный файл Денвера?

Таких файлов несколько, и расположены они в местах, где их проще всего найти компонентам комплекса. Некоторые файлы по умолчанию не существуют — их необходимо создать перед внесением изменений.
  • Главный конфигурационный файл: /etc/CONFIGURATION.txt.
  • Конфигурация Apache httpd.conf: /usr/local/apache/conf/httpd.conf.
  • Файлы .htaccess с локальными настройками сайтов: в директориях документов соответствующих сайтов.
  • Конфигурация PHP php.ini: /usr/local/php5/php.ini.
  • Конфигурация PHP4: /usr/local/php4/php.ini.
  • Конфигурация MySQL с транзакциями: /usr/local/mysql5/my.cnf.
  • Файл hosts — соответствие имен сайтов их IP-адресам:
    • Для Windows 95/98/ME: C:\Windows\hosts.
    • Для Windows NT/2000/XP/Vista/7: C:\WinNT\system32\drivers\etc\hosts.

2.5.1. В папке с MySQL нет файла my.cnf! Есть какой-то файлик MY без расширения, и ничем не открывается...

В Windows существует список расширений (ознакомиться с ним можно, например, здесь), которые не показываются вне зависимости от системных настроек. Посмотрите на обнаруженный файл MY каким-нибудь незамутнённым файловым менеджером (FAR, Total Commander) – и Вы увидите расширение. Открывается он, как и остальные файлы конфигурации, любым текстовым редактором (например, Блокнотом)

2.6. Где находится файл hosts?

В Windows XP Файл hosts находится по адресу «C:\WINDOWS\system32\drivers\etc\hosts». Иногда «C:\Windows» необходимо заменить на другой путь, в который установлена система (в случае если она установлена не в директорию по умолчанию).
В Windows ME, 98 и 95: «C:\WINDOWS\hosts».

2.7. Хочу сделать сайт видимым из локальной сети...


2.8. После выключения Денвера, адреса, с которыми я работал локально, перестали работать в online...

  1. Сначала посмотрите, что у Вас внутри файла hosts при выключенном сервере. Если Вы увидите, что в нём присутствуют те самые адреса – просто удалите их.
  2. Впредь выключайте денвер корректно (используя stop.exe или ярлык stop servers). Именно в скрипте завершения работы стоит очистка файла hosts
  3. Ну и, наконец, обновите версию Денвера. В последних версиях (с начала 2005 года, как минимум) очистка файла hosts происходит так же и при загрузке утилиты create virtual drive, что удобно в данном случае.

2.9. Как деинсталлировать Денвер?

Комплекс полностью автономен и останется таковым. Поэтому для легальной деинсталляции Денвера достаточно просто удалить директорию, в которую вы его установили (По умолчанию – C:\WebServers). При желании можете также стереть ярлыки с Рабочего стола и из Автозагрузки (если забудете, система сама об этом напомнит при следующей загрузке).
Если вы перед удалением Денвера не завершили его работу корректно (перезагрузившись или ярлыком остановки), то, вероятно, Вам придется вручную «почистить» файл С:\WINDOWS\system32\drivers\etc\hosts (в Windows NT/2000/XP/2003) или C:\WINDOWS\hosts (в WIndows 9x или Me), чтобы адреса test1.ru и test2.ru перестали вести на локальную машину, а «смотрели» в Интернет.
Таким образом, для деинсталляции Денвера достаточен следующий порядок действий:
  1. Остановите Денвер
  2. Если виртуальный диск создаётся по умолчанию, в Start -> Run нужно выполнить следующую команду (если необходимо, замените Z на Вашу букву виртуального диска):
    subst Z: /D
  3. Удалите папку инсталляции Денвера (по умолчанию C:\WebServers)
  4. Удалите, если необходимо, ярлык из Автозагрузки
  5. Удалите ярлыки Запуска/Останова Комплекса


3. Технические вопросы

3.1. Я скачал бесплатный скрипт, а он не запускается в Денвере...

А что вы хотите?.. Совместимость между Unix и Windows далеко не полная. Так что, если создатели скрипта не рассчитывали на Windows, скорее всего, он там работать не будет. Денвер — не панацея для «секретарш и занятых», это всего лишь инструмент для разработки и отладки сайтов.

3.2. Как в Денвере выставить права доступа (атрибуты) вида «775» для файлов?

Денвер работает на Windows-платформе (для *nix версии Денвера не существует). В Windows нет таких понятий о правах доступа как в Unix-подобных операционных системах. Таким образом выставлять права доступа для скриптов, работающих на Windows-платформе в Денвере (да и в любом другом сервере на Win-платформе) не надо. Смело пропускайте пункты с указаниями выставления прав доступа в инструкциях по установке скриптов.

3.3. Я хочу, чтобы сайт был доступен не по имени, а по IP-адресу. Как это сделать?

Самый простой способ — воспользоваться встроенной в Денвер системой отображения адресов на папку /home. Например, сайт, соответствующий адресу 192.168.0.100, ищется по умолчанию в директории /home/192.168.0.100/www/ (да-да, имя директории содержит точки). Более сложное, но в то же время и более гибкое решение — вручную править httpd.conf, добавив туда еще один виртуальный хост. См. комментарии в этом файле, а также документацию Apache.

3.3.1. Я хочу, чтобы сайт был доступен и по имени (с локального компьютера), и по IP-адресу. Как это сделать?

Самый простой способ — воспользоваться встроенной в Денвер системой отображения адресов на папку /home. Например, есть сайт www.foo, расположенный соответственно в папке /home/foo/www/, и мы желаем сделать его доступным также и по IP-адресу 192.168.0.100. Для этого в папку /home/foo достаточно положить файл .htaccess следующего содержания:

3.4. Введя «httр://127.0.0.1» и «httр://localhost», мы попадаем на разные сайты. Так и должно быть?

Да. Доменное имя и IP-адрес с точки зрения сервера — разные вещи. Например, по умолчанию все локальные сайты, сколько бы их ни было, соответствуют одному и тому же IP-адресу — а именно, 127.0.0.1. Как же тогда Apache узнает, к какому хосту в действительности направлен запрос?.. По доменному имени, введенному в браузере. Вы можете воспользоваться советами из предыдущего вопроса, чтобы исправить ситуацию.

3.5. У меня не исполняется PHP-код в файлах с расширением «.html». Так и должно быть?

Да, по умолчанию в Денвере PHP-код в файлах с расширением «.html» не исполняется. Однако Вы можете настроить Apache в Денвере таким образом, чтобы файлы с расширением «.html» обрабатывались интерпретатором PHP. Откройте файл «\usr\local\apache\conf\httpd.conf». Найдите в нём строку, начинающуюся на «AddType application/x-httpd-php». Допишите в её конец « .html» (с пробелом впереди). Перед этой строкой вставьте «RemoveHandler .html». После этого удостоверьтесь, что в директиве «AddHandler server-parsed» (найдите эту строчку) нет расширения «.html» (если есть — удалите его). Перезапустите Денвер. Учтите, что после этой операции файлы с расширением «.html» перестанут обрабатываться SSI.

3.6. Где взять sendmail для Windows?

Т.к. Денвер предназначен прежде всего для отладки, использование «реального» sendmail в нем вряд ли оправдано. Именно по этой причине базовый пакет содержит «отладочную заглушку» для sendmail, которая складывает письма, приходящие от скриптов на Perl и PHP, в файл /tmp/!sendmail.txt. В большинстве случаев этого должно быть достаточно, однако, если вам все же потребуется настоящий сервер, можно порекомендовать, например, вот этот: http://courierms.narod.ru. См. также собрание ссылок на иные варианты.

3.7. Как создать новую базу данных?

Запустите Денвер, зайдите на страницу http://localhost/denwer/Tools/addmuser/ и следуйте инструкциям на странице. Можно также создать БД через phpMyAdmin.

3.8. На главной странице phpMyAdmin выводится сообщение «Ваш конфигурационный файл содержит настройки (пользователь root без пароля)...». Что делать?

Устранять это в 99% случаев не надо, так как MySQL в Денвере жёстко привязана к localhost и не пускает никого извне. Не обращайте внимание на это сообщение, если только Вы с какой-либо целью не разрешили доступ к MySQL из сети.

3.9. После установки пакета с Apache 2.0 при щелчке по перу в трее в появившемся окошке вижу сообщение «Warning: DocumentRoot [/home/non-existent-host] does not exist». Что делать?

Не обращайте внимания.

3.10. После установки пакета с PHP 5 на всех моих форумах(phpBB и vBulleting) вместо русских букв-стоят знаки вопроса, смена кодировки не помогает. Моя версия SQL: 5.0.18 Что делать?

Используйте для форума отдельную базу данных и /отдельного пользователя БД, отличного от root/! Проблема возникает только в случае, если соединяться с базой под пользователем root (это известная особенность MySQL). Создать базу и пользователя можно, например, при помощи скрипта http://localhost/Tools/addmuser/


4. Совместимость

4.1. Проблема с кодировкой MySQL 4.1: из БД извлекаются «вопросики» вместо русских букв

MySQL 4.1 на внутреннем уровне работает с кодировкой UTF8 и перекодирует результат в требуемую форму (в нашем случае windows-1251) непосредственно перед передачей его клиенту (т.е. скрипту). В некоторых случаях оказывается, что кодировка клиента (скрипта) «не доходит» до MySQL (ссылка на обсуждение в форуме). Соответственно, сервер передает «вопросики». Можно применить одно из следующих решений.

  • Вписать в скрипт что-то вроде: mysql_query(«SET NAMES cp1251»). Это надо делать сразу же после подключения к MySQL. Проблема исчезнет.
  • Вписать init-connect="SET NAMES cp1251" в /usr/local/mysql4/my.cnf (кто не видит этого файла, пусть изучает Windows, читает FAQ и думает головой) и перезапустить MySQL. Однако это сработает только для соединений, которые проходят НЕ под root-пользователем. Скрипты, коннектящиеся к базе под root, по-прежнему будут получать неверную кодировку. Лучше всего будет все-таки завести новую базу и пользователя через http://localhost/denwer/Tools/addmuser/ и забыть о проблеме.
  • Чтобы диагностировать проблему, выполните в скрипте запрос SHOW VARIABLES LIKE 'char%'. Пример:

Как видите, кодировка неверная: character_set_client=latin1. Это из-за того, что я подключился к базе под root. Если теперь подключусь под не-root пользователем – все будет нормально.

4.2. У меня Windows XP SP2. Не работают хосты с IP отличным от 127.0.0.1...

Это баг SP2. Вам необходимо скачать и установить официальный патч от Microsoft, исправляющий эту проблему. Ссылка на обсуждение вопроса: http://xpoint.ru/forums/thread/27707.xhtml.
Примечания:
  • Возможно, для того, чтобы установить этот патч, Вам придётся загрузиться в Safe Mode (у меня, почему-то, без такого финта ушами это сделать не удавалось).
  • После установки патча, проверьте, разрешает ли Ваш брандмауэр соединения с адресами, отличными от 127.0.0.1 (127.0.0.2 и т.п.). Вполне возможно (Outpost 2.5, например, это делает по умолчанию) Ваш фаервол блокирует обращения к таким адресам.


4.4. У меня установлена сторонняя программа, также использующая MySQL. Возможно ли совместное использование этой программы и Денвера?

Есть разные случаи.
  1. Сторонняя программа (в дальнейшем – Программа) устанавливает свой MySQL в c:\mysql. Тут ничего не поделать – или пробуйте заставить Программу работать с Денверовским MySQL, или наоборот – убедить Денвер работать со сторонней копией MySQL (которая может быть настроена криво или не настроена совсем).
  2. Программа ставит свой MySQL в свой каталог (например, C:\Program Files\Thesoft\mysql) Тогда можно проверить, не появился ли файл конфигурации MySQL (my.ini/my.cnf) в папке Windows, и если да – перенести его (согласно примеру, в C:\Program Files\Thesoft\mysql). Теперь, по идее, они должны заработать раздельно (то есть или Денвер запущен, или Программа). Для того, чтобы 2 версии MySQL работали одновременно, Вам придется у одной из них сменить порт со стандартного на какой-нибудь свободный (и, скажем, в PHP-скриптах получив головную боль с обязательным указанием порта при соединении). Как это сделать, написано в документации к MySQL.

4.5. При установке PEAR командой go-pear.bat – ошибка “Invalid checksum for file...”

Обычно это происходит, если файловая система, на которой установлен PHP, – FAT32. Нужно удалить из папки usr\local\php\PEAR\go-pear-bundle файлы Getopt.php, PEAR.php и Tar.php. При запуске go-pear.bat они будут автоматически загружены с сервера, и ошибка исчезнет.

4.6. Apache и устаревшие версии Windows

Текст ниже касается веб-сервера Apache (который входит в состав комплекса) и является переводом (возможно, неполным, но с некоторыми комментариями) фрагмента англоязычного текста, размещенного здесь .
  • TCP/IP должен быть установлен (Этот пункт не выполняется крайне редко, но всё же). Если нет вообще никакой сети – можно поставить программный имитатор от Microsoft, который ОС будет считать обыкновенной сетевой карточкой. Ищите в списке драйверов Loopback Adapter. После установки укажите статический IP-адрес (например, 192.168.0.1).
  • Если у Вас Win95, обновитесь хотя бы до Win98.
  • Если у Вaс Win98 или WinME, лучше бы Вам обновиться до какой-нибудь поддерживаемой ОС (здесь, имхо, акцент на то, что Microsoft прекратила поддержку этой ОС //Maus). Однако, при выполнении некоторых требований всё наверняка будет работать, а именно: обновитесь до Internet Explorer 6, Service Pack 1. Он содержит некоторые нобходимые обновления (в частности, wldap32.dll, без которой Apache 2.2 вообще не запустится). Если не хотите обновлять IE, придется выполнить действия, описанные в KB article 288358 и KB article 323455 (и то, и другое потребует гораздо больше усилий, чем апдейт IE).
Все эти манипуляции направлены на получение библиотеки wldap32.dll версии не ниже 5.0.2168.1. Если эта библиотека у Вас есть и лежит в Windows\system32 – всё замечательно.
  • Если у Вас NT 4.0, то для получения всё той же библиотеки (см. пункт выше), придется обратиться к http://www.microsoft.com/ntworkstation/downloads/Other/adclient.asp
  • Насчет Win2000 никаких коментариев нет, но, думаю, установка какого-то сервис-пака необходима и здесь //Maus.
  • в WinXP нужен как минимум первый Service Pack. Причина – проблема работы с сокетами.


5. Разное

5.2. Возможно ли установить Денвер на Flash-карту и запускать пакет с неё?

Да, это возможно. Просто установите Денвер на Flash-карту и запускайте пакет с неё. Виртуальный диск в этом случае как раз то самое универсальное решение, которое позволяет устанавливать Денвер на любые носители с возможностью чтения/записи. Однако учтите, что скорость работы с Flash-картой будет весьма невелика. Ссылка по теме: «Установка базового пакета на FLASH карту».

5.3. Возможно ли установить Денвер на лазерный CD-диск?

Теоретически это возможно. Практически — затребует либо очень больших усилий, либо применения сторонних программных продуктов. В общем, пока что «голый» Денвер установить на CD невозможно. Ссылки по теме: «Работа с Денвером с лазерного диска», «Денвер на компакт-диске».

5.4. Возможен ли запуск ASP-скриптов из-под Денвера?

Нет, это невозможно. Денвер и ASP — вещи никак несовместимые по своей сути. Если Вам необходимо запустить ASP-скрипты, установите сервер IIS от Microsoft (поставляется в стандартном дистрибутиве Windows) и работайте с ним.

5.5. DNSearch не хочет искать в архивах...

По умолчанию в Денвере поставляется урезанная версия поискового скрипта DNSearch. Из стандартного дистрибутива выброшены все распаковщики (поиск в CHM-файлах возможен только потому, что этот формат распаковывается с помощью стандартной программы, поставляемой вместе с Windows). Если Вы хотите получить последнюю полную версию скрипта, его можно скачать по адресу http://debugger.dklab.ru/download/scripts/dnsearch/latest/ .

5.6. Как деинсталлировать какое-либо дополнение (расширение), например FireBird?

Остановите Денвер. Переименуйте соответствующую папку в /usr/local/ (например, firebird в _firebird). Запустите Денвер – если запустилось нормально и всё работает – значит, папку можно удалять. Это, конечно, не полноценная деинсталляция, но вполне приемлемая.