Установка веб-сервера (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).

81 комментарий 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

  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) . Вот и думала, что все правильно идет)

  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:

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

  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)

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

Ваш e-mail не будет опубликован. Обязательные поля помечены *