Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Самоучитель PHP 4 - Котеров Д. В

..pdf
Скачиваний:
92
Добавлен:
24.05.2014
Размер:
4.38 Mб
Скачать

88

Часть II. Выбор и настройка инструментария. Web-сервер Apache

Нужно отметить, что последний пример работает не под всеми версиями Windows: иногда вместо того, чтобы выполнить файл test.bat, Apache выво- дит в браузер его содержимое. С чем это связано не совсем ясно, однако, кажется, можно избавиться от указанной ошибки путем манипулирования с реестром Windows. Если у вас test.bat не запускается, не расстраивайтесь: вряд ли вы когда-нибудь будете писать сценарии в виде bat-файлов, тем бо- лее, что этот способ несовместим с Unix.

Если что-то пошло не так, либо окно Apache открывается и тут же закрывается, значит, где-то произошла ошибка — скорее всего, причины ее возникновения можно найти в httpd.conf. За детальным разъяснением этих причин можно обратиться к log-файлам, расположенным в каталоге C:\Program Files\Apache Group\Apache\logs.

Виртуальные хосты Apache

Итак, вы установили Apache и получили, таким образом, каталог z:/home/localhost/www для хранения документов и z:/home/localhost/cgi

для CGI. Однако в Интернете вы поддерживаете (или, скорее всего, будете поддерживать) несколько серверов, а Apache создал для вас только один. Конечно, можно структуру этих нескольких серверов хранить на одном сервере, однако проще и удобнее было бы создать несколько виртуальных хостов с помощью Apache. В нашем распоряжении есть два вида виртуальных хостов: отдельные для каждого IP-адреса или же использующие один общий IP-адрес (так называемые name-based хосты хосты, определяемые по имени). В тренировочных целях мы рассмотрим оба варианта, а именно, создадим хост hacker, задействующий тот же адрес, что и localhost, а также хост cracker с адресом 127.0.0.2.

Конечно, вместо "hacker" и "cracker" вам нужно будет указать желаемые имена ваших виртуальных хостов. Советуем назвать их так же, как и на вашем настоящем Web-сервере, но только без "суффикса" .ru или .com это может многое упростить при программировании сценариев.

Как это принято в Unix, каждый сервер будет представлен своим каталогом в z:/home с именем, совпадающим с именем сервера (мы уже проделывали нечто подобное с хостом localhost). Например, сервер hacker будет храниться в каталоге z:/home/hacker, который вам необходимо создать прямо сейчас (конечно, вместе с его подкаталогами cgi и www, как мы делали это ранее), а хост cracker — в каталоге z:/home/cracker. В этих каталогах будут находиться:

rфайлы access.log с журналом доступа к виртуальному серверу;

rфайлы errors.log с журналом ошибок сервера;

Глава 4. Установка Apache

89

rкаталог www, где, как обычно, будут размещаться HTML-документы;

rкаталог cgi для хранения CGI-программ.

На рис. 4.5 представлена структура каталогов, которая должна у нас получиться.

Рис. 4.5. Структура каталогов виртуального хоста с объявлением главного хоста

Для установки виртуальных хостов необходимо внести некоторые изменения в файл конфигурации Apache httpd.conf (см. выше), а также в некоторые файлы Windows. Опишем, что для этого нужно сделать.

Откройте файл httpd.conf ожете для этого воспользоваться уже упоминавшимся выше ярлыком Edit configuration. Перейдите в конец файла, вам предстоит добавить туда несколько строк. Вставьте следующие строки в конце файла после всех комментариев:

Листинг 4.3. Настройка виртуальных хостов

NameVirtualHost 127.0.0.1

#----localhost <VirtualHost localhost>

ServerAdmin webmaster@localhost ServerName localhost

DocumentRoot "z:/home/localhost/www" ScriptAlias /cgi/ "z:/home/localhost/cgi/" ErrorLog z:/home/localhost/error.log CustomLog z:/home/localhost/access.log common

</VirtualHost>

#----hacker <VirtualHost hacker>

90 Часть II. Выбор и настройка инструментария. Web-сервер Apache

ServerAdmin webmaster@hacker.ru ServerName hacker

DocumentRoot "z:/home/hacker/www" ScriptAlias /cgi/ "z:/home/hacker/cgi/" ErrorLog z:/home/hacker/error.log CustomLog z:/home/hacker/access.log common

</VirtualHost>

#----cracker <VirtualHost cracker>

ServerAdmin webmaster@cracker.ru ServerName cracker

DocumentRoot "z:/home/cracker/www" ScriptAlias /cgi/ "z:/home/cracker/cgi/" ErrorLog z:/home/cracker/error.log CustomLog z:/home/cracker/access.log common

</VirtualHost>

Обратите внимание на то, что мы добавили дополнительно секцию <VirtualHost> для хоста localhost. Если этого не сделать, то все запросы к нему (то есть, по адресу 127.0.0.1) будут обработаны name-based хостом hacker. Происходит это, видимо, из-за того, что хосты в секции <VirtualHost> имеют больший приоритет при обработке, чем главный хост, который мы создали ранее.

Директива NameVirtualHost говорит серверу, что указанный IP-адрес может использоваться несколькими виртуальными хостами, поэтому для обработки запросов, поступающих на этот адрес, нужно привлекать протокол HTTP 1.1 (который, собственно, и поддерживает технику работы с name-based хостами).

При желании можно добавить и другие параметры в блоки <VirtualHost> (например, DirectoryIndex и т. д.) Не переопределенные параметры наследуются виртуальным хостом от главного. Однако не советую злоупотреблять настройками в этих секциях — лучше сделать их в файле htaccess в директории нужного хоста, потому что компания, которая предоставляет (будет предоставлять) вам "настоящие" виртуальные хосты в Интернете, вряд ли позволит менять данные блоки.

Но как же система узнает, что хост cracker сопоставлен с адресом 127.0.0.2, а hacker — name-based хост? Для решения проблемы надо немного подправить системный файл hosts, который находится в каталоге C:\WINDOWS для операционных систем Windows 95/98/Millenium и C:\WINNT\SYSTEM32\DRIVERS\etc для

Windows NT и Windows 2000.

Глава 4. Установка Apache

91

Не путайте файл hosts (без расширения) с файлом hosts.sam, который, ско- рее всего, также расположен в том же каталоге! Последний файл является просто демонстрационным примером Microsoft и никак не используется систе- мой. Если файла hosts не существует, его необходимо создать.

Файл hosts — обычный текстовый файл, и в него может быть заранее включена только одна строка:

127.0.0.1localhost

Именно эта строка и задает соответствие имени localhost адресу 127.0.0.1.

Ради справедливости следует сказать, что имя localhost работает и без ука- занной выше строки. Ну и выдумщики же эти парни из компании Microsoft!

Для нашего виртуального хоста надо добавить соответствующую строчку, чтобы файл выглядел так:

Листинг 4.4. Файл hosts

127.0.0.1localhost hacker

127.0.0.2cracker

Обратите внимание на то, что хост hacker описан на той же строке, что и localhost. Дело в том, что в файле hosts должны указываться только уникальные IP-адреса. Если же одному адресу сопоставляется сразу несколько хостов, то один из них (тот, который идет первым) объявляется главным, а остальные — его псевдонимами. В нашем случае localhost — главный, а hacker — его псевдоним. Apache при получении запроса на адрес 127.0.0.1 узнает, что он пришел хосту с именем hacker, и активизирует соответствующий блок <VirtualHost>.

Итак, мы создали виртуальные хосты со следующими свойствами:

Хост hacker:

rимя — hacker;

rдоступен по адресу http://hacker;

rрасположен в каталоге z:/home/hacker;

rкаталог для хранения документов — z:/home/hacker/www, доступный по адре-

су http://hacker/;

rкаталог для CGI — z:/home/hacker/cgi, доступный по адресу http://hacker/cgi/;

rфайлы журналов хранятся в z:/home/hacker.

92

Часть II. Выбор и настройка инструментария. Web-сервер Apache

Хост cracker:

rимя — cracker;

rдоступен по адресу http://cracker или http://127.0.0.2;

rразмещен в каталоге z:/home/cracker;

rкаталог для хранения документов — z:/home/cracker/www, доступен по адресу http://cracker/;

rкаталог для CGI — z:/home/cracker/cgi, доступен по адресу http://cracker/cgi/;

rфайлы журналов содержатся в z:/home/cracker.

Необходимо заметить, что главный хост (невиртуальный, тот, который мы соз- дали ранее) по-прежнему доступен по адресу http://127.0.0.1 или http://localhost. Более того, его директория cgi-bin "видна" всем суще- ствующим виртуальным хостам, так что вы можете ее использовать.

После всех изменений не забывайте перезапускать Apache.

Просто завершить сервер, нажав на кнопку Закрыть в правом верхнем углу его окна, недостаточно нужно воспользоваться пунктом Stop Apache в меню

Пуск ú Программы ú Apache Web Server ú Management. В противном случае закроется только окно Apache, а сам сервер останется работать в фоновом режиме, так что изменения, внесенные в httpd.conf, не будут активизирова- ны.

Глава 5

Установка PHP и MySQL

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

Прежде всего, вам нужно запастись терпением и загрузить с официального сайта PHP http://www.php.net из секции Downloads два файла: один с расширением zip, а другой — exe. Ссылки на эти файлы находятся почти на самом верху страницы, после заголовка Win32 Binaries. Первый файл представляет собой полную версию PHP 4, но не имеет удобной программы установки, а второй, наоборот, является автоматической программой установки, но не содержит в себе наиболее часто используемых модулей.

Так было на момент написания данной книги. Возможно, в будущем разработ- чики PHP будут поставлять дистрибутив в виде одного большого exe-файла, но пока это не так.

Советую вам также скопировать полную документацию по PHP, ссылка на которую есть на странице чуть ниже. Уверен, в будущем она еще не раз вас выручит.

Стоит сказать еще пару слов насчет версии PHP. Язык постоянно совершенствуется, и на момент создания книги последней версией была 4.0.3. Скорее всего, когда вы будете читать эти строки, выйдет более новая версия — например, 4.0.10. Думаю, наилучшим решением будет загрузить ту, что поновее, потому что в ней, возможно, исправлены некоторые ошибки из предыдущих версий языка. Главное, чтобы первая цифра была 4, потому что "третий" PHP сильно проигрывает "четвертому" по количеству поддерживаемых функций.

Установка PHP

1.Запустите только что загруженный exe-файл. В открывшемся диалоговом окне нажмите кнопку Next (рис. 5.1).

94

Часть II. Выбор и настройка инструментария. Web-сервер Apache

Рис. 5.1. Установка PHP

2.Согласитесь с условиями лицензии, нажав кнопку I Agree. В появившемся диалоговом окне выберите тип установки Standard.

3.Теперь укажите директорию, в которую будет установлен PHP. По умолчанию

предлагается C:\PHP, но, думаю, логичнее было бы выбрать C:\Program Files\PHP4, "поближе" к Apache (рис. 5.2). Для указания этого каталога нажмите кнопку Browse... и введите его имя, затем нажмите, как обычно, кпопку OK и потом — Next, чтобы перейти к следующему диалоговому окну.

Рис. 5.2. Выбор каталога для установки PHP

Глава 5. Установка PHP и MySQL

95

4.Задайте адрес вашего SMTP-сервера (Send Mail Transfer Protocol — Протокол пересылки почтовой корреспонденции), а также ваш адрес электронной почты. Именно этот сервер и обратный адрес будут использованы для исходящих почтовых запросов, когда вызывается функция Mail() языка PHP. В общем, это тот самый сервер, через которого отсылает почту ваш обычный почтовый клиент — например, Outlook Express. Впрочем, можете и оставить в текстовых полях значения по умолчанию — в этом случае функция Mail() просто не будет работать на локальной машине.

5.Выберите сервер, на который будет настроен PHP. В нашем случае это — Apache (рис. 5.3).

Начнется процесс копирования файлов. После его окончания, возможно, появятся еще некоторые диалоговые окна с различными извещениями. Не обращайте на них внимания.

На этом этапе язык PHP можно считать уже почти установленным — нам осталось только настроить Apache, чтобы он мог распознать PHP-сценарии, а также подключить дополнительные модули, которые содержатся в загруженном нами zip-архиве.

Рис. 5.3. Выбор сервера

Настройка Apache для работы с PHP

1.Откройте в Блокноте файл конфигурации Apache httpd.conf, находящийся в ката-

логе C:\Program Files\Apache Group\Apache\conf. Впрочем, вы можете и не искать этот файл вручную, а воспользоваться пунктом Edit configuration в меню

Пуск ú Программы ú Apache Web Server ú Management.

2.Найдите в тексте файла такую закомментированную строку:

96

Часть II. Выбор и настройка инструментария. Web-сервер Apache

#AddType application/x-httpd-php php

3.Раскройте комментарий:

AddType application/x-httpd-php php

Таким образом, мы присвоили всем файлам с расширением php тип application/x-httpd-php.

4.Сразу же после этой строки добавьте такие настройки:

ScriptAlias /_php/ "C:/Program Files/PHP4/" Action application/x-httpd-php "/_php/php.exe"

Этим мы, во-первых, создаем синоним _php для каталога с процессором PHP, чтобы Apache мог получить к нему доступ, а во-вторых, связываем все файлы ти-

па application/x-httpd-php с обработчиком php.exe.

Префикс к строке "_php" выбран из такого расчета, чтобы она в будущем не кон- фликтовала с именами каталогов, которые вы можете объявить на вашем хосте.

5.Сохраните изменения в файле конфигурации, остановите Apache, если он был до этого запущен (пункт Пуск ú Программы ú Apache Web Server ú Management ú Stop Apache), и стартуйте сервер снова. Если Apache не запускается (его окно открывается и тут же закрывается), значит, вы где-то допустили синтаксическую ошибку. В этом случае можете воспользоваться рекомендациями по устранению ошибок, описанными в главе 4.

Тестирование PHP

Давайте теперь убедимся, что PHP-сценарии работают. Для этого создадим в каталоге z:/home/localhost/www файл test.php со следующим содержанием:

Листинг 5.1. Тестовый сценарий

<?

echo "It works!<br>\n"; phpinfo();

?>

Теперь наберите в браузере: http://localhost/test.php. Должна отобразиться страница с разнообразной информацией о PHP, которая генерируется функцией phpinfo().

Глава 5. Установка PHP и MySQL

97

Напоминаем, что PHP-сценарии не то же самое, что CGI-сценарии. В част- ности, если CGI-сценарий обычно располагают в /cgi-bin/ или /cgi/, то php-сценарий должен находиться в каталоге с документами.

Если страница не отображается, значит, вы допустили ошибку в файле httpd.conf. Откройте его снова и исправьте ошибку, затем не забудьте перезапустить Apache.

Напоминаю еще раз, что просто остановить Apache, так сказать, принудитель- ным образом нельзя необходимо воспользоваться ярлыком Stop Apache, как это было описано выше. В противном случае при использовании некоторых версий сервера закроется только окно Apache, а сам сервер останется рабо- тать.

Установка дополнительных модулей

После того как мы убедились в работоспособности PHP, нужно подключить к нему дополнительные модули, которые находятся в загруженном zip-файле. Среди них — средства для работы с рисунками, календарем, FTP (File Transfer Protocol — Протокол передачи файлов) и т. д. Нужно заметить, что архив содержит полную версию PHP, а не только модули для него. Единственная причина, почему мы не обратились к нему сразу — отсутствие удобной программы установки. Итак, для этого нужно проделать ряд действий.

1.Разверните zip-архив прямо в тот же самый каталог, где уже установлен PHP (в нашем примере это C:\Program Files\PHP4). Некоторые файлы перекроются, некоторые — добавятся. В частности, появится каталог extensions, как раз и содержащий практически все необходимые файлы.

2.Теперь нужно дать знать PHP, какие модули он может использовать, а также осуществить еще некоторые настройки. Для этого откройте в Блокноте файл php.ini из каталога с файлами Windows (обычно C:\WINDOWS). Этот файл был помещен туда программой установки PHP. Файл представляет собой набор строк, каждая из которых соответствует значению одного параметра. Части строк, расположенные после символа ;, рассматриваются как комментарии и игнорируются.

3.Найдите параметр magic_quotes_gpc и отключите его: magic_quotes_gpc=Off

Этим мы запрещаем PHP принудительно вставлять обратные слэши перед некоторыми символами, поступающими из формы. Мы еще обязательно поговорим об этом и других параметрах ближе к концу книги.

4.Теперь найдите и настройте следующий параметр: