Установка Apache 2.4VC14 + PHP 7 на Windows 7 ­- 10

Данная инструкция служит дополнением к инструкции по установке Apache 2.4VC11 и PHP 5.6 и описывает лишь отличительные моменты, которые касаются установки Apache24 и PHP7 на Windows. Описание установки СУБД MySQL остается прежним и не повторяется в этой инструкции.

Прежде чем продолжить чтение, обратите внимание на то, действительно ли вам необходимо устанавливать и настраивать всё это под Windows?Может быть Вам стоит обратить внимание на быстрый способ развернуть более качественное окружение для разработки под Windows, основанное на виртуализации Vagrant и не тратить свое время и нервы на настройку того же самого напрямую в Windows? В любом случае, прочтите статью про Vagrant. Возможно она сэкономит вам не только время, но и здоровье.

Данная инструкция рассчитана на разработчиков с базовыми знаниями Apache и PHP. В данной инструкции будут описана только разница в установке Apache и PHP с основной инструкцией по установке PHP 5.6. Если Вы не в курсе, что такое WEB-сервер, http-протокол и интерпретатор PHP, то Вы всегда можете узнать об этом более подробно, прочитав документацию.

Я не буду отвечать в комментариях на вопросы, ответ на которые есть в этой или основной инструкциях, ссылка на основную инструкцию указана в первом абзаце, а так же на вопросы, которые касаются понимания работы Apache и PHP и уж тем более на вопросы по ошибкам в разработке. Для этого существуют соответствующие ресурсы, литература, форумы, курсы. Однако, Вы всегда можете задать любой интересующий Вас вопрос. Возможно, кто-то из сообщества сможет Вам помочь.

Итак, поехали!

Установка Apache 2.4 VC14

  1. Загружаем Apache 2.4 binaries VC14 под свою систему по ссылке http://www.apachelounge.com/download/ Качаем 64 разрядную версию сервера. На момент написания этих строк файл назывался так: httpd-2.4.17-win64-VC14.zip
  2. Если нужны какие-то дополнительные модули, их можно загрузить там же (для базовой установки нет необходимости)
  3. Загружаем и устанавливаем обновления Visual C++ Redistributable for Visual Studio 2015 с сайта Microsoft.
  4. Разархивируем содержимое папки Apache24 из скаченного архива в D:\USR\apache. Обратите внимание, что в D:\USR\apache нужно положить не папку Apache24 из архива, а ее содержимое. Инсталлировать ничего не требуется.
  5. В файле D:\USR\apache\conf\httpd.conf изменяем значение ServerRoot на «d:/USR/apache» (строка 37) и значение DocumentRootDirecroty) на «d:/USR/www» (строки 243 и 244). Так же следует раскомментировать строку 219 и изменить ее на: ServerName localhost:80
  6. Изменяем параметры хранения логов в том же файле (находим параметры и изменяем):
    ErrorLog "D:/USR/log/apache-error.log"
    CustomLog "D:/USR/log/apache-access.log" common
  7. Устанавливаем сервис Apache. Открываем командную строку от имени Администратора и вставляем туда следующую строку:
    D:\USR\apache\bin\httpd.exe -k install
  8. Следим за сообщениями об ошибках во время установки сервиса. Если все сделано верно, никаких ошибок быть не должно. Если у вас после выполнения строки не появилась снова командная строка, то вы что-то сделали неправильно. Просто воспользуйтесь функциями скопировать и вставить, чтобы не допускать ошибок при перепечатке.
  9. Создаем на рабочем столе ярлык для D:\USR\apache\bin\ApacheMonitor.exe и/или помещаем его в автозагрузку (для открытия окна автозагрузки в WIN8..10 необходимо нажать WIN+R, затем ввести shell:Startup и нажать ОК)
  10. Запускаем ApacheMonitor. В системном трее появится ярлык. Нажимаем на него левой кнопкой, выбираем Apache24 -> Start.
  11. В браузере заходим на http://localhost/ — должны увидеть It works!
  12. Если не увидели такой надписи, разбираемся, что пошло не так (читаем логи, гуглим, пытаемся самостоятельно разобраться с проблемой, раз уж решили разбираться в тонкостях работы веб-сервера)

Установка PHP 7

  1. Загружаем последнюю версию VC14 x64 Thread Safe по ссылке http://windows.php.net/download/. Обратите внимание, что нужен именно VC14 и именно Thread Safe. Файл, который Вам нужен, скорее всего будет называться наподобие: php-7.0.0-Win32-VC14-x64.zip
  2. Извлекаем содержимое архива в D:\USR\php. Как в случае с Apache, инсталлировать ничего не требуется.
  3. В файл D:\USR\apache\conf\httpd.conf добавляем строки:
    LoadModule php7_module "d:/USR/php/php7apache2_4.dll"
    AddHandler application/x-httpd-php .php
    # Путь к файлу php.ini
    PHPIniDir "D:/USR/php"
  4. И изменяем значение параметра DirectoryIndex на index.html index.php (строка 278)
  5. Используя ApacheMonitor перезапускаем Apache (Apache24 -> Restart)
  6. Заходим браузером http://localhost/index.php и убеждаемся, что PHP работает (в браузере будет вывод PhpInfo).
  7. Делаем копию шаблона конфигурационного файла D:\USR\php\php.ini-development с именем D:\USR\php\php.ini — это конфигурационный файл для РНР.
  8. Редактируем конфигурационный файл D:\USR\php\php.ini. Пользуясь поиском находим внутри файла, раскомментируем и изменяем параметры. Обратите внимание, что параметр extension определяет набор расширений РНР. Раскомментируйте те расширения, которые нужны Вам. В примере расширения, которые были нужны мне. Временную зону указывайте свою, а не мою:
    extension_dir = "D:/USR/php/ext"
    sys_temp_dir = "D:/USR/tmp"
    extension=php_curl.dll
    extension=php_gd2.dll
    extension=php_gettext.dll
    extension=php_mbstring.dll
    extension=php_mysqli.dll
    extension=php_openssl.dll
    date.timezone = Europe/Zaporozhye

    Если у Вас возникли проблемы с запуском curl, обратитесь к этой инструкции.

  9. Выполняем в командной строке php -m чтобы просмотреть список подключенных расширений.
  10. Перезапускаем Apache используя ApacheMonitor

Установка и настройка всего остального не изменилась. Обратитесь пожалуйста к статье по установке PHP 5.6 для получения подробной информации.

Установка Apache 2.4VC14 + PHP 7 на Windows 7 ­- 10: 194 комментария

  1. Здравствуйте! При переходе на http://localhost/index.php появляется ошибка Not Found
    The requested URL /denwer/ was not found on this server. Не могу понять причем здесь denver. Он был удален около года назад. Не подскажите, в чем проблема?

  2. Есть несколько неточностей. Или автор забыл упомянуть. Начинающему типа меня пришлось дополнительно копать. если мы меняем Documnetroot на d:/USR/WWW то неплохо бы туда и положить index.php какой нибудь например.
    Кроме того надо прописывать в системную переменную windows PATH путь к PHP иначе curl не заведется

  3. Добрый день. Спасибо за детальную инструкцию у меня получилось создать рабочую «локалку». Подскажите, пожалуйста, у Вас инструкция или возможно Вы знаете где найти информацию о том как эту «локалку» сделать доступной из интернета. Заранее спасибо.

    1. Добрый день. У вас на компьютере должен быть статический белый IP адрес и все сразу заработает из интернета. Или же статический белый адрес может быть на роутере — тогда достаточно в настройках роутера включить трансляцию портов и пробросить порт 80 на ваш компьютер. Если нет статического белого адреса, а если динамический, то можно воспользоваться службами вроде DynDNS, чтобы завести себе специальный адрес, который будет автоматически связан с вашим меняющимся динамическим IP адресом.

      Но я не рекомендую вам в таком виде выпускать сервер в интернет. Он не защищен. Хотя, если Вас это не беспокоит, то проблем нет :)

  4. В пакете PHP7 скаченном с офсайта отсутствует php7apache2_4.dll, есть только php7.dll, но на него ругается. php7apache2_4.dll нужно скачать отдельно?

  5. Добрый день Денис! Сейчас уже вышел httpd-2.4.27-Win64-VC15.zip Будет работать с php-7.1.8-Win32-VC14-x64.zip Что обозначает VC?

    1. Добрый день.

      VC — это версия компилятора Visual Studio, в которой производилась компиляция и сборка.
      VC11 — VisualStudio 2012, VC14 — VisualStudio 2015, VC15 — VisualStudio 2017

      Версия VC в PHP должна быть не выше, чем у Apache.
      Например, в Apache2.4+VC14 будет запросто работать PHP5.6+VC11

      Ответ на ваш вопрос: Да. Apache VC15 будет работать и с PHP7.1+VC14 и с PHP5.6+VC11

      UPD: Если это у вас машина для разработки, то посмотрите в сторону Vagrant

  6. Здравствуйте, Денис. Если нужно установить веб-сервер — всегда пользуюсь этой Вашей замечательной статьёй. Но вот, возникла у меня проблема. Помогите, пожалуйста, настроить Zend Multibyte Support в PHP 7.1.

    1. Добрый день, Илья.
      Спасибо за отзыв.
      К сожалению, я не могу помочь с этим вопросом. Никогда не приходилось это делать. Может быть сообщество поможет.

  7. не заробило по описанию

    LoadModule php5_module «E:/tools/php-7.1/php7apache2_4.dll»
    AddHandler application/x-httpd-php .php

    Путь к файлу php.ini

    PHPIniDir «E:/tools/php-7.1»

    загуглил на инглише и так получилось

    LoadModule fcgid_module modules/mod_fcgid.so

    AddHandler application/x-httpd-php .php
    AddType application/x-httpd-php .php .html
    LoadModule php7_module «E:/tools/php-7.1/php7apache2_4.dll»
    PHPIniDir «E:/tools/php-7.1»

  8. Извиняюсь за оффтоп, но думаю вам бы следовало добавить поиск по комментариям, а то многие леняться листать комментарии и дублируют вопрос

  9. Блин, нету cURL, строку «extension=php_curl.dll» в php.ini раскоментировал, а курла нету, у меня была верси пхп 7,0,8 поставил уже 7,1,2 и не пашет…

    1. Столкнулся с той же проблемой. Решение конечно не очень красивое, но копирование двух dll php7ts.dll, ssleay32.dll из корня php в apache/bin решило проблему загрузки php_curl.dll

  10. Денис, добрый день. Сделал все точно, так, как написано. И запускаю php -m кв командной строке — вижу множество подключенных модулей.

    Однако запускаю php файл с таким простым содержимым:

    Hello,world!

    Но, к сожалению, кроме Hello,world! не вижу ничего. браузер по умолчанию у меня Mozilla Firefox. Если же я пытаюсь приудительно открыть с помощью Internet Explorer — вместо открытия файла мне задается вопрос: Вы хотите открыть или сохранить файл. При выборе Открыть мне открывается файл в блокноте.

    Чего еще может не хватать?

    Заранее благодарен

    1. Добрый день.
      Очень похоже на то, что Вы скачали PHP Non Thread Safe.
      Убедиться в этом можно проверив наличие файла php7apache2_4.dll в каталоге, куда разархивировали PHP.
      Если его нет, скачайте правильную версию PHP и все заработает (только файл php.ini не удаляйте).
      Если этот файл есть, тогда остается только неверная настройка apache, описанная в п.3

      1. Нет, в том то и дело, что этот файл есть. с этим я успел намучаться вчера. И если бы это было так — при конфигурации апача я бы увидел матюк — нет такой длл. п.3 — это вот это имеется в виду: В файл D:\USR\apache\conf\httpd.conf добавляем строки:

        LoadModule php7_module «d:/USR/php/php7apache2_4.dll»
        AddHandler application/x-httpd-php .php

        Путь к файлу php.ini

        PHPIniDir «D:/USR/php»

        В моем случае я добавил такие строки:

        LoadModule php7_module «c:/php/php7apache2_4.dll»
        AddHandler application/x-httpd-php .php

        Путь к файлу php.ini

        PHPIniDir «c:/php»

        Причем файл длл лежит именно в той папке, что я и написал. остается только одна версия: не рабочая длл.

        1. Такого не бывает в релизах. Может быть разрядность РНР не та, что в Апаче?
          Если не уверены, перекачайте архивы еще раз. Следите за версией vc14 и разрядностью. Настроенные конфиги оставьте.

          1. Было у меня подобное. как раз причина была в том, что апач x64, а у меня был php x86. скачал x64 и все стало на свои места

          2. Такая же проблема. Все проверил, разрядность, версии — все соответствует. А апатч не хочет перезагружаться после добавления строк

            LoadModule php7_module «d:/USR/php/php7apache2_4.dll»
            AddHandler application/x-httpd-php .php

            Путь к файлу php.ini

            PHPIniDir «D:/USR/php»

            1. Здравствуете!
              Такая же проблема Apache не запускается из за 3-х строчек в httpd.conf:

              LoadModule php7_module «d:/USR/php/php7apache2_4.dll»
              AddHandler application/x-httpd-php .php
              #Путь к файлу php.ini
              PHPIniDir «D:/USR/php»

              Версия Apache: httpd-2.4.4-win32-ssl_0.9.8.
              Версия PHP: php-7.2.5-Win32-VC15-x64.
              Windows 7

              Может кто знает что-нибудь по этой проблеме?

  11. Денис, добрый день! У меня PHP 7.1.0, Apache24. ОС: Windows 7 64x
    Они у меня уже установлены. Мне нужно поработать с графическими файлами. Когда я написал маленький скрипт и хочу запустить его в браузере через LOCALHOST, браузер мне выводит вот это: Fatal error: Uncaught Error: Call to undefined function imagecreatetruecolor() in C:\

    В файле «php.ini» у меня раскомментированы следующие строки: http://i12.pixs.ru/storage/1/5/3/phpgd2jpg_3882657_24862153.jpg
    Библиотеки GDLib по идее должны работать. Пробовать скачивать файл php_gd2.dll и заменить его-не помогло.

    1. Добрый день.
      В PHP для Windows уже входят все необходимые расширения.
      Чтобы их включить, нужно раскомментировать соответствующую строку в php.ini (в моей инструкции есть несколько расширений, которые включаются таким образом).
      В Вашем случае в php.ini нужно раскомментировать строку:

      extension=php_gd2.dll
      

      После чего обязательно перезапустить Apache, что скорее всего Вы забыли сделать.

  12. Здравствуйте, Денис. Выполнил всё по Вашей инструкции, немного изменив пути, так как диска D у меня нет. Служба успешно поднялась phpinfo отрабатывает, но столкнулся с ошибкой загрузки библиотекой curl: PHP Warning: PHP Startup: Unable to load dynamic library ‘C:\Apache24\php\ext\php_curl.dll’ — \xef\xbf\xbd\xef\xbf\xbd \xef\xbf\xbd\xef\xbf\xbd\xef\xbf\xbd\xef\xbf\xbd\xef\xbf\xbd\xef\xbf\xbd \xef\xbf\xbd\xef\xbf\xbd\xef\xbf\xbd\xef\xbf\xbd\xef\xbf\xbd\xef\xbf\xbd\xef\xbf\xbd\xef\xbf\xbd \xef\xbf\xbd\xef\xbf\xbd\xef\xbf\xbd\xef\xbf\xbd\xef\xbf\xbd.\r\n in Unknown on line 0

    Подскажите, пожалуйста, в чём может быть причина и есть ли возможность сделать вывод ошибок читабельным (либо на русском либо на латинице) ?

    1. Добрый день.
      Посмотрите, остальные модули загружаются нормально?
      Через командную строку: php -m
      Или через php-файл:

      <?php
      print_r(get_loaded_extensions());
      

      Меня еще смущает путь C:\Apache24\php\ext\php_curl.dll. Конечно же, Вы могли скопировать РНР внутрь Apache24, но может быть это и есть ошибка? В таком случае проверьте правильность пути в extension_dir.

      Что касается кракозябр — достаточно текста ошибки PHP Warning: PHP Startup: Unable to load dynamic library ‘C:\Apache24\php\ext\php_curl.dll’

      1. Денис, благодарю за оперативный ответ. Да, остальные модули нормально грузятся. Проблема только с curl. Вот результат при выполнении строки в PHP файле.

        Array
        (
        [0] => Core
        [1] => bcmath
        [2] => calendar
        [3] => ctype
        [4] => date
        [5] => filter
        [6] => hash
        [7] => iconv
        [8] => json
        [9] => mcrypt
        [10] => SPL
        [11] => pcre
        [12] => readline
        [13] => Reflection
        [14] => session
        [15] => standard
        [16] => mysqlnd
        [17] => tokenizer
        [18] => zip
        [19] => zlib
        [20] => libxml
        [21] => dom
        [22] => PDO
        [23] => openssl
        [24] => SimpleXML
        [25] => xml
        [26] => wddx
        [27] => xmlreader
        [28] => xmlwriter
        [29] => apache2handler
        [30] => gd
        [31] => gettext
        [32] => mbstring
        [33] => mysqli
        [34] => Phar
        )

        Да, каталог php находится внутри Apache24. Вот так там всё расположено.

        C:\APACHE24\PHP
        │ deplister.exe
        │ glib-2.dll
        │ gmodule-2.dll
        │ icudt57.dll
        │ icuin57.dll
        │ icuio57.dll
        │ icule57.dll
        │ iculx57.dll
        │ icuuc57.dll
        │ install.txt
        │ libeay32.dll
        │ libenchant.dll
        │ libpq.dll
        │ libsasl.dll
        │ libssh2.dll
        │ license.txt
        │ news.txt
        │ phar.phar.bat
        │ pharcommand.phar
        │ php-cgi.exe
        │ php-win.exe
        │ php.exe
        │ php.gif
        │ php.ini
        │ php.ini-development
        │ php.ini-production
        │ php7apache2_4.dll
        │ php7embed.lib
        │ php7phpdbg.dll
        │ php7ts.dll
        │ phpdbg.exe
        │ readme-redist-bins.txt
        │ snapshot.txt
        │ ssleay32.dll

        ├───dev
        │ php7ts.lib

        ├───ext
        │ php_bz2.dll
        │ php_com_dotnet.dll
        │ php_curl.dll
        │ php_enchant.dll
        │ php_exif.dll
        │ php_fileinfo.dll
        │ php_ftp.dll
        │ php_gd2.dll
        │ php_gettext.dll
        │ php_gmp.dll
        │ php_imap.dll
        │ php_interbase.dll
        │ php_intl.dll
        │ php_ldap.dll
        │ php_mbstring.dll
        │ php_mysqli.dll
        │ php_oci8_12c.dll
        │ php_odbc.dll
        │ php_opcache.dll
        │ php_openssl.dll
        │ php_pdo_firebird.dll
        │ php_pdo_mysql.dll
        │ php_pdo_oci.dll
        │ php_pdo_odbc.dll
        │ php_pdo_pgsql.dll
        │ php_pdo_sqlite.dll
        │ php_pgsql.dll
        │ php_phpdbg_webhelper.dll
        │ php_shmop.dll
        │ php_snmp.dll
        │ php_soap.dll
        │ php_sockets.dll
        │ php_sqlite3.dll
        │ php_sysvshm.dll
        │ php_tidy.dll
        │ php_xmlrpc.dll
        │ php_xsl.dll

        ├───extras
        │ └───ssl
        │ openssl.cnf

        ├───lib
        │ └───enchant
        │ libenchant_ispell.dll
        │ libenchant_myspell.dll

        └───sasl2
        saslANONYMOUS.dll
        saslCRAMMD5.dll
        saslDIGESTMD5.dll
        saslLOGIN.dll
        saslNTLM.dll
        saslOTP.dll
        saslPLAIN.dll
        saslSCRAM.dll
        saslSQLITE.dll
        saslSRP.dll

        Тем не менее загрузка curl так и не работает. По этой причине как раз и хотел выяснить как победить «кракозябры» в отчёте об ошибках. )

  13. Здравствуйте. Скажите: чем отличается thread sahe от noon-thread safe? И если я буду ставить под nginx или просто использовать из под командой строки, то какую из этих версий мне ставить?

    1. Добрый день.

      Threaded safe версия нужна для использования с потоковыми серверами под ОС Windows, такими как Apache.
      Ошибкой большинства здесь в комментариях является то, что они скачивают Non Threaded Safe и, естественно, не могут связать его с Apache, так как эта версия не содержит необходимых модулей.

      Если Вы планируете использовать NGINX, то в этом случае Вы будете использовать php-cgi, и версия РНР здесь уже роли не играет. Тоже самое и с запуском РНР из консоли.

    2. Если не путаю, то thread-safe версия php библиотек (с защищённым потоком) используется для реализации PHP в Apache. Так как сам Apache не обеспечивает безопасность потоков. А non thread safe используется при подключении PHP к IIS (Internet Information Server аналог веб сервера, который предлагают разработчики Windows). В нём уже реализована безопасность потоков и поэтому к нему можно подключать non thread safe версию PHP библиотек. Но возможно ошибаюсь.

  14. Денис, а ничего, что в файле httpd.conf после предложенных вами исправлений остаётся несуществующий путь c:/Apache24/cgi-bin в строках 361 и 377?

  15. Денис, извините за моё тугодумство, но не совсем понял формулировку: «описывает лишь отличительные моменты, которые касаются установки Apache24 и PHP7 на Windows.» Речь идёт о том, что инструкция описывает лишь отличительные моменты, а именно установку VC14 и PHP7?

    1. Две инструкции практически идентичны за исключением некоторых моментов: версии apache и версии php. Инструкции писал для себя, так что посчитал, что не стоит дублировать дважды практически идентичный текст.

  16. Залип на пункте 6 установки php — на http://localhost/index.php отвечает, что

    The requested URL /index.php was not found on this server.

    CMS, понятное дело, тоже не устанавливается

    Апач при этом запускается нормально, и казалось бы, где там вообще можно накосячить…

      1. Да, я понял, что его там нет. Мне бы хотелось узнать, почему его там нет и где его взять

        1. Первое предложение первого абзаца инструкции говорит:
          Данная инструкция служит дополнением к инструкции по установке Apache 2.4VC11 и PHP 5.6 и описывает лишь отличительные моменты.
          В конце концов, этот index.php и есть ваш программный код. Вы должны его либо написать сами (если вы разработчик) или это может быть индексный файл проекта, который вы собираетесь развернуть на сервере.

  17. Какую чушь ночью написал. Разобрался в своей ситуации: ошибка 404 по адресу: http://localhost/index.php появилась после создания виртуальных хостов. По этому адресу попадаем в папку D:/USR/www/s1.localhost, а файла index.php там нет. Он лежит в папке www. После копирования вышеуказанного файла в папку s1.localhost все стало на свои места и ошибка 404 не появляется.

  18. Здравствуйте. У меня проблема следующего характера: При установке php7, выполнив переход по ссылке в пункте 6, загружается phpinfo. После копирования файла php.ini_development, сохранения копии как php.ini и редактирования его, по ссылке из пункта 6 появляется ошибка 404. Как с этим явлением побороться?

  19. Добрый день Денис! Я читал комментарии и увидел что в строке браузера localhost/index.php выдает я не знаю что вообще там должно писаться, до этого изменил переменную (добавил) скриншот http://prntscr.com/bksv2d , добавил 4 строки скриншот http://prntscr.com/bksyfn , но меня смущает одно, изменение значения в строке 278, у меня она 277 прописал так DirectoryIndex index.html index.php скриншот http://prntscr.com/bkt0i3, может надо было DirectoryIndex вообще удалить и оставить только index.html index.php?

      1. Денис, извините но мне не понятен пункт 7. Делаем копию …., а куда ее вставлять эту копию?
        Далее пункт 8. пользуемся поиском, мне нужно отрыть D:\USR\php\php.ini-development или файлы находятся в D:\USR\apache\conf\httpd.conf?

        1. Вроде нашел как описано в 8 пункте, скриншот http://prntscr.com/bkuh4z менять нет смысла они и так там прописаны, но не могу найти первые две строчки
          extension_dir = «D:/USR/php/ext»
          sys_temp_dir = «D:/USR/tmp»
          и последняя строка я так понимаю это что то ваше date.timezone = Europe/Zaporozhye

        2. По гуглил, нашел ответ, фаил D:\USR\php\php.ini-development нужно переименовать, убрать слово -development что не было вами сказано в пункте 7

          1. Не переименовать, а скопировать. Рад, что Вы сами нашли все ответы. К сожалению, я не смогу Вас ничему научить. Могу лишь ответить на вопросы, на которые нет однозначного ответа в статье.

            1. Спасибо, ну хоть что-то хорошее узнал, смотрю способов как и что у всех по разному в деталях. Иду дальше нужно еще установить MySQL и движок Joomla

        3. Продублирую здесь пункт целиком.
          Делаем копию шаблона конфигурационного файла D:\USR\php\php.ini-development с именем D:\USR\php\php.ini
          Это означает, что нужно взять файл php.ini-development и скопировать его с новым именем php.ini
          Чтобы исключить вопрос «куда копировать файл?», я специально указал имя файла с абсолютным путем. Файл копируется в тот же каталог D:\USR\php\, но с другим именем.

  20. Здравствуйте, Дмитрий! Делал всё точно по инструкции, только использовал другии версии программ и залил сервер не в папку «D:\USR», а в «D:\Server». Слава Богу, всё прошло более чем удачно! Странно, что у меня, у 12-летнего парня, не случилось не одной ошибки, в отличии от взрослых мужчин. Сейчас буду устанавливать MySQL. У меня назрел вопрос — что символизирует название папки «USR»? Большое спасибо!

    1. Добрый день, Илья!
      Рад, что помог в освоении.
      Взрослые мужчины, к сожалению, читают «через строчку». В последнее время это своеобразная болезнь, многим кажется, что у них ни на что нет времени и таким образом они бегло изучают материал, не читают длинные и, по их мнению, нудные статьи. Учитывая это, я стараюсь писать короткие инструкции без «воды», но, как видно из практики, даже это не спасает. Это серьезная проблема и она описана во многих статьях по психологии. Виной этому доступность информации, который не было ранее. Сейчас достаточно просто нагуглить или найти в википедии нужную информацию. Всем известен эффект википедии, когда заходишь почитать про что-то одно, а через несколько часов читаешь уже совсем другую статью, переходя по ссылкам. Такой эффект дал нам «специалистов» во всех сферах, которые считают, что знают всё, а на самом деле все эти «знания» просто перемшались в голове.
      Могу посоветовать не распыляться. Среднестатистическому человеку не свойственно знать всё. Не нужно стремиться изучить все вопросы. Гораздо правильное решение — это изучать конкретное направление, изучать более детально и качественно. Становясь в конкретной области хорошим достойным профессионалом. Чего я Вам и желаю!
      До этого абзаца дочитаете только Вы. Именование каталога в usr пошло из unix. В операционных системах этого семейства этот каталог содержит пользовательские приложения и библиотеки, не относящиеся к ядру операционной системы. Так как инструкцию я писал сначала для себя, чтобы не забыть, а потом выложил в блог, то каталог usr просто перекочевал из моей системы в эту инструкцию. Так что ничего особенного нет. Если Вы интересуетесь темой веб-разработки, то я могу порекомендовать Вам куда более удобный способ собрать веб-окружение на Windows-машине — используйте vagrant. Если совсем кратко: vagrant позволяет поднять виртуальную машину с линуксом и всем необходимым софтом на борту, включая Apache (Nginx), php, MySQL, рабочим каталогом которой является ссылка на ваш рабочий каталог с программным кодом. То есть локально в windows папке Вы ведете разработку кода, а браузером заходите на веб-сервер, который функционирует на виртуальной машине. Преимуществ очень много. Главное — повторяемость окружения. Вы уже разрабатываете на linux окружении и перенос кода на рабочий сервер в большинстве случаев не будет иметь проблем. Еще одно важное преимущество — Вы можете развернуть vagrant на любой машине (бывает, что нужно срочно поработать где-то на чужом компьютере) в точно такой же абсолютно идентичной конфигурации за считанные минуты и работать над кодом точно так же, как и на домашнем компьютере.
      Удачи и успехов Вам!

      1. Спасибо Вам, Денис, за жизненные и технические советы! Я знал, что папка «usr» связана с семейством Linux, но не обратил внимание, потому что было написано большими буквами. Случилось это, как Вы выше писали, из-за человеческой психологии. Да, я интересуюсь веб-разработкой. Хотел ещё уточнить, как работает vagrant? Её заливаешь на flash-накопитель, подключаешь его к usb-порту и запускаешь с любого компьютера? И если будет возможность, сделайте редактируемые комментарии, а то стыдно всех подряд Дмитриями называть…

        1. В папке с исходным кодом Вашего проекта создается специальный инициализационный файл Vagrantfile.
          Когда Вам нужно поработать на другом компьютере, Вам достаточно установить git, virtual-box и vagrant.
          При помощи git Вы загрузите свой исходный код из репозитория, затем перейдете в папку с кодом и выполните vagrant up — это запустит механизм создания и запуска виртуальной машины в соответствии с инициализационным файлом. Через 10 минут у Вас будет полностью рабочее окружение с почти настоящим виртуальным сервером под Linux.
          На самом деле такой способ очень хорош при разработке проекта группой разработчиков. Это дает гарантию, что у каждого разработчика полностью идентичное окружение, что исключает множество ошибок, которые разработчики могли бы допустить из-за неправильного или просто несогласованного развертывания окружение под Windows, как описано в этой статье. Например, у каждого разработчика может быть свой url к разрабатываемому проекту, в то время как при использовании vagrant url будет у всех разработчиков идентичный. Тоже самое касается версий пакетов и т.д. В общем, очень облегчает процесс работы над одним проектом. На практике у нашей команды были раньше проблемы, связанные с разнотипной настройкой окружения. Когда перешли на vagrant, эта категория проблем теперь вообще не существует.
          С комментариями в блоге беда. Был вынужден включить обязательную предмодерацию, потому как заваливает спамом.

                    1. На этапе запуска самого Apache Monitor или при запуске Apache через монитор?
                      Если второе, тогда запускайте Apache из оболочки (командной строки) cmd

                      httpd.exe

                      И читайте вывод — будет указана ошибка. Скорее всего просто синтаксическая в конфигах.
                      Вообще может быть какая угодно ошибка — все будет написано в выводе. Могут отсутствовать файлы модулей, который Вы пытаетесь подключить, может отсутствовать директория, которую указали в DocumentRoot или в Directory. Причин может быть очень много.

  21. Спасибо тебе, добрый человек!
    Это самая годная статья, которую мне удалось найти!
    А главной, до меня, наконец, дошло, как это работает!

    1. Да и апач то работает, но только до добавления строк
      LoadModule php7_module «d:/USR/php/php7apache2_4.dll»
      AddHandler application/x-httpd-php .php и тд.

      1. 1. По пути C:/php/php7apache2_4.dll точно есть этот файл?
        Если ДА, то:
        2. Остановите службу Apache2.4, если запущена, добавьте строки в конфиг и запустите руками сервер через командную строку:
        C:\Apache24\bin\httpd.exe
        Сообщения об ошибках скопируйте сюда.

        1. C:\Windows\system32>C:\Apache24\bin\httpd.exe
          httpd.exe: Syntax error on line 521 of C:/Apache24/conf/httpd.conf: Cannot load C:/php/php7apache2_4.dll into server: \xcd\xe5 \xed\xe0\xe9\xe4\xe5\xed \xf3\xea\xe0\xe7\xe0\xed\xed\xfb\xe9 \xec\xee\xe4\xf3\xeb\xfc.

          1. Наверное похоже на то, что где то синтакс в конфиг не точен. Не могу найти эту ошибку.

            1. В четырех строчках сложно допустить ошибку.
              По этому мануалу работают все разработчики в компании.
              Я только что повторил всё по инструкции: скачал заново все самые свежие версии, настроил и у меня всё работает.
              Еще раз проверьте пожалуйста наличие файла C:/php/php7apache2_4.dll ошибка говорит о том, что этого файла нет или он другой версии.
              Покажите здесь вывод двух команд:

              c:\Apache24\bin\httpd.exe -v
              c:\php\php.exe -r "phpinfo(1);"

              PS: не поленился, и погуглил вашу ошибку. Все обращения на форумах, которые нашел, были по причине неправильной версии РНР. В шестой раз прошу Вас убедиться, что вы скачали именно Thread Safe той же разрядности, что и Apache
              Версия PHP
              Ну и покажите все таки вывод команд, приведенных выше.

              1. Здравствуйте. Спасибо большое за помощь. Я все уже смогла исправить. Так и не поняла своей ошибки. В первый раз я скачивала PHP7..64 стабильную и по перемещении из архива файлов в папку c/php у меня каким то образом не оказалось файла php7apache2_4.dll, я его скачивала отдельно затем уже скидывала в папку php, но опять же, перезапуская апачи, вылезала ошибка 1. Затем я удалила все из апачи и скачала заново архив, убедилась в том, что php7apache2_4.dll присутствовал, скинула в php. И снова, ошибка 1. Еще раз скачала, удалила, вставила, перезапускаю и удивление! все работает. Еще раз, огромное спасибо за отзывчивость и за прекрасную статью!

                1. Доброе утро. Вот в этом и проблема. Вы скачали не ту версию. Файл php7apache2_4.dll отсутствует в Non Thread Safe. Просто добавить его, взяв из другого места, не получится. Эти версии различаются не только наличием этого файла.
                  Рад, что получилось в итоге :) Успехов в программировании!

    1. Добрый день.
      Запустите Apache из командной строки и скопируйте вывод сюда.

      На всякий случай убедитесь, что Вы скачали 64-разрядный Apache и 64-разрядный PHP Thread Safe. В инструкции на это сделан двойной акцент, но все равно бывает скачивают не те файлы, что нужно.
      Еще убедитесь в том, что Вы извлекли файлы из архива php точно в каталог D:\USR\php и в нем точно находится файл php7apache2_4.dll

      1. C:\Windows\system32>net start Apache24
        Неправильное имя службы.

        Для вызова дополнительной справки наберите NET HELPMSG 2185.

        C:\Windows\system32>

          1. C:\Windows\system32>net start Apache2.4
            Служба «Apache2.4» запускается.
            Не удалось запустить службу «Apache2.4».

            Специфическая ошибка службы: 1.

            Для вызова дополнительной справки наберите NET HELPMSG 3547.

            C:\Windows\system32>NET HELPMSG 3547

            Специфическая ошибка службы: ***.

            C:\Windows\system32>

            1. Покажите логи апача. Оба. Лучше загрузите куда нибудь на дропбокс, например, и дайте ссылку.
              Ссылка будет заблокирована антиспамом, не страшно, я все равно ее увижу.

                1. Судя по всему, Вы установили апач на диск С.
                  Command line: 'C:\\Apache24\\bin\\httpd.exe -d C:/Apache24'
                  Есть подозрение, что РНР тоже установлен на диск С, тогда измените везде путь к файлам и папкам в на правильный.

                  1. Совершенно верно, я установила и апачи и пиэйчпи на C диск. Везде, это в смысле только в hhtpd.conf?

                    1. Могли бы Вы посмотреть конфиг у меня? вроде бы все так, но все равно ошибка 1.

  22. Microsoft Windows [Version 10.0.10240]
    (c) Корпорация Майкрософт (Microsoft Corporation), 2015 г. Все права защищены.

    C:\Windows\system32>php -m
    [PHP Modules]
    bcmath
    calendar
    Core
    ctype
    date
    dom
    filter
    hash
    iconv
    json
    libxml
    mcrypt
    mysqlnd
    pcre
    PDO
    Phar
    Reflection
    session
    SimpleXML
    SPL
    standard
    tokenizer
    wddx
    xml
    xmlreader
    xmlwriter
    zip
    zlib

    [Zend Modules]

    1. Помогите пожалуйста решить ошибку.
      после добавления строк в hhtpd.conf вылетает это сообщение. не пойму что не так.

    1. Что же Вы, бедный, 6 дней мучились, читали инструкцию с кучей грамматических ошибок?
      Значит Ваша неспособность добавить в конфиг 4 строки — это проблема кучи моих грамматических ошибок? Ну ладно, потешьте свое самолюбие. Хотя я не понимаю, о какой куче идет речь, но раз грамматические ошибки Вас так выводят из себя, будьте добры не делать их сами. Перечитайте свои комментарии. Предложение начинается с большой буквы и заканчивается точкой, Илья. Стыдно этого не знать. Хамло.

  23. В файл D:\USR\apache\conf\httpd.conf добавляем строки:

    LoadModule php7_module «d:/USR/php/php7apache2_4.dll»
    AddHandler application/x-httpd-php .php
    # Путь к файлу php.ini
    PHPIniDir «D:/USR/php»
    1
    2
    3
    4
    LoadModule php7_module «d:/USR/php/php7apache2_4.dll»
    AddHandler application/x-httpd-php .php
    # Путь к файлу php.ini
    PHPIniDir «D:/USR/php»

  24. (C:\Windows\system32>php -m
    «php» не является внутренней или внешней
    командой, исполняемой программой или пакетным файлом.)

    1. Илья, Вы от двух имен пишите?
      >php -m
      «php» не является внутренней или внешней командой, исполняемой программой или пакетным файлом.
      Эта проблема заключается в том, что Вы не добавили php в переменную path
      А вот это Вы не установили РНР в качестве обработчика. Или установили, но не перезапустили Apache.
      Похоже на то, что Вы пропустили половину пунктов в инструкции.
      Попробуйте заново. Инструкция дает 100% рабочий вариант. Проверено десятками людей.

      1. нет. я ничего не пропускал. только про добавление 4х строк в php7 мне не понятно. куда их добавлять… понятно в какой файн, но в какое место то……

        1. именно с этого , пункта 3 по установке php7 и начинаются проблемы…. я уже ровно 6 дней все переделываю снова и ничего…… бесит…..

            1. Илья, по этой инструкции при мне устанавливали Apache и PHP мои сотрудники, никак не связанные с программированием. Странно что у разработчиков установка РНР вызывает такие трудности. В пункте 3 четко написано, в какой файл что добавлять. Добавляйте в конец файла да и все. В чем проблема, я не понимаю. Успехов Вам, Илья.

  25. 2. C:\Windows\system32>php -m
    «php» не является внутренней или внешней
    командой, исполняемой программой или пакетным файлом.

      1. извините, Вы есть в вк? мне многое не понятно, напишите пожалуйста где мне можно связаться с вами

        1. Меня нет в Вконтакте. Извините, я и так достаточно много личного времени уделяю бесплатным консультациям здесь. Спрашивайте здесь, будет время — я обязательно отвечу. Спасибо за понимание.

  26. Привет Денис. Возникла проблема установки phpMyAdmin.
    Fatal error: Uncaught Error: Call to undefined function __() in Fatal error: Uncaught Error: Call to undefined function __() in F:\WebServer\apache\htdocs\PMA\libraries\sanitizing.lib.php:135 Stack trace: #0
    Как исправить и в чем проблема?
    Собственные попытки исправить или хотя бы «завуалировать» проблему, а именно ошибка в коде майадмина код проблемы: ‘[dochelpicon]’ => PMA\libraries\Util::getImage(‘b_help.png’, __(‘Documentation’)),
    После выдает ошибку что mbstring отсутствует в каталоге, несмотря на то что и переустанавливал все в соответствии с разрядностью!

    1. Привет.
      Я не использую в работе phpMyAdmin. Но ошибка достаточно легко гуглится.
      Это был баг, который уже пофиксили, судя из багтрекера: https://github.com/phpmyadmin/phpmyadmin/commit/902b41e86cbbccab50abe75cfde0b0751eedb593

      По поводу проверки наличия модулей, откройте командную строку и посмотрите список загруженных модулей
      php -m

  27. Доброе утро!
    Как решить данную проблему ?
    httpd.exe: Syntax error on line 37 of C:/USR/apache/conf/httpd.conf: ServerRoot must be a valid directory
    В Файле хттпд.хостс прописанно всё верно: ServerRoot «С:/USR/apache»
    Пробывал скидывать по разным Жестким дискам не помогает.заранее спасибо!

  28. Доброго.
    Є такі рядки:

    LoadModule php7_module «F:/USR/php/php7apache2_4.dll»
    AddHandler application/x-httpd-php .php
    # Путь к файлу php.ini
    PHPIniDir «F:/USR/php»

    І що ще цікаво. При публікації мобільного додатку 1С не бачить веб-серверів, хоча ярлик присутній і перезавантаження апачу відбувається. Ви не в курсі, чи працює 1С з апач 2.4?

    Дякую.

    1. Доброго.

      Дійсно 1С на сьогодні працює тільки з Апач 2.2. Опишіть, будь ласка, як коректно деінстаювати Апач 2.4 з метою встановлення 2.2. Чи можливе сумісне використання двох версій Апач?

      Дякую

  29. Доброго.
    Все начебто встановив відповідно до написанного. Встановлення path зняло помилки запуску бібліотек пхп, що відбивалося і в error.log. (Пропоную цей момент включити до основного тексту).
    Але пхп не працює, бо запуск index.php виводить текст файлу. . Апач 2.4 х64, пхп 7 х64, Він 7х64.
    Зараз після рестарту в error.log таке:
    [Thu Mar 10 20:49:29.615293 2016] [mpm_winnt:notice] [pid 1676:tid 500] AH00424: Parent: Received restart signal — Restarting the server.
    [Thu Mar 10 20:49:29.805293 2016] [mpm_winnt:notice] [pid 1676:tid 500] AH00455: Apache/2.4.18 (Win64) PHP/7.0.4 configured — resuming normal operations
    [Thu Mar 10 20:49:29.805293 2016] [mpm_winnt:notice] [pid 1676:tid 500] AH00456: Apache Lounge VC14 Server built: Dec 9 2015 11:13:29
    [Thu Mar 10 20:49:29.805293 2016] [core:notice] [pid 1676:tid 500] AH00094: Command line: ‘f:\\usr\\apache\\bin\\httpd.exe -d F:/USR/apache’
    [Thu Mar 10 20:49:29.805293 2016] [mpm_winnt:notice] [pid 1676:tid 500] AH00418: Parent: Created child process 2208
    [Thu Mar 10 20:49:31.095296 2016] [mpm_winnt:notice] [pid 2208:tid 248] AH00354: Child: Starting 64 worker threads.
    [Thu Mar 10 20:49:31.615297 2016] [mpm_winnt:notice] [pid 4672:tid 248] AH00364: Child: All worker threads have exited.
    При нормальному режимі повинні бути взагалі якісь повідомлення? Чи є ці повідомлення критичними для роботи?
    Дякую.

      1. Дякую за відповідь, але я так і звертався до РНР.
        Фрагмент з httpd.conf
        #
        # DirectoryIndex: sets the file that Apache will serve if a directory
        # is requested.
        #

        DirectoryIndex index.html index.php

      2. Доброго.
        Дякую за відповідь, але я так і звертався до РНР.
        Фрагмент з httpd.conf
        #
        # DirectoryIndex: sets the file that Apache will serve if a directory
        # is requested.
        #

        DirectoryIndex index.html index.php

        Що ще може бути не так в налаштуваннях?

        1. Виконайте
          httpd.exe -L
          У останніх строках побачите, чи є модуль РНР
          Можливо Ви забули включити до файла httpd.conf наступні строки:
          LoadModule php7_module «d:/USR/php/php7apache2_4.dll»
          AddHandler application/x-httpd-php .php
          PHPIniDir «D:/USR/php»

  30. Здравствуйте.
    Выполняю пункт 4. данной инструкции:
    «И изменяем значение DirectoryIndex на index.html index.php (строка 278)»
    Затем перезапускаю apache и ничего не работает.

    Вот соответствующий кусок кода:

    index.html index.php

    Ставлю коммент (#) на index.html index.php, все работает, http://localhost/index.php запускается без проблем. В чем фишка? Оставить строку закоментированной?

  31. Здравствуйте я вроде все делал по инструкции и вроде все нормально подключилось, но когда пытаюсь подключить базу данных к серверу выходит такая ошибка:
    Fatal error: Uncaught Error: Call to undefined function mysql_connect() in C:\USR\htdocs\index.php:7 Stack trace: #0 {main} thrown in C:\USR\htdocs\index.php on line 7
    все модули указанные в статье раскоментил.
    буду ра если откликнитесь заранее спасибо

      1. да они есть, может проблема в том я использую функцию mysql_connect() которая находится в модуле mysql, которого у меня нет. Кстати в документации mysqli его нет

        1. А все решил проблему, надо было всего лишь написать mysqli_connect() вместо mysql_connect().
          P.S. Спасибо что сразу откликнулись

  32. здравствуйте, все делал по инструкции, написал небольшой скрипт на php пример:

    Добавить комментарий:

    Имя:

    Комментарий:

    Я не робот!

    <?php
    if (file_exists('text.txt'))
    echo nl2br(htmlspecialchars(file_get_contents('text.txt')));
    <if (file_exists('text.txt'))
    ?>

    но вместо того чтобы выполнять таблицу,

    и создавать блокнот, да какой блокнот, вообще выдаёт error 500, как будто PHP не привязан
    очень прошу привести подробную инструкцию, а кстате если хтмл страницу скрипт вводить то выдаёт, обычную таблицу для действий но вней писывает $text1 = !empty($_POST[‘text1’]) ? $_POST[‘text1’] : null;

      1. Первое, что Вы должны сделать при возникновении ошибки 500 — прочитать логи ошибок.
        Открывайте лог error.log для данного сайта (если делали всё по статье, то это в каталоге D:\USR\log) и листайте в самый низ. Последняя строка и есть последняя ошибка. Покажите ее здесь.

        1. PHP Warning: PHP Startup: in Unknown on line 0
          [Sun Feb 21 16:44:50.919219 2016] [mpm_winnt:notice] [pid 1596:tid 464] AH00354: Child: Starting 64 worker threads.
          [Sun Feb 21 16:44:58.894662 2016] [:error] [pid 1596:tid 980] [client 109.252.74.111:3865] PHP Warning: Unknown: failed to open stream: No such file or directory in Unknown on line 0
          [Sun Feb 21 16:44:58.894662 2016] [:error] [pid 1596:tid 980] [client 109.252.74.111:3865] PHP Fatal error: Unknown: Failed opening required ‘D:/USR/www/\xd0\xbe\xd1\x82\xd0\xb7\xd1\x8b\xd0\xb2\xd1\x8b/index.php’ (include_path=’.;C:\\php\\pear’) in Unknown on line 0

          1. PHP Warning: Unknown: failed to open stream: No such file or directory in Unknown on line 0
            PHP Fatal error: Unknown: Failed opening required ‘D:/USR/www/\xd0\xbe\xd1\x82\xd0\xb7\xd1\x8b\xd0\xb2\xd1\x8b/index.php’

            Попробуйте не использовать кириллические символы.

            Покажите настройку хоста (или виртуального хоста) в Apache

            1. ServerRoot «D:/USR/apache»
              с вашего позваления выложу весь лог IP скрою заменю звёздачками
              #
              # This is the main Apache HTTP server configuration file. It contains the
              # configuration directives that give the server its instructions.
              # See for detailed information.
              # In particular, see
              #
              # for a discussion of each configuration directive.
              #
              # Do NOT simply read the instructions in here without understanding
              # what they do. They’re here only as hints or reminders. If you are unsure
              # consult the online docs. You have been warned.
              #
              # Configuration and logfile names: If the filenames you specify for many
              # of the server’s control files begin with «/» (or «drive:/» for Win32), the
              # server will use that explicit path. If the filenames do *not* begin
              # with «/», the value of ServerRoot is prepended — so «logs/access_log»
              # with ServerRoot set to «/usr/local/apache2» will be interpreted by the
              # server as «/usr/local/apache2/logs/access_log», whereas «/logs/access_log»
              # will be interpreted as ‘/logs/access_log’.
              #
              # NOTE: Where filenames are specified, you must use forward slashes
              # instead of backslashes (e.g., «c:/apache» instead of «c:\apache»).
              # If a drive letter is omitted, the drive on which httpd.exe is located
              # will be used by default. It is recommended that you always supply
              # an explicit drive letter in absolute paths to avoid confusion.

              #
              # ServerRoot: The top of the directory tree under which the server’s
              # configuration, error, and log files are kept.
              #
              # Do not add a slash at the end of the directory path. If you point
              # ServerRoot at a non-local disk, be sure to specify a local disk on the
              # Mutex directive, if file-based mutexes are used. If you wish to share the
              # same ServerRoot for multiple httpd daemons, you will need to change at
              # least PidFile.
              #
              ServerRoot «D:/USR/apache»

              #
              # Mutex: Allows you to set the mutex mechanism and mutex file directory
              # for individual mutexes, or change the global defaults
              #
              # Uncomment and change the directory if mutexes are file-based and the default
              # mutex file directory is not on a local disk or is not appropriate for some
              # other reason.
              #
              # Mutex default:logs

              #
              # Listen: Allows you to bind Apache to specific IP addresses and/or
              # ports, instead of the default. See also the
              # directive.
              #
              # Change this to Listen on specific IP addresses as shown below to
              # prevent Apache from glomming onto all bound IP addresses.
              #
              Listen ************:80
              #Listen 80

              #
              # Dynamic Shared Object (DSO) Support
              #
              # To be able to use the functionality of a module which was built as a DSO you
              # have to place corresponding `LoadModule’ lines at this location so the
              # directives contained in it are actually available _before_ they are used.
              # Statically compiled modules (those listed by `httpd -l’) do not need
              # to be loaded here.
              #
              # Example:
              # LoadModule foo_module modules/mod_foo.so
              #
              LoadModule access_compat_module modules/mod_access_compat.so
              LoadModule actions_module modules/mod_actions.so
              LoadModule alias_module modules/mod_alias.so
              LoadModule allowmethods_module modules/mod_allowmethods.so
              LoadModule asis_module modules/mod_asis.so
              LoadModule auth_basic_module modules/mod_auth_basic.so
              #LoadModule auth_digest_module modules/mod_auth_digest.so
              #LoadModule auth_form_module modules/mod_auth_form.so
              #LoadModule authn_anon_module modules/mod_authn_anon.so
              LoadModule authn_core_module modules/mod_authn_core.so
              #LoadModule authn_dbd_module modules/mod_authn_dbd.so
              #LoadModule authn_dbm_module modules/mod_authn_dbm.so
              LoadModule authn_file_module modules/mod_authn_file.so
              #LoadModule authn_socache_module modules/mod_authn_socache.so
              #LoadModule authnz_fcgi_module modules/mod_authnz_fcgi.so
              #LoadModule authnz_ldap_module modules/mod_authnz_ldap.so
              LoadModule authz_core_module modules/mod_authz_core.so
              #LoadModule authz_dbd_module modules/mod_authz_dbd.so
              #LoadModule authz_dbm_module modules/mod_authz_dbm.so
              LoadModule authz_groupfile_module modules/mod_authz_groupfile.so
              LoadModule authz_host_module modules/mod_authz_host.so
              #LoadModule authz_owner_module modules/mod_authz_owner.so
              LoadModule authz_user_module modules/mod_authz_user.so
              LoadModule autoindex_module modules/mod_autoindex.so
              #LoadModule buffer_module modules/mod_buffer.so
              #LoadModule cache_module modules/mod_cache.so
              #LoadModule cache_disk_module modules/mod_cache_disk.so
              #LoadModule cache_socache_module modules/mod_cache_socache.so
              #LoadModule cern_meta_module modules/mod_cern_meta.so
              LoadModule cgi_module modules/mod_cgi.so
              #LoadModule charset_lite_module modules/mod_charset_lite.so
              #LoadModule data_module modules/mod_data.so
              #LoadModule dav_module modules/mod_dav.so
              #LoadModule dav_fs_module modules/mod_dav_fs.so
              #LoadModule dav_lock_module modules/mod_dav_lock.so
              #LoadModule dbd_module modules/mod_dbd.so
              #LoadModule deflate_module modules/mod_deflate.so
              LoadModule dir_module modules/mod_dir.so
              #LoadModule dumpio_module modules/mod_dumpio.so
              LoadModule env_module modules/mod_env.so
              #LoadModule expires_module modules/mod_expires.so
              #LoadModule ext_filter_module modules/mod_ext_filter.so
              #LoadModule file_cache_module modules/mod_file_cache.so
              #LoadModule filter_module modules/mod_filter.so
              #LoadModule http2_module modules/mod_http2.so
              #LoadModule headers_module modules/mod_headers.so
              #LoadModule heartbeat_module modules/mod_heartbeat.so
              #LoadModule heartmonitor_module modules/mod_heartmonitor.so
              #LoadModule ident_module modules/mod_ident.so
              #LoadModule imagemap_module modules/mod_imagemap.so
              LoadModule include_module modules/mod_include.so
              #LoadModule info_module modules/mod_info.so
              LoadModule isapi_module modules/mod_isapi.so
              #LoadModule lbmethod_bybusyness_module modules/mod_lbmethod_bybusyness.so
              #LoadModule lbmethod_byrequests_module modules/mod_lbmethod_byrequests.so
              #LoadModule lbmethod_bytraffic_module modules/mod_lbmethod_bytraffic.so
              #LoadModule lbmethod_heartbeat_module modules/mod_lbmethod_heartbeat.so
              #LoadModule ldap_module modules/mod_ldap.so
              #LoadModule logio_module modules/mod_logio.so
              LoadModule log_config_module modules/mod_log_config.so
              #LoadModule log_debug_module modules/mod_log_debug.so
              #LoadModule log_forensic_module modules/mod_log_forensic.so
              #LoadModule lua_module modules/mod_lua.so
              #LoadModule macro_module modules/mod_macro.so
              LoadModule mime_module modules/mod_mime.so
              #LoadModule mime_magic_module modules/mod_mime_magic.so
              LoadModule negotiation_module modules/mod_negotiation.so
              #LoadModule proxy_module modules/mod_proxy.so
              #LoadModule proxy_ajp_module modules/mod_proxy_ajp.so
              #LoadModule proxy_balancer_module modules/mod_proxy_balancer.so
              #LoadModule proxy_connect_module modules/mod_proxy_connect.so
              #LoadModule proxy_express_module modules/mod_proxy_express.so
              #LoadModule proxy_fcgi_module modules/mod_proxy_fcgi.so
              #LoadModule proxy_ftp_module modules/mod_proxy_ftp.so
              #LoadModule proxy_html_module modules/mod_proxy_html.so
              #LoadModule proxy_http_module modules/mod_proxy_http.so
              #LoadModule proxy_scgi_module modules/mod_proxy_scgi.so
              #LoadModule proxy_wstunnel_module modules/mod_proxy_wstunnel.so
              #LoadModule ratelimit_module modules/mod_ratelimit.so
              #LoadModule reflector_module modules/mod_reflector.so
              #LoadModule remoteip_module modules/mod_remoteip.so
              #LoadModule request_module modules/mod_request.so
              #LoadModule reqtimeout_module modules/mod_reqtimeout.so
              #LoadModule rewrite_module modules/mod_rewrite.so
              #LoadModule sed_module modules/mod_sed.so
              #LoadModule session_module modules/mod_session.so
              #LoadModule session_cookie_module modules/mod_session_cookie.so
              #LoadModule session_crypto_module modules/mod_session_crypto.so
              #LoadModule session_dbd_module modules/mod_session_dbd.so
              LoadModule setenvif_module modules/mod_setenvif.so
              #LoadModule slotmem_plain_module modules/mod_slotmem_plain.so
              #LoadModule slotmem_shm_module modules/mod_slotmem_shm.so
              #LoadModule socache_dbm_module modules/mod_socache_dbm.so
              #LoadModule socache_memcache_module modules/mod_socache_memcache.so
              #LoadModule socache_shmcb_module modules/mod_socache_shmcb.so
              #LoadModule speling_module modules/mod_speling.so
              #LoadModule ssl_module modules/mod_ssl.so
              #LoadModule status_module modules/mod_status.so
              #LoadModule substitute_module modules/mod_substitute.so
              #LoadModule unique_id_module modules/mod_unique_id.so
              #LoadModule userdir_module modules/mod_userdir.so
              #LoadModule usertrack_module modules/mod_usertrack.so
              #LoadModule version_module modules/mod_version.so
              #LoadModule vhost_alias_module modules/mod_vhost_alias.so
              #LoadModule watchdog_module modules/mod_watchdog.so
              #LoadModule xml2enc_module modules/mod_xml2enc.so

              #
              # If you wish httpd to run as a different user or group, you must run
              # httpd as root initially and it will switch.
              #
              # User/Group: The name (or #number) of the user/group to run httpd as.
              # It is usually good practice to create a dedicated user and group for
              # running httpd, as with most system services.
              #
              User *****
              Group ******

              # ‘Main’ server configuration
              #
              # The directives in this section set up the values used by the ‘main’
              # server, which responds to any requests that aren’t handled by a
              # definition. These values also provide defaults for
              # any containers you may define later in the file.
              #
              # All of these directives may appear inside containers,
              # in which case these default settings will be overridden for the
              # virtual host being defined.
              #

              #
              # ServerAdmin: Your address, where problems with the server should be
              # e-mailed. This address appears on some server-generated pages, such
              # as error documents. e.g. admin@your-domain.com
              #
              ServerAdmin admin@example.com

              #
              # ServerName gives the name and port that the server uses to identify itself.
              # This can often be determined automatically, but we recommend you specify
              # it explicitly to prevent problems during startup.
              #
              # If your host doesn’t have a registered DNS name, enter its IP address here.
              #
              #ServerName localhost:80

              #
              # Deny access to the entirety of your server’s filesystem. You must
              # explicitly permit access to web content directories in other
              # blocks below.
              #
              #
              # AllowOverride none
              # Require all denied
              #

              #
              # Note that from this point forward you must specifically allow
              # particular features to be enabled — so if something’s not working as
              # you might expect, make sure that you have specifically enabled it
              # below.
              #

              #
              # DocumentRoot: The directory out of which you will serve your
              # documents. By default, all requests are taken from this directory, but
              # symbolic links and aliases may be used to point to other locations.
              #

              DocumentRoot «d:/USR/www»

              #
              # Possible values for the Options directive are «None», «All»,
              # or any combination of:
              # Indexes Includes FollowSymLinks SymLinksifOwnerMatch ExecCGI MultiViews
              #
              # Note that «MultiViews» must be named *explicitly* — «Options All»
              # doesn’t give it to you.
              #
              # The Options directive is both complicated and important. Please see
              # http://httpd.apache.org/docs/2.4/mod/core.html#options
              # for more information.
              #
              Options Indexes FollowSymLinks

              #
              # AllowOverride controls what directives may be placed in .htaccess files.
              # It can be «All», «None», or any combination of the keywords:
              # AllowOverride FileInfo AuthConfig Limit
              #
              AllowOverride None
              Allow From All
              #
              # Controls who can get stuff from this server.
              #
              Require all granted

              #
              # index.html index.php: sets the file that Apache will serve if a directory
              # is requested.
              #
              #
              # index.html index.php index.html
              #

              #
              # The following lines prevent .htaccess and .htpasswd files from being
              # viewed by Web clients.
              #

              Require all denied

              #
              # ErrorLog: The location of the error log file.
              # If you do not specify an ErrorLog directive within a
              # container, error messages relating to that virtual host will be
              # logged here. If you *do* define an error logfile for a
              # container, that host’s errors will be logged there and not here.
              #
              ErrorLog «D:/USR/log/apache-error.log»

              #
              # LogLevel: Control the number of messages logged to the error_log.
              # Possible values include: debug, info, notice, warn, error, crit,
              # alert, emerg.
              #
              LogLevel warn

              #
              # The following directives define some format nicknames for use with
              # a CustomLog directive (see below).
              #
              LogFormat «%h %l %u %t \»%r\» %>s %b \»%{Referer}i\» \»%{User-Agent}i\»» combined
              LogFormat «%h %l %u %t \»%r\» %>s %b» common

              # You need to enable mod_logio.c to use %I and %O
              LogFormat «%h %l %u %t \»%r\» %>s %b \»%{Referer}i\» \»%{User-Agent}i\» %I %O» combinedio

              #
              # The location and format of the access logfile (Common Logfile Format).
              # If you do not define any access logfiles within a
              # container, they will be logged here. Contrariwise, if you *do*
              # define per- access logfiles, transactions will be
              # logged therein and *not* in this file.
              #
              CustomLog «D:/USR/log/apache-access.log» common

              #
              # If you prefer a logfile with access, agent, and referer information
              # (Combined Logfile Format) you can use the following directive.
              #
              #CustomLog «logs/access.log» combined

              #
              # Redirect: Allows you to tell clients about documents that used to
              # exist in your server’s namespace, but do not anymore. The client
              # will make a new request for the document at its new location.
              # Example:
              # Redirect permanent /foo http://www.example.com/bar

              #
              # Alias: Maps web paths into filesystem paths and is used to
              # access content that does not live under the DocumentRoot.
              # Example:
              # Alias /webpath /full/filesystem/path
              #
              # If you include a trailing / on /webpath then the server will
              # require it to be present in the URL. You will also likely
              # need to provide a section to allow access to
              # the filesystem path.

              #
              # ScriptAlias: This controls which directories contain server scripts.
              # ScriptAliases are essentially the same as Aliases, except that
              # documents in the target directory are treated as applications and
              # run by the server when requested rather than as documents sent to the
              # client. The same rules about trailing «/» apply to ScriptAlias
              # directives as to Alias.
              #
              ScriptAlias /cgi-bin/ «D:/USR/apache/cgi-bin/»

              #
              # ScriptSock: On threaded servers, designate the path to the UNIX
              # socket used to communicate with the CGI daemon of mod_cgid.
              #
              #Scriptsock cgisock

              #
              # «c:/Apache24/cgi-bin» should be changed to whatever your ScriptAliased
              # CGI directory exists, if you have that configured.
              #

              AllowOverride None
              Options None
              Require all granted

              #
              # TypesConfig points to the file containing the list of mappings from
              # filename extension to MIME-type.
              #
              TypesConfig conf/mime.types

              #
              # AddType allows you to add to or override the MIME configuration
              # file specified in TypesConfig for specific file types.
              #
              #AddType application/x-gzip .tgz
              #
              # AddEncoding allows you to have certain browsers uncompress
              # information on the fly. Note: Not all browsers support this.
              #
              #AddEncoding x-compress .Z
              #AddEncoding x-gzip .gz .tgz
              #
              # If the AddEncoding directives above are commented-out, then you
              # probably should define those extensions to indicate media types:
              #
              AddType application/x-compress .Z
              AddType application/x-gzip .gz .tgz

              #
              # AddHandler allows you to map certain file extensions to «handlers»:
              # actions unrelated to filetype. These can be either built into the server
              # or added with the Action directive (see below)
              #
              # To use CGI scripts outside of ScriptAliased directories:
              # (You will also need to add «ExecCGI» to the «Options» directive.)
              #
              #AddHandler cgi-script .cgi

              # For type maps (negotiated resources):
              #AddHandler type-map var

              #
              # Filters allow you to process content before it is sent to the client.
              #
              # To parse .shtml files for server-side includes (SSI):
              # (You will also need to add «Includes» to the «Options» directive.)
              #
              #AddType text/html .shtml
              #AddOutputFilter INCLUDES .shtml

              #
              # The mod_mime_magic module allows the server to use various hints from the
              # contents of the file itself to determine its type. The MIMEMagicFile
              # directive tells the module where the hint definitions are located.
              #
              #MIMEMagicFile conf/magic

              #
              # Customizable error responses come in three flavors:
              # 1) plain text 2) local redirects 3) external redirects
              #
              # Some examples:
              #ErrorDocument 500 «The server made a boo boo.»
              #ErrorDocument 404 /missing.html
              #ErrorDocument 404 «/cgi-bin/missing_handler.pl»
              #ErrorDocument 402 http://www.example.com/subscription_info.html
              #

              #
              # MaxRanges: Maximum number of Ranges in a request before
              # returning the entire resource, or one of the special
              # values ‘default’, ‘none’ or ‘unlimited’.
              # Default setting is to accept 200 Ranges.
              #MaxRanges unlimited

              #
              # EnableMMAP and EnableSendfile: On systems that support it,
              # memory-mapping or the sendfile syscall may be used to deliver
              # files. This usually improves server performance, but must
              # be turned off when serving from networked-mounted
              # filesystems or if support for these functions is otherwise
              # broken on your system.
              # Defaults: EnableMMAP On, EnableSendfile Off
              #
              #EnableMMAP off
              #EnableSendfile on

              # Supplemental configuration
              #
              # The configuration files in the conf/extra/ directory can be
              # included to add extra features or to modify the default configuration of
              # the server, or you may simply copy their contents here and change as
              # necessary.

              # Server-pool management (MPM specific)
              #Include conf/extra/httpd-mpm.conf

              # Multi-language error messages
              #Include conf/extra/httpd-multilang-errordoc.conf

              # Fancy directory listings
              #Include conf/extra/httpd-autoindex.conf

              # Language settings
              #Include conf/extra/httpd-languages.conf

              # User home directories
              #Include conf/extra/httpd-userdir.conf

              # Real-time info on requests and configuration
              #Include conf/extra/httpd-info.conf

              # Virtual hosts
              #Include conf/extra/httpd-vhosts.conf

              # Local access to the Apache HTTP Server Manual
              #Include conf/extra/httpd-manual.conf

              # Distributed authoring and versioning (WebDAV)
              #Include conf/extra/httpd-dav.conf

              # Various default settings
              #Include conf/extra/httpd-default.conf

              # Configure mod_proxy_html to understand HTML4/XHTML1

              Include conf/extra/proxy-html.conf

              # Secure (SSL/TLS) connections
              #Include conf/extra/httpd-ssl.conf
              #
              # Note: The following must must be present to support
              # starting without SSL on platforms with no /dev/random equivalent
              # but a statically compiled-in mod_ssl.
              #

              SSLRandomSeed startup builtin
              SSLRandomSeed connect builtin

              LoadModule php5_module «d:/USR/php/php5apache2_4.dll»
              AddHandler application/x-httpd-php .php
              # Путь к файлу php.ini
              PHPIniDir «D:/USR/php»

              1. С конфигом на первый взгляд все в порядке. Попробуйте исключить кириллические символы из пути к файлу. Назовите все каталоги латиницей без пробелов.

            2. очень благодарен за помощь преписал название файла и полный путь на английский всё заработало даже в HTML ошибка при использование кирилице

  33. Здравствуйте!
    Скажите, а

    «LoadModule php7_module «d:/USR/php/php7apache2_4.dll»
    AddHandler application/x-httpd-php .php
    # Путь к файлу php.ini
    PHPIniDir «D:/USR/php»

    в какие строки вставлять?

  34. Цю помилку мені видає коли я встановлюю apache, в пункті 7 «Открываем командную строку от имени Администратора и вставляем туда следующую строку»

    Таку ж помилку видає, коли я просто намагаюсь запустити ApacheMonitor. Я пробував встановлювати версію apache vc10 — там все норм працює, запускається!

  35. Доброго дня! що б я не робив, весь час видає одну й ту ж саму помилку:
    «Приложению не удалось запуститься, поскольку api-ms-win-crt-runtime-l1-1-0.dll не был найден. Повторная установка может исправить проблему.»

    Я вже з різних сайтів пробував качать, переустановлював — нічого не допомагає? можете підказати в чому проблема?

    1. Доброго дня! Ця помилка виникає у разі відсутносі бібліотек Visual C++. Якщо Ви не пропустили пункт 3 і встановили Visual C++ Redistributable for Visual Studio 2015, то спробуйте будь ласка зробити так, як вказано у цієї інструкції:
      https://www.smartftp.com/support/kb/the-program-cant-start-because-api-ms-win-crt-runtime-l1-1-0dll-is-missing-f2702.html

      1. Дякую, допомогло! Але виникла нова проблема! Зробивши так, як написано у Вас в пункті №5.»изменяем значение DocumentRoot (и Direcroty) на «d:/USR/www» (строки 243 и 244)» , отримав помилку в командній строці: » Syntax error on line 243 of d:/USR/apache/conf/httpd.conf : DocumentRoot must be a directory.»
        Відповідно apache знову не запускається!
        в файлі httpd.conf я прописав, як Ви і радили, а саме:
        DocumentRoot «d:/USR/www»

  36. Здравствуйте, спасибо за статью, но когда подключаю модуль cURL, то apache перестает запускаться. cURL присутствует, но не подключает, как избавиться от данной проблемы?

    1. Добрый день.
      Скорее всего вы не указали путь к php.exe в переменной path. Если путь указан, тогда запустите php.exe из командной строки и посмотрите, какие возникают проблемы.

        1. В системную переменную PATH добавляем:
          ;D:\USR\apache;D:\USR\apache\bin;D:\USR\php;

          Чтобы быстрее разобраться в чем проблема, откройте командную строку и там выполните следующую команду:
          D:\USR\apache\bin\httpd.exe
          Если будут какие-то ошибки — Вы их тут увидите. Если ошибок не будет, то ничего выведено не будет вообще. В таком случае нажмите Ctrl+C.
          Если будут ошибки — покажите текст ошибки здесь.

          1. (OS 10048)╬с√ўэю ЁрчЁх°рхЄё  Єюы№ъю юфэю шёяюы№чютрэшх рфЁхёр ёюъхЄр (яЁюЄюъюы/ё
            хЄхтющ рфЁхё/яюЁЄ). : AH00072: make_sock: could not bind to address [::]:80
            (OS 10048)╬с√ўэю ЁрчЁх°рхЄё  Єюы№ъю юфэю шёяюы№чютрэшх рфЁхёр ёюъхЄр (яЁюЄюъюы/ё
            хЄхтющ рфЁхё/яюЁЄ). : AH00072: make_sock: could not bind to address 0.0.0.0:80
            AH00451: no listening sockets available, shutting down
            AH00015: Unable to open logs

            1. could not bind to address 0.0.0.0:80
              Это похоже на то, что порт 80 уже занят. Например другой копией WEB-сервера или же Скайпом (в Скайпе выключите использование 80 порта)

                1. Тем не менее порт чем-то занят.
                  Попробуйте остановить все службы, которые могут занимать 80 порт (Apache, IIS и т.п.).
                  Затем запустите заново. Если ошибка не исчезнет, то выполните команду:
                  netstat -ano
                  найдите там процесс, который слушает 80й порт (0.0.0.0:80), в последней колонке будет идентификатор этого процесса.
                  Затем откройте диспетчер задач и найдите процесс (или службу), занимающий порт, по идентификатору.
                  Затем нужно остановить этот процесс или службу и попробовать запустить apache снова.

                    1. Тогда в чем проблема? Вы писали «Здравствуйте, спасибо за статью, но когда подключаю модуль cURL, то apache перестает запускаться.»

  37. Добрый день. Инструкция и в правду очень хорошая. Только по мере установки возникла проблема: после подключения модулей в php.ini (пункт №8), сервер Apache перестал загружаться. С чем связана данная проблема, не могли бы вы подсказать?
    ОС: Windows 8.1 Pro x64
    Заранее благодарен

    1. Добрый день. Возможно не все модули поддерживаются РНР7. Это самая вероятная причина, если Вы используете какие-то дополнительные модули, например memcached.
      Запустите PHP из командной строки и посмотрите на ошибки.

        1. если копировали с сайта то попробуйте просто прописать все ковычки которые копировали в ручную мне это помогло

    1. Выполняю всё как написано, но как только добавляю строки в httpd.conf
      LoadModule php7_module «d:/USR/php/php7apache2_4.dll»
      AddHandler application/x-httpd-php .php
      # Путь к файлу php.ini
      PHPIniDir «D:/USR/php»
      апач монитор перестаёт запускаться с ошибкой
      the requested operation has failed apache 2.4?
      ОС win7pro 64x, php-7.0.4-nts-Win32-VC14-x64
      httpd-2.4.18-win64-VC14.
      Пробовал дописывать 8080, менять кавычки слешь, в логах пишет:
      httpd.exe: Syntax error on line 521 of D:/USR/apache/conf/httpd.conf: Cannot load d:/USR/php/php7apache2_4.dll into server: \xcd\xe5 \xed\xe0\xe9\xe4\xe5\xed \xf3\xea\xe0\xe7\xe0\xed\xed\xfb\xe9 \xec\xee\xe4\xf3\xeb\xfc.
      [Sun Mar 06 16:27:40.221393 2016] [mpm_winnt:notice] [pid 940:tid 180] AH00364: Child: All worker threads have exited.

        1. видимо вы правы, удалил всё, заново скачал всё установилось.
          Только при настройке виртуального хостинга не работают новые s1.localhost, а просто localhost работает?

Прокомментировать