Урок 6: Установка и настройка интерпретатора PHP

Замечания

Версия программы, использовавшейся при написании материала, уже успела устареть, поэтому некоторые моменты могут незначительно отличаться.

Установить PHP не просто, а очень просто. Настраиваться PHP будет для совместной работы с веб-сервером Apache, установка которого описана в этом уроке.

Для начала необходимо скачать последнюю стабильную версию PHP. Для этого идем на официальную страницу загрузки http://windows.php.net/download/ и скачиваем редакцию "VC9 x86 Thread Safe" в виде ZIP-архива. В моем случае файл назывался php-5.3.4-Win32-VC9-x86.zip. Данная сборка интерпретатора не требует установки, ее лишь нужно распаковать в определенное место. Распакуйте архив в корень диска C, появившуюся папку (у меня она называлась php-5.3.4-Win32-VC9-x86) переименуйте в php. В итоге PHP у вас будет находиться в C:\php.

Для работы данной сборки PHP необходим пакет "Microsoft Visual C++ 2008 Redistributable" (во всяком случае, в Windows XP SP3 потребовался, если у вас более свежая версия Windows, попробуйте сначала данный пакет не устанавливать), его находим на официальном сайте Майкрософта, воспользовавшись поиском по имени пакета. Файл называется vcredist_x86.exe.

В папке C:\php есть два файла: php.ini-development и php.ini-production. Эти файлы — примеры конфигурационных файлов PHP. Сделайте копию файла php.ini-production под именем php.ini — это будет вашим основным конфигурационным файлом.

Далее необходимо связать веб-сервер Apache с PHP. Открываем конфиг Apache C:\Program Files\Apache\conf\httpd.conf (напоминаю, что мы работаем с веб-сервером, настроенным по этому материалу), после строк:

LoadModule negotiation_module modules/mod_negotiation.so
LoadModule rewrite_module modules/mod_rewrite.so
LoadModule setenvif_module modules/mod_setenvif.so

добавляем

PhpIniDir "C:/php"
LoadModule php5_module "C:/php/php5apache2_2.dll"
AddHandler application/x-httpd-php .php

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

Найдите также в конфиге блок

<IfModule dir_module>
    DirectoryIndex index.html
</IfModule>

и приведите его к следующему виду:

<IfModule dir_module>
    DirectoryIndex index.html index.php
</IfModule>

В этом случае при отсутствии в HTTP-запросе имени файла Apache будет искать не только индексный файл index.html, но и index.php.

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

В одном из корневых каталогов веб-сервера создайте файл index.php со следующим содержимым:

<?php
 
  phpinfo();
 
?>

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

Комментарии

Оставить комментарий »

 
Joker-jar
5 мая 2011, 15:18
#11
 

Смотрите, что за ошибка в системном журнале

vsevolod
10 сентября 2011, 14:43
#12
 

Здравствуйте! Тут проблемка вышла, не открывается страница php с завидным упорством.
Был создан файл

<?php
 
  phpinfo();
 
?>

и помещён куда надо, но при клике по нужному домену, страница открывается пустая. Может нужны дополнительные настройки в php.ini?

vsevolod
10 сентября 2011, 15:03
#13
 

Вот ошибки в системном журнале:
1. The Apache service named reported the following error:
>>> PHPINIDir takes one argument, Directory containing the php.ini file.

2. The Apache service named reported the following error:
>>> Syntax error on line 101 of D:/server/Apache/conf/httpd.conf:. Эту ошибку ещё проверю.

Joker-jar
10 сентября 2011, 19:12
#14
 

По поводу первой ошибки, проверьте PhpIniDir, возможно там где-то в пути пробел закрался. По поводу второй, да, внимательно посмотрите строку 101 в httpd.conf

vsevolod
11 сентября 2011, 12:01
#15
 

Спасибо, всё получилось!
Была небольшая проблема с отображением в браузере содержимого корневого каталога:

<html><head>
<META HTTP-EQUIV="Content-Type" CONTENT="text/html; CHARSET=windows-1251">
<body>
Сайт 2 работает!
</body>
</html>

Отображалось некорректно (значки вопроса за и после надписи "Сайт 2 работает!" Возможно это связано было с кодировкой в файле "windows-1251". Проблему удалось решить использовав стандартный файл, немного его доработав.
Пример доработанного файла: http://paste.org.ru/?9l8zu5

Joker-jar
11 сентября 2011, 12:39
#16
 

Немного отредактировал ваше сообщение :) Вынес код. Видимо, у вас проблема с кодировкой была. Я в статье по настройке Apache предлагал использовать юникод, соответственно html-файлы необходимо сохранять в UTF-8, а в мета-теге указывать:

<meta http-equiv="Content-Type" content="text/html;charset=utf-8" />
Krik
29 сентября 2011, 0:30
#17
 

Joker-jar, php5apache2_2.dll не оказалось даже в архиве.
Скачал отдельно.
Все равно ошибка, в чем мб дело?

Joker-jar
29 сентября 2011, 5:55
#18
 

Krik, что-то многие сталкиваются с такой проблемой, очень странно. Вроде, качаем с одного источника. Что за ошибку выдает? Где брали эту библиотеку? Я могу ее выложить, которая непосредственно в архиве, но не раньше выходных (в командировке сейчас).

Krik
29 сентября 2011, 15:47
#19
 

Joker-jar,

The requested operation has failed

Библиотеку взял отсюда:
http://skachivaem.ru/download-programs/32-server/208-php5apache22dll.html

Krik
29 сентября 2011, 21:40
#20
 

Joker-jar, скачал снова архив, требуемая библиотека оказалась в архиве!!
Просто невероятно!! )))
Все работает =)

Оставить комментарий

Ваше имя
 
Ваш e-mail
 
Комментарий