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

advertisement
Занятие 1.
Web-программирование
Прежде, чем приступать непосредственно к изучению PHP, необходимо представлять
себе принципы и механизмы функционирования сети Интернет. Определимся с базовыми
понятиями.
В ходе нашего обучения условимся, что вы уже знакомы с HTML. Напомню только, что
HTML - язык гипертекстовой разметки, который был принят организацией W3C в
качестве официального языка для разметки информации, размещаемой в сети Интернет.
Кроме того, вы должны знать следующие понятия:
Браузер - это программа для просмотра Web-страниц и перехода с одной Web-страницы
на другую.
Сервер - это любой отдельно взятый компьютер в Интернете, который позволяет другим
машинам использовать себя в качестве «посредника» при передаче данных.
WEB-сервер – это программа, обрабатывающая запросы клиентов – пользователей
WWW.
DNS-имя – символьное представление имени ресурса в Интернет (например,
www.aonb.ru).
HTTP - Hyper Text Transfer Protocol - протокол передачи гипертекста. Этот протокол
используется при пересылке Web-страниц с одного компьютера на другой.
IP-адрес – это четыре 8-разрядных числа (то есть принадлежащих диапазону от 0 до 255
включительно), соединенных точками. Любой компьютер, подключенный к Интернет, должен
иметь уникальный IP-адрес.
Теперь давайте представим себе механизм, по которому происходит отображение HTMLдокумента в вашем браузере:
1. Вы посылаете запрос на сервер в сети Интернет. Проще говоря, вводите в адресной
строке браузера адрес страницы, которую вы хотите посетить (например,
http://www.aonb.ru).
2. Браузер, используя DNS-имя (имя страницы в виде www.aonb.ru) или IP-адрес сервера
в Интернете (в виде 212.14.162.76) находит сервер, и передаёт ему запрос на
получение информации по протоколу HTTP.
3. WEB-сервер принимает запрос, и, если запрос верен, начинает передачу
запрошенного документа HTML по протоколу HTTP браузеру на вашем компьютере.
4. Браузер, по мере получения документа в виде HTML, выводит на экран
отформатированное изображение страницы.
5. После того, как WEB-сервер полностью вернул документ HTML, соединение с
сервером прекращается.
Тот же сценарий происходит, когда вы нажимаете на ссылку на странице в браузере.
Теперь отмечу очень важные моменты, которые вы должны помнить:
При нажатии на ссылку происходит полное обновление страницы, загруженной в браузер
с сервера.
Исключения составляют:
a.
Страницы, сделанные с использованием фреймов. В этом случае обновляется
только содержимое фрейма, в котором была ссылка.
b.
Ссылка на "якорь" вида page#1, в этом случае осуществляется переход на область
страницы, содержащий якорь "1".
c.
Ссылки, реакция на которые - запуск Java Script функции.
Программирование
Чтобы перейти к
программирования вообще.
программированию,
стоит
остановиться
на
принципе
Что такое язык программирования? Давайте представим себе диалог Начальник Подчинённый. Начальник и подчинённый общаются на одном языке (иначе им трудно будет
понять друг друга). Начальник говорит, что надо сделать, а подчинённый делает. Всё просто.
Теперь представим себе диалог Человек - Компьютер. Хотя компьютеры уже и частично умеют
понимать речь, прогресс ещё не дошёл до воплощения мечты управлять компьютером голосом.
Давайте представим себе, что компьютер понимает некий язык, который описывает основные
операции, которые может выполнить компьютер. Назовём это языком программирования.
Следовательно, чтобы объяснить компьютеру, что нужно сделать, достаточно обратиться к нему
на этом языке, и дать инструкции.
Так как обычно некое задание, которое мы хотим дать компьютеру, включает в себя
последовательность действий и условных переходов (если то - сделать это, иначе сделать нечто
другое), можно оформить список этих команд и условных переходов в текстовый файл - мы
будем называть это ПРОГРАММОЙ.
Таким образом, программа - это последовательность команд на определённом языке
компьютера, которая определяет компьютеру последовательность действий, которые
необходимо выполнить.
Язык программирования - это совокупность операторов (слов), которые в рамках этого
языка обозначают какое-либо элементарное действие. Например, на многих языках
программирования оператор "PRINT" осуществляет вывод на экран (или куда-либо ещё) строки
информации (текста). Выглядит это так: PRINT "строка текста".
Как компьютер выполняет программу
Теперь давайте посмотрим, как компьютер будет выполнять программу. Вообще,
компьютер понимает по определению только машинный код - единицу и ноль. Но писать на
таком совершенно непотребном языке мы не будем. Для облегчения программирования люди и
придумали языки программирования. Давайте рассмотрим простой пример.
Предположим, что компьютерный код, который выводит на экран строку "привет",
выглядит так:
0010011101010010101011111010010101010101001001010101010101011000100101001001
А мы хотим, чтобы выглядело это так:
Print "привет";
Для этого мы и создаём язык программирования - программу, которая, встретив оператор
"PRINT", создаст на основе его и строки, которую надо напечатать, машинный код, который
сделает это, и передаст его на выполнение компьютеру.
Таким образом мы выясняем, что язык программирования - это тоже программа. Прямо
матрица получается… программа вызывает программу… более того, операционная система тоже программа, в которой выполняются все остальные программы. Короче, в конечном счёте
всё попадает в микропроцессор, который "понимает" только нули и единицы…
Интерпретаторы и компиляторы
Вот мы и подошли к ещё одному важному понятию. Как язык программирования
(являясь программой) выполняет программу?
Очень просто. Он считывает нашу программу (предназначенную для него, в виде
текстового файла), выполняет синтаксический разбор этой программы (проверяет на ошибки
текст программы), а затем переводит то, что мы написали, в машинный код и передаёт на
выполнение компьютеру. То есть, язык программирования выполняет роль переводчика посредника между нами и компьютером.
Однако, есть два вида языков программирования - интерпретаторы и компиляторы.
Интерпретатор не производит полный перевод кода программы в машинный язык, а
САМ выполняет его. То есть, программа, написанная для языка-компилятора, не может
выполняться отдельно от языка.
Компилятор переводит код программы в машинный, и создаёт на основе отдельную
программу, которая может быть выполнена сама по себе.
Пример из жизни: вы архивируете файлы архиватором RAR. Можно создать обычный
архив, для распаковки которого понадобится сам архиватор (это пример интерпретатора). А
можете создать самораспаковывающийся SFX-архив, для распаковки которого не понадобится
архиватор RAR - вы запустите архив, выполненный в виде программы, и он распакуется сам.
Установка PHP и Apache
Дистрибутивы и ссылки
1. Официальный сайт Apache: http://www.apache.org/
2. Официальный сайт PHP: http://ru.php.net/
3. Официальный сайт Active Perl: http://www.activestate.com/
4. Официальный сайт MySQL: http://www.mysql.com/
И еще несколько ссылок:
1. Полезная информация об Apache: http://www.apache.ru/
2. Всероссийский клуб вебмастеров: http://www.webclub.ru/
3. Клуб разработчиков PHP: http://www.phpclub.net/
4. Ну и, конечно, Лаборатория dk: http://www.dizain.ru/dklab
Установка Apache
В качестве Web-сервера мы будем использовать Apache, наиболее быстрый и удобный
web-сервер, позволяющий одновременно работать с технологиями PHP, CGI и Perl-сценариями
в ОС Windows.
Сначала необходимо найти дистрибутив, можно его скачать с официального сайта
Apache: http://www.apache.org/.
Важно: Необходимо в точности выполнять перечисленные ниже шаги, не пропуская и не
откладывая ни одного.
Этап первый - установка
1. Определитесь с директорией, в которую Вы будите устанавливать Apache. Все
дальнейшие рассуждения основаны на том, что Вы выбрали для этой цели такой
каталог: F:\usr\local\apache. Если диска F: у Вас нет, или если Вы не хотите его
захламлять, советуем сделать одно из трех:
1. Создайте диск F: с помощью какой-нибудь программы для виртуальных разделов
(например, с помощью встроенной в Windows 95/98 программы DriveSpace). Это
самое лучшее решение, и с точки зрения экономии памяти, и с точки зрения
быстродействия. Ведь что такое Web-сайт, как не набор очень небольших файлов?
А DriveSpace как раз и оптимизирует работу с такими файлами.
2. Сделайте виртуальный диск F:. Для этого создайте где-нибудь на любом диске
директорию, которая в будущем будет являться корневой для диска F:.
Предположим, Вы выбрали C:\INTERNET. Далее, в начале файла c:\autoexec.bat
пропишите такую строку: subst f: C:\INTERNET
3. Перезагрузите компьютер. У вас должен появиться виртуальный пустой диск F:.
Теперь все, что сохранено в каталоге C:\Internet, будет отображаться на панели
диска F:, как будто это – обычный жесткий диск.
4. Наконец, Вы можете всего этого не делать и поставить Apache на любой другой
диск, только тогда Вам придется немного тяжелее при выполнении всех
остальных действий. Нужно будет все указываемые пути заменять на Ваши
собственные, а это крайне неприятно. Еще раз настоятельно рекомендую
воспользоваться диском F:.
2. Запустите только что скачанный файл. В появившемся диалоге нажмите кнопку Yes, а
затем - кнопку Next.
3. Теперь
нажмите
Browse. Вручную задайте
f:\usr\local\apache и нажмите кнопку OK.
директорию
для
установки:
4. Выберите тип установки - Сustom и уберите флажок Source Code (если, конечно, не
хотите посмотреть исходные тексты Apache). Этим Вы сэкономите себе 3 Мбайта.
5. Нажмите Next и подождите, пока будут копироваться файлы Apache.
6. На запрос о перезагрузке компьютера ответьте "Перезагрузить".
Поздравляем - Apache установлен! Теперь самое неприятное - его настройка.
Этап второй - настройка файла конфигурации Apache mime.types
1. Откройте директорию f:\usr\local\apache\conf. Откройте находящийся там файл
mime.types.
2. Найдите в нем такую строчку:
text/html
html htm
Измените ее на
text/html
html htm shtml shtm sht
Следует заметить, что если Вы по каким-то причинам не хотите портить файл mime.types,
то можно вместо этого прописать в файле httpd.conf (см. ниже) строки вида
AddType text/html html htm shtml shtm sht
Этап третий - настройка файла httpd.conf
Внимание! Это - самый ответственный момент установки. Просим соблюдать инструкции
БУКВАЛЬНО.
1. Откройте директорию f:\usr\local\apache\conf. Откройте находящийся там файл httpd.conf.
Это - единственный файл, который Вам осталось настроить. Вам предстоит найти и
изменить в нем некоторые строки, а именно те, о которых упоминается далее. Во
избежание недоразумений не трогайте все остальное. Следует заметить, что в нем
каждый параметр сопровождается несколькими строками комментариев, разобраться в
которых с первого раза довольно тяжело. Поэтому не обращайте на них внимание.
2. В поле ServerAdmin укажите Ваш E-mail адрес, который будет показываться в
сообщениях об ошибке сервера. Например:
ServerAdmin my@email.com
3. В поле ServerName напишите любое слово - на работе это не сказывается, например:
ServerName localhost
Только не забудьте раскомментировать поле ServerName, то есть убрать символ "#" перед
этим параметром (по умолчанию он закомментирован)!
4. В поле DocumentRoot укажите ту директорию, в которой будут храниться Ваши htmlфайлы, например:
DocumentRoot f:/www
Разумеется, можете указать и любую другую директорию, если хотите. В любом случае,
не забудьте ее создать, лучше сделайте это прямо сейчас!
5. Найдите блок, начинающийся строкой <Directory /> и заканчивающийся </Directory>
(вообще, такие блоки обозначают установки для заданной директории и всех ее
поддиректорий). Его нужно изменить на:
<Directory />
Options Indexes Includes
AllowOverride All
</Directory>
Таким образом, в этом блоке будут храниться установки для всех директорий по
умолчанию (т.к. это - корневая директория).
6. Найдите аналогичный блок, начинающийся <Directory "f:/usr/local/apache/htdocs"> и
заканчивающийся </Directory>. Там будет много комментариев, не обращайте на них
внимание. Этот блок следует заменить на:
<Directory "f:/www">
Options Indexes Includes
AllowOverride All
Order allow,deny
Allow from all
</Directory>
Это - установки для директории с Вашими html-документами. Если хотите, можете
установить другую директорию, главное, чтобы она совпадала с той, которая прописана в
параметре DocumentRoot
7. Идем дальше. Установите UserDir, например так:
UserDir f:/home
Это будет директория, в которой хранились бы домашние страницы пользователей, если
бы это был настоящий Web-сервер, а также корневые каталоги виртуальных хостов (см. ниже).
Не забудьте также создать этот каталог.
8. Установите DirectoryIndex так:
DirectoryIndex index.htm index.html
Это - так называемые файлы индекса, которые автоматически выдаются сервером при
обращении к какой-либо директории, если не указано имя html-документа. В принципе, можно
добавить сюда и другие имена, например, index.phtml, если Вы будите работать с PHP и т.д.
9. Найдите и пропишите такой параметр:
ScriptAlias /cgi-bin/ "f:/cgi-bin/"
Да, именно так, с двумя слэшами. Это будет та директория, в которой должны храниться
Ваши CGI-скрипты. Если хотите, можете задать другое имя, например:
ScriptAlias /mycgi/ "f:/mycgidir/"
Подобный параметр говорит Apache о том, что, если будет указан путь вида
http://localhost/cgi-bin, то на самом деле следует обратиться к директории f:/cgi-bin.
10. Теперь следует найти и настроить блок параметров, начинающийся с <Directory "f:/cgibin"> и заканчивающийся </Directory>. Это - установки для Вашей CGI-директории (если
Вы установили для нее другое имя на предыдущем шаге, соответственно модифицируйте
путь). Там должно быть:
<Directory "f:/cgi-bin">
AllowOverride All
Options ExecCGI
</Directory>
11. Настройте следующий параметр:
AddHandler CGI-script .bat .exe
Это говорит Apache о том, что файлы с расширением .exe и .bat нужно рассматривать как
CGI-скрипты.
12. И последнее - установите:
AddType text/html .shtml
AddHandler server-parsed .shtml .shtm
Или, если Вы хотите, чтобы и обычные файлы html обрабатывались SSI, напишите так:
AddHandler server-parsed .shtml .shtm .html .htm
13. Теперь не забудьте сохранить изменения и закройте Блокнот.
Этап третий. Тестирование Apache
Поздравляем - Вы настроили свой Apache, и он должен уже работать! Для запуска
сервера нажмите Пуск->Программы->Apache Web Server->Start Apache, при этом появится окно,
очень похожее на Сеанс MS-DOS, и ничего больше не произойдет. Не закрывайте его и не
трогайте до конца работы с Apache.
Если окно открывается и тут же закрывается, это означает, что вы допустили какую-то
ошибку в файле httpd.conf. В этом случае придется искать неточность.
Несколько слов о том, как можно упростить запуск и завершение сервера. В Windows
можно назначить любому ярлыку функциональную комбинацию клавиш, нажав которые, Вы
запустите этот ярлык. Так что щелкните правой кнопкой на панели задач, в контекстном меню
выберите Свойства, затем Настройка меню и кнопку Дополнительно. В открывшемся
Проводнике назначьте ярлыку Start Apache as console app комбинацию Ctrl+Alt+A, а ярлыку
Shutdown Apache as console app - Ctrl+Alt+S.
Вот шаги, которые можно проделать для проверки работоспособности сервера:
 Проверка HTML: в директории f:/www с html-документами Apache создайте файл
index.html. Теперь запустите браузер и наберите:
http://localhost/index.html
или просто
http://localhost/
Загрузится Ваш файл.
 Проверка CGI: в директории f:/cgi-bin для CGI-скриптов создайте файл test.bat с таким
содержанием:
@echo off
echo Content-type: text/html
echo.
echo.
dir
Теперь в браузере наберите:
http://localhost/cgi-bin/test.bat
В окне отобразится результат команды DOS dir. (Хотелось бы отметить, что указанный
тест работает не на всех версиях Windows: иногда вместо того, чтобы выполнить файл test.bat,
Apache выводит в браузер его содержимое. С чем это связано - не совсем ясно, однако, кажется,
можно избавиться от указанной ошибки путем манипулирования с Реестром. Если у Вас test.bat
не запускается, не расстраивайтесь: вряд ли Вы когда-нибудь будете писать скрипты в виде batфайлов, тем более, что это несовместимо с Unix.)
 Проверка SSI: аналогична проверке html. В каталоге f:/www создайте файл test.shtml со
следующим содержанием:
SSI Test! <HR>
<!--#include virtual="/index.html"-->
<HR>
Затем наберите в браузере:
http://localhost/test.shtml
Должен открыться файл, который состоит из текста «SSI Test!», за которым следует
содержимое файла index.html между двумя горизонтальными чертами. Если этого не
произошло, значит, вы неправильно сконфигурировали SSI.
Установка PHP
Установка PHP как CGI-приложения
Итак, Apache уже установлен в директорию f:/usr/local/apache и полностью
работоспособен. Соответственно, PHP хорошо бы установить рядышком — скажем, в
f:/usr/local/php
Распаковываем архив дистрибутива PHP в f:/usr/local/php. Важную роль играют
следующие файлы:
 php.exe — интерпретатор командной строки
 php4ts.dll — собственно ядро PHP
 php.ini-dist — конфигурационный файл, версия из дистрибутива
Скопируйте файл php4ts.dll в каталог C:\WINDOWS\SYSTEM32 (или соответствующий).
Скопируйте файл php.ini-dist в каталог C:\WINDOWS и переименуйте его в php.ini.
Проверим, работает ли PHP сам по себе.
Создайте в директории с PHP текстовый файл с именем, например, test.php со
следующим содержанием:
<? echo "TEST" ?>
Запустите его из командной строки:
php.exe test.php
Получаете такое вот:
Content-type: text/html TEST
Это означает, что PHP сам по себе работает.
Последующие настройки касаются только файла конфигурации Apache httpd.conf.
Добавим mime-тип, соответствующий расширению программ PHP:
AddType application/x-httpd-php .php .php3 .phtml
Причем это следует сделать в секции описания модуля mod_mime — это стандартный
модуль Apache. Либо добавить в конфигурационный файл mime.types. Но лучше вносить
изменения только в один файл, а не в десять сразу.
Затем поставим действие (action) в соответствие указанному нами типу:
<Directory "f:/usr/local/php">
Options ExecCGI
</Directory>
ScriptAlias "/__php_dir__/" "f:/usr/local/php/"
Action application/x-httpd-php "/__php_dir__/php.exe"
Это рекомендуется сделать непосредственно перед секцией Virtual Hosts.
Установка PHP как модуля Apache
1. Копируем php.ini в директорию Windows.
2. Создаем директорию, в которую положим php4ts.dll и php4apache.dll. В соответствии с
вышеприведенными соглашениями — f:/usr/local/php
3. Находим секцию httpd.conf "Dynamic Shared Object (DSO) Support". Добавляем свою
строчку:
LoadModule php4_module "путь-к-директории-php/php4apache.dll"
Если Вы следовали приведенным выше рекомендациям назначения имен директорий, то
она должна выглядеть как:
LoadModule php4_module "f:/usr/local/php/php4apache.dll"
4. Добавляем mime-тип AddType application/x-httpd-php .phtml .php .php3 .php4
5. Если Вы ранее воспользовались альтернативным способом (подключение PHP как CGI),
то, пожалуй, самое время убрать строчки, связанные с сопоставлением action для
указанного типа — просто забьем комментариями:
#<Directory "f:/usr/local/php">
# Options ExecCGI
#</Directory>
#ScriptAlias "/__php_dir__/" "f:/usr/local/php/"
#Action application/x-httpd-php "/__php_dir__/php.exe"
6. Ну и все — попробуем запустить Apache. При нормальной работе увидите примерно
такую строчку: Apache/1.3.12 (Win32) PHP/4.0.4pl1 running
Подключение расширений
В Windows, для подключения расширений следует раскомментировать соответствующие
строки extension=... в php.ini, не забыв прописать путь к ним в строке extension_dir=.. (обычно
они находятся в f:/usr/local/php/extensions).
Download