Статьи по PHP


Установка Web-сервера Apache в связке с PHP 5 и MySQL (Apache+PHP+MySQL)

В этой статье мы рассмотрим установку и настройку Web-сервера Apache, PHP 5 и СУБД MySQL для использования их на локальной машине под операционной системой Windows (2000 и XP). Использование локальных серверов может понадобится по многим причинам – вам необходимо изучить PHP или MySQL, а тестирование своих Web-приложений на хостинге либо дорого обходится, либо такой возможности вообще нет. В этом случае вам понадобится связка Apache+PHP+MySQL на локальной машине.

Для начала необходимо раздобыть дистрибутивы серверов Apache и MySQL, а так же архив PHP. Мы будем устанавливать и настраивать Apache 2, MySQL 4 и PHP 5.

Так же можете скачать с нашего сайта файлы php.ini для настройки PHP и httpd.conf для Apache. Однако, делайте это только в крайнем случае — если у Вас ничего не получилось с "родными" файлами, которые появилиcь при установке приложений. Но в любом случае, их необходимо будет настроить под конкретную машину. Скачать php.ini и httpd.conf

Скачать 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.50-win32-x86-no_ssl.exe - а вот это, откомпилированный под архитектуру (x86) для Windows (win32) без поддержки SSL(no_ssl) сервер Apache (apache) версии 2.0.50 - вот он и нужен.

Замечание

Бинарные коды дистрибутивов Apache распространяются в нескольких вариантах, как с расширением *.exe, так и *.msi и имеют название вида httpd_версия_win32_*_.msi.

Чтобы вам не мучатся, вот ресурс где можно его взять: http://apache.rin.ru/dist/httpd/binaries/win32/
Вторая и третья цифра в версии могут отличаться от приведённых здесь – следует выбирать самую последнюю версию, так как в ней устранены ошибки обнаруженные в предыдущих версиях.

PHP 5 можно обнаружить на зеркалах http://www.php.net/downloads.php. На сайте PHP доступен в двух формах: исходных кодах (Complete Source Code) и предкомпилированном варианте (Windows Binaries). Нас будет интересовать предкомпилированная версия, которая так же распространяется в двух вариантах: в виде установщика (php-5.0.0-installer.exe) и виде zip-архива (php-5.0.0-Win32.zip). Установщик удобен в установке, но содержит лишь ограниченную версию PHP (для сравнения инсталлятор занимает 2 Мб, а zip-архив 7 Мб). Кроме того, использование автоматического инсталлятора не избавляет от необходимости настройки конфигурационного файла сервера Apache. Поэтому рекомендуется всё же загрузить zip-архив.
Пока вы находитесь на сайте PHP, заодно можете прихватить документацию к PHP. Для пользователей Windows наиболее удобен chm-формат, позволяющий осуществлять поиск по мануалу (http://www.php.net/download-docs.php).

Дистрибутив MySQL можно загрузить со страницы http://dev.mysql.com/downloads/. Мало кто знает, что полное справочное руководство на русском языке можно найти на официальном сайте MySQL по адресу http://dev.mysql.com/doc/mysql/ru/index.html.

После того как мы запаслись всеми необходимыми дистрибутивами можно приступать к установке. Порядок установки Apache, PHP и MySQL не имеет значения. Начнём с Web-сервера Apache.

Установка Web-сервера Apache

Запустите установщик Web-сервера Apache. Результатом будет окно с лицензионным соглашением, после принятия которого, следует перейти к следующему окну с краткой информацией о нововведениях во второй версии Apache. Следующее окно, показанное на рисунке, позволяет ввести информацию о сервере: доменное имя сервера, имя сервера и адрес электронной почты администратора. Если установка происходит на локальную машину, то в поля для доменного имени и имени сервера следует ввести localhost (см. рисунок.). В нижней части окна предлагается выбрать номер порта по которому сервер будет принимать запросы (80 или 8080).

localhost - это имя для использования сервера на локальной машине, которое связано с IP-адресом 127.0.0.1, который зарезервирован для локального использования.

После этого будет предложен способ установки: стандартный (Typical ) или выборочный (Custom), позволяющий выбрать компоненты сервера вручную. Следующее окно позволяет выбрать каталог установки сервера, по умолчанию это C:Program FilesApache Group, но мы рекомендуем выбрать другой каталог, например, С:www. После этого мастер установки сообщит о готовности к процессу установки и после нажатия кнопки Install, будет произведено копирование файлов сервера. Если установка прошла успешно, Windows автоматически запустит Apache.

После успешной инсталляции при наборе в окне браузера http://localhost/ или http://127.0.0.1/ - должна загрузится страница сервера.

Теперь необходимо научиться управлять Apache, а именно научится запускать, останавливать и перезапускать сервер. Существует много способов осуществить эти операции: при помощи утилиты ApacheMonitor, используя консоль управления сервисов Windows, используя пункты меню Пуск, из командной строки… Мы рассмотрим консоль управления сервисов Windows, позволяющего настроить Apache для автоматического старта при запуске системы. Для запуска консоли управления выполните команду
Пуск->Настройка->Панель управления->Администрирование->Службы.
В появившемся окне консоли, на приведённом ниже рисунке, следует выбрать сервис Apache2. Контекстное меню, открывающееся по нажатию на правой кнопке, позволяет осуществлять запуск, остановку и перезапуск сервиса.

Службы Windows позволяют осуществлять запуск фоновых приложений при старте системы. Для этого необходимо перейти в окно Свойства, выбрав в контекстном меню сервиса пункт Свойства и в появившемся окне в выпадающем списке "Тип запуска" выбрать пункт "Авто".

Теперь можно приступить к настройке конфигурационного файла Web-сервера Apache — http.conf, расположенного в папке C:/www/Apach2/conf. Следует помнить, что изменения произведённые в этом файле вступают в силу только после перезапуска сервера.

Сервер Apache по умолчанию настроен на ISO-ную кодировку. Т.е. сервер будет считать, что все ваши файлы (html-странички, php-скрипты) написаны в этой кодировке. Чтобы изменить кодировку на кодировку Windows необходимо открыть http.conf на редактирование, найти строку

AddDefaultCharset ISO-8859-1

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

AddDefaultCharset WINDOWS-1251

После этого, нам понадобится создать так называемы виртуальный хост — т.е. папку после размещения в которой файлов с расширением .html и .php они становятся доступными по адресу http:/localhost/index.html. Для этого следует выбрать папку, которой вы готовы для этого пожертвовать. Пусть это будет С:/www/scripts.

Директивы виртуальных хостов

Директивы, ответственные за виртуальные хосты, обычно располагаются в конце конфигурационного файла http.conf и выглядят примерно следующим образом:

NameVirtualHost 127.0.0.1:80

<VirtualHost 127.0.0.1:80>
    ServerAdmin webmaster@dummy-host.example.com
    DocumentRoot "C:/www/scripts"
    ServerName dummy-host.example.com
    ErrorLog logs/dummy-host.example.com-error_log
    CustomLog logs/dummy-host.example.com-access_log common
</VirtualHost>

Теперь создайте в "C:/www/scripts" простейший скрипт index.html, разместив в нём любую фразу и перезапустите сервер. Набрав в браузере http:/localhost/ вы увидите в окне браузера фразу помещённую в index.html. Если это получилось, то Web-сервер Apache работает.

Настройка PHP

Сервер Apache настроен — теперь можно приступать к настройке PHP. Для этого создайте директорию С:/PHP и разархивируйте туда содержимое архива php-5.0.0-Win32.zip. После этого следует переименовать конфигурационный файл php.ini-dist в php.ini и скопировать его в директорию с С:/Windows.

Замечание

Изменения производимые в конфигурационном файле php.ini вступают в силу после перезагрузки сервера Apache.

Так как на локальной машине вы, скорее всего, будете заняты тестированием Ваших Web-приложений, то необходимо должным образом настроить конфигурационный файл php.ini. Найдите директиву error_reporting и установите для неё следующее значение:

error_reporting = E_ALL & ~E_NOTICE

Это значение настроит 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-скрипте, обращаясь к ним просто как обычным переменным $someone.
Если данная директива отключена

register_globals = Off

то к таким переменным можно будет обращаться только при помощи суперглобальных массивов ($_POST, $_GET и т.п.).
Директива register_long_arrays позволяет использовать суперглобальные массивы в старом формате ("длинном" - $HTTP_GET_VARS, $HTTP_POST_VARS и т.д.)

register_long_arrays = On

После того как php.ini настроен Web-серверу Apache необходимо сообщить о наличии в системе PHP. Для этого в конфигурационном файле http.conf разместите следующие строки:

AddType application/x-httpd-php phtml php
<Directory "c:/php">
  Options ExecCGI
</Directory>
ScriptAlias "/php_dir/" "c:/php/"
Action application/x-httpd-php "/php_dir/php-cgi.exe"

Первая строка сообщает серверу Apache, о том, что файлы с расширениями php и phtml - должны интерпретироваться как PHP скрипты.
Следующие три строчки сообщают, что в директории c:/php следует разрешить исполнение CGI скриптов.
Предпоследняя строчка создаёт, так называемые, алиасы (псевдоним) для директории c:/php/.
В последней строке в качестве внешнего интерпретатора скриптов PHP назначается файл С:/php/php-cgi.exe (необходимо убедится что он, действительно, существует по этому пути).

Примечание

Чтобы избежать неожиданных проблем пути в настроечных файлах (httpd.conf и php.ini) рекомедуем писать через слеш в UNIX-овом формате "/".
Например, ScriptAlias "/php_dir/" "c:/php/"
Вообще говоря, в ряде директив работают оба слеша - прямой(/) и обратный(). На так как и Apache и PHP изначально разрабатывались под UNIX, то применяя их "родной" слеш вы cможете избежать ряда проблем.

Теперь необходимо настроить индексный файл. Если в окне браузера набрать строку http://localhost/, а не http://localhost/index.html. Сервер всё равно предоставит браузеру index.html, так как этот файл является индексным и ищется в директории первую очередь, если не указан конкретный файл. Теперь необходимо настроить http.conf, таким образом, чтобы Web-сервер Apache так же реагировал на файлы index.php. Для этого найдте в http.conf директиву DirectoryIndex и исправьте её следующим образом:

DirectoryIndex index.html index.html.var index.php

После этого необходимо перегрузить сервер Apache, а в корневой директории виртуального хоста ("C:/www/scripts") создать пробный файл PHP (index.php):

<?php
  phpinfo
();
?>

В случае успешной настройки, обращение по адресу http://localhost/index.php отобразит фиолетовую таблицу с текущими настройками PHP, которая выдаётся функцией phpinfo().
Таким образом, у нас настроена связка Apache и PHP и можно переходить к настройке MySQL. Распакуйте дистрибутив MySQL во временную директорию и запустите установщик. Контролировать работу сервера MySQL можно точно так же как и Apache, используя консоль управления сервисов Windows.

Подключение MySQL

По умолчанию PHP настроен таким образом, что поддержка MySQL в нём отключена, для того чтобы включить поддержку MySQL следует опять обратится к конфигурационному файлу php.ini. Найдите и раскомментируйте строку

extension=php_mysql.dll

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

extension_dir ="c:/php/ext"

Вы можете оставить эту директиву без изменений

extension_dir = "./"

но в этом случае необходимо скопировать библиотеку php_mysql.dll из директории C:/PHP/ext в С:/PHP/. Перезапустите сервер Apache и в файле "C:/www/scripts/index.php" поместите следующий код:

<?php
  $dblocation
= "127.0.0.1";
  
$dbname = "test";
  
$dbuser = "root";
  
$dbpasswd = "";

  
$dbcnx = @mysql_connect($dblocation, $dbuser, $dbpasswd);
  if (!
$dbcnx)
  {
    echo
"<p>К сожалению, не доступен сервер mySQL</p>";
    exit();
  }
  if (!@
mysql_select_db($dbname,$dbcnx) )
  {
    echo
"<p>К сожалению, не доступна база данных</p>";
    exit();
  }
  
$ver = mysql_query("SELECT VERSION()");
  if(!
$ver)
  {
    echo
"<p>Ошибка в запросе</p>";
    exit();
  }
  echo
mysql_result($ver, 0);
?>

В случае успешной интеграции MySQL в связку Apache и PHP, обращение по адресу http://localhost/index.php выведет в окно браузера версию сервера MySQL.

Примечание

Если вы хотите прописать путь к библиотеке - будьте внимательны: PHP плохо реагирует на прямые слеши в стиле Windows \, следует использовать обратные /. Например, extension_dir = "C:/php/ext".

Установка расширений PHP

На последок вам возможно понадобится настроить некоторые расширения PHP, они настраиваются точно так же как и MySQL.

Так для того, чтобы подключить графическую библиотеку GDLib в php.ini необходимо раскомментировать строку:

extension=php_gd2.dll

Проверьте после этого наличие данной библиотеки в папке c:phpext. После внесения изменений в php.ini перезапустите сервер. Что бы быстро проверить: подключилась ли библиотека — выполните функцию phpinfo(). Если все в порядке, то в таблице, которая отображается функций phpinfo(), должен появится раздел "gd". Скачать GDLib2

Некоторые расширения требуют дополнительных библиотек. Так для того чтобы воспользоваться расширением PHP "Mcrypt Encryption", позволяющем осуществлять симметричное шифрование необходимо, во первых, расскомментирования строку в php.ini

extension=php_mcrypt.dll

А во вторых скопировать в папку С:/WINDOWS/ дополнительную библиотеку libmcrypt.dll

Любые возникающие по установке связки Apache+PHP+MySQL вопросы вы можете задать на нашем форуме http://www.softtime.ru/forum/.