Вступление
Первоначально сокращение РПР обозначала Preprocessor of Home Pages — препроцессор домашних страниц. Это язык внедряемых в HTML-страницы сценариев, исполняемых на сервере. По большей части его синтаксис заимствован из таких языков, как С, Perl, Java, и при этом добавлена масса возможностей, которых этим языкам недостает. Проще говоря, синтаксис РНР — это умная альтернатива и строгости С, и «беспредельности» Perl. РНР наделен фактически полным комплектом функциональности, о которой (до возникновения РНР) мог только мечтать web-программист. Его цель — дозволить максимально стремительно создавать динамически генерируемые web-страницы. С полным основанием дозволено заявить, что постижение и применение РНР будет выигрышно как начинающим, так и профессиональным программистам. Основными соперниками РНР являются спецтехнологии JSP (Java Server Pages и Java Scriptlets), ASP (Active Server Pages), Perl, SSI (Server Side Includes), Cold Fusion Server Pages. Разглядим те недочеты, которые присущи указанным спецтехнологиям. JSP — довольно трудный для постижения и применения язык. ASP, учрежденный на синтаксисе VBScript (Visual Basic), имеет каждого несколько десятков собственных функций и следственно вынужден применять СОМ-объекты; помимо того, он ориентирован экстраординарно на работу под Windows. Perl — язык головоломный, и его вольности затрудняют его осознавание. SSI дозволяет каждого лишь компоновать HTML-страницу из нескольких файлов. CF — торговый продукт, что является его основным недостатком. Основные превосходства РНР: бесплатен; непрерывно совершенствуется; работает на UNIX и Windows платформах; допускает работу с множеством СУБД; имеет широкий комплект функций (больше 3 тыс.); допускает объектно-ориентированное программирование; горазд применять протоколы HTTP, FTP, ШАР, SNMP, NNTP, POPS, net sockets 11 другие; дозволяет исполнять все операции, что и перечисленные его соперники, и даже трудиться с файлами графики. Дозволено также запускать PHP-скрипты как интерпретируемые файлы и компилировать исполняемые приложения (в том числе с помощью графического интерфейса GTK). Если вы найдете, что РНР не горазд на что-то (либо работает не так, как вам хотелось бы), никто не будет препятствовать вам вносить в начальный код РНР (написанный на С) желаемые метаморфозы. РНР является программным продуктом с открытым начальным кодом, и внесение в него совершенствований и дополнений путем создания собственных модулей растяжения неизменно приветствуется. Короткая история РНР РНР изобретен Расмусом Лердорфом в конце 1994 года. Первая версия выпущена в 1995 году под именем «Инструментарий Персональных Домашних Страниц», после этого она была переработана и названа PHP/FI Version 2 (FI — модуль обработки данных для форм). Также была добавлена помощь баз д'анных mSQL. С этого момента в разработке стали принимать участие добровольцы. Статистика используемости РНР примерна, но, согласно изысканию, проведенному Netcraft, в начале 2001 года РНР применялся на больше чем 5 300 000 сайтах по каждому миру. Для сопоставления: в это время число IIS серверов было приблизительно таким же (5 млн). Разработка интерпретатора РНР приняла форму организованного командного процесса, ядро интерпретатора разрабатывает компания Zcnd.com. При этом РНР распространяется вольно: его последнюю версию дозволено загрузить с сайта PHP.net. Модули РНР поставляются в комплекте с сервером Apache, в комплектах систем Linux. Версии РНР В конце 2000 года была выпущена версия РНР 4.0.4, в апреле 2001 -4.0.5, а в июне — 4.0.6. Промежуточные версии РНР дозволено загрузить с серверов CVS. В всей новой версии возникают новые модули, расширяющие и улучшающие возможности РНР. Полное начальство РНР доступно на нескольких языках в шести вариантах: документация на сайте PHP.net с аннотациями (>80 Мбайт); один HTML-файл (>3 Мбайт), комплект маленьких связанных HTML-страниц (несколько тысяч), UNIX man-файл, скомпилированный Windows HLP-файл (в формате chm) и документация в виде книги PDF. Издательством «Питер» выпущено две книги (одну из которых вы удерживаете в руках), к концу года планируется издать еще две книги. Данная книга представляет собой короткий справочник, перед которым ставилась задача в особенно сжатой и ясной форме высказать максимум самой нужной информации. Подразумевается, что читатель знаком с программированием и web-спецтехнологиями. Все изложения относятся к версиям РНР 4.0.4—4.0.6. РНР 4 крепко отличается от своих исходных версий. Основная повод, по которой в данной книге не рассматриваются предыдущие версии РПР и их отличия, — это тяготение избавиться от непотребной информации: для чего тратить усилия на постижение устаревшего варианта, когда дозволено даром воспользоваться новейшим. Дополнительное ПО Для того дабы исполнять серверные сценарии, нужен, безусловно, сам web-сервер — это может быть PWS либо Apache для Windows 95/98, IIS для Windows NT/2000 Server, Apache для UNIX/Linux либо какой-нибудь иной, — а также всякий браузер для просмотра итогов исполнения сценария. Но допустим и вариант запуска сценария из командной строки, с подмогой CGI интерпретатора php.exe в консольном окне MS-DOS, при этом ни браузер, ни сервер не требуются. Применяя библиотеку PHP-GTK, дозволено создавать на РНР приложения с графическим интерфейсом, применяя РНР как усовершенствованную альтернативу Visual Basic, но стоит подметить, что графический интерфейс имеет ясно выраженный Unix-жанр. С сайта www.deskcode. com дозволено загрузить компилятор РНР, генерирующий исполняемые (.ехе) файлы для Windows (приложению требуется присутствие библиотеки php4ts.dll и других используемых модулей). От того что одной из особенно обширно используемых возможностей РНР является работа с базами данных, пригодно установить сервер БД, скажем MySQL либо всякий иной (PostgreSQJL, InterBase, MS SQL). Нелишней может оказаться и установка драйверов ODBC для имеющихся баз данных. Значительную подмога окажет редактор PHP-кода. Довольно комфортна среда разработчика PHPEd, которую дозволено даром загрузить с сайта http://www.soysal.com/PHPEd/. Приятель каждому HomeSite 4.5 (www.allaire.com) также дозволяет трудиться с синтаксисом РНР. Пригодные информационные источники Как теснее подмечено, огромная часть информации по РНР доступна в англоязычном варианте. Если это вас не смущает, то можете воспользоваться сайтами PHPBuilder.com, PHPWizard.com, WebMonkcy (lycos.com), Zend.com, PHPClub.ru, которые содержат огромный объем статей и учебных начальств по программированию. На РНР сделаны даже целые web-порталы, которые дозволено интерактивно реконфигурировать, скажем PHPNuke (начальные РНР-коды дозволено загрузить с сайта PHPNuke.com). Правда объем кода таких планов довольно огромен (несколько Мбайт), присутствие перед глазами сходственных примеров готовых разработок способно воодушевить вас на не меньшие достижения. Для понимания некоторых разделов, допустимо, понадобится воспользоваться файлами из архива RFC (Request for Comments — запросы на комментарий). Это альманах объяснений спецификаций сетевых и Интернет-спецтехнологий, состоящий из больше чем 2000 файлов. Скажем, RFC 1180 - учебник по TCP/IP, RFC 1208 - толковый словарь сетевых терминов, RFC 821 — SMTP протокол, RFC 1939 — протокол POPS. Данный архив доступен, на множестве серверов, в том числе на rs.internic.net (формальный сервер), http://www.faqs.org/rfcs. Данная книга содержит семь частей, в всякой из которых сгруппированы главы сходной тематики. Часть 1 — «Синтаксис языка и операторы» — описывает синтаксис и применение РНР. Часть 2 — «Функции работы с данными» — рассматривает основные функции РНР, которые разрешают вам трудиться со встроенными типами данных: числами, массивами, строками. Часть 3 — «Файлы и сети» — описывает методы, имеющиеся в РНР для доступа к файлам, как локальным, так и удаленным; возможности применения сетевых протоколов и работу с архивированными файлами. Часть 4 — «Руководящие функции» — рассматривает управление функционированием РНР и его коммуникационными возможностями при работе с заказчиком и другими приложениями. Часть 5 — «Взаимодействие с базами данных» — рассматривает схему работы с серверами и файлами БД. Часть 6 — «Графика, Flash, pdf» — описывает возможности РНР по созданию графических файлов для web: картинок, анимаций, документов. Часть 7 — «Комплексная обработка данных» — описывает добавочные возможности РНР по трудной обработке символьных данных (XML и сходные спецтехнологии). Порядок, в котором приводятся функции, отражает логику их применения (скажем, работа с БД имеет определенную последовательность); функции, самостоятельные друг от друга, расположены но мере возрастания их трудности. В приложении приводится перечисление всех функций в алфавитном порядке и в порядке расположения в книге. От того что язык РНР и его модули растяжения находятся в процессе постоянной доработки и совершенствования, применяемая вами версия РНР может трудиться несколько хорошим образом от того, как это описано в книге. Все примеры, приведенные в книге, были протестированы с РНР версий 4.0.4, 4.0.5, 4.0.6; но все же я настойчиво рекомендую читателям проверять достоверность документации, так как даже официальное начальство во многих аспектах неполно (либо изредка ложно) отражает настоящие возможности РНР. В книгу было включено рассмотрение большей части возможностей РНР; в ней описывается 1500 функций. Тем не менее на момент выхода книги, в РНР имелось около 3000 функций. Финально, вам едва ли придется применять больше трети каждого того, что разрешает РНР; именно по этой утилитарной причине в книге не описаны редко используемые и специфические возможности РНР: Hyperwave, ICAP, LDAP, MCAL, MCrypt, Mhash, mnoGoSearch, Scsam DB, SNMP, YAZ, YP/NIS. He забывайте также, что в будущем возможности РНР будут расширены еще огромнее. На сайте http://www.php.net/ дозволено обнаружить несколько установочных пакетов РНР. Для систем Windows предлагаются варианты: готовый пакет CGI с механической установкой и полный скомпилированный пакет CGI/ISAPI с дополнительными библиотеками, требующий ручной настройки. Также дозволено загрузить пакет начальных кодов и скомпилировать каждый пакет самосильно. Для систем UNIX/Linux традиционно доводится перекомпилировать РНР, потому что версии операционных систем мощно различаются (допустимо, придется дозагру-жать добавочные библиотеки). Вопрос о том, имеет ли толк компилировать РНР самому либо стоит воспользоваться готовым пакетом, решает сам программист. Основными мотивами для собственноручной компиляции могут быть: неудовлетворительная конфигурация предлагаемого готового пакета, которую невозможно изменить с поддержкой редактирования файла php.ini (см. ниже), и желание поупражняться с компилированием. Для большинства web-серверов дозволено установить РНР либо в виде серверного модуля ISAPI, либо в виде запускаемого серверного CGI-приложения. CGI-приложение запускается сервером всякий раз, когда нужно выполнить сценарий, а по заключении сценария РНР выгружается из памяти. ISAPI-модуль загружается один раз при запуске web-сервера и остается в памяти все время, пока работает сервер. Следственно, дабы позже редактирования файла конфигурации php.ini метаморфозы вступили в силу, нужно перезапустить сервер. РНР в виде CGI-приложения не разрешает исполнять ряд функций, скажем применять устойчивые подключения к серверам баз данных. Установка и компиляция РНР в UNIX, параметры компиляции Операционные системы семейства UNIX мощно различаются между собой, следственно подробного изложения в данной книге не приводится. Исключительное, что роднит между собой разные UNIX-системы при компиляции РНР, — это параметры компиляции; с их поддержкой указывается, какие из PHP-модулей нужно прикомпилировать к основному модулю РНР. Они приводятся ниже. Для тех параметров, которые имеют довод DIR, дозволено указать путь каталога, в котором была установлена применяемая библиотека. В скобках указано значение параметра по умолчанию. Добавочная информация по установке и конфигурированию модулей приводится в соответствующих главах. Базы данных
Ecommerce
Графика
Многообразные параметры
Сети
Сервер
Текстово-языковые возможности
XML
Дальше описываются установка и конфигурирование РНР для web-серверов в системах Windows 9x/NT, в частности:
Автор рекомендует применять web-сервер Apache по причине того, что он работает на всех системах, и именно при его применении РНР может проявить все свои возможности. Также РНР дозволено установить и для ряда других серверов (инструкции не приводятся). Windows Installshield Программа установки РНР (которую дозволено загрузить с сайта http:// www.php.net/) механически устанавливает CGI-версию РНР для Apache, IIS либо PWS (и других серверов) и независимо настраивает сервер. Процедура установки довольно внятна и комфортна. Всеобщие шаги установки Эту процедуру следует проделать для всех серверов, работающих в Windows, если установка производится вручную (а не применяется установщик).
Модули DLL PHP имеют префикс php_, что дозволяет различать их и используемые ими библиотеки. Windows 95/98/NT и PWS/IIS 3 Рекомендуется настраивать эти серверы установкой файла php_iis_ reg.inf, pws-php4isapi.reg либо pws-php4cgi.reg, входящего в дистрибутив, заблаговременно его отредактировав и указав настоящие каталоги. В отвратном случае придется редактировать реестр (будьте осмотрительны, рекомендуется сделать копию реестра).
Пользователи us 3 могут также применять программу конфигурирования http://www.genusa.com/iis/iiscfg.html. PWS 4 разрешает применять Рнр в виде модуля ISAT4. Windows NT и IIS 4/5
Windows 9x/NT и Apache 1.3.x Рекомендуется ознакомиться с документацией Apache. Добавьте либо измените имеющиеся (обыкновенно они закомментированы) директивы в файле конфигурации httpd.conf (либо srm.conf) для запуска версии CGI PHP.
Если нужно запускать PHP как ISAPI-модуль сервера, нужно скопировать файл php4ts.dll в каталог windows/system (для Windows 9х/Ме) либо winnt/system32 (для Windows NT/2000). А после этого добавить в файл конфигурации httpd.conf следующие строки:
Подметьте, что в Win-Apache вес обратные слеши обязаны писаться как прямые, скажем: c:/directory/file.ext взамен c:\directory\ file.ext. Что для этого требуется?
Подготовка к компиляции Установите Cygwin, запустив setup.exe. Выберите установочный каталог, скажем C:\cygnus. Обыкновенно установка благополучно выполняется в механическом режиме. Сделайте каталог, в котором вы будете проводить компиляцию (скажем: C:\PHP-win32build). Разархивнрупте в нее пакет начальных кодов РНР. Скопируйте туда распакованный архив win32build.zip. Запустите Microsoft Visual C++, выберите пункт Options меню Tools. В диалоговой панели выберите вкладку directories. Ступенчато установите для всего пункта раскрывающегося списка: Executables, Includes и Library files соответственно каталоги: cygwin\bin, win32build\ include и win32build\lib (для добавления пункта выделите пустую строку в конце списка и введите путь). Обыкновенно каталоги имеют следующие имена: c:\cygnus\bin, c:\php-win32build\include, c:\php-win32build\lib. Нажмите ОК. Сделайте иной каталог и распакуйте туда bindlib_w32.zip. В VC++ выберите bindlib.dsw (Файл > Open Workspace). Выберите один из вариантов компиляции (Build > Set Active Configuration): отладочный (bindlib — Win32 Debug) либо нет (bindlib — Win32 Release). Скомпилируйте библиотеку (Build > Rebuild All)1. Скопируйте полученный файл resolv.lib (из каталога Debug либо Release), заменяя им имеющийся в дистрибутиве (в каталоге С:\ PHP-win32build\lib). Компиляция Дабы скомпилировать CGI-всрсию РНР, откройте в VC++ план win32\php4ts.dsw (Файл > Open Workspace). Выберите вариант компиляции (Build > Set Active Configuration), скажем php4ts — Win32 Release_TS. Скомпилируйте файлы php.exe и php4ts.dll (Build > Rebuild All либо Build > Build php.exe). Допустимо, у вас возникнет дальнейшая оплошность: при попытке открытия в VC++ файла Tsrm.dsw будет выдано сообщение о том, что файл имеет неверный формат либо поврежден. Это происходит из-за отличия в форматах текстовых файлов Unix и Windows: в Unix заключение строк помечается символом «\п>>, а в Windows двумя символами — «\г\п». Поправить это легко — откройте файл Tsrm.dsw в MS Word и сбережете его под тем же именем (в итоге чего будут механически преобразованы символы-завершители). Сходственным образом дозволено скомпилировать РНР в виде модуля для web-сервера Microsoft IIS либо какого-нибудь иного (примитивно измените вариант компиляции). Модули растяжения компилируются по отдельности (они размещаются в каталоге ext). |