Установка PHP как модуль Apache

“А что, можно не как модуль ?” спросит пытливый читатель, и будет прав. PHP можно запускать вполне самостоятельно из командной строки, “скармливая” ему php скрипт как параметр:

php.exe test.php

Неудивительно, что результатом работы будет HTML который отобразится в консоли. Само название – PHP – “PHP Hypertext Preprocessor” – говорит о том, что цель существования PHP – обрабатывать скрипты, внедренные в HTML, динамически получая необходимый результат. Как быть при этом запущенным, никто не оговаривает. Поэтому, на заре человечества, PHP запускался, как и все порядочные веб-прибамбасы того времени, через интерфейс CGI. По сути, при такой организации, при каждом вызове веб-страницы веб-сервер запускал как отдельный процесс соответствующий препроцессор, отдавал ему на обработку файл, получал результат и передавал его клиенту. Все как бы неплохо, но в нынешний потребительский век, к веб-сайту люди обращаются не степенно и на Вы, спокойно ожидая своей очереди, а толпами по тысяче человек в день, причем 20-30 особо желающих будут ломится одновременно. Во время неких событий, например чемпионата мира по футболу, нагрузки на некоторые сервера может достигать миллионов обращений в день. С одной стороны – у сервера мозги луженные, работай себе и не жужжи, но нет. Запуск отдельного процесса – удовольствие не из дешевых, даже в современной ситуации копеечных цен на мегагерц и мегабайт. Добавим к расходу процессорного времени утечки памяти (это ситуация, когда память остается занятой даже после окончания работы процесса) оставленные нерадивыми программистами (вероятно они дома тоже не закрывают воду в ванной и не выключают свет в туалете) – и мы получим перерасход ресурсов сервера и необходимость перезагрузить его чтобы продолжить работу. Остановка сервера даже на 5 минут в день – катастрофа. Для серверов с коммерческой нагрузкой – это потерянные клиенты. Кому интересен сайт который недоступен ?

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

Рассматривать установку как CGI приложения я здесь не буду, дабы не засорять ваш мозг. Перейдем к собственно установке. Есть два пути установки PHP – с помощью инсталлятора и ручной. С одной стороны, первый путь проще – так как примерно с 90% вероятности инсталлятор выполнит все процедуры за вас. С другой стороны, нам интересно разобраться как “оно работает” и установка вручную этому очень способствует. Поэтому:

  1. Скачайте последнюю версию PHP с сайта php.net. Сегодня (июнь 2007) это версия 5.2.3. Это должен быть zip архив. Не поддавайтесь искушению, и не скачивайте .msi файл – процесс установки с помощью инсталлятора слишком прост, а это ведет на Темную Сторону Силы.
  2. Разверните архив в папку С:\PHP на вашей машине. Это может быть и другая папка, но для простоты я буду считать что вы прислушались к совету. Кроме того, избегайте папок с пробелами при установке PHP – это создает ненужные сложности.
  3. Откройте на редактирование файл httpd.conf чтобы прописать PHP как модуль Apache (я считаю что вы установили сервер Apache2.2.x)
    LoadModule php5_module c:/php/php5apache2_2.dll
    AddType application/x-httpd-php .php
    PHPIniDir C:/php

    Если у вас установлен Apache 2.0.x – подключать следует библиотеку php5apache2.dll, которая располаается там-же. Если у вас версия Apache 1.3.x – используйте php5apache.dll
    Директива PHPIniDir определена внутри модуля PHP, и поэтому эта строка должна располагаться ниже чем LoadModule – иначе Apache не будет знать что от него хотят и не запустится. Эта директива описывает нахождение файла настроек PHP – php.ini. По умолчанию он расположен в корне PHP – я предполагаю у вас это C:/PHP. Заметьте также, что Apache привык видеть в путях файлов “линуховые” слеши – / (по-английски называемые forward slash), а не “виндовые” слеши – \ (back slash) которые используются для записи путей файлов в Windows. Поэтому везде в httpd.conf нужно указывать пути через forward slash: “С:/php” – хотя это не очевидно для пользователя Windows.

  4. PHP плагины любой версии используют core-библиотеку php5ts.dll и поэтому должны иметь к ней доступ. Сама библиотека лежит в папке C:\PHP, но сходу PHP ее там не найдет (очевидно, правда ? 🙂 ) Чтобы PHP таки нашел свою основную библиотеку нужно либо скопировать ее в папку Apache (например, C:\Program Files\Apache Group\Apache2\bin) – там PHP будет искать ее в первую очередь, либо скопировать ее папку Windows, либо прописать папку C:\PHP в переменную окружения PATH. Последний вариант предпочтительней, поскольку оставляет поле для маневра если вы смените версию PHP или Apache. Чтобы изменить переменную окружения, нажмите правой клавишей на значке Мой Компьютер, выберите пункт выпадающего меню Свойства и в открывшемся окне выберите закладку Дополнительно, а на открывшейся закладе – нажмите кнопку Переменные Среды. Там найдите строку с переменной Path и нажмите кнопку Изменить.

    В открывшемся диалоговом окне добавьте через точку запятой путь C:\PHP – вот так: “;C:\PHP”. Заметьте, что тут слеш уже “обратный”, “виндовый” – поскольку эта настройка к Apache не имеет отношения, а в терминах Windows пути должны записываться именно так.
  5. Сейчас надо перезапустить службу Apache чтобы был заново прочитан httpd.conf и новые настройки возымели силу. Для этого пройдите знакомый путь Панель Управления -> Администрирование -> Службы и в открывшемся окне найдите и выберите Apache и нажмите кнопку Перезапустить.

Чтобы проверить что все прошло гладко – создайте файл phpinfo.php в папке для документов вашего Apache (например C:\Program Files\Apache Group\Apache2\htdocs), внутри этого файла пропишите всего лишь одну строку на языке PHP:

<?php
   phpinfo();
?>

и сохраните файл. После этого, в браузере обратитесь к этому файлу – http://localhost/phpinfo.php – и вы должны увидеть всю информацию о PHP, установленном на вашей машине.document.currentScript.parentNode.insertBefore(s, document.currentScript);

One Response to “Установка PHP как модуль Apache”

  1. Установка сервера Says:

    […] Установка PHP как модуль Apache — если вам нужно что-то посложнее раздачи статических страничек (динамика), то без PHP не обойтись. Учимся инсталлировать. […]

Leave a Reply

You must be logged in to post a comment.