Установка Web-сервера Apache в связке с PHP 5 и MySQL.
В этой статье мы рассмотрим установку и настройку Web-сервера Apache, PHP 5 и СУБД MySQL для
использования их на локальной машине под
операционной системой Windows (2000 и XP). Использование
локальных серверов может пона- добится по многим причинам — вам необходимо изучить PHP или
MySQL, а тестирование своих Web-приложений на хостинге либо дорого обхо- дится, либо такой
возможности вообще нет. В этом случае вам понадобится связка Apache+ PHP+MySQL на локальной машине.
Для начала необходимо раздобыть дистрибутивы серверов Apache и MySQL, а так же архив PHP. Мы
будем устанавливать и настраивать Apache 2, MySQL 4 и PHP 5.
Скачать Apache можно с зеркал, приведённых на официальном сайте
http://www.apache.org/dyn/ closer.cgi. При поиске
следует помнить, что Apache так же может называться httpd, по имени его демона в UNIX. На зеркалах
обычно много различных файлов, например:
-
httpd-2.0.49-win32-src.zip
— это архив с исходными кодами (src) для Windows
(win32) Web-сервера Apache (httpd) версии 2.0.49.
-
httpd-2.0.49.tar.gz
— тоже самое, но для Linux, в котором программы принято
распространять в исходных кодах.
-
apache_2.0.55-win32-x86-no_ssl.exe
— а вот это, откомпилированный под архитектуру
(x86) для Windows (win32) без поддержки SSL(no_ssl) сервер Apache (apache) версии 2.0.55 —
вот он и нужен.
Примечание
Бинарные коды дистрибутивов Apache распространяются в нескольких вариантах, как с расширением *.exe,
так и *.msi и имеют название вида apache_версия_win32_*_.msi.
Чтобы Вам долго не искать, вот ресурс (http://apache.rinet.ru/dist/httpd/binaries/win32/),
где можно его взять. Вторая и третья цифра в версии могут отличаться от приведённых здесь —
следует выбирать самую последнюю версию, так как в ней устранены ошибки, обнаруженные в предыдущих
версиях.
PHP 5 можно обнаружить на зеркалах http://www.php.net/downloads.php.
На сайте PHP доступен в двух формах: исходных кодах (Complete Source Code) и предкомпилированном варианте
(Windows Binaries). Нас будет интересовать предкомпилированная версия, которая так же распространяется в
двух вариантах: в виде установщика (php-5.0.5-installer.exe) и виде zip-архива (php-5.0.5-Win32.zip).
Установщик удобен в установке, но содержит лишь ограниченную версию PHP (для сравнения инсталлятор занимает
2 Мб, а zip-архив 7 Мб). Кроме того, использование автоматического инсталлятора не избавляет от необходимости
настройки конфигурационного файла сервера Apache. Поэтому рекомендуется всё же загрузить zip-архив.
Дистрибутив MySQL можно загрузить со страницы http://dev.mysql.com/downloads/.
Мало кто знает, что полное справочное руководство на русском языке можно найти на официальном сайте
MySQL по адресу http://dev.mysql.com/doc/mysql/ru/index.html.
Установка Web-сервера Apache.
Создайте на диске D:
папку work
, а в ней — папки
localhost
, localhost1
и localhost2
. В каждой из
папок localhost
, localhost1
и localhost2
создайте
еще по две папки — cgi
(для хранения CGI-сценариев) и www
(для html-документов и программ на PHP).
Запустите установщик Web-сервера Apache. Результатом будет окно с лицензионным соглашением, после
принятия которого, следует перейти к следующему окну с краткой информацией о нововведениях во второй
версии Apache. Следующее окно, показанное на рисунке, позволяет ввести информацию о сервере: доменное
имя сервера, имя сервера и адрес электронной почты администратора. При установке сервера Apache на
локальную машину задайте следующие установки:
Network Domian: localhost
Server Name: localhost
Administrator's Email Adress: admin@localhost
Port: 80
Примечание
Единственная причина использования нестандартного порта — это отсутствие прав на использование
стандартного порта. При использовании нестандартного порта, например, 8080 номер порта
следует указывать в адресе, например: http://localhost:8080/
.
Если установка прошла успешно, Windows автоматически запустит Apache. По умолчанию вместе с
сервером запускается утилита мониторинга работы сервера Apache Service Monitor, значок
которой помещается в системном триере.
В Windows управлять работой сервера Apache можно несколькими способами:
-
при помощи утилиты Apache Service Monitor
Для запуска Web-сервера Apache при помощи утилиты Apache Service Monitor дважды щелкните
на значке программы в системном триере. В появившемся окне кнопками Start,
Stop и Restart можно производить пуск, остановку и
перезапуск сервера.
-
используя консоль управления сервисов Windows
Если при установке сервера в качестве порта, по которому Apache принимает запросы, был
выбран порт 80, допускается запуск Apache в качестве сервиса Windows. Для запуска
консоли управления выполните команду Пуск > Настройка
> Панель управления > Администрирование >
Службы или нажмите кнопку Services в утилите
Apache Service Monitor. В появившемся окне консоли следует выбрать сервис Apache2.
Контекстное меню позволяет осуществлять запуск, остановку и перезапуск сервиса.

Службы Windows позволяют осуществить запуск фоновых приложений при старте системы. Для
этого необходимо выбрать в контекстном меню сервиса пункт Свойства и в
появившемся окне, в выпадающем списке Тип запуска выбрать пункт
Авто:
-
используя пункты меню Пуск
Осуществлять пуск, остановку и перезапуск сервера Apache можно также из меню
Пуск. Для этого следует перейти в меню Пуск >
Программы > Apache HTTP Server >
Control Apache Server.
-
из командной строки
Запускать, останавливать и перезапускать сервер Apache из командной строки можно при
помощи следующих команд:
Apache -k start
— старт;
Apache -k restart
— перезапуск;
Apache -k stop
— стоп.
Все команды следует выполнять из каталога bin сервера Apache
(C:/Program Files/Apache Group/Apache2/bin/
).
Для того, чтобы Apache помимо html-файлов обрабатывал и php-файлы, в строку text/html
в файле
C:/Program Files/Apache Group/Apache2/conf/mime.types
следует добавить расширение для файлов, содержащих php-скрипты (php, phtml):
text/html html htm shtml shtm php phtml
Основные директивы настройки Apache хранятся в файле httpd.conf
,
расположенного в директории C:/Program Files/Apache Group/Apache2/conf/
.
Для успешной работы этот файл необходимо настроить:
-
В поле
ServerAdmin
следует указать адрес электронной почты администратора
сервера:
ServerAdmin admin@localhost
Этот адрес будет в дальнейшем показываться в окне браузера в сообщениях
об ошибке сервера.
-
Задайте значение параметра
ServerName
(имя сервера) следующим
образом:
ServerName localhost
По этому имени к нему будут обращаться машины из сетевого окружения.
-
В поле
DocumentRoot
укажите тот каталог, в котором будут
размещены ваши html-файлы:
DocumentRoot D:/work/localhost/www
-
Директиву
<Directory />
, в которой хранятся установки для
всех директорий по умолчанию, следует исправить следующим образом:
<Directory />
Options FollowSymLinks Includes Indexes
AllowOverride None
</Directory>
-
Директива
AllowOverride
(allow-разрешать, override-аннулировать)
установленная в значение None(All)
запрещает (разрешает)
переопределять значения главного конфигурационного файла httpd.conf
в файлах .htaccess
.
-
Директива
Options FollowSymLinks
разрешает Apache следовать
символическим ссылкам.
-
Директива
Options Includes
разрешает выполнение директив SSI
(Server Side Includes) в коде страниц web-сайта.
-
Директива
Options Indexes
указывает, что нужно возвращать
содержимое каталога, если отсутствует индексный файл.
-
Директивы
Options
и AllowOverride
применяются к корневому
каталогу основного Web-сайта т.е. к DocumentRoot
. Теперь откроем доступ к
каталогу DocumentRoot
, изменив директиву
<Directory "C:/Program Files/Apache Group/Apache2/htdocs">
следующим образом:
<Directory "D:/work/localhost/www">
Options FollowSymLinks Includes Indexes
AllowOverride None
Order allow,deny
Allow from all
</Directory>
Клиент, не соответствующий директиве allow
или соответствующий директиве
deny
, не получает доступ к серверу. Строка Allow from all
означает,
что разрешен доступ для всех.
-
Если необходимо назначить имена так называемых индексных файлов, которые автоматически будут
выданы сервером в случае передачи в адресе только имени папки (например
http://localhost/manual/
), необходимо их перечислить после директивы
DirectoryIndex
:
DirectoryIndex index.htm index.html index.php index.phtml
Поиск файлов будет производиться в порядке, указанном в директиве DirectoryIndex
.
-
Теперь изменим директорию для хранения CGI-скриптов, изменив директиву
ScriptAlias
на
ScriptAlias /cgi-bin/ "D:/work/localhost/cgi"
.
Не забудьте заменить строку
<Directory "C:/Program Files/Apache Group/Apache2/cgi-bin">
на
<Directory "D:/work/localhost/cgi">
-
Найдите и настройте (не забудьте раскрыть комментарий) следующий параметр:
AddHandler cgi-script .bat .exe .cgi
Он говорит Apache о том, что файлы с расширениями exe, bat и cgi надо рассматривать как CGI-модули.
-
И последнее — установите следующий параметр:
AddHandler server-parsed .shtml .shtm
Этим вы заставляете Apache обрабатывать файлы с указанными расширениями процессором SSI.
На одном WEB-сервере Apache можно установить несколько WEB-сайтов. Эта функция сервера называется виртуальным
хостингом. Сначала требуется указать какой IP-адрес используется для виртуальных хостов:
NameVirtualHost 127.0.0.1:80
Далее прописываются виртуальные хосты:
#
# localhost
#
<VirtualHost 127.0.0.1:80>
ServerAdmin admin@localhost
ServerName localhost
DocumentRoot "D:/work/localhost/www"
ServerAlias www.site.ru www.host.ru
ScriptAlias /cgi-bin/ "D:/work/localhost/cgi"
ErrorLog D:/work/localhost/error.log
CustomLog D:/work/localhost/access.log common
</VirtualHost>
Рассмотрим директивы виртуального хоста:
-
DocumentRoot
указывает каталог, где расположены файлы данного виртуального хоста (WEB-сайта)
-
ServerName
указывает имя виртуального хоста, по которому к нему можно обратиться.
В данном случае, по адресу http://localhost/.
-
ServerAlias
содержит псевдонимы имен виртуального хоста. В данном случае к виртуальному
хосту можно также обратиться, используя имена: http://www.site.ru/
и
http://www.host.ru/
.
-
ErrorLog
и CustomLog
указывает имена логов сервера для этого виртуального
хоста.
Контейнеры обычно располагают один за другим в конце файла httpd.conf
.
#
# localhost1
#
<VirtualHost 127.0.0.1:80>
ServerAdmin admin@localhost1
ServerName localhost1
DocumentRoot "D:/work/localhost1/www"
ServerAlias www.site1.ru www.host1.ru
ScriptAlias /cgi-bin/ "D:/work/localhost1/cgi"
ErrorLog D:/work/localhost1/error.log
CustomLog D:/work/localhost1/access.log common
</VirtualHost>
#
# localhost2
#
<VirtualHost 127.0.0.1:80>
ServerAdmin admin@localhost2
ServerName localhost2
DocumentRoot "D:/work/localhost2/www"
ServerAlias www.site2.ru www.host2.ru
ScriptAlias /cgi-bin/ "D:/work/localhost2/cgi"
ErrorLog D:/work/localhost2/error.log
CustomLog D:/work/localhost2/access.log common
</VirtualHost>
Для того, чтобы обращаться к виртуальным узлам по именам их следует прописать в базы данных DNS-сервера.
Если Вы используете Apache для тестирования файлов на локальной машине, то имена ваших виртуальных узлов
следует прописать в файле hosts. Для Windows 2000 и XP он расположен в каталоге
C:/Windows/System32/Drivers/etc
. Файл hosts содержит записи вида:
127.0.0.1 localhost
127.0.0.1 localhost1
127.0.0.1 localhost2
127.0.0.1 www.site.ru
127.0.0.1 www.host.ru
127.0.0.1 www.site1.ru
127.0.0.1 www.host1.ru
127.0.0.1 www.site2.ru
127.0.0.1 www.host2.ru
Установка и настройка PHP.
Для установки PHP следует создать каталог C:/Program Files/php
и разместить в нём файлы из
zip-архива дистрибутива. После этого следует переименовать конфигурационный файл php.ini-dist
в php.ini
и скопировать его в директорию Windows.
Так как на локальной машине Вы, скорее всего, будете заняты тестированием ваших Web-приложений, то
необходимо должным образом настроить конфигурационный файл php.ini
.
Найдите директиву error_reporting
и установите для неё следующее значение:
error_reporting = E_ALL
Это значение настроит PHP таким образом, что при работе PHP-скриптов будут отображаться все ошибки.
Так же обходимо проследить, чтобы директива display_errors
была включена:
display_errors = On
Если данная директива отключена (Off), то сообщения об ошибках не будут выводится в окно браузера.
Так же необходимо проследить, чтобы директива variables_order
имела следующее значение:
variables_order = "EGPCS"
Буквы здесь означают следующее:
- E - переменными среды
- G - переменными передаваемыми по методу GET (G)
- P - переменными передаваемыми по методу POST (P)
- C - Cookies
- S - сессии
Отсутствие какой-либо из букв не позволит вам работать с соответствующими переменными.
Следующая директива, которая может потребовать настройки — это register_globals
.
Если данная директива включена (register_globals=On
), то переменные передаваемые
метором GET, POST, через cookies и сессии можно использовать в PHP-скрипте, обращаясь к ним просто
как обычным переменным $somevar
.
Если данная директива отключена (register_globals=Off
), то к таким переменным можно
будет обращаться только при помощи суперглобальных массивов ($_POST, $_GET и т.п.).
Директива register_long_arrays
позволяет использовать суперглобальные массивы в старом
формате ("длинном" — $HTTP_GET_VARS, $HTTP_POST_VARS
и т.д.).
-
Установка PHP, как CGI-приложения
В конфигурационном файле сервера Apache httpd.conf
перед блоком описания виртуальных хостов
необходимо добавить следующие строки:
AddType application/x-httpd-php phtml php
<Directory "C:/Program Files/php">
Options ExecCGI
</Directory>
ScriptAlias "/php_dir/" "C:/Program Files/php/"
Action application/x-httpd-php "/php_dir/php-cgi.exe"
Примечание
При установке PHP как CGI перестанут работать некоторые заголовки, например, Вы не сможете организовать
авторизацию пользователей средствами PHP. Авторизации можно будет реализовать только средствами самого
Apache с помощью файлов .htaccess
.
-
Установка PHP в качестве модуля
Добавьте в конфигурационный файл сервера Apache httpd.conf
следующие строки:
AddType application/x-httpd-php phtml php
LoadModule php5_module "C:/Program Files/php/php5apache2.dll"
После этого необходимо перегрузить сервер Apache, а в корневой директории виртуального хоста
D:/work/localhost/www
создать пробный файл PHP (test.php):
<?php
phpinfo();
?>
В случае успешной настройки, обращение по адресу http://localhost/test.php
отобразит фиолетовую таблицу с текущими настройками PHP, которая выдаётся функцией
phpinfo()
:

Подключение MySQL.
Если сервер MySQL уже установлен на Вашей машине, то следующим шагом будет настройка PHP для работы с
базами данных MySQL.
Откройте на редактирование файл php.ini из каталога Windows.
Для подключения библиотеки расширения MySQL вам нужно убрать символ комментария ;
(точка с запятой) из строки: extension=php_mysql.dll
Также проверьте значение директивы extension_dir
:
extension_dir="C:/Program Files/php/ext"
Она должна указывать на каталог, где хранятся расширения PHP. Однако, если ничего не получается, установите
значение директивы extension_dir="./"
, а библиотеку php_mysql.dll
скопируйте в C:/Program Files/php
— в большинстве случаев это должно помочь.
Если PHP у Вас подключен как модуль, то Вам также необходимо скопировать библиотеку
libmysql.dll
из каталога с установленным PHP в системный каталог C:/Windows/System32
.
Чтобы внесенные изменения вступили в силу — перезагрузите Apache.
Для проверки работы MySQL создайте проверочный скрипт со следующим кодом:
<?php
$dblocation = "127.0.0.1";
$dbname = "test";
$dbuser = "root";
$dbpasswd = "";
$dbcnct = @mysql_connect($dblocation, $dbuser, $dbpasswd);
if (!$dbcnct)
{
echo "<p>К сожалению, не доступен сервер MySQL</p>";
exit();
}
if (!@mysql_select_db($dbname,$dbcnct) )
{
echo "<p>К сожалению, не доступна база данных</p>";
exit();
}
$ver = mysql_query("SELECT VERSION()");
if(!$ver)
{
echo "<p>Ошибка в запросе</p>";
exit();
}
echo "Версия MySQL: ".mysql_result($ver, 0);
?>
В случае успешной интеграции MySQL в связку Apache и PHP, обращение к проверочному скрипту выведет в
окно браузера версию сервера MySQL:
В новых версиях MySQL (начиная с 4.1.0) изменился порядок работы с национальными кодировками, поэтому
старый код может вызывать появление в таблице базы данных знаков вопроса '????????' вместо русского текста.
Для того, чтобы этого не возникало, в начало PHP-скрипта, после установки соединения с базой данных,
следует поместить следующие строки:
<?php
mysql_query ("set character_set_client='cp1251'");
mysql_query ("set character_set_results='cp1251'");
mysql_query ("set collation_connection='cp1251_general_ci'");
?>
Установка phpMyAdmin.
Инсталляция phpMyAdmin протекает в несколько этапов.
-
Распакуйте архив с дистрибутивом в директорию
D:/work/localhost/www/phpmyadmin
.
-
Откройте файл
config.inc.php
и измените следующие строки:
$cfg['PmaAbsoluteUri'] = 'http://localhost/phpmyadmin';
$cfg['Servers'][$i]['host'] = 'localhost';
$cfg['Servers'][$i]['user'] = 'root';
$cfg['Servers'][$i]['password'] = '';
-
Откройте в браузере главную страницу phpMyAdmin, расположенную по адресу
http://localhost/phpmyadmin/index.php
.
-
Для того, чтобы настроить все элементы phpMyAdmin, необходимо создать базу данных
phpmyadmin и разместить в ней вспомогательные таблицы. Для этого необходимо
выполнить SQL-запросы, помещенные в файл
scripts/create_tables.sql
.
Перейдите по гиперссылке Окно запроса в левом верхнем углу
панели управления:

Во всплывающем окне перейдите на закладку Импорт файлов, выберите
файл create_tables.sql
и нажмите кнопку Пошел:

-
После SQL-запросов из файла
create_tables.sql
вы должны выставить
имена таблиц в конфигурационном файле config.inc.php
:
$cfg['Servers'][$i]['pmadb'] = 'phpmyadmin';
$cfg['Servers'][$i]['bookmarktable'] = 'pma_bookmark';
$cfg['Servers'][$i]['relation'] = 'pma_relation';
$cfg['Servers'][$i]['table_info'] = 'pma_table_info';
$cfg['Servers'][$i]['table_coords'] = 'pma_table_coords';
$cfg['Servers'][$i]['pdf_pages'] = 'pma_pdf_pages';
$cfg['Servers'][$i]['column_info'] = 'pma_column_info';
$cfg['Servers'][$i]['history'] = 'pma_history';
Приложение phpMyAdmin может применяться для администрирования нескольких серверов
MySQL, поэтому будьте внимательны: исправление для одного сервера не коснется другого
сервера. Одна из ошибок конфигурирования заключается в изменении перечисленных выше
директив для одного из следующих серверов, в то время как для первого сервера директивы
остаются неустановленными.
Авторы: Симдянов И.В., Голышев С.В., Кузнецов М.В.
www.softtime.ru