Установка веб-сервера (Apache 2.4, MySQL 5.7, PHP 7, phpMyAdmin) на Windows 10

Источник (некоторые моменты): "How to install web server on Windows 10 (Apache 2.4, PHP 7, MySQL 5.7 and phpMyAdmin)"

Установка веб-сервера на Linux:

Локальный сервер очень полезный инструмент. Он точно пригодиться веб-мастерам, программистам на PHP, тестерам на проникновение. Все программы, входящие в типичную установку веб-сервера, являются бесплатными, у всех у них открыт исходный код. Локальный веб-сервер потребляет минимум ресурсов и, на самом деле, его совсем нетрудно установить и настроить.

Эта инструкция расскажет о том, как установить локальный веб-сервер без использования готовых сборок. Этот способ имеет свои преимущества. Самыми важными из них являются: полный контроль на тем, что вы устанавливаете; возможность использовать самые последние версии программного обеспечения.

Если вы будете в точности следовать инструкции, то у вас обязательно всё заработает! Кроме тех, у кого Windows XP: на Windows XP не работает.

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

Этапы установки:

  1. Подготовка (скачивание программ, входящих в сервер, создание структуры сервера)
  2. Создание структуры веб-сервера
  3. Установка Apache 2.4
  4. Установка и настройка MySQL 5.7
  5. Установка и настройка PHP 7
  6. Установка и настройка phpMyAdmin
  7. Использование сервера и бэкап данных
  8. Дополнительная настройка PHP
  9. Дополнительная настройка phpMyAdmin
  10. Установка почтовой заглушки
  11. Добавление PHP директории в PATH на Windows
  12. Зависание, замедление трафика и/или ошибка сервера Asynchronous AcceptEx failed
  13. Удаление сервера
  14. У меня ничего не работает

1. Подготовка (скачивание программ, входящих в сервер, создание структуры сервера)

Нам нужны:

  • Apache (непосредственно веб-сервер)
  • PHP - среда для работы PHP программ (требуется практически всеми веб-сайтами)
  • MySQL - система управления базами данных (требуется большинством веб-сайтов)
  • phpMyAdmin - очень удобный инструмент для управления базами данных

Официальный сайт разработчиков Apache это httpd.apache.org. Но официальная версия собирается с использованием старого компилятора, по этой причине она не работает с новыми версиями PHP. Авторы PHP рекомендуют Apache с сайта apachelounge.com/download.

01

Если у вас 64-битная версия Windows, то вы можете выбрать как 64-битную, так и 32-битную версию компонентов. Главное правило - все компоненты должны быть одной версии. Если у вас 32-битная версия Windows, то все компоненты должны быть 32-битными. Это не относится к phpMyAdmin, который написан на языке PHP. Для PHP программ понятие битности неприменимо.

PHP 7 скачайте со страницы http://windows.php.net/download/. Выберите версию Thread Safe, обратите внимание на битность.

Бесплатная версия MySQL называется MySQL Community Server. Её можно скачать на странице http://dev.mysql.com/downloads/mysql/. На этой же странице есть установщик в виде исполнимого файла, но я рекомендую скачать ZIP-архив. На странице скачивания нам предлагают зарегистрироваться или войти в существующую учётную запись - но это делать необязательно. Достаточно нажать на ссылку «No thanks, just start my download». Обратите внимание на битность.

Сайт для скачивания phpMyAdmin phpmyadmin.net.

Ещё нам нужен файл Распространяемый компонент Visual C++ для Visual Studio 2015 с обновлением 3 (или любой другой более поздний), скачать его можно на официальном сайте Microsoft по ссылке (прямая ссылка на скачивание 64-битной версии).

Итак, у меня скачались следующие файлы:

  • httpd-2.4.17-win64-VC14.zip
  • php-7.0.0-Win32-VC14-x64.zip
  • mysql-5.7.9-winx64.zip
  • phpMyAdmin-4.5.1-all-languages.zip
  • vc_redist.x64.exe

Установите файл vc_redist.x64.exe.

2. Создание структуры веб-сервера

Создадим структуру каталогов нашего сервера. Главная идея - разделить исполнимые файлы и файлы сайтов с базами данных. Это удобно для обслуживания сервера, в том числе для резервного копирования.

В корне диска C:\ создайте каталог Server. В этом каталоге создайте 2 подкаталога: bin (для исполнимых файлов) и data.

Перейдите в каталог data и там создайте подпапки DB (для баз данных) и htdocs (для сайтов).

Перейдите в каталог C:\Server\data\DB\ и создайте там пустую папку data.

3. Установка Apache 2.4

Содержимое скаченного архива (точнее говоря, только каталог Apache24), распакуйте в C:\Server\bin\.

Перейдите в каталог c:\Server\bin\Apache24\conf\ и октройте файл httpd.conf любым текстовым редактором.

В нём нам нужно заменить ряд строк.

Меняем

ServerRoot "c:/Apache24"

на

ServerRoot "c:/Server/bin/Apache24"

меняем

#ServerName www.example.com:80

на

ServerName localhost

меняем

DocumentRoot "c:/Apache24/htdocs"

на

DocumentRoot "c:/Server/data/htdocs/"

меняем

<Directory "c:/Apache24/htdocs">

на

<Directory "c:/Server/data/htdocs/">

меняем

DirectoryIndex index.html

на

DirectoryIndex index.php index.html index.htm

меняем

    # 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

на

    # 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 All

и меняем

#LoadModule rewrite_module modules/mod_rewrite.so

на

LoadModule rewrite_module modules/mod_rewrite.so

Сохраняем и закрываем файл. Всё, настройка Apache завершена!

Откройте командную строку (это можно сделать нажав одновременно клавиши Win+X). Выберите там Командная строка (администратор) и скопируйте туда:

c:\Server\bin\Apache24\bin\httpd.exe -k install

Если поступит запрос от файервола в отношение Apache, то нажмите Разрешить.

Теперь вводим в командную строку:

c:\Server\bin\Apache24\bin\httpd.exe -k start

И нажмите Enter.

02

Теперь в браузере набираем http://localhost/ и видим следующее:

03

Это означает две вещи:

  • Apache работает
  • в каталоге c:\Server\data\htdocs\ нет ни одного файла.

Можете поиграться — добавить в каталог любые html-файлы — полноценный веб-сервер работает.

4. Установка и настройка MySQL 5.7

В каталог bin распаковываем файлы MySQL (из архива mysql-5.7.9-winx64.zip). Переименовываем папку mysql-5.7.9-winx64 в mysql-5.7 (для краткости). Кстати, распакованная папка mysql-5.7 занимает более 1.7 гигабайта!

Заходим в эту папку и переименовываем файл my-default.ini в my.ini Теперь открываем этот файл любым текстовым редактором.

Нам нужно сделать только одно, добавить строчку:

datadir="c:/Server/data/DB/data/"

Настройка завершена, но нужно ещё выполнить инициализацию и установку, для этого открываем командную строку от имени администратора и последовательно вводим туда:

C:\Server\bin\mysql-5.7\bin\mysqld --initialize-insecure --user=root
C:\Server\bin\mysql-5.7\bin\mysqld --install
net start mysql

04

По окончанию этого процесса в каталоге C:\Server\data\DB\data\ должны появиться автоматически сгенерированные файлы:

05

Теперь служба MySQL будет запускаться при каждом запуске Windows.

5. Установка и настройка PHP 7

В папке c:\Server\bin\ создаём каталог PHP и копируем в него содержимое архива php-7.0.0RC6-Win32-VC14-x64.zip.

В файле c:\Server\bin\Apache24\conf\httpd.conf в самый конец добавляем строчки

PHPIniDir "C:/Server/bin/PHP"
AddHandler application/x-httpd-php .php
LoadModule php7_module "C:/Server/bin/PHP/php7apache2_4.dll"

06

И перезапускаем Apache

c:\Server\bin\Apache24\bin\httpd.exe -k restart

В каталоге c:\Server\data\htdocs\ создаём файл с названием i.php

Копируем в этот файл:

<?php
phpinfo ();

В браузере откройте ссылку http://localhost/i.php. Если вы видите тоже самое, что на картинке, значит PHP работает:

Настройка PHP 7

Настройка PHP происходит в файле php.ini. В zip-архивах, предназначенных для ручной установки и для обновлений, php.ini нет (это сделано специально, чтобы случайно не затереть ваш файл, с вашими уникальными настройками). Зато есть два других, которые называются php.ini-development и php.ini-production. Любой из них, при ручной установке, можно переименовать в php.ini и настраивать дальше. На локалхосте мы будет использовать php.ini-development.

Открываем файл php.ini любым текстовым редактором, ищем строчку

; extension_dir = "ext"

и заменяем её на

extension_dir = "C:\Server\bin\PHP\ext\"

Теперь найдите группу строк:

;extension=php_bz2.dll
;extension=php_curl.dll
;extension=php_fileinfo.dll
;extension=php_ftp.dll
;extension=php_gd2.dll
;extension=php_gettext.dll
;extension=php_gmp.dll
;extension=php_intl.dll
;extension=php_imap.dll
;extension=php_interbase.dll
;extension=php_ldap.dll
;extension=php_mbstring.dll
;extension=php_exif.dll      ; Must be after mbstring as it depends on it
;extension=php_mysqli.dll
;extension=php_oci8_12c.dll  ; Use with Oracle Database 12c Instant Client
;extension=php_openssl.dll
;extension=php_pdo_firebird.dll
;extension=php_pdo_mysql.dll
;extension=php_pdo_oci.dll
;extension=php_pdo_odbc.dll
;extension=php_pdo_pgsql.dll
;extension=php_pdo_sqlite.dll
;extension=php_pgsql.dll
;extension=php_shmop.dll

и замените её на:

extension=php_bz2.dll
extension=php_curl.dll
extension=php_fileinfo.dll
extension=php_ftp.dll
extension=php_gd2.dll
extension=php_gettext.dll
extension=php_gmp.dll
extension=php_intl.dll
extension=php_imap.dll
;extension=php_interbase.dll
extension=php_ldap.dll
extension=php_mbstring.dll
extension=php_exif.dll      ; Must be after mbstring as it depends on it
extension=php_mysqli.dll
;extension=php_oci8_12c.dll  ; Use with Oracle Database 12c Instant Client
extension=php_openssl.dll
;extension=php_pdo_firebird.dll
extension=php_pdo_mysql.dll
;extension=php_pdo_oci.dll
extension=php_pdo_odbc.dll
extension=php_pdo_pgsql.dll
extension=php_pdo_sqlite.dll
extension=php_pgsql.dll
extension=php_shmop.dll

теперь раскомментируйте эту группу строк:

;extension=php_soap.dll
;extension=php_sockets.dll
;extension=php_sqlite3.dll
;extension=php_tidy.dll
;extension=php_xmlrpc.dll
;extension=php_xsl.dll

должно получиться:

extension=php_soap.dll
extension=php_sockets.dll
extension=php_sqlite3.dll
extension=php_tidy.dll
extension=php_xmlrpc.dll
extension=php_xsl.dll

Этими действиями мы включили расширения. Они могут понадобиться в разных ситуациях для разных скриптов. Сохраняем файл и перезапускаем Apache.

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

В каталог c:\Server\data\htdocs\ копируем содержимое архива phpMyAdmin-4.5.1-all-languages.zip. Переименовываем phpMyAdmin-4.5.1-all-languages в phpmyadmin (для лаконичности)

В каталоге c:\Server\data\htdocs\phpmyadmin\ создаём файл config.inc.php и копируем туда:

<?php

/* Servers configuration */
$i = 0;

/* Server: localhost [1] */
$i++;
$cfg['Servers'][$i]['verbose'] = '';
$cfg['Servers'][$i]['host'] = 'localhost';
$cfg['Servers'][$i]['port'] = '';
$cfg['Servers'][$i]['socket'] = '';
$cfg['Servers'][$i]['connect_type'] = 'tcp';
$cfg['Servers'][$i]['extension'] = 'mysqli';
$cfg['Servers'][$i]['auth_type'] = 'cookie';
$cfg['Servers'][$i]['user'] = 'root';
$cfg['Servers'][$i]['password'] = '';
$cfg['Servers'][$i]['nopassword'] = true;
$cfg['Servers'][$i]['AllowNoPassword'] = true;

/* End of servers configuration */

$cfg['blowfish_secret'] = 'kjLGJ8g;Hj3mlHy+Gd~FE3mN{gIATs^1lX+T=KVYv{ubK*U0V';
$cfg['DefaultLang'] = 'ru';
$cfg['ServerDefault'] = 1;
$cfg['UploadDir'] = '';
$cfg['SaveDir'] = '';

?>

В браузере набираем http://localhost/phpmyadmin/

В качестве имя пользователя вводим root. Поле пароля оставляем пустым. Если всё сделано правильно, то всё должно выглядеть так:

08

7. Использование сервера и бэкап данных

В каталоге c:\Server\data\htdocs\ создавайте папки и файлы, например:

c:\Server\data\htdocs\test\ajax.php – этот файл, соответственно, будет доступен по адресу http://localhost/test/ajax.php и т.д.

Для создания полного бэкапа всех сайтов и баз данных достаточно скопировать каталог data.

Перед обновлением модулей, делайте бэкап папки bin – в случае возникновения проблем, можно будет легко откатиться к предыдущим версиям.

При повторной установке сервера или при его обновлении, необходимо заново настраивать конфигурационные файлы. Если у вас есть копии этих файлов, то процесс можно значительно ускорить. Желательно забэкапить следующие файлы:

  • c:\Server\bin\Apache24\conf\httpd.conf
  • c:\Server\bin\mysql-5.7\my.ini
  • c:\Server\bin\PHP\php.ini
  • c:\Server\data\htdocs\phpMyAdmin\config.inc.php

В них и хранятся все настройки.

8. Дополнительная настройка PHP

PHP в настоящее время очень мощный, гибкий, удобный инструмент. На локальном компьютере с помощью него можно решать разнообразные задачи, совсем не обязательно связанные с генерацией Web-страниц. При решении неординарных задач можно упереться в ограничения, установленные в настройках. Эти настройки содержаться в файле php.ini (c:\Server\bin\PHP\php.ini) Рассмотрим некоторые из них:

memory_limit = 128M

устанавливает максимальное количество памяти, которое может использовать скрипт

post_max_size = 8M

устанавливает максимальное количество данных, которые будут приняты при отправке методом POST

;default_charset = "UTF-8"

устанавливает кодировку (по умолчанию, строка закомментирована)

upload_max_filesize = 2M

максимальный размер загружаемого на сервер файла. Изначально установлен очень маленький размер – только два мегабайта. Например, при загрузки базы данных в phpMyAdmin, не получится загрузить файл больше 2 мегабайт до тех пор, пока не будет изменён этот пункт настройки.

max_file_uploads = 20

максимальное количество файлов для загрузки за один раз

max_execution_time = 30

максимальное время выполнения одного скрипта

Менять эти настройки совершенно необязательно, но полезно о них знать.

9. Дополнительная настройка phpMyAdmin

Мы уже настроили phpMyAdmin и большинству вполне достаточно базового функционала. Тем не менее, на стартовой странице phpMyAdmin есть надпись: «Дополнительные возможности phpMyAdmin не настроены в полной мере, некоторые функции были отключены».

Новыми возможностями являются:

  • показ связей между (связанными) таблицами;
  • добавление информации о таблицах (начиная с версии 2.3.0 вы можете описывать в специальной таблице ‘table_info’ какая колонка будет показана во всплывающей подсказке при движении курсором над связанным ключом);
  • создание PDF-схемы (начиная с версии 2.3.0 вы можете в phpMyAdmin создавать PDF страницы, показывающие связи между вашими таблицами);
  • отображать комментарии столбцов (начиная с версии 2.3.0 вы можете делать комментарий с описанием каждого столбца для каждой таблицы. И они будут видны в «предварительном просмотре для печати». Начиная с версии 2.5.0, комментарии используются на собственных страницах таблиц и в режиме просмотра, показываясь как всплывающие подсказки над колонками (таблицы свойств) или встроены в заголовок таблицы в режиме просмотра. Они также могут быть показаны в дампе таблицы);
  • создавать закладки (начиная с версии 2.2.0, phpMyAdmin позволяет пользователям делать закладки на запросы. Это может быть полезно для часто используемых запросов);
  • история SQL-запросов (начиная с версии 2.5.0 вы можете сохранять вашу историю всех SQL запросов, которые были сделаны через интерфейс phpMyAdmin);
  • дизайнер (начиная с версии 2.10.0, доступен инструмент Дизайнер; он позволяет визуально управлять связями между таблицами);
  • информация о недавно использованных таблицах;
  • настройка интерфейса часто используемых таблиц;
  • слежение (начиная с версии 3.3.x доступен механизм слежения. Он помогает вам проследить каждую SQL команду, которая была выполнена phpMyAdmin’ом. Поддерживается запись работы с данными и запись команд. После включения, вы сможете делать версии таблиц);
  • пользовательские настройки (начиная с версии 3.4.x, phpMyAdmin позволяет пользователям задавать большинство настроек и сохранять их в базе данных);
  • настраиваемые меню (начиная с версии 4.1.0 вы можете создавать группы пользователей, которым будут доступны только назначенные пункты меню. Пользователь может быть определён в группу и будет видеть только пункты меню, доступные для его группы);
  • спрятать/показать пункты навигации (начиная с версии 4.1.0 вы можете спрятать/показать пункты в навигационном дереве).
  • и другие

Сейчас мы настроим эти дополнительные возможности в полной мере. Перейдите по ссылке http://localhost/phpmyadmin/chk_rel.php и кликните "Создать базу данных". После этого все новые функции будут активированы.

Несколько скриншотов новых функций:

1) Дизайнер

12

2) Слежение

11

10. Установка почтовой заглушки

В каталоге C:\Server\bin\ создайте новый каталог с названием Sendmail. Теперь в этом каталоге создайте файл sendmail.php со следующим содержимым:

#!/usr/bin/env php
 
<?php
/*  PHP.INI
 *  [mail function]
 *  ;SMTP = localhost
 *  ;smtp_port = 25
 *  ;sendmail_from = me@example.com
 *  sendmail_path = php.exe sendmail.php --dir C:\mail --open
 */
 
$is_windows = stristr(PHP_OS, 'WIN');
$options = getopt("", ['open', 'prepend', 'file:', 'dir:']);
$is_open = isset($options['open']);
$is_prepend = isset($options['prepend']);
$is_onefile = isset($options['file']);
$mail_dir = isset($options['dir']) ? $options['dir'] : sys_get_temp_dir() . '/mail';
$file_name = isset($options['file']) ? $options['file'] : mkname();
$file_path = $mail_dir . '/' . $file_name;
 
if (!is_dir($mail_dir)) {
    mkdir($mail_dir, 0777, TRUE);
    if (!is_dir($mail_dir)) {
        die('Mail folder [' . $mail_dir . '] not created');
    }
}
 
$stream = $is_onefile ? PHP_EOL . str_repeat("-=", 10) . date('Y-m-d H:i:s') . str_repeat("-=", 10) . PHP_EOL : '';
while (false !== ($line = fgets(STDIN))) {
    //$stream .= ($is_windows ? str_replace("\n", PHP_EOL, $line) : $line);
    $stream .= $line;
}
 
if ($is_prepend && file_exists($file_path)) {
    $file_contents = file_get_contents($file_path);
    $stream .= $file_contents;
}
 
file_put_contents($file_path, $stream, $is_prepend ? 0 : FILE_APPEND);
 
if ($is_open && $is_windows) {
    pclose(popen("start /B notepad " . $file_path, "r"));
}
 
function mkname($i = 0) {
    global $mail_dir;
    $fn = 'mail_' . date('Y-m-d_H-i-s_') . $i . '.eml';
    return file_exists($mail_dir . '/' . $fn) ? mkname( ++$i) : $fn;
}

Откройте конфигурационный файл PHP, он размещён здесь C:\Server\bin\PHP\php.ini. И добавьте туда одну строчку:

sendmail_path = "C:\Server\bin\PHP\php.exe C:\Server\bin\Sendmail\sendmail.php --dir C:\Server\bin\Sendmail\emails"

Сохраните файл и перезапустите сервер. Отлично, теперь все отправленные письма будут сохраняться в каталоге C:\Server\bin\Sendmail\emails\

054

Письма будут иметь расширение .eml и их можно открывать, например, программой Thunderbird. Либо обычным текстовым редактором.

11. Добавление PHP директории в PATH на Windows

Если этого не сделать, то могут быть проблемы с некоторыми модулями PHP, в том числе с php_curl.dll, php_intl.dll, php_ldap.dll, php_pdo_pgsql.dll и php_pgsql.dll. По крайней мере, при запуске сервера каждый раз в логах появляется следующее:

PHP Warning:  PHP Startup: Unable to load dynamic library 'C:\\Server\\bin\\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
PHP Warning:  PHP Startup: Unable to load dynamic library 'C:\\Server\\bin\\PHP\\ext\\php_intl.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
PHP Warning:  PHP Startup: Unable to load dynamic library 'C:\\Server\\bin\\PHP\\ext\\php_ldap.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
PHP Warning:  PHP Startup: Unable to load dynamic library 'C:\\Server\\bin\\PHP\\ext\\php_pdo_pgsql.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
PHP Warning:  PHP Startup: Unable to load dynamic library 'C:\\Server\\bin\\PHP\\ext\\php_pgsql.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

Чтобы избежать этих предупреждений, нужно добавить в системные переменные среды путь до PHP.

Нажмите кнопку Пуск (или как там она называется на Windows 10?), начните набирать «Изменение системных переменных среды» и откройте соответствующее окно настроек.

02

Там нажмите «Переменные среды»:

03

В окне «Системные переменные» найдите и кликните на Path, потом нажмите «Изменить»:

04

Далее «Создать» и впишите туда «C:\Server\bin\PHP\»:

05

Закройте все окна с сохранением сделанных изменений.

Перезапустите сервер.

12. Зависание, замедление трафика и/или ошибка сервера Asynchronous AcceptEx failed

Если ваш сервер даже без нагрузки «зависает» - не показывает веб-страницы до перезапуска, а в логах сервера ошибки Asynchronous AcceptEx failed:

[Thu Jun 05 07:24:55.747090 2014] [mpm_winnt:notice] [pid 1784:tid 444] AH00455: Apache/2.4.9 (Win64) PHP/5.5.13 configured -- resuming normal operations
[Thu Jun 05 07:24:55.747090 2014] [mpm_winnt:notice] [pid 1784:tid 444] AH00456: Apache Lounge VC11 Server built: Mar 16 2014 12:42:59
[Thu Jun 05 07:24:55.747090 2014] [core:notice] [pid 1784:tid 444] AH00094: Command line: 'c:\\Server\\bin\\Apache24\\bin\\httpd.exe -d C:/Server/bin/Apache24'
[Thu Jun 05 07:24:55.748090 2014] [mpm_winnt:notice] [pid 1784:tid 444] AH00418: Parent: Created child process 4952
[Thu Jun 05 07:24:55.957978 2014] [mpm_winnt:notice] [pid 4952:tid 388] AH00354: Child: Starting 64 worker threads.
[Thu Jun 05 07:26:16.695036 2014] [mpm_winnt:warn] [pid 4952:tid 1112] (OS 64)Указанное сетевое имя более недоступно.  : AH00341: winnt_accept: Asynchronous AcceptEx failed.
[Thu Jun 05 07:26:16.695036 2014] [mpm_winnt:warn] [pid 4952:tid 1112] (OS 64)Указанное сетевое имя более недоступно.  : AH00341: winnt_accept: Asynchronous AcceptEx failed.
[Thu Jun 05 07:26:48.250710 2014] [mpm_winnt:warn] [pid 4952:tid 1112] (OS 64)Указанное сетевое имя более недоступно.  : AH00341: winnt_accept: Asynchronous AcceptEx failed.
[Thu Jun 05 07:26:48.250710 2014] [mpm_winnt:warn] [pid 4952:tid 1112] (OS 64)Указанное сетевое имя более недоступно.  : AH00341: winnt_accept: Asynchronous AcceptEx failed.
[Thu Jun 05 07:29:27.137784 2014] [mpm_winnt:warn] [pid 4952:tid 1112] (OS 64)Указанное сетевое имя более недоступно.  : AH00341: winnt_accept: Asynchronous AcceptEx failed.
[Thu Jun 05 07:29:27.137784 2014] [mpm_winnt:warn] [pid 4952:tid 1112] (OS 64)Указанное сетевое имя более недоступно.  : AH00341: winnt_accept: Asynchronous AcceptEx failed.

То в конфигурационный файл Apache добавьте:

AcceptFilter http none 
AcceptFilter https none 
EnableSendfile off 
EnableMMAP off

13. Удаление сервера

Остановите службы и удалите их из автозапуска последовательно выполнив в командной строке:

c:\Server\bin\Apache24\bin\httpd.exe -k stop
c:\Server\bin\Apache24\bin\httpd.exe -k uninstall
net stop mysql
c:\Server\bin\mysql-5.7\bin\mysqld --remove 

Удалите файлы сервера, для этого удалите папку C:\Server\Внимание, это удалит все базы данных и ваши сайты.

14. У меня ничего не работает

ПРЕЖДЕ ЧЕМ НАПИСАТЬ КОММЕНТАРИЙ (ЧИТАТЬ ОБЯЗАТЕЛЬНО):

1. Если у вас что-то не работает – дело точно в вас, а не в инструкции. Этой инструкции более 5 лет (она писалась для другого сайта) с тех пор она регулярно обновляется и повторно проверяется на машинах с разной конфигурацией. За всё время её просмотрело несколько сотен тысяч человек. У большинства всё работает.

2. От инструкции нельзя отступать ни в чём: если вы решили установить на другой диск, не активировать какие-либо модули, не устанавливать распространяемый компонент Visual C++ для Visual Studio и т.п. и у вас не работает, то дело именно в этом и не нужно здесь задавать вопросы «почему не работает»? Поэтому и не работает.

3. Бывает редкая ошибка, связанная с тем, что какая-то другая программа уже прослушивает 80й порт. Чтобы определить, занят ли уже порт 80 сделайте так:

1) нажмите сочетание клавиш WIN + x

2) из открывшегося списка выберете «Командная строка (администратор)»

3) выполните там:

for /f "tokens=1,2,3,4,5*" %i in ('netstat -aon ^| findstr ":80" ^| findstr /i listening') do echo %j %l & @tasklist | findstr %m

Если какая-то программа уже висит на 80м порту, то вы её увидите.

4. Если вы начали установку по какой-то другой инструкции, там что-то не пошло, пришли сюда и стали продолжать по этой, а потом ничего не работает, то просьба перенаправить ваш вопрос автору другой инструкции. Либо всё удалить и начать заново именно по этому мануалу. Вопросы принимаются только от тех, кто всё делал именно по вышеприведённой инструкции. Кстати, тогда не будет ошибок и не придётся задавать вопросы.

5. Внимательно смотрите на файлы, которые скачиваете. ОЧЕНЬ внимательно. Apache с сайта apachelounge.com и Apache с сайта httpd.apache.org очень сильно различаются (в плане исполнимых файлов). Версия Apache Lounge выбрана не просто так – на это есть серьёзнейшие причины. Всё в этой инструкции не просто так…

На странице загрузки PHP 12 версий! И 24 файла для загрузки!!! Внимательно читайте рекомендацию о скачивании файла.

6. Если вы хотите сделать установку в другую папку и надеетесь, что всё заработает – не надейтесь, не заработает. Самые догадливые пытаются «на ходу» изменить конфигурационные файлы. Те, кто что-то пропустил, потом пишут сюда что «не работает». Или ничего не меняйте, или не пишите сюда о своих проблемах.

7. На Windows XP не работает, никогда не будет работать и никто вам не поможет. Обновитесь уже, в конце концов, – не будьте некрофагами.

8. Что делать, если я всё делаю по инструкции, а сервер всё равно не работает?

1) Начните с того, что сделайте всё заново на свежую голову. Мне уже надоело отвечать при той ситуации, что 99% ошибок связаны только с тем, что кто-то где-то недосмотрел или решил сделать «лучше», «по-своему».

2) Если дело не в этом, то как можно подробнее опишите свою ошибку – в чём она заключается. Если после вашего комментария мне нужно спрашивать, «что за ошибка, в чём она проявляется?», то такой комментарий будет просто удалён.

3) Приведите содержимое файла C:\Server\bin\Apache24\logs\error.log. Не надо его менять, обрезать, выбирать «нужное», переводить и т.д. Я сам разберусь. Если файл большой, залейте его на файлообменник.

9. Если ничего не помогло, то просто примите как данность: не все могут прыгать на 2 метра, не у всех руки достаточно прямые, растут из нужного места и достаточно внимательности чтобы самостоятельно установить веб-сервер… Посмотрите в сторону многочисленных готовых сборок…

10. Если вы в точности всё делали по инструкции, но у вас возникла ошибка, то я точно постараюсь помочь вам разобраться в вашей проблеме, если вы сделаете следующие шаги (сразу в одном посте, а не чтобы я спрашивал несколько раз):

  • Подробно опишите свою проблему и приведёте сообщения об ошибках.
  • Выполните в командной строке
tree C:\Server > C:\Server\tree.txt

У вас в каталоге C:\Server появится файл tree.txt.

  • Этот файл, а также ещё файлы:
  • C:\Server\bin\Apache24\conf\httpd.conf
  • C:\Server\bin\mysql-5.7\my.ini
  • C:\Server\bin\PHP\php.ini
  • C:\Server\data\htdocs\phpmyadmin\config.inc.php
  • C:\Server\bin\Apache24\logs\error.log

запакуйте в архив, выложите на любой файлообменник и разместите здесь ссылку.


Хостинг

Хороший хостинг с PHP (с выбором версий), с MySQL и phpMyAdmin. Данный сайт размещён именно на нём: отзывчивая и квалифицированная техническая поддержка, установка WordPress и других веб-приложений в одни клик, домены в подарок при оплате за год, бесплатный перенос сайта. При заказе хостинга по этой ссылке + 1 месяц бесплатно (промокод b33e0e2f).

Рекомендуемые статьи:

132 комментария to Установка веб-сервера (Apache 2.4, MySQL 5.7, PHP 7, phpMyAdmin) на Windows 10

  1. Евгений:

    2 вопроса. 

    1) Зачем нужно менять текст:

    # 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

    Текст не который меняем тот же саймый.

    2) Не получается установить Апачи изначально. Но у меня версия 2.4.18

    • Роман:

      У всех будет пробелма после распаковки phpmyadmin , будет требовать mb string. Авторы статьи допустили ошибку, не до конца указали путь PHPIniDir "C:/Server/bin/PHP", не хватает в конце PHP слеша PHPIniDir "C:/Server/bin/PHP/"

      По это и ругается phpmyadmin и требует mbstring

      • Alexey Alexey:

        Вы протестировали (что без слеша не работает, а со слешем работает) или это «в теории»?

        Сейчас я специально перепроверил несколько раз, в том числе удалял PHP директорию из системного PATH (у некоторых этот путь не прописан), результат всегда один – есть слеш или его нет, разницы никакой.

        • Роман:

          именно протестировал. У меня небыло прописано в патч пути и все равно была ошибка, добавив его все равно ошибка. А вот как только дописал слеш сразу myadmin прогрузился и  на странице инфо пхп подтянуло файл ини

  2. Alexey Alexey:

    Начнём со второго вопроса, я тоже себе поставил последнюю версию Apache - эта инструкция полностью с ней совместима.

    Ошибки возникают в двух случаях:

    • невнимательность (что-то пропустили или не посчитали нужным сделать)
    • когда пользователь хочет что-то поменять (установить на другой диск, поменять папки установки и т.п.).

    Вы напишите, какие у вас ошибки - посторяюсь помочь советом.

    А теперь вернёмся к первому вопросу. Помните про невнимательность?

    меняем

        # 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

    на

       # 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 All

  3. Евгений:

    На счет All правда не заметил. Пути и диски и папки все правильно пишу. Несоответсвие идет уже в коммандной строке, а потом нет надписи "Index of /". Кидаю скрин коммандной строки. Спасибо за помощь.

    • Ренат:

      если у вас не первая установка Апач, и вы её уже проводили в командной строке, то вам необходимо деинсталировать изменения внесённые предыдущей установкой.  
      c:\Server\bin\Apache24\bin\httpd.exe -k install
      попробуйте вместо install - uninstall, мне помогло

       

  4. Виталий:

    У меня Windows 10, phpmyadmin не фурычит ошибка http 500, i.php инфу отображает, что я не так делаю, 

    • Alexey Alexey:

      Что у вас в файле C:\Server\bin\Apache24\logs\error.log ? Если большой, выложите на какой-нибудь файлообменник. Если не слишком большой, скопируйте содержимое прямо здесь, в комментарий.

  5. Alexandr:

    У меня Windows 10. Ошибка в Apache. В error.log пишется: Starting the 'Apache2.4' service [Sun Sep 11 23:44:18.285669 2016] [mpm_winnt:crit] [pid 7688:tid 496] (OS 2)Не удается найти указанный файл.  : AH00378: Failed to start the 'Apache2.4' service Starting the 'Apache2.4' service (OS 5)Отказано в доступе.  : AH00373: Failed to open the 'Apache2.4' service

    • Alexey Alexey:

      Alexandr, вы Виталий? Если вы не Виталий, то начать нужно с объяснения проблемы.

      ДЛЯ ВСЕХ: прежде чем написать комментарий, читайте новый раздел: https://hackware.ru/?p=21#11

  6. Dmitry:

    Выполнил все пункты 1- 6 в итоге вместо показанного на картинке phpMyAdmin вышло вот что:

    Fatal error: Uncaught Error: Call to undefined function mb_detect_encoding() in C:\server\data\htdocs\phpmyadmin\libraries\php-gettext\gettext.inc:177 Stack trace: #0 C:\server\data\htdocs\phpmyadmin\libraries\php-gettext\gettext.inc(282): _encode('The %s extensio…') #1 C:\server\data\htdocs\phpmyadmin\libraries\php-gettext\gettext.inc(289): _gettext('The %s extensio…') #2 C:\server\data\htdocs\phpmyadmin\libraries\core.lib.php(306): __('The %s extensio…') #3 C:\server\data\htdocs\phpmyadmin\libraries\core.lib.php(961): PMA_warnMissingExtension('mbstring', true) #4 C:\server\data\htdocs\phpmyadmin\libraries\common.inc.php(102): PMA_checkExtensions() #5 C:\server\data\htdocs\phpmyadmin\index.php(13): require_once('C:\\server\\data\\…') #6 {main} thrown in C:\server\data\htdocs\phpmyadmin\libraries\php-gettext\gettext.inc on line 177

    • Alexey Alexey:

      Выполните в командной строке

      tree C:\Server > C:\Server\tree.txt

      У вас в каталоге C:\Server появится файл tree.txt. Этот файл, а также ещё файлы:

      • C:\Server\bin\Apache24\conf\httpd.conf
      • C:\Server\bin\mysql-5.7\my.ini
      • C:\Server\bin\PHP\php.ini
      • C:\Server\data\htdocs\phpmyadmin\config.inc.php

      запакуйте в архив, выложите на любой файлообменник и разместите здесь ссылку.

      • Dmitry:

        https://yadi.sk/d/OhViYLFvvPskC

        если я правильно понял то это ссылка на архив на яндекс диске.

      • Dmitry:

        Нашел причину. У меня заработало только когда я четко задал путь до модулей

        extension_dir = «C:/server/bin/PHP/ext»

        В Вашей инструкции про это не сказано. Возможно я где то ранее ошибку допустил и у меня так заработало.

        • Alexey Alexey:

          На моём компьютере, кстати, ваши конфигурационные файлы прекрасно работали. Как я выяснил, у меня путь до PHP был прописан в переменных среды – поэтому и работало.

          Сейчас поправлю инструкцию.

  7. Алекс:

    В данной строке скорее всего ошибка? DirectoryIndex index.html index.php index.htm

    • Alexey Alexey:

      DirectoryIndex устанавливает индексные файлы, т.е. тот файл, который будет отображён если открывается каталог без указания файла, например, http://localhost/test/ Поскольку файл не указан, то сервер будет искать index.html и если он есть в папке test, то отобразит его. Я к этому файлу добавляю ещё два index.php и index.htm. 

      index.php точно нужен, поскольку если он не указан, и вы откроете, например, http://localhost/phpmyadmin/, то вместо того, что ожидаете, увидите список файлов в каталоге. И чтобы увидеть веб-интерфейс вам придётся перейти по адресу http://localhost/phpmyadmin/index.php

      Аналогично и с index.htm - .htm также популярное расширение.

      Т.е. можно и без изменения этой директивы – сервер будет работать, но это добавит неудобство.

  8. Игорь:

    Здравствуйте Alexey,

    Хочу поблагодарить за столь полезные инструкции, а самое главное все с первого раза заработало.

    Большое спасибо!

     

  9. Дмитрий:

    Здавсвтуйте Alexey,

    Спасибо, все прекрасно поставилось и заработало, но вопрос такой а как дальше создать свои вир.хосты . Где прописать настйроки и какие ?

  10. Pavel:

    Подскажите, сделал всё так же, всё работает, как теперь прописать хосты можно ? На линуксе прям в hosts прописывается)

  11. Дмитрий:

    А уменя вопрос такой. А как все удалить ? Ведь в рееестре наверно какие то следи остануться после удаления папок. И еще, как можно ускорить быстродействие сайта, а точто wordpress открывается не шибко быстро как сервере в интернете.

    • Alexey Alexey:

      Я добавил раздел про удаление сервера: https://hackware.ru/?p=21#12

      В реестр программы ничего не записывают. Всё, что им нужно, они хранят в конфигурационных файлах, настройка которых описана в этой инструкции.

      Что касается скорости открытия, думаю, это связано исключительно с производительностью вашего компьютера. У меня локальный сервер бегает быстро, даже в маломощных виртуальных машинах. Хотя всё равно не понимаю, как сервер может работать медленно: он очень нетребователен к ресурсам, т.е. если на маломощном компьютере запускать браузер, то браузеру понадобиться несколько секунд для открытия. Серверу даже на слабой машине нужны доли секунды, чтобы сформировать страницу. Т.е. если вы открываете ярлык локалхоста и вам кажется, что он открывается долго, то может быть это просто долго запускается браузер?

      Ну или какая-нибудь экзотическая ошибка, о которой я не знаю.

  12. Наталия:

    Добрый день.
    Выполнила 1-6 и также увидела
    Fatal error: Uncaught Error: Call to undefined function mb_detect_encoding() in C:\Server\data\htdocs\phpmyadmin\libraries\php-gettext\gettext.inc:177 Stack trace: #0 C:\Server\data\htdocs\phpmyadmin\libraries\php-gettext\gettext.inc(282): _encode('The %s extensio…') #1 C:\Server\data\htdocs\phpmyadmin\libraries\php-gettext\gettext.inc(289): _gettext('The %s extensio…') #2 C:\Server\data\htdocs\phpmyadmin\libraries\core.lib.php(306): __('The %s extensio…') #3 C:\Server\data\htdocs\phpmyadmin\libraries\core.lib.php(961): PMA_warnMissingExtension('mbstring', true) #4 C:\Server\data\htdocs\phpmyadmin\libraries\common.inc.php(102): PMA_checkExtensions() #5 C:\Server\data\htdocs\phpmyadmin\index.php(13): require_once('C:\\Server\\data\\…') #6 {main} thrown inC:\Server\data\htdocs\phpmyadmin\libraries\php-gettext\gettext.inc on line 177

    При этом  extension_dir = "C:\Server\bin\PHP\ext\" прописано именно так.
    На других форумах пишут, что должно быть активно mbstring. Но мы его раскомментировали. Либо надо еще что-то сделать ?
    Заранее спасибо!

    • Alexey Alexey:

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

      Если сервер перезапустили, а ошибка осталась, то одним из случаев может быть когда файл php.ini не подхватывается сервером. У меня получается так сделать, если при настройке Apache я добавляю строки

      AddHandler application/x-httpd-php .php
      LoadModule php7_module "C:/Server/bin/PHP/php7apache2_4.dll"

      А строку

      PHPIniDir "C:/Server/bin/PHP"

      не добавляю или пишу её с ошибкой.

      Чтобы убедиться, что дело именно в том, что не подхватывается файл php.ini, выполните phpinfo (); (в статье описано, как это сделать) и найдите там Loaded Configuration File. Если запись такая:

      Loaded Configuration File	(none)

      То дело именно в этом.

      Правильно должно быть так:

      Loaded Configuration File	C:\Server\bin\PHP\php.ini
      
      • Наталия:

        Cпасибо за подсказку. Оказалось, что php.ini-development надо было переименовать в просто php. 
        Но у вас на скриншоте также Loaded Configuration File   (none) . Вот и думала, что все правильно идет)

      • Роман:

        Как раз таки у вас в описании ошибка. Вы не до конца указали путь PHPIniDir "C:/Server/bin/PHP", не хватает в конце PHP слеша PHPIniDir "C:/Server/bin/PHP/"

        По это и ругается phpmyadmin и требует mbstring

  13. Мария:

    Alexey, благодарю Вас за отличную, очень понятную и последовательную инструкцию по настройке сервера. Это лучшая статья, что я находила на просторах Internet.

    Ваше строгое напутствие из пункта 14. "У меня ничего не работает" заставляет думать и самой искать решения на возникшие сложности при установке.

    Итог: все установила, настроила, сервер работает:)

  14. Владимир:

    Уважаемый, Алексей.

    Все, указанные вами дистрибутивы установились без ошибок и в точном соответствии с вашими инструкциями. Проблемы возникли при создании тестовой базы данных.

    База данных test1 > таблица orders >

    Не могу отформатировать поле АМТ тип DECIMAL в закладке "Структура"

    Какое бы значение я ни указал справа от запятой в поле "Длина/Значения", при просмотре SQL кода запроса, выражение DECIMAL(целая часть, дробная часть) принимает ТОЛЬКО целочисленные значения. То есть DECIMAL(10), DECIMAL(6) или DECIMAL(21), но никак не DECIMAL(10,2), DECIMAL(6,3) или DECIMAL(21,5)

    В закладке же "SQL" запрос на изменение формата поля нормально вводится, редактируется и выполняется.

    Если я все правильно понимаю, это либо ошибка настройки phpMyAdmin, либо ошибка в работе самого приложения.

    Подскажите, пожалуйста, как это исправить. Как нормально форматировать и переформатировать поля таблицы в закладке "Структура", которая, как я понимаю, для этого и предназначена?

    Архив: https://yadi.sk/d/OD3h19-Two3xq

    С уважением, Владимир Корякин.

     

    • Alexey Alexey:

      Приветствую! Это исключительно ошибка phpMyAdmin. Она будет исправлена в версии 4.6.5.

      Тикеты: раз, два.

      Патч (нужно уметь пользоваться git, чтобы его применить), если невозможно ждать и исправление нужно прямо сейчас.

      Ещё один вариант обновиться раньше других. Скачайте файл https://raw.githubusercontent.com/phpmyadmin/phpmyadmin/master/libraries/Table.php (это файл из следующей версии, ссылка ведёт на гитхаб, официальный аккаунт разрабочиков phpMyAdmin). Переименуйте его – удалите расширение .txt, чтобы получилось название файла Table.php. И замените им тот, который размещён в C:\Server\data\htdocs\phpmyadmin\libraries\Table.php

      После этого всё будет хорошо:

      11

  15. Владимир:

    Спасибо, Алексей. Заменил Table.php на ваш и все заработало.

  16. Юлиан:

    Установил апач, при заходе на localhost вместо IndexOf, появляется вот это:

    Forbidden

    You don't have permission to access / on this server.

  17. Денис:

    Спасибо большое за инструкцию, в инструкции сказано создать файл config.inc.php в C:\Server\data\htdocs\phpMyAdmin, что являеться не верным. там есть дефолтный конфиг config.****.inc.php который надо переименовать и его редактировать, добавлять строки новые, иначе белый экран в http://localhost/phpMyAdmin обеспечен многим (тем кто не имеет опыта)

    • Иван:

      Так и есть. Столкнулся именно с белым экраном. Если config.sample.inc.php переименовать в config.inc.php, то получим "Добро пожаловать в phpMyAdmin" с запросом логина и пароля (а без него вход - не дает).

    • Иван:

      Потрачено 10 минут на коррекцию config.sample.inc.php с включением параметров, предлагаемых автором в его коде, с последующим пересохранением файла как config.inc.php. Панелька заработала.

  18. Владимир:

    Если Вы уже установили и успешно опробовали Apach+PHP+MySQL на своем компьютере, советую Вам сделать следующее:
    1. Заархивировать папку Server и сохранить её на любом носителе, кроме диска C: вместе с установочными файлами.  (папка на диске занимает 2.10 ГБ, архив - 263 МБ)
    2. Создать в любом текстовом редакторе файл restore.bat со следующим содержимым:
    ———————
    c:\Server\bin\Apache24\bin\httpd.exe -k install
    pause 0
    c:\Server\bin\Apache24\bin\httpd.exe -k start
    pause 0
    C:\Server\bin\mysql-5.7\bin\mysqld --initialize-insecure --user=root
    C:\Server\bin\mysql-5.7\bin\mysqld --install
    net start mysql
    pause 0
    c:\Server\bin\Apache24\bin\httpd.exe -k restart
    pause 0

    ———————
    В том случае, если вам придется по тем или иным причинам переустанавливать Windows 10 или восстанавливать диск C:, восстановить папку Server на нем будет очень просто. Нужно будет всего лишь:

     

    1. Распаковать содержимое сохраненного архива на диск C:
    2. Установить vc_redist.x64.exe
    3.
    Запустить и выполнить от имени Администратора файл restore.bat

  19. Вячеслав:

    Алексей, спасибо большое за такую подробную инструкцию.
    Может кто-то столкнется с проблемой, которая выявилась у меня при запуске phpmyadmin:
    при входе имя - root, поле с паролем пустое и дальше пишет, что с такой конфигурацией необходим пароль.
    Проблему решил так:
    открыл  …/phpmyadmin/libraries/config.default.php
    нашел в нем   $cfg['Servers'][$i]['AllowNoPassword'] = false;
    и поменял false на true.
    Перезагрузил apachi и в панель запускают без пароля. 
    При создании config.inc.php мы прописывали $cfg['Servers'][$i]['AllowNoPassword'] = true; а вот про корректировку в config.default.php забыли.

     

  20. Ольга:

    Спасибо, Алексей! С Вашими инструкциями даже у такой блондинки, как я, все получилось))) Хотя пару раз возникли ошибки, но все дело, как Вы и написали, исключительно в невнимательности!

  21. Валентин:

    После распаковки phpmyadmin выдаёт критические ошибки:

    Fatal error: Uncaught Error: Call to undefined function mb_detect_encoding() in C:\Server\data\htdocs\phpMyAdmin\libraries\php-gettext\gettext.inc:177 Stack trace: #0 C:\Server\data\htdocs\phpMyAdmin\libraries\php-gettext\gettext.inc(282): _encode('The %s extensio…') #1 C:\Server\data\htdocs\phpMyAdmin\libraries\php-gettext\gettext.inc(289): _gettext('The %s extensio…') #2 C:\Server\data\htdocs\phpMyAdmin\libraries\core.lib.php(306): __('The %s extensio…') #3 C:\Server\data\htdocs\phpMyAdmin\libraries\core.lib.php(961): PMA_warnMissingExtension('mbstring', true) #4 C:\Server\data\htdocs\phpMyAdmin\libraries\common.inc.php(102): PMA_checkExtensions() #5 C:\Server\data\htdocs\phpMyAdmin\index.php(13): require_once('C:\\Server\\data\\…') #6 {main} thrown in C:\Server\data\htdocs\phpMyAdmin\libraries\php-gettext\gettext.inc on line 177

  22. Алексей:

    Добрый день, Алексей!
    У меня возникли проблемы с кодировкой…
    При вызове:           

    $link = mysqli_connect($host, $user, $pswd, $database) 
    or die("не могу подключитсья к БД " . mysqli_error($link));

    $query ="SELECT * FROM student";
                $result = mysqli_query($link, $query) or die("не могу получить результат " . mysqli_error($link)); 

    if($result)
    {
        echo "Подключение выполнено успешно;\n";
        printf("Кодировка: %s\n", $link->character_set_name());
    }
    while($row=mysqli_fetch_assoc($result)){
                print "<tr>
                <br>
                            <td>".$row['id']."</td>
                            <td>".$row['fio']."</td>
                            <td>".$row['groupp']."</td>
                            <td>".$row['number']."</td>
                            <td><a href='delete_student.php?id=".$row['id']."'>Удалить</a></td>
                        </tr>";
            }

     

     

    Выдает:

    Подключение выполнено успешно; Кодировка: latin1 
    1 kjhfkjcf kjfhkjhf ????????? ???12?? ????12? Удалить 
    2 rger eargg arg jhjlfh???????? dv344rg54 sd23 Удалить 
    3 ??????? 23??? ??2?35 Удалить

    Вопрос такой:

    Как и где необходимо поменять кодировку, чтобы кирилица отображалась правильно, действия в *.ini, *.cfg  не приносили результат. Смена кодировки в phpmyadmin  и в notepad++, не приводили к необходимому результату…
    Хотел сам разобраться в этом, но похоже, что мозг закипел))

  23. Алексей:

    Вот правильная строчка

     <td><a href='delete_student.php?id=".$row['id']."'>Удалить</a></td>

  24. Артем:

    Приветствую)

    Возникла следующая проблема - при установке PHP не перезапускается Apache server, пишет следующее в консоле: "Syntax error in 524 line Cannont load "C:/Server/bin/PHP/php7apache2_4.dll" to server"

    В conf файл добаляю следующее:

    PHPIniDir "C:/Server/bin/PHP"
    AddHandler application/x-httpd-php .php
    LoadModule php7_module "C:/Server/bin/PHP/php7apache2_4.dll"

    Буду благодарен за подсказку)

  25. Артем:

    Спасибо за подробную и хорошую инструкцию!

  26. Дмитрий:

    Установил Apache следуя вашего мануала…Все проверил раз 30,один в один как у вас написано.Не работает.Открываю командную строку ввожу c:\Server\bin\Apache24\bin\httpd.exe -k install...а получаю

    Apache 2.4: Service is already installed.//// Порт 80 освободил Visual c++ установил.////

    • Дмитрий:

      Все заработало чувак)))))спасибо.Я когда на localhost выходил, он мне писал  что страница не найдена.а сейчас все ок))))целых 5 часов мучался с этими проверками

  27. Илья:

    Добрый Алексей 

    зоходя по ссылке http://localhost/i.php место того что PHP установлено у меня появляеться 

    <?php

    phpinfo ();

    спасибо за внимание

  28. Элчин:

    C:\Users\Админ>C:\Server\bin\Apache24\bin\httpd.exe -k install
    [Fri Nov 11 08:40:28.565103 2016] [mpm_winnt:error] [pid 3024:tid 116] AH00433:
    Apache2.4: Service is already installed.

    Порт не занят, все делал по инструкции.

  29. Владимир:

    Извините, Алексей, мой вопрос скорее всего дурацкий, но я только начинаю изучать PHP+MySQL и, думаю, он все же уместен т.к. для мня он не разрешим в рамках имеющихся у меня в данный момент знаний.

    Вся система установилась у меня отлично. Нормально работает и PHP и phpMyAdmin, но только по отдельности.

    Создал в папке C:\Server\data\htdocs файл_test0000.html следующего содержания:

    <html><head>
    <link href="../css/phpMM.css" rel="stylesheet" type="text/css" />
    </head><body>

    <?php
    $link1 = mysql_connect('localhost', 'root');
    ?>
    </body></html>

    и получаю сообщение:

    Fatal error: Uncaught Error: Call to undefined function mysql_connect() in C:\Server\data\htdocs\_test0000.html:7 Stack trace: #0 {main} thrown in C:\Server\data\htdocs\_test0000.html on line 5

    Может я чего-то не подключил или не прописал какой-нибудь параметр?
    Требуемые файлы находятся в: https://yadi.sk/d/aTz0qt-7yS8UK

    • Alexey Alexey:

      Данное расширение — mysql_connect() — устарело, начиная с версии PHP 5.5.0, и будет удалено в будущем. Используйте вместо него MySQLi или PDO_MySQL. Альтернативы для данной функции:

      • mysqli_connect()
      • PDO::__construct()

      Т.е. просто смените учебник, по которому учитесь, на более актуальный.

  30. Petr:

    Здравствуйте, не получается запустить phpmyadmin. Я уже не первый, но не нашел ответ на вопрос к решить эту ошибку. Простите за повтор, но помогите понять в чем проблема?  Спасибо 

    Фатальная ошибка : Uncaught Ошибка: Вызов неопределенной функции mb_detect_encoding () в C: \ Data \ Server \ HTDOCS \ PHPMyAdmin \ библиотеки \ PHP-Gettext \ gettext.inc: 177 Стек трассировки: # 0 C: \ Server \ Data \ HTDOCS \ PHPMyAdmin \ библиотеки \ PHP-Gettext \ gettext.inc (282): _encode ( '% S в extensio …') # 1 C: \ Server \ Data \ HTDOCS \ PHPMyAdmin \ библиотеки \ PHP-Gettext \ gettext.inc ( 289): _gettext ( '% S в extensio …') # 2 C: \ Server \ Data \ HTDOCS \ PHPMYADMIN \ библиотеки \ core.lib.php (306): __ ( '% S в extensio …' ) # 3 C: \ Server \ Data \ HTDOCS \ PHPMyAdmin \ библиотеки \ core.lib.php (961): PMA_warnMissingExtension ( 'MBstring', TRUE) # 4 C: \ Server \ Data \ HTDOCS \ PHPMYADMIN \ библиотеки \ Common. inc.php (102): PMA_checkExtensions () # 5 C: \ Server \ Data \ HTDOCS \ PHPMyAdmin \ index.php (13): require_once ( 'C: \\ Data Server \\ \\ …') # 6 {} главный выброшен в C: \ Server \ Data \ HTDOCS \ PHPMyAdmin \ библиотеки \ PHP-Gettext \ gettext.inc на линии 177

  31. Petr:

    И объясните по 6 пункту- нужно создать config.inc.php или переименовать config.SAMPLE.inc.php убрав SAMPLE. Если переименовать то куда код вставить. 

  32. Максим:

    В новой версии php 7 (у меня 7.0.13) в пункте настройки php.ini, где ищем первую группу строк

    После ;extension=php_fileinfo.dll

    Есть строка ;extension=php_ftp.dll

    Её не удалил и не раскомментировал, всё супер работает. Но в статье думаю надо поправить, а то в будущем малоли кто жаловаться будет. В остальном всё супер, спасибо!

    • Alexey Alexey:

      Максим, к сожалению, ваш комментарий попал в спам, поэтому отвечаю только сейчас.

      Спасибо большое, что обратили на это моё внимание – очень ценю такие полезные замечания. Прямо сейчас подправлю статью.

  33. Ольга:

    Здравствуйте! Очень помогла ваша статья, большое спасибо!!! Долго пыталась наладить совместную работу всех программ, пока не встретила эту статью. Все заработало с почти первого раза.))) Очень порадовало, что статья свежая и использованы свежие файлы.

    Хочу рассказать о своей ошибке. Может кому пригодится. После установки Apache, выдавало примерно такую же ошибку как в комментарии выше:

    [Fri Nov 11 08:40:28.565103 2016] [mpm_winnt:error] [pid 3024:tid 116] AH00433:
    Apache2.4: Service is already installed.

    Ошибка была в том, что до удаления ранее установленного Apache, не были остановлены службы. И в службах висел старый Apache. Удалить его можно в командной строке:

    C:\Windows\system32>sc delete ServiceName
    или
    C:\Windows\system32>sc delete "Service Name"

    где ServiceName или "Service Name" имя удаляемой службы

    После этого удаления у меня все заработало.

    Еще раз большое спасибо автору!!!!

     

  34. Виктор:

    Алексей спс за статью но при запуске в командной страке выдаёт ошибку в 244 строке 

    Соответственно не запускается localhost 

    Подскажите , что делать,спс

  35. Кристина:

    Добрый день. на первых этапах, при команде 

     

    c:\Server\bin\Apache24\bin\httpd.exe -k install

     

    появляется такая ошибка (см.принскрин)

    http://uploads.ru/KIjFJ.png

  36. Сыдым:

    у меня появляется вот такая ощибка когда запускаешь phpmyadmin

     The mbstring extension is missing. Please check your PHP configuration.
     

    • Ренат:

      Сыдым, SERG13

      Проверьте файл php.ini, скорее всего не расскоментирована, или неверно указана строка:

      ; extension_dir = "ext"

      В данной строке должен указываться путь к ext на сервере. В статье он указан.

      Lu, а Вы добавили в файле httpd.conf строки, указывающие на php машину ? Внимательно прочитайте статью, там они указаны.

      Статья написана толково, и если все делать так, как описано, должно все получится. А если что-то не так, то имеются уточнения в комментариях, их тоже прочитайте внимательно.

      • Lu:

        в общем мучалась 3 дня, в итоге снесла апач, поставила денвер. все работает без проблем..

      • Lu:

        То что вы говорите это все раскоменчивала и прописывала. Может если  бы с самого начала работала по вашей статье,вышло бы иначе, однако ее я нашла уже в конце, когда моральные силы были на исходе) 

    • Alex:

      Тоже долго мучился 

      Забыл переименовать файл  "php.ini-development" в "php.ini"

  37. Lu:

    У меня выдает вот так, то есть получается не находит php.ini, что делать, я новичок в этом деле

    phpinfo()

    Configuration File (php.ini) Path

    C:\Windows

    Loaded Configuration File

    (none)

  38. SERG13:

    Alexey, подскажите, на этапе установки phpMyAdmin выдаёт ошибку "The mbstring extension is missing. Please check your PHP configuration." как здесь быть?

  39. Ренат:

    Пара уточнений.

    До того, как запустите инсталяцию сервера нужно проинсталлировать С++. В статье указана vc_redist.x64.exe. Для 32 разрядных версий Windows она не подойдет. Понадобится vc_redist.x86, скачать можно там же. Ссылка: https://www.microsoft.com/ru-ru/download/details.aspx?id=53840

    Выберите нужную версию, и скачивайте.

    Второе, в файле httpd.conf нужно исправить строку:

    Listen 80

    на

    Listen 127.0.0.1:80

    иначе сервер не сможет запустится, так как будет пытатся запускатся с адресом 0.0.0.0

     

     

    • Alexey Alexey:

      Спасибо за полезный комментарий. Про C++ Redistributable Visual Studio 2015 я несколько раз обновлял ссылку по мере выхода новых версий и, судя по всему, в какой-то момент забыл про 32-битные системы.

      С настройкой директивы Listen также согласен – правильно в первую очередь с точки зрения безопасности, чтобы сервер не был виден по внешнему IP. Но такая настройка вызовет проблемы у тех, у кого IPv6, проблемы с доступом по IP вида 127.0.0.*, например, 127.0.0.2. Само собой, веб-сервер не будет доступен ни с какого-либо другого компьютера даже в локальной сети.

      Можно сделать ещё так, Listen оставить без изменений, а в секции Directory убрать Require all granted и вписать туда что-то вроде такого:

      <Directory "c:/Server/data/htdocs/">
      ……………………..
      ……………………..
          Require ip 10.0.0.0/8
          Require ip 127.0.0.0/8
          Require ip 172.16.0.0/12
          Require ip 192.168.0.0/16
          Require ip fc00::/7
          Require ip ::1
      </Directory>

      Таким образом будет закрыт доступ к веб-серверу из глобальной сети, но останется доступ из локальной. Естественно, список подсетей можно изменить под свои нужды.

      Учитывая редкость IPv6 и простоту вашего варианта, в инструкции я исправил по вашему совету.

      И спасибо, что помогаете другим пользователям.

    • Alexey Alexey:

      Опять убрал про Listen 127.0.0.1:80, в Википедии нашёл:

      0.0.0.0/8 - Адреса источников пакетов «этой» («своей») сети.

  40. Алексей, огромное спасибо за статью.

    На VDS с Windows 2008_64 у меня всё прошло без "запинки"..

    Подскажите вот что: как мне теперь сделать так, чтобы вэб-сервер был доступен извне ?

    Хочется из домашнего компьютера видеть в браузере ту же картинку, что и на удалённом.

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

     

    • Alexey Alexey:

      Вы к веб-серверу будете обращаться по IP или хотите привязать к нему доменное имя?

      Если по IP, то всё совсем просто. Найдите в файле c:\Server\bin\Apache24\conf\httpd.conf строку

      Listen 80

      И поменяйте на

      Listen IP_вашего_сервера:80

      Вместо IP_вашего_сервера впишите настоящий IP вашего VDS.

      Если хотите привязать доменное имя, то здесь посложнее. Во-первых, нужно сделать соответствующую DNS запись. Это даже не в вашем VDS – вам нужно проконсультироваться в том месте, где вы покупали домен. Точно нужно настроить виртуальные хосты. Здесь я показывал на примере локальных виртуальных хостов – с реальным всё также.

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

      Я сам ни разу не настраивал веб-сервер под Windows на VDS (только под Linux), поэтому точнее подсказать не могу. 

      • Ещё раз огромное спасибо, Алексей.

        У меня всё получилось.

        Сначала подкорректировал рекомендуемую вами строку в файле c:\Server\bin\Apache24\conf\httpd.conf. В боаузере на локальном компьютере вбил IP своего VDS. Увиденное "Страница недоступна немного расстроило". Но тут же в голову пришла мысль о том, что на VDS необходимо открыть 80 порт в брандмауэре Windows. Создал два правила для 80 порта: для входящих и исходящих соединений. В результате всё зарабортало.

        • Alexey Alexey:

          Я рад, что получилось, но если сервер открыт всем, то нужно почитать что-нибудь о тонкой настройке безопасности. Как минимум, для MySQL сделать пароль. Вход в phpMyAdmin сделать по паролю. Возможно, создать не-рут пользователей базы данных, а руту запретить удалённый вход и т.д.: это отдельная, намного более сложная тема. В этой инструкции всё делается для удобства, когда я писал, то думал только о локальном сервере.

  41. Привет Алексей! С 98-го года за компьютером, чуть позже в сети. Впервые за всё это время встречаю в Интернете материал, достойный восхищения! Прошел все изложенные шаги по установке и наладке без вопросов и проблем за исключением, моя ОС (Win.10) не воспринимает командную (пробовал разные варианты) строку c:\Server\bin\Apache24\bin\httpd.exe -k restart и я обхожусь просто двумя строками … )  net stop mysql / net start mysql … https://yadi.sk/d/JR4HtLXu34Sg7E
    Ну в общем то пойду дальше … )
    Спасибо Вам дорогой за Ваш труд.
    Vostok3Bit (Виталий)

  42. Виталяс:

    Здравствуйте! Пожалуйста, подскажите! Настроил, установил и запустил apache всё как вы написали, перепроверил каждый символ 10 раз, apache запускается без ошибки, но заходя в браузере в localhost пишет что нет доступа, порты проверял, менял, не помогает

  43. Ренат:

    Спасибо огромное! Виндовс7 поставилось нормально. Тока Апач 2.4.17 уже нету.. 2.4.25,
    Да, ещё… на своём опыте убедился что существует «эхо» предыдущих, неудачных установок, особенно при операциях с командной строкой. Нужно как кто прописать тему деинсталляции внесённых изменений предыдущими установками..

  44. Денис:

    Пожалуйста скиньте архив папку Server где все нормально работает 

  45. Денис:

    Помогите пожалуйста при входе в localhost/i.php у меня нет интерфейса а вот это

    <?php
    phpinfo ();

    Помогите пожалуйста

  46. Евгений:

    Поясните как добавить PHP директории в PATH на Windows 7, там есть два окна переменные пользователя и переменные системные, и там и там есть PATH, где нажимать изменить? При нажатии изменить открывается этот параметр переменной и ее можно только изменить, кнопки создать там нет и списка тоже отдельного не появляется. Мне получается нужно переменные изменять или создать новые, но даст ли Windows создать переменные с одинаковыми именами?

  47. Александр Б.:

    Большое спасибо за интсрукцию. Все получилось и все работает.

    Единственное, что для полноты информации, можно добавить инструкцию по добавлению виртуальных хостов. Мелочь, но очень нужная штука.

  48. Сергей:

    Все хорошо, но еще лучше бы напомнить "администраторам" о необходимости установки собственных паролей, включая пароль на root phpadmin, ну и ключ лучше бы тоже новый сгенерить для строки $cfg['blowfish_secret'] = ''; в config.inc.php

    Может быть, подскажете, на какие ещё настроки безопасности обратить внимание?
     

  49. Ярослав:

    Доброго времени суток. Очень хорошая инструкция. Всё получилось. Правда по непонятной причине (что плохо) в phpMyAdmin не пропускал логин root ошибка SQL 1045.

    SQL снёс и переставил вместе phpMyAdmin и всё заработало. (Win 10 x64 LTSB)

  50. Valera:

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

    И как отправить на него письмо, чтоб проверить?

    • Alexey Alexey:

      Как и всё остальное здесь, это только для тех, кому нужно. Как если бы кто-то прочитал и начал у меня спрашивать: что это за Apache, зачем мне его устанавливать, как там делать сайты и т.д.

      Если пользовались Denwer, то там тоже есть подобная почтовая заглушка. Очень удобно отлаживать отправку почты. Я, например, на почту отправляю заполненные пользователем на сайте формы заказов, пользователь может сам себе отправить ссылку на понравившуюся страницу, можно настроить разные уведомления подписавшихся пользователей, отправлять им ссылку для восстановления пароля и т.д. – ну почта, что тут объяснять?

      В PHP письма можно отправлять, например, функцией mail.

  51. Маргарита:

    Прошу прощения за беспокойство, никак не могу установить apache, выдает ошибку "AH00558: httpd.exe: Could not reliably determine the server's fully qualified domain name, using fe80::7978:6c40:7af5:6ea5. Set the 'ServerName' directive globally to suppress this message" 

    Все по инструкции делаю, скайп от 80 порта освобожден. 80-порт вообще никакая программа не использует. Что делать? 

    • Alexey Alexey:

      Это предупреждение, а не ошибка. По идее, Apache должен всё равно работать. У вас http://localhost/ открывается?

      Чтобы это предупреждение не выводилось (цитата из инструкции):

      меняем

      #ServerName www.example.com:80

      на

      ServerName localhost
      
      • Маргарита:

        Спасибо за быстрый ответ. Уже разобралась, что это предупреждение, все установила, инструкция очень доступная, спасибо большое. 

  52. Виктор:

    После настройки конфигурации, установка, вроде, проходит успешно, но при запуске такая ошибка:

    C:\Windows\system32>d:\Server\bin\Apache24\bin\httpd.exe -k start
    (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

    Что то занимает 80 порт? А как проверить и вырубить это?

    • Alexey Alexey:

      Если бы дочитали статью до конца, то не спрашивали бы smiley В командной строке Windows выполните:

      for /f "tokens=1,2,3,4,5*" %i in ('netstat -aon ^| findstr ":80" ^| findstr /i listening') do echo %j %l & @tasklist | findstr %m

      Там будет показана программа, занимающая 80й порт.

      • Виктор:

        Или хотя бы вырубил скайп, исходя из коммента выше) Спасибо, запустился. Буду делать дальше) Только еще вопрос, оно со скайпом вообще не бует запускаться, или их можно как то подружить?

        • Alexey Alexey:

          Я сам Скайпом не пользуюсь, но давным-давно, лет пять назад, когда мы с другим пользователем решали эту же проблему, он мне написал:

          «Проблема решена — порт занимал Скайп (есть у него такая бяка в настройках соединения — использовать порты 80 и 443 в качестве альтернативных, после того, как я отключил эту опцию, всё заработало)».

          Т.е. в настройках, по крайне мере раньше, это можно было поменять.

          • Виктор:

            Понял, спасибо наиогромнейшее. Чуть позже подтвержу или опровергну этот вариант на работоспособность сегодня) 

            И тут же задамся новым вопросом 🙂 Я вместо php 7 решил использовать php 5.6. Поэтому в файле конфигурации внес такие строки:

            LoadModule php5_module "d:/Server/bin/PHP/php5phpdbg.dll" 

            Но сервер не перезапускается. выдает такую ошибку

            C:\Windows\system32>d:\Server\bin\Apache24\bin\httpd.exe -k restart
            httpd.exe: Syntax error on line 534 of D:/Server/bin/Apache24/conf/httpd.conf: C
            an’t locate API module structure `php5_module’ in file D:/Server/bin/PHP/php5php
            dbg.dll: No error

            В чем еще кроется недочет или ошибка? 

            • Alexey Alexey:

              Для версии 5.6 нужно начать с установки VC11: https://www.microsoft.com/en-us/download/details.aspx?id=30679

              А настройки в конфигурационном файле Apache 2.4 (по моей инструкции):

              PHPIniDir "C:/Server/bin/PHP"
              AddHandler application/x-httpd-php .php
              LoadModule php5_module "C:/Server/bin/PHP/php5apache2_4.dll"
              
            • Виктор:

              Ок, отбой вопроса, ибо решил все атки поставить php7) А со скайпом совет - рабоатет. В настройках снял галочку "использовать для доп. входящих соединений 80 и 443 порт"

              p.s - на секунду опередили с ответом) большое спасибо

  53. Елена:

    Алексей, Вам нужно учебники писать! Очень доступно. Спасибо огромное!

  54. Клочковъ В.И:

    Согласен с предидущим оратором! Только вот пусть учебники будут про nginx,да?… А то, apache ведь старый как какашки мамонтов…и учебники,опять же,получатся очень тоненькие.

  55. Александр:

    Помогите пожалуйста. До пункта 6 (установка phpMyAdmin) все шло хорошо. Когда я набираю в браузере http://localhost/phpmyadmin/, выдает ошибку:

    The mbstring extension is missing. Please check your PHP configuration.

    Из предыдущих пунктов все перепроверил несколько раз. Все по инструкции. В чем может быть проблема?

  56. Александр:

    Уже все решил.

    А вот с этим пунктом возникли сложности "Изменение системных переменных среды" .

    У меня Windovs 7, все совсем по-другому. Я в нижнем поле нажал изменить. В строку значение переменной в конце списка добавил C:\Server\bin\PHP\. После чего в верхнем поле тоже появилась переменная Path. Это правильно? Или нужно по-другому?

  57. Дмитрий:

    Alexaey а что делать вот  с такой проблемой с модулями (как я понимаюю просто не могут подгрузиться по какойто причине). полный лог к первому пункту на остольных идентичный

    PHP Warning:  PHP Startup: Unable to load dynamic library 'C:\\Server\\bin\\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
    PHP Warning:  PHP Startup: Unable to load dynamic library 'C:\\Server\\bin\\PHP\\ext\\php_intl.dll'
    PHP Warning:  PHP Startup: Unable to load dynamic library 'C:\\Server\\bin\\PHP\\ext\\php_ldap.dll

    PHP Warning:  PHP Startup: Unable to load dynamic library C:\\Server\\bin\\PHP\\ext\\php_pdo_pgsql.dll' - 
    PHP Warning:  PHP Startup: Unable to load dynamic library 'C:\\Server\\bin\\PHP\\ext\\php_pgsql.dll' 

  58. Антон:

    Здравствуйте. Тоже постепенно учусь и освиваюсь, и столкнулся с проблемой касательно работы с БД в PHP. По каким-то причинам, у меня не работает функция mysqli_query и не работает метод query объекта mysqli. В первом случае я получаю сообщение о неизвестной функции, а во втором о синтаксической ошибке '$db' (T_VARIABLE) в конструкции:

    $result = $db->query("select * from `registered`");

    При чем другие функции и методы mysqli выполняются, проблема именно в query.

    Настраивал все по данной инструкции, переустанавливал PHP, пробовал версии 7.0.15 и 7.1.1. Но результат все такой же, однако на интернет-хостинге код выполняются исправно.

    • Alexey Alexey:

      Чтобы получить ошибку

      Fatal error: Uncaught Error: Call to undefined function query()

      на абсолютно рабочем сервере достаточно в вашей строке поменять маленькое тире на большое.

      Чтобы получать ошибки T_VARIABLE, T_STRING достаточно поставить до этой строки открытую кавычку.

      Установите себе NetBeans с PHP и отлавливайте ошибки синтаксиса и прочие ошибки начинающего программиста там. Инструкция по установке веб-сервера здесь не при чём.

      • Антон:

        Просто в этом и аномалия, что все необходимые расширения подключены. Функции mysqli работают, по крайней мере для подключения к БД и для выбора таблицы, декриптор соединения возвращается, ошибок нет.

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

        По этой ссылке имеются все требуемые файлы: https://1drv.ms/u/s!Am0rzFvIDboRlsxRYOx0f9kP-8kvjw

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

        • Alexey Alexey:

          Сейчас изучаю. Можете заодно прислать ваш файл с PHP кодом, в котором ошибка? Или хотя бы часть кода до проблемной функции.

        • Alexey Alexey:

          Хотя ответ я уже нашёл, у вас невидимые символы, которые ломают код

          Call to undefined function \xc2\xa0()

          Этот невидимый символ называется NO-BREAK SPACE.

          Попробуйте каждый пробел рядом с проблемными функциями удалить и сразу добавить. Если ничего не поменялось, попробуйте открыть файл другими текстовыми редакторами. Если и это не помогло - крайний случай, без копи-пасты переписать проблемные строчки - проблема исчезнет.

          Следующая ошибка:

          Uncaught Error: Call to undefined function msqli_query()

          Название функции набрано неправильно, в PHP нет функции msqli_query. Если ваша IDE не видит таких косяков, то поменяйте её. NetBeans - полностью бесплатная, очень рекомендую.

          Ну и наконец, ошибка T_VARIABLE. Вот такой код может её вызвсать:

          <?php
          $db = new mysqli()
          $result = $db->query("select * from `registered`");

          Подсказка: пропущена точка с запятой после второй строки.

          Всё очень-очень просто. Установке веб-сервера здесь ни при чём.

          • Антон:

            И правда, вот чудо. Очень огромное спасибо за помощь, аж голове полегчало =О  

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

    • Alexey Alexey:

      Кстати, а вы по этой инструкции ставили? Чтобы начать получать ошибки:

      Fatal error: Uncaught Error: Call to undefined function mysqli_connect()
      Fatal error: Uncaught Error: Class 'mysqli' not found in

      нужно проигнорировать указание инструкции о подключении расширения

      extension=php_mysqli.dll

      Т.е. у вас может быть первая ошибка из-за того, что не подключено расширение mysqli на локальном сервере, а вторая из-за ошибке в коде.

      В любом случае, перед написанием комментария нужно было прочитать https://hackware.ru/?p=21#14 , там написано что нужно делать в случае если всё делали по инструкции, какие файлы нужно показать.

  59. Виктор:

    А как сайты то на нем размещать?) Просто создавать папки в htdocs? Без виртуальных хостов? Что то не очень получилось у меня. Установил cms modx, установка прошла, но при входе в админку ворох ошибок. 

    • Alexey Alexey:

      Да, просто распаковывать в папку htdocs. Всё работает с полтычка:

      Делайте как написано в инструкции по установке веб-сервера, без самодеятельности, и всё будет ОК.

      • Виктор:

        Отчего же у меня ошибки повыпадывали… Что то намудрил похоже с вирутуальными хостами, по другой статье. Эх, придеться разбираться с этим тепреь. Спасибо за ответ.

  60. Виктор:

    Не могу уже с этой ошибкой, голова отваливается… Помогите по возможности, пожалуйста. 

    Необходимые файлы: https://yadi.sk/d/FaGo014F3DMajS

    Там же ошибка, которую выдает modx При попытке залогиниться. 

    Сделано все по инструкции, по виртуальным хотсам менял только пару строк, но все вернул обратно. (ссылка на сайт с инструкцией по которой делал их тоже в архиве)

    Проверил все, вроде как полагается. Ну не вижу в чем может быть ошибка. очень нужна помошь..

    • Виктор:

      Кстати Престашоп установился нормлаьно и вроде работает

    • Alexey Alexey:

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

      Вы быстрее решите свою проблему если зададите его в тематическом форуме MODX или в службу поддержке MODX. 

      • Виктор:

        Нет, как раз устанавливаю последнюю чистую версию modx. На Денвер эта система устанавливается и всегда устанавливалась номрмально, тут дело в сервере. Что то с php, судя по логу. 

        [:error] [pid 8792:tid 844] [client ::1:49254] PHP Fatal error:  Uncaught Error: Call to a member function get() on null in ["очень длинные пути"\login.class.php

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

        И я было уже думал, что это проблемы modx и php7, но у вас то все заработало на ура..

  61. Sothen:

    Возникла проблема с meta тегом "<meta http-equiv="Content-Type" content="text/html; charset=utf-8">"

    в параметрах httpd.conf добавлял "AddDefaultCharset utf-8", но так же не помог.
    Надеюсь только на вас.

    • Alexey Alexey:

      В вашем случае мета тэг работает и сервер отдаёт в кодировке utf-8. НО: файл, на который вы смотрите, сохранён в другой кодировке, не utf-8.

      Откройте файл редактором, который позволяет изменять кодировку, и пересохраните его в utf-8, это решит проблему.

  62. Дмитрий:

    Добрый день!
    Проблема такая: Апач периодически зависает, до перезапуска службы.

    Версия PHP

    7.0.13

    Версия mySQL

    5.1.40

    Версия Apache

    2.4.23 (Win64)

    OC

    Windows Server 2012 R2

    До этого стоял Apache/2.2 и PHP/5.3  -  подобных проблем не было.

    Файлы настроек и логи: https://cloud.mail.ru/public/Hm3y/zmzjGpLpD

    • Alexey Alexey:

      Хотя в логах нет этой ошибки, но поведение похоже на описанное в 12ом пункте https://hackware.ru/?p=21#12 . Попробуйте сделать как там написано, т.е. добавить в файл httpd.conf строки:

      AcceptFilter http none 
      AcceptFilter https none 
      EnableSendfile off 
      EnableMMAP off
      
  63. Александр:

    Спасибо!

    Windows 10 - все заработало с первого раза - просто нужно иметь зоркий глаз и прямые руки )

  64. София:

    Почему-то при попытке установить сервис Апаче через cmd пишет: "Отказано в доступе". cmd открывается от имени администратора. Винда 10

  65. Павел:

    Установил Apache по вашей инструкции. Спасибо, работает. Но сайт, который мне нужно править в localhost использует https (не http). При обращении к папке сайта идёт переадресация с http на https и страница не открывается.

    Как установить https? В инструкции этого нет.

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

Ваш e-mail не будет опубликован.