How-To: Инсталиране на PHP под Windows и IIS

Ще се постарая тази статия да не е поредната на тема “Инсталация на PHP под Windows”. Казвам го, защото обикновено стъпките са непълни, липсва ценна информация и възникват неочаквани неща, за които трябва да се ровите по форумите. Освен това не съм привърженик на принципа “цъкай без да знаеш какво значи това, което цъкаш” 🙂

Какво е PHP?

PHP е Server-Side интерпретатор, който е събрал добрите практики от различните езици в себе си (прилича на C, нетипизиране като Basic и т.н.). Радва се на изключителна популярност, защото е free, има много модули, гъвкав еи т.н. Всичко това позволява бързото разработване на Web приложения. Е, има си и редица недостатъци, но те са “бял кахър”: http://www.bitstorm.org/edwin/en/php/

Личното ми мнение е, че ако сте тръгнали да ставате програмисти не го правете с PHP. Хилядите благинки/библиотеки и това, че всичко става бързо и лесно изкривяват представите на някои хора за програмирането. Това е по-скоро използване на готовото +малко наш код.

Въпреки, че много хора няма да се съгласят с написаното от мен, само ще кажа: виждал съм много PHP “програмисти”, които могат да правят наистина невероятни неща с PHP, но пък гледат тъпо (в поза “Ъъъъъ?!?”) код на C++/Delphi/JScript/дори Javascript!?! Да не говорим, ченеща катоцикъл с предусловие/постусловие, указатели, псевдоними, динамично заделяне/освобождаване на памет, стек, класово наследяване, полиморфизъм, оптимизация на програмния коди т.н. за тях са по-скоро чуждици:)

Инсталационни пакети.

Основно PHP за Windows идва в няколко варианта:

  • .MSI – автоматизиран инсталационен пакет, който даже конфигурира IIS;
  • .ZIP – архив без инсталатор.Всичко се конфигурира ръчно; Аз ще говоря именно за този вариант.

Веднъж инсталирано можете да използвате PHP в предпочитания от Вас уеб сървър (IIS/Apache).

Варианти на PHP.

Моделът на IIS позволява да конфигурирате PHP в два варианта:

  • CGI вариант – при всяко отваряне на страница се стартира отделен процес php.exe
    • Предимства:
      • сещам се само за едно: конфигурационния файл php.ini се зарежда всеки път, което позволява промените в настройките да се отразяват бързо;
    • Недостатъци:
      • заема се много памет – за всяка заявка по един процес php.exe;
      • Опастност от срив на сървъра. Ако php скриптовете са времеемки, а потребителите много това си е равносилно на самоубийство + Denial Of Service;
  • ISAPI вариант – модулът на php се зарежда еднократно в паметта
    • Предимства:
      • заема по-малко памет;
      • използва нишков модел – за всяка заявка се създава нова нишка, а не цял процес;
    • Недостатъци:
      • зарежда се еднократно при стартиране на IIS. Ако направите промяна в php.ini трябва да рестартирате IIS сървъра.

Конфигурация.

В PHP доста неща подлежат на конфигуриране. Всички настройки се съхраняват в обикновен текстов файл, който се казва php.ini. Този файл важи за всички сайтове, които се отварят под IIS и е твърде желателно да го преместите в папктата %SYSTEMROOT%, след което да го редактирате ако е наложително.

Преди да започнете инсталацията обърнете внимание на следното:

  • Трябва да имате инсталационен диск на Windows ако се наложи да инсталирате IIS;
  • Определете модела на достъп до страниците – анонимно или чрез вградена автентикация;
  • Акоизползвате Anonymous Access изберете с кой акаунт ще се прави това – IUSR_… или друг локален или домейнски акаунт. Имайте предвид, че избраният акаунт трябва да има привилегии\права:
    • Access this computer from network;
    • Log on as a batch job;
    • Log on locally.
  • Разбира се, трябва да имате административни права върху ОС, докато инсталирате и правите необходимите настройки;

Инсталация.

В този пример показвам как да инсталирате PHP като ISAPI модул. Използвам за работна папка C:\PHP и пропускам разни дребни подробности, като например как се влиза в Control Panel 🙂

Стъпките:

1. Сваляте си актуална версия на PHP от сайта http://www.php.net/downloads.phpвъв вариант на архив (а не .MSI!!!);

2. Разархивирате .ZIP/.RAR файла в папка C:\PHP

3. Къмпроменливата %PATH% добавяте C:\PHP и C:\PHP\EXT

Чрез CMD (Command Prompt)това става лесно така:
[code]%PATH%=%PATH%;C:\PHP;C:\PHP\EXT[/code]

4. Копирайте и преименувайте C:\PHP\php.ini-dist в %SYSTEMROOT% под име php.ini
[code]Ако пък Ви се иска използвайте php.ini-recommended, но препоръчвам да погледнете директивата в него short_open_tag и да я насторите да е On, за да не се чудите защо не Ви се парсва кода от PHP-то ако използвате само тага <?, а не <?php 🙂 [/code]

5. Инсталирате си IIS на компютъра (ако вече не е направено) през Control Panel -> Add/Remove Programs -> Add/Remove Windows Components -> Internet Information Services

6. Отваряте конзолата за управление на IIS: Control Panel -> Administrative Tools -> Internet Information Services;

7. Разлиствате (Local Computer -> Web Sites -> Default Web Site) и в Properties/ISAPI Filtersдобавяте php5isapi.dll

8. Ако използвате Anonymous Access (Promerties->Directory Security-> Anonymous Access And Authentication Control -> Edit), то в папката C:\PHP и в директорията с Web документите добавете потребителя, който използвате за анонимен достъп (обикновено IUSR_…) с права READ (все пак не се оливайте с даването на достъп 🙂 )

9. Ако използвате MySQL, то копирайте файла libmysql.dll в %SYSTEMROOT%\System32

10. Модифициране на PHP.INI. Добре би било да модифицирате php.ini според Вашите нужди. Ето няколко важни момента:

      • short_open_tag – определя вида на стартивия таг за php.
        • Off -трябва да започвате скриптовете си с <?php;
        • On – можете да използвате по-кратката форма:<?
      • max_execution_time(в секунди) – определя максималното време за работа на един php скрипт/страница. Ако кодът продължи над това време PHP автоматично го прекратява;
      • error_reporting – указва на PHP каква информация да извежда към потребителя при възникване на грешки. Най-често се използват следните константи:
        • E_ALL – всички грешки и предупреждения;
        • E_ERROR – само съобщения за грешки;
        • E_WARNING – само предупреждения;
      • display_errors – указва дали/къде ще се извеждат съобщения за грешки. Най-често се използват:
        • Off – не показва никакви съобщения за грешки;
        • On – показва всички съобщения за грешки;
        • “stderr” – пренасочва грешките към стандартния изход за грешки stderr;
      • display_startup_errors– указва дали се показват грешките, възникнали при стартиране на php.exe (в CGI/CLI варианта) или при зареждането на PHP в ISAPI варианта;
        [code]Малко за грешките. За програмиращия е адски полезно да вижда всяка една грешка, която възникне, за да може да я коригира. Но, за съжаление, това е полезно и за всеки злонамерен потребител 🙂 Така че намерете баланса. Използвайте показването на всички грешки само по време на разработка на web приложението. В продукционна среда намалете информацията за грешките възможно най-много. Има и други варианти да знаете какво точно се случва, но за това ще пиша в друга статия :)[/code]
      • extension_dir – задава базовия път до директорията с разширителните модули;
      • upload_tmp_dir – задава пътя до папката, където временно се съхраняват качените от потребителите файлове;
      • extension=XYZ – указва на PHP да зареди съответната приставка/модул/разширение. Задава се само името на модула. PHP поставя автоматично пред него информацията от extension_dir;
      • SMTP – IP адрес/име на машината, която се явява SMTP сървър;
      • smtp_port – портът на SMTP сървъра;
      • sendmail_from – указва от името на кой е изпратен даден e-mail;

Windows Server 2003 и IIS6

Ако инсталирате PHP под Server 2003/IIS6 всички описани стъпки важат, но добавям още една:

11. Разрешаване на ISAPI филтъра от Allow This Extention раздела

В Windows Server 2003/IIS6 PHP-то тръгва само като ISAPI модул (поне такива спомени имам 🙂 )

Би трябвало вече да имате работеща PHP инсталация, която даже поддържа MySQL 🙂

One thought on “How-To: Инсталиране на PHP под Windows и IIS

  1. Ох незнам за теб и за всички дето им се налага да го правят това под Windows… жална им майка
    При мен нещатата се свеждат до:
    apt-get install php5 libapache2-mod-php5 php5-mysql

Leave a Reply

Your email address will not be published. Required fields are marked *