Вступление

Основные данные о РНР

Первоначально сокращение РПР обозначала 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, дозволено указать путь каталога, в котором была установлена применяемая библиотека. В скобках указано значение параметра по умолчанию. Добавочная информация по установке и конфигурированию модулей приводится в соответствующих главах.

Базы данных

  • with-adabas[=DIR] — включить поддержку Adabas D (/usr/local).
  • enable-dba=shared — применять DBA как коллективно применяемый модуль.
  • enable-dbase — включить поддержку dbase. Внешние библиотеки не требуются.
  • with-db2[=DIR] — включить поддержку Berkeley DB2.
  • with-db3[=DIR] — включить поддержку Berkeley DB3.
  • with-dbm[=DIR] — включить поддержку DBM.
  • with-dbmaker[=DIR] — включить поддержку DBMaker (зависит от версии, скажем /home/dbmaker/3.6).
  • with-empress[=DIR] — включить поддержку Empress (значение системной переменной $EMPRESSPATH).
  • enable-filepro — включить встроенную поддержку filcPro. Внешние библиотеки не требуются.
  • with-gdbm[=DIR] — включить поддержку GDBM.
  • with-hyperwave — включить поддержку Hyperwave.
  • with-ibm-db2[=DIR] — включить поддержку IBM DB2 (/home/ db2instl/sqllib).
  • with-informix[=DIR] — включить поддержку Informix (умолчаний нет).
  • with-ingres[=DIR] — включить поддержку Ingres II (/II/ingres).
  • with-interbase[=DIR] — включить поддержку InterBase (/usr/interbase).
  • with-ldap[=DIR] — включить поддержку LDAP — службы каталогов Lightweight Directory Access Protocol (/usr/Local/Ldap). См. также: RFC1777 и RFC1778.
  • with-msql[=DIR] — включить поддержку mSQL (/usr/loCdl/Hughes).
  • with-mysql[=DIR] — включить поддержку MySQL (параметр включен по умолчанию).
  • with-ndbm[=DIR] - NDBM.
  • with-oci8[=DIR] - включить поддержку Oraclc-oci8 ($ORACLE_HOME).
  • with-orade[=DIR] — включить поддержку Oracle-oci7 ($ORACLE_HOME).
  • with-pgsql[=DIR] — включить поддержку PostgrcSQL (/usr/local/ pgsql).
  • with-solid[=DIR] — включить поддержку Solid (/usr/local/solid).
  • with-sybase-ct[=DIR] — включить поддержку Sybase-CT (/home/ Sybase).
  • with-sybase[=DIR] — включить поддержку Sybase-DB (/home/Sybase).
  • with-openlink[=DIR] - - включить поддержку OpenLink ODBC (/usr/local/openlink).
  • with-iodbc[=DIR] — включить поддержку iODBC (/usr/local).
  • with-custom-odbc[=DIR] — включить поддержку пользовательской библиотеки ODBC (/usr/local). Перед запуском сценария configure нужно присвоить значение переменной CUSTOM_ODBC__LIBS, а также проверить, дабы файл odbc.h был доступен.
  • with-unixODBC[=DIR] — включить поддержку unixODBC support (/usr/local).
  • with-velocis[=DIR] — включить поддержку Velocis (/usr/local/ velocis).

Ecommerce

  • with-ccvs[=DIR] — позволить поддержку CCVS для РИР4.
  • with-cybercash[=DIR] — включить поддержку CyberCash.
  • with-pfpro[=DIR] — включить поддержку Verisign Payflow Pro.

Графика

  • enable-freetype-4bit-antialias-hack — включить поддержку FreeType2 (экспериментальная).
  • with-gd[=DIR] — включить поддержку GD.
  • without-gd — запретить поддержку GD.
  • with-jpeg-dir[=DIR] — каталог библиотеки jpeg для pdflib 3.x.
  • with-png-dir[=DIR] — каталог библиотеки png для pdflib 3.x.
  • with-tllib[=DIR] — включить поддержку Tllib.
  • with-tiff-dir[=DIR] — каталог библиотеки tiff для pdflib 3.x.
  • with-ttf[=DIR] — включить поддержку FreeType.
  • with-xpm-dir[=DIR] — каталог библиотеки хрт для gd-1.8+.

Многообразные параметры

  • disable-libtool-lock — не применять блокировку библиотек при компиляции.
  • disable-pear — не устанавливать PEAR.
  • disable-pic — не применять PIC для всеобщих объектов.
  • disable-posix — не применять функции POSIX.
  • disable-session — запретить поддержку сессий.
  • enable-bcmath — компилировать с помощью функций be math. См. также: README-BCMATH.
  • enable-c9x-inline — применять семантику C9x-inline.
  • enable-calendar — применять реформирования calendar.
  • enable-debug — компилировать в режиме для отладки.
  • enable-discard-path — разрешает поместить PHP CGI вне web-каталогов.
  • enable-dmalloc — позволить поддержку dmalloc.
  • enable-exif — позволить поддержку exif.
  • enable-experimental-zts — экспериментальная компиляция.
  • enable-fast-install[=PKGS] — оптимизировать для стремительной установки (по ум.)
  • enable-force-cgi-redirect — позволить проверку безопасности для внутренних переадресаций сервера. Используйте для CGI версии Apache.
  • enable-inline-optimization — используйте с gcc при наличии большого объема памяти.
  • enable-libgcc — очевидное подключение библиотеки libgcc.
  • enable-maintainer-mode — компилировать для определенного установщика, игнорируя тс параметры, которые ему непонятны.
  • enable-memory-limit — лимитация памяти при компиляции (по умолчанию — нет).
  • enable-safe-mode — позволить неопасный режим по умолчанию.
  • enable-satellite — поддерживать CORBA через Satellite (нужен ORBit).
  • enable-shared[=PKGS] — компилировать динамические библиотеки (по умолчанию).
  • enable-sigchild — позволить личный для РНР обработчик SIGCHLD.
  • enable-static[=PKGS] — компилировать статические библиотеки (по умолчанию).
  • enable-sysvsem — включить поддержку семафоров System V.
  • enable-sysvshm — включить поддержку System V shared memory.
  • enable-trans-sid — механически передавать идентификатор сессии.
  • with-cdb[=DIR] — включить поддержку СОВ.
  • with-config-file-path=PATH — установить каталог размещения php.ini (/usr/local/lib).
  • with-cpdflib[=DIR] — включить поддержку cpdflib (нужна cpdflib >= 2) (/usr).
  • with-esoob[=DIR] — включить поддержку Easysoft OOB (/usr/Local/ easysoft/oob/dient).
  • with-exec-dir[=DIR] — в неопасном режиме разрешать запуск сценариев только из указанного каталога (/usr/locat/php/bin).
  • with-fdftk[=DIR] — включить поддержку fdftk (/usr/local).
  • with-gnu-ld — считать, что компилятор С использует GNU Id (no умолчанию — нет).
  • with-icap[=DIR] - поддерживать ЮАР.
  • with-imap[=DIR] — включить поддержку ШАР. DIR — каталог размещения ШАР include и файла c-client.a.
  • with-java[=DIR] — включить поддержку Java. DIR — каталог установки JDK. Модуль должен быть скомпилирован как всеобщий.
  • with-kerberos[=DIR] — включить поддержку Kerberos в ШАР.
  • with-mcal[=DIR] — включить поддержку MCAL.
  • with-mcrypt[=DIR] — включить поддержку mcrypt.
  • with-mhash[=DIR] — включить поддержку mhash.
  • with-mm[=DIR] — применять поддержку mm для хранения данных сессий.
  • with-mod_charset — позволить таблицы трансляции для mod_charset (Rus Apache).
  • with-pdflib[=DIR] — поддерживать pdflib 3.x (/usr/local).
  • with-readline[=DIR] — поддерживать readlinc.
  • with-regex=TYPE — тин библиотеки regex: system, apache, php.
  • with-servlet[=DIR] — поддерживать сервлеты. DIR — каталог JSDK. Модуль Java должен быть совместным.
  • with-swf[=DIR] — включить поддержку swf.
  • with-tsrm-pth[=pth-config] — применять GNU Pth.
  • with-tsrm-pthreads — применять POSIX threads (по умолчанию)
  • with-zlib-dir[=DIR] — каталог zlib для pdflib 3.x либо легко поддержки zlib.
  • with-zlib[= DIR] — включить поддержку zlib (нужна zlib >= 1.0.9) (/usr).
  • without-pcre-regex — не включать поддержку регулярных выражений.

Сети

  • with-curl[=DIR] — включить поддержку CURL.
  • enable-ftp — включить поддержку FTP.
  • with-openssl[=DIR] — включить поддержку OpenSSL в SNMP.
  • with-snmp[=DIR] — включить поддержку SNMP.
  • enable-ucd-snmp-hack — позволить UCD SNMP.
  • enable-sockets — включить поддержку сетевого интерфейса sockets.
  • with-yaz[=DIR] - включить поддержку YAZ (ANSI/NISO Z39.50).
  • enable-yp — включить поддержку YP.
  • enable-magic-quotes — позволить magic quotes по умолчанию.
  • disable-short-tags — запретить применение сокращенных тегов

Сервер

  • with-aolserver-src=DIR — размещение дистрибутива AOLserver.
  • with-aolserver=DIR - компилировать PHP для AOLserver.
  • with-apache[=DIR] - - компилировать PHP как модуль Apache (/usr/local/etc/httpd).
  • with-apxs[=FILE] — компилировать PHP как модуль Apache (применяя apxs).
  • enable-versioning — экспортировать только нужные символы. См. также файл INSTALL.
  • with-fhttpd[=DIR] — компилировать PHP как модуль fhttpd (/usr/ local/src/fhttpd).
  • with-nsapi=DIR — компилировать PHP как модуль Netscape.
  • with-phttpd=DIR — компилировать PHP как модуль phttpd.
  • with-pi3web=DIR — компилировать PHP как модуль PiSWeb.
  • with-roxen=DIR — компилировать PHP как модуль Pike (/usr/ local/roxen/server).
  • enable-roxen-zts — компилировать PHP как модуль Roxen.
  • with-thttpd=SRCDIR — компилировать PHP как модуль thttpd.
  • with-zeus=DIR — компилировать PHP как модуль ISAPI для применения с сервером Zeus.

Текстово-языковые возможности

  • with-aspell[=DIR] — включить поддержку ASPELL.
  • with-gettext[=DIR] — включить поддержку GNU gettext (/usr/ local).
  • with-pspell[=DIR] — включить поддержку PSPELL.
  • with-recode[=DIR] — включить поддержку recode.

XML

  • with-dom[=DIR] — позволить применение DOM (требуется libxml >= 2.0) (/usr).
  • enable-sablot-errors-descriptive — позволить выдачу изложений ошибок.
  • with-sablot[=DIR] — позволить применение Sablotron.
  • enabte-wddx — позволить применение WDDX.
  • disable-xml — запретить поддержку XML с применением встроенной библиотеки expat.

Установка РНР в Windows

Дальше описываются установка и конфигурирование РНР для web-серверов в системах Windows 9x/NT, в частности:

  • Personal Web Server (PWS);
  • Internet Information Server (IIS) 6, 4, 5;
  • Apache 1.3.x.

Автор рекомендует применять web-сервер Apache по причине того, что он работает на всех системах, и именно при его применении РНР может проявить все свои возможности. Также РНР дозволено установить и для ряда других серверов (инструкции не приводятся).

Windows Installshield

Программа установки РНР (которую дозволено загрузить с сайта http:// www.php.net/) механически устанавливает CGI-версию РНР для Apache, IIS либо PWS (и других серверов) и независимо настраивает сервер. Процедура установки довольно внятна и комфортна.

Всеобщие шаги установки

Эту процедуру следует проделать для всех серверов, работающих в Windows, если установка производится вручную (а не применяется установщик).

  • Разархивируйте дистрибутив РНР в всякий каталог, скажем С:\РНР\.
  • Скопируйте файл php.ini-dist в каталог Windows (обыкновенно это c:\windows либо c:\winnt).
  • Отредактируйте файл конфигурации php.ini:
    • Установите каталог модулей растяжения extension_dir (путь к файлам php_*.dll), скажем: c:\php.
    • Выберите те модули РНР, которые обязаны загружаться при запуске интерпретатора, и раскомментируйте их строки extension= php_*.dTI. Модули также дозволено загружать динамически командой сценария: dl("php_*.dll");. Некоторым модулям требуются добавочные библиотеки, часть которых находится в каталоге dlls дистрибутива (если их там нет, обратитесь на страницу http://www.php.net/FAQ.php, дабы узнать, как их дозволено обнаружить); их следует скопировать в тот каталог, где система может их обнаружить, либо добавить путь к ним в переменную PATH.
    • Для PWS и IIS дозволено указать путь к файлу browscap.ini: c:\windows\system\1netsrv\browscap.ini для Windows 95/98 и C:\winnt\system32\inetsrv\browscap.ini для NT Server.

Модули DLL PHP имеют префикс php_, что дозволяет различать их и используемые ими библиотеки.

Windows 95/98/NT и PWS/IIS 3

Рекомендуется настраивать эти серверы установкой файла php_iis_ reg.inf, pws-php4isapi.reg либо pws-php4cgi.reg, входящего в дистрибутив, заблаговременно его отредактировав и указав настоящие каталоги. В отвратном случае придется редактировать реестр (будьте осмотрительны, рекомендуется сделать копию реестра).

  • Запустите Rcgcdit.
  • Перейдите в раздел HKEY_LOCAL_MACHINE/System/CurrentControlSet/ Services/W3Svc/Parameters/ScriptMap,
  • Сделайте в нем строковый параметр — растяжение php-сценари-ев, скажем: .php. Присвойте ему путь к php.exe в виде: c:\php\ php.exe %s %s.
  • Повторите данный шаг для всего растяжения, которое будут иметь сценарии.
  • Сейчас перейдите в раздел HKEY_CLASSES_ROOT. Сделайте раздел с именем из предыдущего шага, скажем: .php.
  • Присвойте значение по умолчанию ("default value"): phpfile.
  • Повторите шаг для всякого растяжения PHP-сценариев, как и ранее.
  • Сделайте раздел phpfile в разделе HKEY_CLASSES_ROOT со значением ц,, умолчанию: «PHP Script».
  • Сделайте в этом разделе раздел «Shell», в нем «open», а в нем «command».
  • Присвоите разделу значение по умолчанию — путь к файлу php.exe, скажем; c:\php\php.exe -q %1 (не забывайте про *1).
  • Закройте Regedit. Если применяется PWS, то перезагрузите Windows.

Пользователи us 3 могут также применять программу конфигурирования http://www.genusa.com/iis/iiscfg.html. PWS 4 разрешает применять Рнр в виде модуля ISAT4.

Windows NT и IIS 4/5

  • Откройте Диспетчер служб Интернета (консоль ММС — Internet Service Manager нз раздела Программы > Администрирование) и выберите тот сериер WCD| тот, что нужно конфигурировать.
  • Откройте панель свойств, вкладку Домашний каталог (Home Directory), Виртуальные каталоги (Virtual Directory) либо Directory.
  • Нажмите кнопку Конфигурирование, после этого выберите вкладку Арр Mappings.
  • Для CGI ьерсии. Нажмите кнопку Добавить, введите растяжение (Extension) файлов РНР, и укажите путь к интерпретатору (Executable) c:\path-to-php-dir\php.exe %s %s. Не позабудьте про *s *s в конце.
  • Для ISAPI версии. Имя интерпретатора должно быть c:\path-to-php-dir\php4isapi.dn.
  • Повторите шаг для всего из растяжений.
  • Для CGI Версии. Установите требуемую политику безопасности для php.exe.
  • Для ISAPJ версии. Перезапустите web-сервер, дабы загрузить php4isapi.dll.

Windows 9x/NT и Apache 1.3.x

Рекомендуется ознакомиться с документацией Apache.

Добавьте либо измените имеющиеся (обыкновенно они закомментированы) директивы в файле конфигурации httpd.conf (либо srm.conf) для запуска версии CGI PHP.

  • Каталог PHP: ScriptAlias /php/ "c:/path-to-php-d1r/".
  • Растяжения PHP-сценариев: AddType application/x-httpd-php .php .phtml.
  • Запуск интерпретатора: Action application/x-httpd-php "/php/php.exe".

Если нужно запускать PHP как ISAPI-модуль сервера, нужно скопировать файл php4ts.dll в каталог windows/system (для Windows 9х/Ме) либо winnt/system32 (для Windows NT/2000). А после этого добавить в файл конфигурации httpd.conf следующие строки:

  • LoadModule php4_modu1e с:/php/sapi/php4apache.dll
  • AddType application/x-httpd-php .php .phtml

Подметьте, что в Win-Apache вес обратные слеши обязаны писаться как прямые, скажем: c:/directory/file.ext взамен c:\directory\ file.ext.

Компиляция для Windows

Что для этого требуется?

  1. Для компиляции должен быть установлен Microsoft Visual C++ версии 6 (допустимо и 5, но не рекомендуется).
  2. Нужен комплект эмулятора утилит GNU для Windows Cyg-win, тот, что дозволено загрузить со многих сайтов (скажем: http:// sources, redhat.com/cygwin/download.html).
  3. С сайта РНР следует загрузить комплект файлов в архиве http://www. php.net/extra/win32build.zip.
  4. А также библиотеку работы с именами DNS http://www.php.net/ extra/bindlib_w32.zip. Это замена библиотеки resolv.lib из архива win32build.zip.
  5. Для распаковки архивов, безусловно, необходим разархиватор unzip.
  6. И финально, нужен сам пакет начальных кодов РНР. Его дозволено загрузить с сервера РНР CVS (см. инструкции на странице http:// www.php.net/anoncvs.php). Но не стоит забывать, что там размещается версия, находящаяся на стадии разработки и отладки, и она может трудиться нестабильно. Пакет стабильной версии дозволено в архиве скачать с адреса: http://www.php.net/downloads.php, а промежуточные версии — с адреса: http://snaps.php.net/.

Подготовка к компиляции

Установите 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).