История PHP
Язык PHP был разработан как инструмент для решения чисто практических задач. Его создатель, Расмус Лердорф, хотел знать, сколько человек читают его online-резюме, и написал для этого простенькую CGI-оболочку на языке Perl, т.е. это был набор Perl-скриптов, предназначенных исключительно для определенной цели – сбора статистики посещений.
Для справки. CGI (Common Gateway Interface – общий интерфейс шлюзов) является стандартом, который предназначен для создания серверных приложений, работающих по протоколу HTTP. Такие приложения (их называют шлюзами или CGI-программами) запускаются сервером в режиме реального времени. Сервер передает запросы пользователя CGI-программе, которая их обрабатывает и возвращает результат своей работы на экран пользователя. Таким образом, посетитель получает динамическую информацию, которая может изменяться в результате влияния различных факторов. Сам шлюз (скрипт CGI) может быть написан на различных языках программирования – Cи/C++, Fortran, Perl, TCL, UNIX Shell, Visual Basic, Python и др.
Вскоре выяснилось, что оболочка обладает небольшой производительностью, и пришлось переписать ее заново, но уже на языке Си. После этого исходники были выложены на всеобщее обозрение для исправления ошибок и дополнения. Пользователи сервера, где располагался сайт с первой версией PHP, заинтересовались инструментом, появились желающие его использовать. Так что скоро PHP превратился в самостоятельный проект, и в начале 1995 года вышла первая известная версия продукта, называвшаяся Personal Home Page Tools (средства для персональной домашней страницы). Средства эти были более чем скромными: анализатор кода, понимающий всего лишь несколько специальных команд, и набор утилит, полезных для создания гостевой книги, счетчика посещений, чата и т.п.
К середине 1995 года после основательной переработки появилась вторая версия продукта, названная PHP/FI (Personal Home Page / Forms Interpreter – персональная домашняя страница/ интерпретатор форм). Она включала набор базовых возможностей сегодняшнего PHP, возможность автоматически обрабатывать html-формы и встраиваться в html-коды. Синтаксис PHP/FI сильно напоминал синтаксис Perl, но был более простым.
В 1997 вышла вторая версия Cи-реализации PHP – PHP/FI 2.0. К тому моменту PHP использовали уже несколько тысяч человек по всему миру, примерно с 50 тыс. доменов, что составляло около 1% всего числа доменов Internet. Число разработчиков PHP увеличилось до нескольких человек, но, несмотря на это, PHP/FI 2.0 все еще оставался крупным проектом одного человека. Официально PHP/FI 2.0 вышел только в ноябре 1997 года, просуществовав до этого в основном в бета-версиях. Вскоре после выхода его заменили альфа-версии PHP 3.0.
PHP 3.0 была первой версией, напоминающей PHP, каким мы знаем его сегодня. Он очень сильно отличался от PHP/FI 2.0 и появился опять же как инструмент для решения конкретной прикладной задачи. Его создатели, Энди Гутманс (Andi Gutmans) и Зив Сураски (Zeev Suraski), в 1997 году переписали заново код PHP/FI, поскольку он показался им непригодным для разработки приложения электронной коммерции, над которым они работали. Для того чтобы получить помощь в реализации проекта от разработчиков PHP/FI, Гутманс и Сураски решили объединиться с ними и объявить PHP3 официальным преемником PHP/FI. После объединения разработка PHP/FI была полностью прекращена.
Одной из сильных сторон PHP 3.0 была возможность расширения ядра. Именно свойство расширяемости PHP 3.0 привлекло внимание множества разработчиков, желающих добавить свой модуль расширения. Кроме того, PHP 3.0 предоставляла широкие возможности для взаимодействия с базами данных, различными протоколами и API. Немаловажным шагом к успеху оказалась разработка нового, намного более мощного и полного синтаксиса с поддержкой ООП. С момента появления PHP 3.0 изменилась не только функциональность и внутреннее устройство языка, но и его название. В аббревиатуре PHP больше не было упоминания о персональном использовании, PHP стало сокращением (рекурсивным акронимом) от PHP: Hypertext Preprocessor, что значит «PHP: препроцессор гипертекста».
К концу 1998 года число пользователей PHP возросло до десятков тысяч. Сотни тысяч web-сайтов сообщали о том, что они работают с использованием этого языка. Почти на 10% серверов Internet был установлен PHP 3.0.
Официально PHP 3.0 вышел в июне 1998 года, после 9 месяцев публичного тестирования. А уже к зиме Энди Гутманс и Зив Сураски начали переработку ядра PHP. В их задачи входило увеличение производительности работы сложных приложений и улучшение модульности кода, лежащего в основе PHP.
Новое ядро было названо «Zend Engine» (от имен создателей: Zeev и Andi) и впервые представлено в середине 1999 года. PHP 4.0, основанный на этом ядре и принесший с собой набор дополнительных функций, официально вышел в мае 2000 года, почти через два года после своего предшественника, PHP 3.0. Помимо улучшения производительности, PHP 4.0 имел еще несколько ключевых нововведений, таких как поддержка сессий, буферизация вывода, более безопасные способы обработки вводимой пользователем информации и несколько новых языковых конструкций.
В настоящее время ведутся работы по улучшению Zend Engine и внедрению нововведений в PHP 5.0, первые бета-версии которого уже вышли в свет. Одно из существенных изменений произошло в объектной модели языка, ее основательно подлатали и добавили много новых возможностей.
Сегодня PHP используется сотнями тысяч разработчиков. Несколько миллионов сайтов написаны на PHP, что составляет более 20% доменов Internet.
Возможности PHP
«PHP может все», – заявляют его создатели. В первую очередь PHP используется для создания скриптов, работающих на стороне сервера, для этого его, собственно, и придумали. PHP способен решать те же задачи, что и любые другие CGI-скрипты, в том числе обрабатывать данные html-форм, динамически генерировать html страницы и т.п. Но есть и другие области, где может использоваться PHP. Всего выделяют три основные области применения PHP.
- Первая область, как уже говорилось, – это создание приложений (скриптов), которые исполняются на стороне сервера. PHP наиболее широко используется именно для создания такого рода скриптов. Для того чтобы работать таким образом, понадобится PHP-парсер (т.е. обработчик php-скриптов) и web-сервер для обработки скрипта, браузер для просмотра результатов работы скрипта, ну, и, конечно, какой-либо текстовый редактор для написания самого php-кода. Парсер PHP распространяется в виде CGI-программы или серверного модуля. Как установить его и web-сервер на свой компьютер, мы рассмотрим немного позднее. В этом курсе мы будем обсуждать, как правило, создание именно серверных приложений, как пример использования языка PHP.
- Вторая область – это создание скриптов, выполняющихся в командной строке. То есть с помощью PHP можно создавать такие скрипты, которые будут исполняться, вне зависимости от web-сервера и браузера, на конкретной машине. Для такой работы потребуется лишь парсер PHP (в этом случае его называют интерпретатором командной строки (cli, command line interpreter)). Этот способ работы подходит, например, для скриптов, которые должны выполняться регулярно с помощью различных планировщиков задач или для решения задач простой обработки текста.
- И последняя область – это создание GUI-приложений (графических интерфейсов), выполняющихся на стороне клиента. В принципе это не самый лучший способ использовать PHP, особенно для начинающих, но если вы уже досконально изучили PHP, то такие возможности языка могут оказаться весьма полезны. Для применения PHP в этой области потребуется специальный инструмент – PHP-GTK, который является расширением PHP.
Итак, область применения PHP достаточно обширна и разнообразна. Тем не менее существует множество других языков программирования, способных решать похожие задачи. Почему стоит изучать PHP? Что это нам дает? Во-первых, PHP очень прост в изучении. Достаточно ознакомиться лишь с основными правилами синтаксиса и принципами его работы, и можно начинать писать собственные программы, причем браться за такие задачи, решение которых на другом языке требовало бы серьезной подготовки.
Во-вторых, PHP поддерживается почти на всех известных платформах, почти во всех операционных системах и на самых разных серверах. Это тоже очень важно. Вряд ли кому-то захочется переходить, например, от работы под Windows к работе под Linux или от сервера IIS к серверу Apache только для того, чтобы изучить еще один язык программирования.
В PHP сочетаются две самые популярные парадигмы программирования – объектная и процедурная. В PHP4 более полно поддерживается процедурное программирование, но есть возможность писать программы и в объектном стиле. Уже в первых пробных версиях PHP5 большинство недочетов в реализации объектно-ориентированной модели языка, существующих в PHP4, устранены. Таким образом, можно выбрать наиболее привычный стиль работы.
Если говорить о возможностях сегодняшнего PHP, то они выходят далеко за рамки тех, что были реализованы в его первых версиях. С помощью PHP можно создавать изображения, PDF-файлы, флэш-ролики, в него включена поддержка большого числа современных баз данных, встроены функции для работы с текстовыми данными любых форматов, включая XML, и функции для работы с файловой системой. PHP поддерживает взаимодействие с различными сервисами посредством соответствующих протоколов, таких как протокол управления доступом к директориям LDAP, протокол работы с сетевым оборудованием SNMP, протоколы передачи сообщений IMAP, NNTP и POP3, протокол передачи гипертекста HTTP и т.д.
Обращая внимание на взаимодействие между различными языками, следует упомянуть о поддержке объектов Java и возможности их использования в качестве объектов PHP. Для доступа к удаленным объектам можно использовать расширение CORBA.
Для работы с текстовой информацией PHP унаследовал (с небольшими изменениями) механизмы работы с регулярными выражениями из языка Perl и UNIX-систем. Для обработки XML-документов можно использовать как стандарты DOM и SAX, так и API для XSLT-трансформаций.
Для создания приложений электронной коммерции существует ряд полезных функций, таких как функции осуществления платежей Cybercash, CyberMUT, VeriSign Payflow Pro и CCVS.
Установка и настройка ПО
Возможности языка мы обсудили, области применения рассмотрели, историю изучили. Теперь можно приступать к установке необходимого инструментария. Поскольку в качестве практической основы курса мы будем рассматривать задачи, решаемые с помощью технологии клиент-сервер, и PHP соответственно будет использоваться для создания скриптов, обрабатываемых сервером, нам нужно установить web-сервер и интерпретатор PHP. В качестве web-сервера выберем, например, Apache, как наиболее популярный среди web-разработчиков. Для просмотра результатов работы программ нам понадобится web-браузер, например Internet Explorer.
Установка Apache 1.3.29 под Windows XP
Чтобы что-нибудь установить, нужно для начала иметь соответствующее программное обеспечение (ПО). Скачать ПО для установки Apache можно, например, с его официального сайта http://www.apache.org. Мы скачали файл apache_1.3.29-win3x86-no_src.exe. Это автоматический установщик (иначе – wizard) сервера Apache под Windows. Эта программа попытается почти самостоятельно (а точнее, с минимальными усилиями с вашей стороны) установить на компьютер какое-либо программное обеспечение, а в данном случае сервер. После запуска файла установщика появляется следующее окошко (рис. 1.1).
Рис. 1.1. Автоматическая установка сервера Apache
Чтобы установить HTTP-сервер Apache версии 1.3.29 на свой компьютер, нужно нажать на кнопку Next. Кстати говоря, эта же программа позволит изменить или удалить уже установленный web-сервер.
После нажатия кнопки Next программа предложит согласиться с условиями лицензии (рис. 1.2).
Рис. 1.2. Лицензионное соглашение
Следующий экран будет содержать информацию о сервере Apache, и в частности о его Windows-реализации (его изображение не приводим).
На следующем шаге нужно ввести имя сетевого домена, имя сервера и e-mail администратора. Программа попытается автоматически определить ваш домен и хост по настройкам компьютера (рис. 1.3).
Рис. 1.3. Основная информация о сервере
После того как вы ввели данные в вышеприведенную форму, нужно выбрать тип установки: полная (устанавливаются все компоненты сервера) или определяемая пользователем (можно выбрать компоненты для установки) (рис. 1.4.).
Рис. 1.4. Тип установки
Выбор компонентов сервера не очень большой – это инструменты, необходимые для работы сервера и документация к нему (рис. 1.5).
Рис. 1.5. Выбор компонент пользовательской установки
Мы выберем полную установку. Тогда на следующем шаге программа предложит выбрать папку, в которую будет установлен сервер. По умолчанию сервер устанавливается в папку c:\Program Files\Apache Group\ (рис. 1.6).
Рис. 1.6. Папка, в которую будет установлен сервер
На следующем экране (рис. 1.7) потребуется подтвердить правильность введенных данных и начать установку. Из любого окна установки, включая и это, можно вернуться назад и изменить введенные ранее данные.
Рис. 1.7. Начало установки
После нажатия кнопки Install начнется непосредственная установка сервера. От пользователя никаких дополнительных действий больше не требуется. С одной стороны, это хорошо, но есть у такой автоматизированной установки и некоторые недостатки. Например, домашние директории пользователей оказываются там же, где и файлы настроек сервера (c:\Program Files\Apache Group\Apache\users\). Это небезопасно, если на компьютере работает несколько пользователей, не являющихся администраторами сервера. Но для начала можно ничего не менять. Допустим, мы запустили установщик, ввели все необходимые данные, он выполнил все операции успешно и говорит, что сервер установлен. Как проверить, действительно ли сервер установлен? Набираем в окне браузера http://localhost/. Если все установилось правильно, мы получим страничку приветствия сервера Apache (см. рис. 1.8).
Рис. 1.8. Страница приветствия
Итак, сервер установлен. Как теперь с ним работать? Откуда можно запускать скрипты и где должны находиться файлы пользователей? Файлы, которые должны быть обработаны сервером, можно сохранять либо в корне сервера (в нашем случае это c:\Program Files\Apache Group\Apache\htdocs ), либо в директориях пользователей (в нашем случае это c:\Program Files\Apache Group\Apache\users\). Местоположение корня сервера и директорий пользователей прописано в настройках сервера, а точнее, в файле конфигурации httpd.conf (найти его можно в c:\Program Files\Apache Group\Apache\conf ). Для изменения этих путей нужно изменить соответствующие переменные в файле конфигурации сервера. Переменная в файле конфигурации ServerRoot отвечает за корневую директорию сервера, а переменная UserDir – за директорию, где будут располагаться файлы пользователей сервера (для более безопасной работы советуем изменить переменную UserDir на что-нибудь типа c:\users\). Чтобы получить доступ к файлу test.html, находящемуся в корне сервера, нужно набрать в браузере http://localhost/test.html (т. е. имя хоста, имя файла). Если же файл test.html находится в директории пользователя user, то для его просмотра нужно набрать в браузере http://localhost/~user/test.html.
Установка PHP 4.3.4 под Windows
Перейдем к установке PHP. Скачать его дистрибутив можно с официального сайта PHP – http://www.php.net. Для удобства лучше выбрать автоматический инсталлятор, как и в случае с сервером. Самое первое окошко при такой установке PHP содержит приветствие и предупреждение о существовании авторских прав на этот продукт (рис. 1.9).
Рис. 1.9. Программа автоматической установки PHP
Далее нужно прочитать и согласиться (или не согласиться) с лицензией (рис. 1.10).
Рис. 1.10. Лицензионное соглашение
Затем выбираем тип установки: стандартный или для специалистов. Мы выберем стандартную установку (рис. 1.11).
Рис. 1.11. Тип установки
В следующем окне программа предложит выбрать директорию для установки PHP. Туда будут скопированы файлы библиотек, расширений, интерпретатор командной строки, модули и т.п. (рис. 1.12).
Рис. 1.12. Выбор папки, в которую будет установлен PHP
В следующем окошке предлагается ввести адрес SMTP-сервера, т.е. сервера отправки почтовых сообщений, и обратный адрес отправителя почты. Это окошко мы приводить не будем.
Далее предлагается выбрать из списка сервер, с которым будет работать PHP. Поскольку мы установили Apache, то выберем из списка именно его (рис. 1.13).
Рис. 1.13. Выбор сервера, на котором будет работать PHP
Следующее окошко начинает инсталляцию (рис. 1.14).
Рис. 1.14. Начало автоматической установки PHP
После копирования необходимых файлов мы получили следующее сообщение (см. рис. 1.15):
Рис. 1.15. Сообщение о невозможности автоматически настроить Apache для работы с PHP
Это значит, что нужно настраивать сервер Apache для работы с PHP вручную.
Сначала следует выбрать, как мы хотим установить PHP, поскольку он поставляется в двух видах: CGI-скрипт (php.exe) или набор SAPI-модулей (например, php4isapi.dll), используемых сервером. Последний вариант обладает новыми возможностями, однако из-за недостаточной проработанности может функционировать недостаточно надежно, особенно на платформах старше Windows 2000 (может появляться куча ошибок 500, могут возникать сбои в других серверных модулях, таких как ASP). Так что, если нужна абсолютная стабильность – надо выбирать установку PHP в виде CGI выполнимого приложения.
Если мы хотим установить PHP как серверный модуль, то в файле конфигурации сервера (httpd.conf) нужно написать:
LoadModule php4_module
c:/php/sapi/php4apache.dll
AddType application/x-httpd-php .php .phtml
AddModule mod_php4.c
Если мы устанавливаем PHP как cgi-программу, то в httpd.conf нужно написать:
ScriptAlias /php/ "c:/php/"
AddType application/x-httpd-php .php .phtml
Action application/x-httpd-php "/php/php.exe"
В этом случае могут возникнуть проблемы с безопасностью. Рекомендуется исправить директорию, где лежит исполняемый файл интерпретатора (c:\php\), на что-нибудь менее очевидное (например, на c:\abc_php\). Мы советуем устанавливать PHP как серверный модуль.
Еще нужно отредактировать файл php.ini (в папке c:\Windows), чтобы PHP «знал», где находится корневая директория сервера, где пользовательские директории, а где его собственные библиотеки расширений. За это в файле php.ini отвечают соответственно переменные doc_root, user_dir и extension_dir. Зададим их таким образом:
doc_root = "c:\Program Files\Apache
Group\Apache\htdocs"
user_dir = "c:\users"
extension_dir = "c:\php\extensions"
Кроме того, можно выбрать расширения, которые будут загружаться при запуске PHP. В реализацию PHP под Windows изначально входит очень мало расширений. Чтобы загрузить расширение, нужно раскомментировать в php.ini соответствующую ему строчку 'extension=php_*.dll'. Например, чтобы загрузить расширение для работы с MSSQL, нужно раскомментировать строку 'extension=php_mssql.dll'. Некоторые расширения требуют дополнительных библиотек. Поэтому рекомендуется скопировать дополнительные библиотеки в системную директорию (из папки c:\php\dlls). При первой установке следует настроить и протестировать PHP без расширений.
Для того чтобы настройки, выполненные в конфигурационных файлах сервера и PHP вступили в силу, нужно перезапустить сервер.
Проверим, работает ли PHP. Для этого создадим тестовый файл (1.php) в директории пользователя (c:\users\nina) со следующим содержанием:
<?php
echo"<h1>Привет всем!</h1>";
?>
Запустим этот файл через браузер, набрав http://localhost/~nina/1.php. Если что-то не так, то на экран будет выведен текст этого файла. Если все хорошо, то наш скрипт должен обработаться сервером и вывести большими буквами строку «Привет всем!».
Установка PHP под Linux
Как и в случае с Windows, для Linux существует два способа установки PHP: используя пакеты и непосредственно компилируя исходный код PHP, который можно скачать с http://www.php.net. Мы остановимся на первом варианте и рассмотрим установку PHP+Apache на примере дистрибутива AltMaster2.2 (http://altlinux.ru).
Для того чтобы установить apache, необходимо выбрать одноименный пакет. Это можно сделать, например, с помощью менеджера пакетов Synaptic. Воспользовавшись меню «Пакет -> Установить» (рис. 1.16) нужно выбрать интересующие пакеты. После этого необходимо перейти к установке выбранных пакетов с помощью меню «Действия -> Выполнить». После установки Apache имеет смысл перезагрузиться или выполнить следующую команду:
/etc/init.d/httpd start
# /etc/init.d/httpd start
Starting httpd:
[ OK ]
Это приведет к запуску сервера и можно будет увидеть по адресу http://localhost почти такую же страницу, как и при установке Apache под Windows. Возможным отличием будет присутствие логотипа AltLinux.
Рис. 1.16. Выбор пакета для установки Apache под Linux
После установки Apache можно приступить к установке непосредственно PHP. Опять же можно использовать PHP с помощью CGI и через модуль Apache. В первом случае достаточно пакета php и необходимых для его установки пакетов. Во втором случае необходимо дополнительно установить пакет mod_php. (рис. 1.17).
Рис. 1.17. Выбор пакетов для установки PHP под Linux
Менеджер пакетов Synaptic – это оболочка к программе apt-get, более подробно о ней можно узнать с помощью команды man apt-get. Воспользуемся утилитой apt-get для установки пакета mod_php. Команда apt-get build-dep mod_php установит пакеты, которые нам необходимы для инсталляции mod_php. Команда apt-get install mod_php завершит установку:
[root@greydragon apt]# apt-get build-dep mod_php
Reading Package Lists... Done
Collecting File Provides... Done
Building Dependency Tree... Done
Note, selecting libgdbm-devel instead of gdbm-devel
The following NEW packages will be installed:
apache-devel bison byacc flex libexpat-devel
libgdbm-devel libltdl libmm-devel libpam-devel libtool
0 packages upgraded, 10 newly installed,
0 removed and 73 not upgraded.
Need to get 937kB of archives.
After unpacking 2357kB of additional disk space will be used.
Do you want to continue? [Y/n]
Get:1 ftp://ftp.altlinux.ru ALTLinux/main byacc
1.9-ipl9mdk [31.8kB]
.....
Get:10 ftp://ftp.altlinux.ru ALTLinux/main
libtool 2:1.4.2-alt0.2 [302kB]
Fetched 937kB in 9m19s (1675B/s)
Executing RPM (/bin/rpm -Uvh --fancypercent
--oldpackage)...
Preparing...
################################################### [100%]
....
[root@greydragon apt]# apt-get install mod_php
Reading Package Lists... Done
Collecting File Provides... Done
Building Dependency Tree... Done
The following NEW packages will be installed:
mod_php
0 packages upgraded, 1 newly installed,
0 removed and 73 not upgraded.
Need to get 46.6kB of archives.
After unpacking 69.2kB of additional disk space will be used.
Get:1 ftp://ftp.altlinux.ru ALTLinux/main
mod_php 1:4.3.0-alt0.cvs20030207 [46.6kB]
Fetched 46.6kB in 24s (1918B/s)
Executing RPM (/bin/rpm -Uvh --fancypercent --oldpackage)...
Preparing...
################################################### [100%]
1: mod_php
################################################### [100%]
Shutting down httpd: [ OK ]
Checking configuration sanity for httpd: [ OK ]
Starting httpd: [ OK ]
Листинг 1.0. Результат работы менеджера пакетов Synaptic
Как видно из приведенного листинга, скрипт установки самостоятельно перезагрузил сервер Apache. Также он самостоятельно внес изменения в конфигурационный файл Apache, полный путь до которого: /etc/httpd/conf/httpd.conf
В httpd.conf добавлена строка:
Include conf/addon-modules/mod_php4.conf
Содержимое файла mod_php4.conf
LoadModule php4_module
usr/lib/apache/libphp4.so
AddModule mod_php4.c
AddType application/x-httpd-php
.php .php4 .php3 .phtml
AddType application/x-httpd-php-source .phps
AddHandler application/x-httpd-php
.php .php4 .php3 .phtml
Как видно, изменения в httpd.conf подобны изменениям, которые мы вносили при установке под Windows.
Теперь можно воспользоваться тестовым файлом для проверки работоспособности PHP+Apache. Создадим test.php со следующим содержанием:
<?php
echo"<h1>Привет всем!</h1>";
?>
Корень сервера находится /var/www/html/. Можно создать каталог test и разместить там файл test.php. Вызвав этот файл из браузера по его адресу (http://localhost/test/test.php), получим страничку с текстом «Привет всем».
В заключение отметим, что процесс установки PHP с помощью пакетов в других дистрибутивах Linux принципиально не отличается от рассмотренного нами. Процесс установки из исходного кода в них же подробно описан. Стоит отметить, что «ручная» компоновка позволит настроить PHP под конкретные нужды, также возможен выигрыш в производительности.
Дистрибутив Денвер
Мы достаточно подробно рассмотрели установку и настройку PHP для платформ Linux и Windows. Для тех, кто не желает вникать в устройство PHP и требуемых для его работы компонентов, существуют готовые дистрибутивы, содержащие все наиболее распространенные расширения PHP. Один из самых известных – дистрибутив Денвер (http://dklab.ru/chicken/web/). Инструкции по его установке можно прочитать на сайте разработчиков. Отметим только, что его установка достаточно проста и не требует особых навыков. Этот дистрибутив можно рекомендовать для начинающих программистов, желающих научиться работать с PHP. Для более серьезных задач лучше все же установить и настроить PHP самостоятельно.
Первая PHP-программа
По большому счету, первую PHP-программу вы уже создали, когда проверяли, работает ли интерпретатор PHP (в предыдущей главе). Сейчас мы хотим более подробно рассказать о том, что представляет собой PHP-программа и чем она отличается от программ на языках Cи, Perl и JavaScript. Рассмотрим пример.
<html>
<head>
<title>Пример</title>
</head>
<body>
<?php
echo "<p>Привет, я – скрипт PHP!</p>";
?>
</body>
</html>
Пример 1.1. Простой html-файл со встроенным кодом на РНР
Это простой HTML-файл, в который встроен с помощью специальных тегов код, написанный на языке PHP.
Как мы уже отмечали выше, PHP похож на Cи и Perl. Однако приведенная здесь программа сильно отличается от аналогичных по смыслу программ на языках Cи и Perl. Здесь не нужно писать кучу специальных команд для вывода HTML. Пишется непосредственно HTML-скрипт, в который можно встраивать PHP-код, осуществляющий какие-либо действия (например, выводящий текст на экран, как в нашем примере). Недостатком PHP по сравнению с Cи и Perl, несмотря на все усилия разработчиков, все еще является недостаточная быстрота выполнения сложных скриптов.
PHP-скрипты – это программы, которые выполняются и обрабатываются сервером. Так что сравнивать его со скриптовыми языками типа JavaScript невозможно, потому что написанные на них скрипты выполняются на машине клиента. В чем отличие скриптов, выполняемых на сервере и на клиенте? Если скрипт обрабатывается сервером, клиенту посылаются только результаты работы скрипта. Например, если на сервере выполнялся скрипт, подобный приведенному выше, клиент получит сгенерированную HTML-страницу вида:
<html>
<head>
<title>Пример</title>
</head>
<body>
<p>Привет, я – скрипт PHP!</p>
</body>
</html>
В этом случае клиент не знает, какой код выполняется. Можно даже сконфигурировать свой сервер таким образом, чтобы HTML-файлы обрабатывались процессором PHP, так что клиенты даже не смогут узнать, получают ли они обычный HTML-файл или результат выполнения скрипта. Если же скрипт обрабатывается клиентом (например, это программа на языке JavaScript), то клиент получает страницу, содержащую код скрипта.
Мы отмечали выше, что PHP-скрипты встраиваются в HTML-код. Возникает вопрос, каким образом? Есть несколько способов. Один из них приведен в самом первом примере – с помощью открывающего тега <?php и закрывающего тега ?>. Такого вида специальные теги позволяют переключаться между режимами HTML и PHP. Этот синтаксис наиболее предпочтителен, поскольку позволяет задействовать PHP в XML-совместимых программах (например, написанных на языке XHTML), но тем не менее можно использовать следующие альтернативные варианты (команда echo "Some text"; выводит на экран текст «Some text».):
<? echo "Это простейшая
инструкция для
обработки PHP"; ?>
<script language="php">
echo "Некоторые редакторы
(FrontPage) предпочитают
делать так";
</script>
<% echo "Можно использовать теги
в стиле ASP "; %>
Первый из этих способов не всегда доступен. Чтобы им пользоваться, нужно включить короткие теги либо с помощью функции short_tags() для PHP 3, либо включив установку short_open_tag в конфигурационном файле PHP, либо скомпилировав PHP с параметром --enable-short-tags. Даже если это включено по умолчанию в php.ini-dist, использование коротких тегов не рекомендуется. Второй способ аналогичен вставке, например, JavaScript-кода и использует для этого соответствующий html тег. Поэтому использовать его можно всегда, но это делается редко из-за его громоздкости. Третий способ можно применить, только если теги в стиле ASP были включены, используя конфигурационную установку asp_tags.
Когда PHP обрабатывает файл, он просто передает его текст, пока не встретит один из перечисленных специальных тегов, который сообщает ему о необходимости начать интерпретацию текста как кода PHP. Затем он выполняет весь найденный код до закрывающего тега, говорящего интерпретатору, что далее снова идет просто текст. Этот механизм позволяет внедрять PHP-код в HTML – все за пределами тегов PHP остается неизменным, тогда как внутри интерпретируется как код. Заметим также, что php-файл не похож на CGI-скрипт. Php файл не должен быть исполнимым или еще каким-либо образом помеченным.
Для того чтобы отправить php-файл на обработку серверу, нужно в строке браузера набрать путь к этому файлу на сервере. Скрипты php должны располагаться там, где разрешен доступ через www, например там же, где лежит домашняя страничка. Если php-файл лежит на локальной машине, то его можно обработать с помощью интерпретатора командной строки.
|