Ще се постарая тази статия да не е поредната на тема “Инсталация на 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 🙂
Ох незнам за теб и за всички дето им се налага да го правят това под Windows… жална им майка
При мен нещатата се свеждат до:
apt-get install php5 libapache2-mod-php5 php5-mysql