This page has been robot translated, sorry for typos if any. Original content here.

установка Apache

Існує спосіб, набагато більш простий і зручний.
Сьогодні, в міжнародний день споживача, в рамках проекту курівництво нарешті побачив світ Джентльменський набір Web-розробника. Його ядро - універсальний дистрибутив, що включає Apache, PHP4, Perl і MySQL, а також дружній інсталятор. Вражають нові можливості сервера Apache. Тепер вам не потрібно взагалі виправляти httpd.conf і файл hosts - система зробить це за вас. Не потрібно також возитися зі створенням віртуального диска для директорій документів віртуальних хостів. Зникли складності при додаванні нових віртуальних хостів - все, що потрібно зробити, це просто створити директорію документів в / home. Вікно консолі Apache відтепер не займає місця на екрані, а PHP працює в вигляді модуля Apache. MySQL вже налаштований, ви можете адмініструвати його за допомогою останньої версії phpMyAdmin. Дистрибутив займає менше двох мегабайт, повністю автономний, не змінює нічого в системній директорії Windows і може розташовуватися в будь-якому каталозі.

На сторінці:

1. Дистрибутиви і посилання
2. Введення - навіщо потрібен домашній віртуальний сервер?
3. Від слів до справи - установка Apache
Етап перший - установка
Етап другий: настройка файлу конфігурації Apache
Етап третій: тестування Apache
Перевірка html.
Перевірка SSI.
Перевірка CGI.
4. Віртуальні хости Apache
5. Установка PHP версії 4
установка PHP
Налаштування Apache для роботи з PHP
тестування PHP
Установка додаткових модулів
6. Установка Perl
7. Встановлення MySQL
тестування MySQL
8. Часті питання

1. Дистрибутиви і посилання

"А чи не послати нам гінця? .."
кінорежисер

Ось список посилань на сайти, на яких завжди можна знайти найсвіжіші версії програмних продуктів, на які посилається стаття. Отже:
  1. Офіційний сайт Apache: http://www.apache.org
  2. Офіційний сайт PHP: http://ru.php.net
  3. Офіційний сайт Active Perl: www.activestate.com
  4. Офіційний сайт MySQL: http://www.mysql.com
І ще кілька посилань:
  1. Всеросійський клуб вебмайстрів: http://www.webclub.ru
  2. Клуб розробників PHP: http://www.phpclub.net
  3. Ну і, звичайно, Лабораторія dk: http://dklab.ru

2. Введення - навіщо потрібен домашній віртуальний сервер?

"Ну до чого все це, краще б горілки випили"
З листів Бєлінського Гоголю

Якщо Ви читаєте цей документ, а також якщо у Вас встановлений Windows 95/98 (а наша особиста думка така, що ця операційна система найбільш збалансована з точки зору інтерфейсу і зручності роботи), значить, Ви вже зіткнулися з проблемою віртуального домашнього сервера, а точніше, з проблемою його відсутності! Ця невелика стаття допоможе Вам скачати і встановити один з кращих серверів - Apache, а також ті програми, через відсутність яких народ в сказі змітає всі інші сервера (наприклад, Sambar Server) зі свого багатостраждального жорсткого диска і встановлює Apache для Windows 95 / 98. Маються на увазі, звичайно, Perl, PHP і MySQL, також працюють під Windows. Прочитавши цю статтю і скачавши дистрибутиви, Ви будете озброєні усіма інструментами, які так необхідні для професійної роботи в Web!

Звертаємо Вашу увагу: існує думка, що MySQL (а тим більше для Windows 95/98) можна отримати безкоштовно, а можна тільки купити. Так ось, можете зітхнути з полегшенням: MySQL для Windows 95/98 існує, і її установка не буде коштувати Вам і копійки!

Якщо Ви - професійний Web-програміст, то після уважного ознайомлення з цією (на жаль, стала деякий час назад досить об'ємистої) статтею Ви зможете на порядок спростити собі життя - точніше, її частину, що стосується написання і налагодження скриптів. І це завдяки тому, що все описане тут майже на 100% сумісно з тим ПО, яке швидше за все встановлено у Вашого хостера (а більше половини сучасних хостерів працюють з Unix). Саме для цих, і ніяких інших, цілей і була написана ця стаття - допомогти розробнику скриптів. Однак, якщо Ви збираєтеся серйозно зайнятися хостингом на платформі Win32, то краще буде використовувати не Apache і PHP, а Microsoft IIS і ASP, і про це написано безліч інших статей.

Поговоримо тепер з тими користувачами Windows 95/98, які заглянули сюди з простої цікавості. Часто виникає ситуація, коли необхідно перевірити повний вид html-сторінки. Однак найчастіше це неможливо при роботі вдома - технології SSI, CGI і, звичайно, PHP, наприклад, точно вимагають сервера. Як же бути? Не варто впадати в апатію - потрібно просто встановити на Ваш домашній комп'ютер (нехай навіть і не підключений до Інтернет) спеціальну програму - Web-сервер. Взагалі-то серверів існує безліч - погані і хороші, повільні і швидкі ... Ми ж вибрали сервер, який підходить під останні дві категорії, - Apache. Найголовніше те, що це чи не єдиний сервер, який дозволяє працювати в Windows 95/98 з технологіями PHP, CGI і Perl-скриптами одночасно так само просто і невимушено, ніби у Вас стоїть Unix.


3. Від слів до справи - установка Apache

"У мене для Вас дві новини: погана і хороша. Погана: м'яса
мало, будемо їсти бизоний послід. І хороша: його-то у нас багато! .. "
З виступу вождя апачів

Отже, Ви зважилися встановити на свій комп'ютер Apache для Windows 95/98. В такому випадку Вам слід запастися терпінням і для початку завантажити дистрибутив сервера з офіційного сайту Apache: http://httpd.apache.org/dist/httpd/binaries/win32/ . Раджу Вам вибрати найостаннішу версію сервера для платформи Windows. Тепер нам належить настройка Apache для Вашої системи.
Важливо!
Ми попросимо Вас в точності виконувати перераховані нижче кроки, не пропускаючи і не відкладаючи ні одного. У цьому випадку все запрацює - це перевірено. Далі наводяться інструкції з досить скупими поясненнями, чому потрібно зробити ту чи іншу дію, в розрахунку на те, що Ви будете дотримуватися їх буквально. В іншому випадку вам, швидше за все, доведеться додатково провести пару неприємних годин (або днів) за вивченням документації Apache, зокрема, тієї її частини, яка стосується конфігурації.

Етап перший - установка

  • Запустіть щойно скачаний файл дистрибутива Apache. У діалозі натисніть кнопку Next, а потім - кнопку Yes, щоб погодитися з умовами ліцензії.
  • Натискайте кнопку Next в вікнах до тих пір, поки не з'явиться запит про вибір директорії для установки Apache. Рекомендую Вам залишити ту директорію, яка пропонується за замовчуванням (нехай це, наприклад, C: \ Program Files \ Apache Group \ Apache). Запам'ятайте її на майбутнє.
  • У вікні встановіть прапорець Typical і натисніть кнопку Next.
  • Програма установки Apache запропонує створити папку в меню Пуск в папці Програми. Дозвольте їй це зробити, натиснувши кнопку Next. Почнеться процес копіювання програмного забезпечення.
  • Після завершення копіювання натисніть кнопку Finish. Процес установки сервера завершено, попереду - його налаштування.

Етап другий: настройка файлу конфігурації Apache

На цьому етапі Вам потрібно визначитися з Директорією, в якій будуть зберігатися ваші сайти. За замовчуванням Apache використовує для цього C: \ Program Files \ Apache Group \ Apache \ htdocs, де відразу після установки можна знайти документацію по серверу. Думаю, для серйозних цілей вона не дуже підходить - надто вже довге ім'я, тому ми рекомендуємо зробити для всіх сайтів окремий диск (наприклад, з ім'ям Z:) за допомогою утиліти subst, що входить в Windows. Давайте зупинимося на цьому рішенні. Отже, виконайте наступне:
  • Виберіть директорію, в якій будуть зберігатися ваші сайти (їх може бути декілька). Нехай, наприклад, це буде C: \ INTERNET. Наша директорія міститиме кореневий каталог нового диска Z:.
  • На початку файлу autoexec.bat (але після команди @echo off, якщо вона у Вас там є) напишіть такий рядок:
      subst Z: C: \ INTERNET 
  • Перезавантажте комп'ютер, щоб новий диск створився. Тепер все, що записано в директорії C: \ INTERNET, відображатиметься на диску Z:, як ніби це - звичайний жорсткий диск.
    Важливо!
    Є відомості, що в Windows 95/98 є помилка. В результаті неї при використанні subst шляху іноді "самі по собі" перетворюються в абсолютні (тобто, наприклад, в нашому випадку Z: перетворюється в C: \ INTERNET), причому в процесі роботи якої-небудь програми і абсолютно несподівано для неї. Однак, якщо Ви налаштуєте всі так, як описується в цій статті, проблем виникнути не повинно.
    Ви можете також створити диск Z: за допомогою якої-небудь програми для віртуальних розділів (наприклад, за допомогою вбудованої в Windows 95/98 програми DriveSpace). Це рішення, мабуть, навіть краще, ніж використання subst, як з точки зору економії пам'яті, так і з точки зору швидкодії. Адже що таке Web-сайт, як не набір дуже невеликих файлів? А DriveSpace якраз і оптимізує роботу з такими файлами. За описом того, як використовувати DriveSpace, дивіться вбудовану в Windows документацію.
  • Створіть на диску Z: директорію home, а в ній - каталог localhost. У ньому буде зберігатися вміст головного хоста Apache - того, який доступний за адресою http: // localhost. Перейдіть в останній створений каталог. Створіть в ньому директорії cgi і www. У першій будуть зберігатися CGI-скрипти, а в другій - ваші документи і програми на PHP. Зауважу, що подібну операцію Вам потрібно буде проробляти кожен раз при створенні нового віртуального хоста (про них ми поговоримо трохи пізніше).
  • Відкрийте в Блокноті файл конфігурації httpd.conf, який розташований в піддиректорії conf директорії Apache (в нашому прикладі це C: \ Program Files \ Apache Group \ Apache). Втім, Ви можете і не шукати цей файл вручну, а скористатися ярликом Edit configuration в меню Пуск - Програми - Apache Web Server - Management. Httpd.conf - єдиний файл, який Вам потрібно налаштувати. Вам належить знайти і змінити в ньому деякі рядки, а саме ті, про яких згадується далі. Щоб уникнути непорозумінь не чіпайте все інше. Слід зауважити, що в файлі кожен параметр супроводжується кількома рядками коментарів, розібратися в яких з першого разу досить важко (втім, Ви можете звернутися до статті Російський переклад файлу httpd.conf , в якій наведено повний переклад цих коментарів на російську мову). Тому не звертайте на них особливої ​​уваги.

Для початку ми налаштуємо параметри для головного хоста Apache - localhost, а також параметри за замовчуванням, які будуть успадковані всіма іншими віртуальними хостами, якщо ми коли-небудь захочемо їх створити.

  • Встановіть поле ServerName наступним чином:
      ServerName localhost 
    Тільки не забудьте розкоментувати поле ServerName, тобто прибрати символ "#" перед цим параметром (за замовчуванням він закоментований)! Взагалі, все, що йде після цього символу і до кінця рядка, Apache ігнорує.
  • В поле DocumentRoot вкажіть ту директорію, в якій будуть зберігатися ваші html-файли. Ми раніше домовилися, що це буде Z: \ home \ localhost \ www):
      DocumentRoot "z: / home / localhost / www" 
  • Знайдіть блок, що починається рядком Directory / і закінчується / Directory (взагалі, такі блоки позначають установки для заданої директорії і всіх її піддиректорій). Цей блок може містити безліч коментарів - не зважайте на них уваги. Його потрібно змінити на такий блок:
      Directory z: /
      Options Indexes Includes
      AllowOverride All
      Allow from all
     / Directory
    
    Таким чином, в цьому блоці будуть зберігатися установки для всіх директорій за умовчанням (оскільки це - коренева директорія). А саме, для всіх директорій за умовчанням встановлюється можливість автоматичної генерації індексу - списку вмісту директорії при перегляді її в браузері, а також підтримка SSI і дозвіл використовувати файли .htaccess для індивідуальних налаштувань каталогів.
  • Знайдіть аналогічний блок, що починається Directory "C: / Program Files / Apache Group / Apache / htdocs" і закінчується . Там буде багато коментарів, не зважайте на них увагу. Цей блок Вам потрібно видалити, так як всі налаштування для директорії зі сторінками повинні успадковуватися від налаштувань за замовчуванням, які ми тільки що встановили.
  • Встановіть DirectoryIndex так:
      DirectoryIndex index.htm index.html 
    Це - так звані файли індексу, які автоматично видаються сервером при зверненні до будь-якої директорії, якщо не вказано ім'я html-документа. В принципі, можна додати сюди і інші імена, наприклад, index.php, і т.д. Однак додаткові настройки все ж краще робити в файлах .htaccess для кожного сайту окремо.
  • Знайдіть і виправте такий параметр:
      ScriptAlias ​​/ cgi-bin / "z: / home / localhost / cgi /" 
    Додайте після нього ще такий рядок:
      ScriptAlias ​​/ cgi / "z: / home / localhost / cgi /" 
    Так, саме так, з двома Слеш. Це буде та директорія, в якій повинні зберігатися ваші CGI-скрипти. Подібний параметр говорить Apache про те, що, якщо буде вказано шлях виду http: // localhost / cgi-bin, то насправді слід звернутися до директорії z: / home / localhost / cgi. Ми використовуємо два синоніма для CGI-директорії тому, що / cgi-bin / буде доступна не тільки головному хосту localhost, але і всім іншим віртуальним хостам. У той же час, у кожного з них буде додатково своя CGI-директорія / cgi /.
  • Тепер слід знайти блок параметрів, що починається з Directory "C: / Program Files / Apache Group / Apache / cgi-bin" і закінчується / Directory. Це - установки для CGI-директорії. Так як ми не збираємося вказувати ніяких додаткових параметрів замість тих, які вже встановлені за замовчуванням, цей блок потрібно видалити.
  • Знайдіть і налаштуйте (не забудьте розкоментувати!) Наступний параметр:
      AddHandler cgi-script .bat .exe .cgi 
    Це говорить Apache про те, що файли з розширеннями exe, bat і cgi потрібно розглядати як CGI-скрипти.
  • І останнє - встановіть наступні параметри:
      AddType text / html .shtml
     AddHandler server-parsed .shtml .html .htm 
    Цим Ви змушуєте Apache обробляти файли з зазначеними розширеннями процесором SSI.
  • Тепер не забудьте зберегти зміни і закрийте блокнот.

Етап третій: тестування Apache

Вітаємо - Ви налаштували свій Apache, і він повинен вже працювати! Для запуску сервера натисніть Пуск, потім Програми, Apache Web Server, Management і Start Apache, при цьому з'явиться вікно, дуже схоже на Сеанс MS-DOS, і нічого більше не станеться. Чи не закривайте його і не чіпайте до кінця роботи з Apache.

Якщо вікно відкривається і тут же закривається, це означає, що Ви допустили якусь помилку в файлі httpd.conf. В цьому випадку доведеться шукати неточність. Найпростіше це зробити так.

  • Запустіть Сеанс MS-DOS. Для цього натисніть Пуск, потім Виконати. Наберіть в діалозі command і натисніть Enter. З'явиться підказка командного рядка. (Якщо у Вас немає можливості запустити Сеанс MS-DOS, скористайтеся яким-небудь іншим засобом. Наприклад, запустіть Far і працюйте через нього. Перегляд результатів роботи програми - Ctrl + O.)
  • Наберіть такі команди DOS:
      c:
     cd "\ Program Files \ Apache Group \ Apache"
     apache.exe 
  • Якщо до цього Apache не запускається, то Ви отримаєте повідомлення про помилку і номер рядка в httpd.conf, де вона сталася. Виправте httpd.conf і повторіть описаний процес спочатку, до тих пір, поки у вікні не з'явиться щось на зразок "Apache / 1.3.14 (Win32) running ..."

Кілька слів про те, як можна спростити запуск і завершення сервера. У Windows можна призначити будь-якого ярлику функціональну комбінацію клавіш, натиснувши які, Ви запустите цей ярлик. Так що клацніть правою кнопкою на панелі завдань, виберіть з контекстного меню Властивості, потім Налаштування меню і кнопку Додатково. У відкритому Провіднику призначте ярлику Start Apache комбінацію Ctrl + Alt + A а ярлику Stop Apache - Ctrl + Alt + S. Тепер Ви зможете запускати сервер натисненням Ctrl + Alt + A і зупиняти його, натиснувши Ctrl + Alt + S.

Тепер перевіримо, чи правильно ми налаштували директорії для документів.

Перевірка html.

В директорії z: / home / localhost / www з html-документами Apache створіть файл index.html з будь-яким текстовим змістом. Тепер запустіть браузер і наберіть:
  http: //localhost/index.html 
або просто
  http: // localhost / 
Повинен завантажитися Ваш файл.

Перевірка SSI.

В директории z:/home/localhost/www с html-документами Apache создайте файл test.shtml c таким содержанием (внимательно следите за соблюдением пробелов в директиве include!): SSI Test!

Теперь наберите в браузере:
http://localhost/test.shtml
Должен загрузиться файл, который состоит из текста "SSI Test!", за которым следует содержимое файла index.html между двумя горизонтальными чертами. Если этого не произошло, значит, Вы неправильно настроили работу SSI.

Проверка CGI.

В директории z:/home/localhost/cgi для CGI-скриптов создайте файл test.bat с таким содержанием: @echo off echo Content-type: text/html echo. echo. dir Теперь в браузере наберите:
http://localhost/cgi/test.bat
В окне отобразится результат команды DOS dir.
Важно!
Нужно отметить, что указанный тест работает не на всех версиях Windows: иногда вместо того, чтобы выполнить файл test.bat, Apache выводит в браузер его содержимое (а иногда Windows запускает этот файл в отдельном окне). С чем это связано - не совсем ясно, однако, кажется, можно избавиться от указанной ошибки путем манипулирования с Реестром Windows. Если у Вас test.bat не запускается, не расстраивайтесь: вряд ли Вы когда-нибудь будете писать скрипты в виде bat-файлов, тем более, что этот способ несовместим с Unix.)

Если что-то пошло не так, либо окно Apache открывается и тут же закрывается, значит, где-то произошла ошибка - скорее всего, в httpd.conf. За детальным разъяснением ее причин можно обратиться к log-файлам, расположенным в директории C:\Program Files\Apache Group\Apache\logs.

4. Виртуальные хосты Apache

"Виртуальные хосты - хосты, имеющие уникальный адрес
в Интернет, эмулируемые и поддерживаемые сервером"
Древнее языческое заклинание

Итак, Вы установили Apache и получили, таким образом, директорию z:/home/localhost/www для хранения документов и z:/home/localhost/cgi для CGI. Однако в Интернете Вы поддерживаете (или, скорее всего, будете поддерживать) несколько серверов, а Apache создал для Вас только один. Конечно, можно структуру этих нескольких серверов хранить на одном сервере, однако проще и удобнее было бы создать несколько виртуальных хостов с помощью Apache. В нашем распоряжении есть два вида виртуальных хостов: отдельные для каждого ip-адреса или же использующие один общий ip-адрес (так называемые name-based хосты - хосты, определяемые по имени). В тренировочных целях мы рассмотрим оба варианта, а именно, создадим хост hacker, использующий тот же адрес, что и localhost, а также хост cracker с адресом 127.0.0.2.
Важно!
Конечно, вместо "hacker" и "cracker" Вам нужно будет указать желаемые имена ваших виртуальных хостов. Советуем назвать их так же, как и на Вашем настоящем Web-сервере, но только без суффикса .ru или .com - это может многое упростить при программировании скриптов.

Как это принято в Unix, каждый сервер будет представлен своим каталогом в директории z:/home с именем, совпадающим с именем сервера (мы уже проделывали нечто подобное с хостом localhost). Например, сервер hacker будет храниться в директории z:/home/hacker, которую Вам необходимо создать прямо сейчас (конечно, вместе с ее поддиректориями cgi и www, как мы делали это ранее), а хост cracker - в директории z:/home/cracker. В этих директориях будут находиться:

  • файлы access.log с журналом доступа к виртуальному серверу;
  • файлы errors.log с журналом ошибок сервера;
  • директория www, где, как обычно, будут храниться html-документы;
  • директория cgi для хранения CGI-программ.

Для установки виртуальных хостов необходимо сделать некоторые изменения в файле конфигурации Apache httpd.conf (см. выше), а также в некоторых файлах Windows. Вот необходимые действия.

Откройте файл httpd.conf (можете для этого воспользоваться ярлыком Edit configuration в меню Пуск - Программы - Apache Web Server - Management). Перейдите в его конец, Вам предстоит добавить туда несколько строк. Добавьте следующие строки в конце файла после всех комментариев:

NameVirtualHost 127.0.0.1
#----localhost
 ServerAdmin webmaster@localhost
 ServerName localhost
 DocumentRoot "z:/home/localhost/www"
 ScriptAlias /cgi/ "z:/home/localhost/cgi/"
 ErrorLog z:/home/localhost/error.log
 CustomLog z:/home/localhost/access.log common
#----hacker
 ServerAdmin webmaster@hacker.ru
 ServerName hacker
 DocumentRoot "z:/home/hacker/www"
 ScriptAlias /cgi/ "z:/home/hacker/cgi/"
 ErrorLog z:/home/hacker/error.log
 CustomLog z:/home/hacker/access.log common
#----cracker
 ServerAdmin webmaster@cracker.ru
 ServerName cracker
 DocumentRoot "z:/home/cracker/www"
 ScriptAlias /cgi/ "z:/home/cracker/cgi/"
 ErrorLog z:/home/cracker/error.log
 CustomLog z:/home/cracker/access.log common
Важно!
Обратите внимание на то, что мы добавили дополнительно секцию VirtualHost для хоста localhost. Если этого не сделать, то все запросы к нему (то есть, по адресу 127.0.0.1) будут обработаны name-based хостом hacker. Происходит это, видимо, из-за того, что хосты в секции VirtualHost имеют больший приоритет при обработке, чем главный хост, который мы создали до этого.

Директива NameVirtualHost говорит серверу, что указанный ip-адрес может использоваться несколькими виртуальными хостами, поэтому для обработки запросов, поступающих на этот адрес, нужно использовать протокол HTTP 1.1 (который, собственно, и поддерживает технику работы с name-based хостами).

При желании можно добавить и другие параметры в блоки VirtualHost (например, DirectoryIndex и т.д.) Не переопределенные параметры наследуются виртуальным хостом от главного. Однако не советую злоупотреблять настройками в этих секциях - лучше сделать их в файле .htaccess в директории нужного хоста, потому что компания, которая предоставляет (будет предоставлять) Вам "настоящие" виртуальные хосты в Интернете, вряд ли позволит менять эти блоки.

Но как же система узнает, что хост cracker сопоставлен с адресом 127.0.0.2, а hacker - вообще name-based хост? Для решения проблемы надо немного подправить системный файл hosts, который находится в директории C:\WINDOWS для операционных систем Windows 95/98/Millenium и C:\WINNT\SYSTEM32\DRIVERS\etc для Windows NT и Windows 2000.

Важно!
Не путайте файл hosts (без расширения) с файлом hosts.sam, который, скорее всего, также расположен в той же директории! Последний файл является просто демонстрационным примером Microsoft и никак не используется системой. Если файла hosts не существует, его необходимо создать.

Файл hosts - обычный текстовый файл, и в нем может быть заранее записана только одна строка:

127.0.0.1 localhost

Именно эта строка и задает соответствие имени localhost адресу 127.0.0.1. (Ради справедливости следует сказать, что имя localhost работает и без указанной выше строки. Ну и выдумщики же эти парни из компании Microsoft!) Для нашего виртуального хоста надо добавить соответствующую строчку, чтобы файл выглядел так:

127.0.0.1 localhost hacker
127.0.0.2 cracker

Обратите внимание на то, что хост hacker описан на той же строке, что и localhost. Дело в том, что в файле hosts должны указываться только уникальные ip-адреса. Если же одному адресу сопоставляется сразу несколько хостов, то один из них (тот, который идет первым) объявляется главным, а остальные - его синонимами. В нашем случае localhost - главный, а hacker - его синоним. Apache при получении запроса на адрес 127.0.0.1 узнает, что он пришел хосту с именем hacker, и активизирует соответствующий блок VirtualHost.

Итак, мы создали виртуальные хосты со следующими свойствами:

  • Хост hacker:
    • имя - hacker;
    • доступен по адресу http://hacker;
    • расположен в директории z:/home/hacker;
    • директория для хранения документов - z:/home/hacker/www, доступная по адресу http://hacker/;
    • директория для CGI - z:/home/hacker/cgi, доступная по адресу http://hacker/cgi/;
    • файлы журналов хранятся в z:/home/hacker.
  • Хост cracker:
    • имя - cracker;
    • доступен по адресу http://cracker или http://127.0.0.2;
    • расположен в директории z:/home/cracker;
    • директория для хранения документов - z:/home/cracker/www, доступная по адресу http://cracker/;
    • директория для CGI - z:/home/cracker/cgi, доступная по адресу http://cracker/cgi/;
    • файлы журналов хранятся в z:/home/cracker.
Важно!
Необходимо заметить, что главный хост (невиртуальный, тот, который мы создали ранее) по-прежнему доступен по адресу http://127.0.0.1 или http://localhost. Более того, его директория /cgi-bin/ "видна" всем созданным виртуальным хостам, так что Вы можете ее использовать.

После всех изменений не забывайте перезапускать Apache.

Важно!
Если установлен Apache версии ниже 1.3.20, то просто закрыть окно сервера, нажав на кнопку Закрыть в его правом верхнем углу, недостаточно - нужно воспользоваться ярлыком Stop Apache в меню Пуск - Программы - Apache Web Server - Management. В противном случае закроется только окно Apache, а сам сервер останется работать в фоновом режиме, так что изменения, внесенные в httpd.conf, не будут активизированы. Действует принцип: если ярлык закрытия сервера в меню Пуск присутствует, значит, обязательно нужно им пользоваться, иначе - можно закрывать окно принудительно.

5. Установка PHP версии 4

"- Больной, читайте первую строчку сверху!
- Ша, Бэ, Пэ Ха Пэ... Доктор, кодировочку-то пофиксите..."
Народный фольклор

Давайте теперь перейдем к установке языка PHP версии 4. К сожалению, на момент написания этих строк у PHP не было нормальной setup-программы, которая могла бы установить PHP со всеми необходимыми нам модулями за один раз, как мы проделали это с Apache. Так что, возможно, его установка покажется Вам чуть сложнее.

Прежде всего, Вам нужно запастись терпением и скачать с официального сайта PHP http://www.php.net в секции Downloads два файла: один с расширением zip, а другой - exe. Ссылки на эти два файла располагаются почти в самом верху страницы, после заголовка Win32 Binaries. Первый файл представляет собой полную версию PHP 4, но не имеет удобной программы установки, а второй, наоборот, является автоматической программой установки, но не содержит в себе наиболее часто используемых модулей.

Важно!
Так было на момент написания этой статьи. Возможно, в будущем разработчики PHP будут поставлять дистрибутив в виде одного большого exe-файла, но пока это не так.

Советую Вам также скачать полную документацию по PHP, ссылка на которую есть на странице чуть ниже. Уверен, в будущем она еще не раз Вас выручит.

Стоит сказать еще пару слов насчет версии PHP. Язык постоянно совершенствуется, и на момент создания этой статьи последней версией была 4.0.3. Скорее всего, когда будете читать эти строки, выйдет более новая версия - например, 4.0.10. Думаю, наилучшем решением будет скачать ту, что поновее, потому что в ней, возможно, исправлены некоторые ошибки из предыдущих версий языка. Главное, чтобы первая цифра была 4, потому что третий PHP сильно проигрывает четвертому по количеству поддерживаемых функций.

Установка PHP

  • Запустите только что скачанный exe-файл. В появившемся диалоговом окне нажмите кнопку Next.
  • Согласитесь с условиями лицензии, нажав кнопку I Agree. В появившемся диалоговом окне выберите тип установки Standard.
  • Теперь укажите директорию, в которую будет установлен PHP. По умолчанию предлагается C:\PHP, но, думаю, логичнее было бы выбрать C:\Program Files\PHP4, "поближе" к Apache. Для указания этой директории нажмите кнопку Browse и введите ее имя, затем нажмите, как обычно, кпопку OK и потом - Next, чтобы перейти к следующему диалогу. (Если Вы настоящий программист и любите порядок, то проделайте эти действия обязательно).
  • Задайте адрес вашего SMTP-сервера (Send Mail Transfer Protocol - протокол пересылки почты), а также Ваш адрес электронной почты. Именно этот сервер и обратный адрес будут использованы для исходящих почтовых запросов, когда вызывается функция Mail() языка PHP. В общем, это тот самый сервер, через которого отсылает почту Ваш обычный почтовый клиент - например, Outlook Express. Впрочем, можете и оставить в текстовых полях значения по умолчанию - в этом случае функция Mail() просто не будет работать на локальной машине.
  • Выберите сервер, на который будет настроен PHP. В нашем случае это - Apache.
  • Начнется процесс копирования файлов. После его окончания, возможно, появятся еще некоторые диалоговые окна с различными извещениями. Не обращайте на них внимания.

На этом этапе язык PHP можно считать уже почти установленным - нам осталось только настроить Apache, чтобы он мог распознать PHP-скрипты, а также установить дополнительные модули, которые содержатся в скачанном нами zip-архиве.

Настройка Apache для работы с PHP

  • Откройте в Блокноте файл конфигурации Apache httpd.conf, в директории C:\Program Files\Apache Group\Apache\conf. Впрочем, Вы можете и не искать этот файл вручную, а воспользоваться ярлыком Edit configuration в меню Пуск - Программы - Apache Web Server - Management.
  • Найдите в нем такую закомментированную строку:
    #AddType application/x-httpd-php php
    Раскомментируйте ее:
    AddType application/x-httpd-php php
    Таким образом, мы присвоили всем файлам с расширением php тип application/x-httpd-php.
  • Сразу же после этой строки добавьте такие настройки:
    ScriptAlias /_php/ "C:/Program Files/PHP4/"
    Action application/x-httpd-php "/_php/php.exe"
    Этим мы, во-первых, создаем синоним _php для директории с процессором PHP, чтобы Apache мог получить к нему доступ, а во-вторых, связываем все файлы с типом application/x-httpd-php с обработчиком php.exe.
    Важно!
    Строка "_php" взята из такого расчета, чтобы она в будущем не конфликтовала с именами директорий, которые Вы можете сделать на Вашем хосте.
  • Сохраните изменения в файле конфигурации, остановите Apache, если он был до этого запущен (ярлык Пуск - Программы - Apache Web Server - Management - Stop Apache), и запустите его снова. Если Apache не запускается (его окно открывается и тут же закрывается), значит, Вы где-то допустили синтаксическую ошибку. В этом случае можете воспользоваться рекомендациями по устранению ошибок, приведенными ранее.

Тестирование PHP

Давайте теперь убедимся, что PHP-скрипты работают. Для этого создадим в директории z:/home/localhost/www файл test.php со следующим содержанием:
It works!
phpinfo()
PHP Logo

PHP Version 5.4.45-0+deb7u14


System Linux shram.kiev.ua 3.2.0-4-amd64 #1 SMP Debian 3.2.73-2+deb7u2 x86_64
Build Date May 9 2018 16:31:44
Server API Apache 2.0 Handler
Virtual Directory Support disabled
Configuration File (php.ini) Path /etc/php5/apache2
Loaded Configuration File /etc/php5/apache2/php.ini
Scan this dir for additional .ini files /etc/php5/apache2/conf.d
Additional .ini files parsed /etc/php5/apache2/conf.d/10-pdo.ini, /etc/php5/apache2/conf.d/20-curl.ini, /etc/php5/apache2/conf.d/20-gd.ini, /etc/php5/apache2/conf.d/20-mcrypt.ini, /etc/php5/apache2/conf.d/20-mysql.ini, /etc/php5/apache2/conf.d/20-mysqli.ini, /etc/php5/apache2/conf.d/20-pdo_mysql.ini
PHP API 20100412
PHP Extension 20100525
Zend Extension 220100525
Zend Extension Build API220100525,NTS
PHP Extension Build API20100525,NTS
Debug Build no
Thread Safety disabled
Zend Signal Handling disabled
Zend Memory Manager enabled
Zend Multibyte Support provided by mbstring
IPv6 Support enabled
DTrace Support disabled
Registered PHP Streams https, ftps, compress.zlib, compress.bzip2, php, file, glob, data, http, ftp, phar, zip
Registered Stream Socket Transports tcp, udp, unix, udg, ssl, sslv3, tls
Registered Stream Filters zlib.*, bzip2.*, convert.iconv.*, string.rot13, string.toupper, string.tolower, string.strip_tags, convert.*, consumed, dechunk, mcrypt.*, mdecrypt.*

Zend logoThis program makes use of the Zend Scripting Language Engine:
Zend Engine v2.4.0, Copyright (c) 1998-2014 Zend Technologies


PHP Credits


Configuration

apache2handler

Apache Version Apache/2.2.22 (Debian)
Apache API Version 20051115
Server Administrator webmaster@shram.kiev.ua
Hostname:Port shram.kiev.ua:0
User/Group www-data(33)/33
Max Requests Per Child: 4000 - Keep Alive: on - Max Per Connection: 100
Timeouts Connection: 300 - Keep-Alive: 5
Virtual Server Yes
Server Root /etc/apache2
Loaded Modules core mod_log_config mod_logio mod_version itk http_core mod_so mod_actions mod_alias mod_auth_basic mod_authn_file mod_authz_default mod_authz_groupfile mod_authz_host mod_authz_user mod_autoindex mod_cgi mod_deflate mod_dir mod_env mod_include mod_mime mod_negotiation mod_php5 mod_reqtimeout mod_rewrite mod_rpaf-2 mod_setenvif mod_status mod_suexec mod_vhost_alias mod_ispmgr

Directive Local Value Master Value
engine 1 1
last_modified 0 0
xbithack 0 0

Apache Environment

Variable Value
REDIRECT_gzip-only-text/html 1
REDIRECT_RF /var/www/admin/data/www/shram.kiev.ua/site
REDIRECT_STATUS 200
gzip-only-text/html 1
HTTP_HOST www.shram.kiev.ua
HTTP_X_FORWARDED_FOR 178.20.157.4, 178.20.157.4, 66.102.9.165
HTTP_X_FORWARDED_PROTO http
HTTP_X_REAL_IP 66.102.9.165
HTTP_CONNECTION close
HTTP_ACCEPT */*
HTTP_ACCEPT_CHARSET utf-8,*
HTTP_VIA 1.0 translate.google.com TWSFE/0.9
HTTP_USER_AGENT Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1),gzip(gfe)
HTTP_ACCEPT_ENCODING gzip,deflate,br
PATH /usr/local/bin:/usr/bin:/bin
SERVER_SIGNATURE <address>Apache/2.2.22 (Debian) Server at www.shram.kiev.ua Port 80</address>
SERVER_SOFTWARE Apache/2.2.22 (Debian)
SERVER_NAME www.shram.kiev.ua
SERVER_ADDR 178.20.157.4
SERVER_PORT 80
REMOTE_ADDR 66.102.9.165
DOCUMENT_ROOT /var/www/admin/data/www/shram.kiev.ua
SERVER_ADMIN webmaster@shram.kiev.ua
SCRIPT_FILENAME /var/www/admin/data/www/shram.kiev.ua/index.php
REMOTE_PORT 53193
REDIRECT_QUERY_STRING &MY_REQUEST_URI=/site/apache.shtml
REDIRECT_URL /site/apache.shtml
GATEWAY_INTERFACE CGI/1.1
SERVER_PROTOCOL HTTP/1.0
REQUEST_METHOD GET
QUERY_STRING &MY_REQUEST_URI=/site/apache.shtml
REQUEST_URI /site/apache.shtml
SCRIPT_NAME /index.php

HTTP Headers Information

HTTP Request Headers
HTTP Request GET /site/apache.shtml HTTP/1.0
Host www.shram.kiev.ua
X-Forwarded-For 178.20.157.4, 178.20.157.4, 66.102.9.165
X-Forwarded-Proto http
X-Real-IP 66.102.9.165
Connection close
Accept */*
Accept-Charset utf-8,*
Via 1.0 translate.google.com TWSFE/0.9
User-Agent Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1),gzip(gfe)
Accept-Encoding gzip,deflate,br
HTTP Response Headers
X-Powered-By PHP/5.4.45-0+deb7u14
Expires Mon, 19 Aug 2019 07:42:24 +0300
Last-Modified Thu, 24 May 2018 21:46:02 GMT

bcmath

BCMath support enabled

Directive Local Value Master Value
bcmath.scale 0 0

bz2

BZip2 Support Enabled
Stream Wrapper support compress.bzip2://
Stream Filter support bzip2.decompress, bzip2.compress
BZip2 Version 1.0.6, 6-Sept-2010

calendar

Calendar support enabled

Core

PHP Version 5.4.45-0+deb7u14

Directive Local Value Master Value
allow_url_fopen On On
allow_url_include Off Off
always_populate_raw_post_data Off Off
arg_separator.input & &
arg_separator.output & &
asp_tags Off Off
auto_append_file no value no value
auto_globals_jit On On
auto_prepend_file no value no value
browscap no value no value
default_charset no value no value
default_mimetype text/html text/html
disable_classes no value no value
disable_functions pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority, pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority,
display_errors Off Off
display_startup_errors Off Off
doc_root no value no value
docref_ext no value no value
docref_root no value no value
enable_dl Off Off
enable_post_data_reading On On
error_append_string no value no value
error_log no value no value
error_prepend_string no value no value
error_reporting 0 22527
exit_on_timeout Off Off
expose_php On On
extension_dir /usr/lib/php5/20100525 /usr/lib/php5/20100525
file_uploads On On
highlight.comment #FF8000 #FF8000
highlight.default #0000BB #0000BB
highlight.html #000000 #000000
highlight.keyword #007700 #007700
highlight.string #DD0000 #DD0000
html_errors On On
ignore_repeated_errors Off Off
ignore_repeated_source Off Off
ignore_user_abort Off Off
implicit_flush Off Off
include_path .:/usr/share/php:/usr/share/pear .:/usr/share/php:/usr/share/pear
log_errors On On
log_errors_max_len 1024 1024
mail.add_x_header On On
mail.force_extra_parameters no value no value
mail.log no value no value
max_execution_time 30 30
max_file_uploads 20 20
max_input_nesting_level 64 64
max_input_time 60 60
max_input_vars 1000 1000
memory_limit 128M 128M
open_basedir /var/www/admin/data:/var/www/admin/data/www/shram.kiev.ua/mycode/translate:/var/www/admin/data/www/shram.kiev.ua/mycode/translate/g:. no value
output_buffering 4096 4096
output_handler no value no value
post_max_size 8M 8M
precision 14 14
realpath_cache_size 16K 16K
realpath_cache_ttl 120 120
register_argc_argv Off Off
report_memleaks On On
report_zend_debug On On
request_order GP GP
sendmail_from no value no value
sendmail_path /usr/sbin/sendmail -t -i -f webmaster@shram.kiev.ua /usr/sbin/sendmail -t -i 
serialize_precision 17 17
short_open_tag On On
SMTP localhost localhost
smtp_port 25 25
sql.safe_mode Off Off
track_errors Off Off
unserialize_callback_func no value no value
upload_max_filesize 2M 2M
upload_tmp_dir /var/www/admin/data/mod-tmp no value
user_dir no value no value
user_ini.cache_ttl 300 300
user_ini.filename .user.ini .user.ini
variables_order GPCS GPCS
xmlrpc_error_number 0 0
xmlrpc_errors Off Off
zend.detect_unicode On On
zend.enable_gc On On
zend.multibyte Off Off
zend.script_encoding no value no value

ctype

ctype functions enabled

curl

cURL support enabled
cURL Information 7.26.0
Age 3
Features
AsynchDNS No
Debug Yes
GSS-Negotiate Yes
IDN Yes
IPv6 Yes
Largefile Yes
NTLM Yes
SPNEGO No
SSL Yes
SSPI No
krb4 No
libz Yes
CharConv No
Protocols dict, file, ftp, ftps, gopher, http, https, imap, imaps, ldap, pop3, pop3s, rtmp, rtsp, scp, sftp, smtp, smtps, telnet, tftp
Host x86_64-pc-linux-gnu
SSL Version OpenSSL/1.0.1t
ZLib Version 1.2.7
libSSH Version libssh2/1.4.2

date

date/time support enabled
"Olson" Timezone Database Version 0.system
Timezone Database internal
Default timezone Europe/Kiev

Directive Local Value Master Value
date.default_latitude 31.7667 31.7667
date.default_longitude 35.2333 35.2333
date.sunrise_zenith 90.583333 90.583333
date.sunset_zenith 90.583333 90.583333
date.timezone Europe/Kiev Europe/Kiev

dba

DBA support enabled
Supported handlers cdb cdb_make db4 inifile flatfile qdbm

Directive Local Value Master Value
dba.default_handler flatfile flatfile

dom

DOM/XML enabled
DOM/XML API Version 20031129
libxml Version 2.8.0
HTML Support enabled
XPath Support enabled
XPointer Support enabled
Schema Support enabled
RelaxNG Support enabled

ereg

Regex Library Bundled library enabled

exif

EXIF Support enabled
EXIF Version 1.4 $Id: 05041c5f0094cb46d9b516bd624d593b90cc38f9 $
Supported EXIF Version 0220
Supported filetypes JPEG,TIFF

Directive Local Value Master Value
exif.decode_jis_intel JIS JIS
exif.decode_jis_motorola JIS JIS
exif.decode_unicode_intel UCS-2LE UCS-2LE
exif.decode_unicode_motorola UCS-2BE UCS-2BE
exif.encode_jis no value no value
exif.encode_unicode ISO-8859-15 ISO-8859-15

fileinfo

fileinfo support enabled
version 1.0.5

filter

Input Validation and Filtering enabled
Revision $Id: ad78b4a085153b8c7f4d6db5dc69df40e969c343 $

Directive Local Value Master Value
filter.default unsafe_raw unsafe_raw
filter.default_flags no value no value

ftp

FTP support enabled

gd

GD Support enabled
GD Version 2.0.36
FreeType Support enabled
FreeType Linkage with freetype
FreeType Version 2.4.9
GIF Read Support enabled
GIF Create Support enabled
JPEG Support enabled
libJPEG Version unknown
PNG Support enabled
libPNG Version 1.2.49
WBMP Support enabled

Directive Local Value Master Value
gd.jpeg_ignore_warning 0 0

gettext

GetText Support enabled

hash

hash support enabled
Hashing Engines md2 md4 md5 sha1 sha224 sha256 sha384 sha512 ripemd128 ripemd160 ripemd256 ripemd320 whirlpool tiger128,3 tiger160,3 tiger192,3 tiger128,4 tiger160,4 tiger192,4 snefru snefru256 gost adler32 crc32 crc32b fnv132 fnv164 joaat haval128,3 haval160,3 haval192,3 haval224,3 haval256,3 haval128,4 haval160,4 haval192,4 haval224,4 haval256,4 haval128,5 haval160,5 haval192,5 haval224,5 haval256,5

iconv

iconv support enabled
iconv implementation glibc
iconv library version 2.13

Directive Local Value Master Value
iconv.input_encoding ISO-8859-1 ISO-8859-1
iconv.internal_encoding ISO-8859-1 ISO-8859-1
iconv.output_encoding ISO-8859-1 ISO-8859-1

json

json support enabled
json version 1.2.1

libxml

libXML support active
libXML Compiled Version 2.8.0
libXML Loaded Version 20800
libXML streams enabled

mbstring

Multibyte Support enabled
Multibyte string engine libmbfl
HTTP input encoding translation disabled
libmbfl version 1.3.2

mbstring extension makes use of "streamable kanji code filter and converter", which is distributed under the GNU Lesser General Public License version 2.1.

Multibyte (japanese) regex support enabled
Multibyte regex (oniguruma) version 5.9.1

Directive Local Value Master Value
mbstring.detect_order no value no value
mbstring.encoding_translation Off Off
mbstring.func_overload 0 0
mbstring.http_input pass pass
mbstring.http_output pass pass
mbstring.http_output_conv_mimetypes ^(text/|application/xhtml\+xml) ^(text/|application/xhtml\+xml)
mbstring.internal_encoding no value no value
mbstring.language neutral neutral
mbstring.strict_detection Off Off
mbstring.substitute_character no value no value

mcrypt

mcrypt support enabled
mcrypt_filter support enabled
Version 2.5.8
Api No 20021217
Supported ciphers cast-128 gost rijndael-128 twofish arcfour cast-256 loki97 rijndael-192 saferplus wake blowfish-compat des rijndael-256 serpent xtea blowfish enigma rc2 tripledes
Supported modes cbc cfb ctr ecb ncfb nofb ofb stream

Directive Local Value Master Value
mcrypt.algorithms_dir no value no value
mcrypt.modes_dir no value no value

mhash

MHASH support Enabled
MHASH API Version Emulated Support

mysql

MySQL Support enabled
Active Persistent Links 0
Active Links 0
Client API version 5.5.47
MYSQL_MODULE_TYPE external
MYSQL_SOCKET /var/run/mysqld/mysqld.sock
MYSQL_INCLUDE -I/usr/include/mysql
MYSQL_LIBS -L/usr/lib/x86_64-linux-gnu -lmysqlclient_r

Directive Local Value Master Value
mysql.allow_local_infile On On
mysql.allow_persistent On On
mysql.connect_timeout 60 60
mysql.default_host no value no value
mysql.default_password no value no value
mysql.default_port no value no value
mysql.default_socket /var/run/mysqld/mysqld.sock /var/run/mysqld/mysqld.sock
mysql.default_user no value no value
mysql.max_links Unlimited Unlimited
mysql.max_persistent Unlimited Unlimited
mysql.trace_mode Off Off

mysqli

MysqlI Support enabled
Client API library version 5.5.47
Active Persistent Links 0
Inactive Persistent Links 0
Active Links 0
Client API header version 5.5.60
MYSQLI_SOCKET /var/run/mysqld/mysqld.sock

Directive Local Value Master Value
mysqli.allow_local_infile On On
mysqli.allow_persistent On On
mysqli.default_host no value no value
mysqli.default_port 3306 3306
mysqli.default_pw no value no value
mysqli.default_socket /var/run/mysqld/mysqld.sock /var/run/mysqld/mysqld.sock
mysqli.default_user no value no value
mysqli.max_links Unlimited Unlimited
mysqli.max_persistent Unlimited Unlimited
mysqli.reconnect Off Off

openssl

OpenSSL support enabled
OpenSSL Library Version OpenSSL 1.0.1t 3 May 2016
OpenSSL Header Version OpenSSL 1.0.1t 3 May 2016

pcre

PCRE (Perl Compatible Regular Expressions) Support enabled
PCRE Library Version 8.30 2012-02-04

Directive Local Value Master Value
pcre.backtrack_limit 1000000 1000000
pcre.recursion_limit 100000 100000

PDO

PDO support enabled
PDO drivers mysql

pdo_mysql

PDO Driver for MySQL enabled
Client API version 5.5.47

Directive Local Value Master Value
pdo_mysql.default_socket /var/run/mysqld/mysqld.sock /var/run/mysqld/mysqld.sock

Phar

Phar: PHP Archive support enabled
Phar EXT version 2.0.1
Phar API version 1.1.1
SVN revision $Id: ba734629367f9671b25202408d13914fa63d8396 $
Phar-based phar archives enabled
Tar-based phar archives enabled
ZIP-based phar archives enabled
gzip compression enabled
bzip2 compression enabled
OpenSSL support enabled

Phar based on pear/PHP_Archive, original concept by Davey Shafik.
Phar fully realized by Gregory Beaver and Marcus Boerger.
Portions of tar implementation Copyright (c) 2003-2009 Tim Kientzle.

Directive Local Value Master Value
phar.cache_list no value no value
phar.readonly On On
phar.require_hash On On

posix

Revision $Id: 1dfa9997ed76804e53c91e0ce862f3707617b6ed $

Reflection

Reflection enabled
Version $Id: f6367cdb4e3f392af4a6d441a6641de87c2e50c4 $

session

Session Support enabled
Registered save handlers files user
Registered serializer handlers php php_binary wddx

Directive Local Value Master Value
session.auto_start Off Off
session.cache_expire 180 180
session.cache_limiter nocache nocache
session.cookie_domain no value no value
session.cookie_httponly Off Off
session.cookie_lifetime 0 0
session.cookie_path / /
session.cookie_secure Off Off
session.entropy_file /dev/urandom /dev/urandom
session.entropy_length 32 32
session.gc_divisor 1000 1000
session.gc_maxlifetime 1440 1440
session.gc_probability 0 0
session.hash_bits_per_character 5 5
session.hash_function 0 0
session.name PHPSESSID PHPSESSID
session.referer_check no value no value
session.save_handler files files
session.save_path /var/www/admin/data/mod-tmp /var/lib/php5
session.serialize_handler php php
session.upload_progress.cleanup On On
session.upload_progress.enabled On On
session.upload_progress.freq 1% 1%
session.upload_progress.min_freq 1 1
session.upload_progress.name PHP_SESSION_UPLOAD_PROGRESS PHP_SESSION_UPLOAD_PROGRESS
session.upload_progress.prefix upload_progress_ upload_progress_
session.use_cookies On On
session.use_only_cookies On On
session.use_trans_sid 0 0

shmop

shmop support enabled

SimpleXML

Simplexml support enabled
Revision $Id: 16070fc92ad6f69cebb2d52ad3f02794f833ce39 $
Schema support enabled

soap

Soap Client enabled
Soap Server enabled

Directive Local Value Master Value
soap.wsdl_cache 1 1
soap.wsdl_cache_dir /tmp /tmp
soap.wsdl_cache_enabled 1 1
soap.wsdl_cache_limit 5 5
soap.wsdl_cache_ttl 86400 86400

sockets

Sockets Support enabled

SPL

SPL support enabled
Interfaces Countable, OuterIterator, RecursiveIterator, SeekableIterator, SplObserver, SplSubject
Classes AppendIterator, ArrayIterator, ArrayObject, BadFunctionCallException, BadMethodCallException, CachingIterator, CallbackFilterIterator, DirectoryIterator, DomainException, EmptyIterator, FilesystemIterator, FilterIterator, GlobIterator, InfiniteIterator, InvalidArgumentException, IteratorIterator, LengthException, LimitIterator, LogicException, MultipleIterator, NoRewindIterator, OutOfBoundsException, OutOfRangeException, OverflowException, ParentIterator, RangeException, RecursiveArrayIterator, RecursiveCachingIterator, RecursiveCallbackFilterIterator, RecursiveDirectoryIterator, RecursiveFilterIterator, RecursiveIteratorIterator, RecursiveRegexIterator, RecursiveTreeIterator, RegexIterator, RuntimeException, SplDoublyLinkedList, SplFileInfo, SplFileObject, SplFixedArray, SplHeap, SplMinHeap, SplMaxHeap, SplObjectStorage, SplPriorityQueue, SplQueue, SplStack, SplTempFileObject, UnderflowException, UnexpectedValueException

standard

Dynamic Library Support enabled
Path to sendmail /usr/sbin/sendmail -t -i -f webmaster@shram.kiev.ua

Directive Local Value Master Value
assert.active 1 1
assert.bail 0 0
assert.callback no value no value
assert.quiet_eval 0 0
assert.warning 1 1
auto_detect_line_endings 0 0
default_socket_timeout 60 60
from no value no value
url_rewriter.tags a=href,area=href,frame=src,input=src,form=fakeentry a=href,area=href,frame=src,input=src,form=fakeentry
user_agent no value no value

sysvmsg

sysvmsg support enabled
Revision $Id: adf1d2d6be849c46eed3c3ee6f1cbebd1448d6e5 $

tokenizer

Tokenizer Support enabled

wddx

WDDX Support enabled
WDDX Session Serializer enabled

xml

XML Support active
XML Namespace Support active
libxml2 Version 2.8.0

xmlreader

XMLReader enabled

xmlwriter

XMLWriter enabled

zip

Zip enabled
Extension Version $Id: 6c872ebfb022206b0cc2a183c7a388c7b6ad8685 $
Zip version 1.11.0
Libzip version 0.10.1

zlib

ZLib Support enabled
Stream Wrapper compress.zlib://
Stream Filter zlib.inflate, zlib.deflate
Compiled Version 1.2.1.1
Linked Version 1.2.7

Directive Local Value Master Value
zlib.output_compression Off Off
zlib.output_compression_level -1 -1
zlib.output_handler no value no value

Additional Modules

Module Name
sysvsem
sysvshm

Environment

Variable Value
APACHE_RUN_DIR /var/run/apache2
APACHE_PID_FILE /var/run/apache2.pid
PATH /usr/local/bin:/usr/bin:/bin
APACHE_LOCK_DIR /var/lock/apache2
LANG C
APACHE_RUN_USER www-data
APACHE_RUN_GROUP www-data
APACHE_LOG_DIR /var/log/apache2
PWD /

PHP Variables

Variable Value
_REQUEST["MY_REQUEST_URI"] /site/apache.shtml
_GET["MY_REQUEST_URI"] /site/apache.shtml
_SERVER["REDIRECT_gzip-only-text/html"] 1
_SERVER["REDIRECT_RF"] /var/www/admin/data/www/shram.kiev.ua/site
_SERVER["REDIRECT_STATUS"] 200
_SERVER["gzip-only-text/html"] 1
_SERVER["HTTP_HOST"] www.shram.kiev.ua
_SERVER["HTTP_X_FORWARDED_FOR"] 178.20.157.4, 178.20.157.4, 66.102.9.165
_SERVER["HTTP_X_FORWARDED_PROTO"] http
_SERVER["HTTP_X_REAL_IP"] 66.102.9.165
_SERVER["HTTP_CONNECTION"] close
_SERVER["HTTP_ACCEPT"] */*
_SERVER["HTTP_ACCEPT_CHARSET"] utf-8,*
_SERVER["HTTP_VIA"] 1.0 translate.google.com TWSFE/0.9
_SERVER["HTTP_USER_AGENT"] Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1),gzip(gfe)
_SERVER["HTTP_ACCEPT_ENCODING"] gzip,deflate,br
_SERVER["PATH"] /usr/local/bin:/usr/bin:/bin
_SERVER["SERVER_SIGNATURE"] <address>Apache/2.2.22 (Debian) Server at www.shram.kiev.ua Port 80</address>
_SERVER["SERVER_SOFTWARE"] Apache/2.2.22 (Debian)
_SERVER["SERVER_NAME"] www.shram.kiev.ua
_SERVER["SERVER_ADDR"] 178.20.157.4
_SERVER["SERVER_PORT"] 80
_SERVER["REMOTE_ADDR"] 66.102.9.165
_SERVER["DOCUMENT_ROOT"] /var/www/admin/data/www/shram.kiev.ua
_SERVER["SERVER_ADMIN"] webmaster@shram.kiev.ua
_SERVER["SCRIPT_FILENAME"] /var/www/admin/data/www/shram.kiev.ua/index.php
_SERVER["REMOTE_PORT"] 53193
_SERVER["REDIRECT_QUERY_STRING"] &MY_REQUEST_URI=/site/apache.shtml
_SERVER["REDIRECT_URL"] /site/apache.shtml
_SERVER["GATEWAY_INTERFACE"] CGI/1.1
_SERVER["SERVER_PROTOCOL"] HTTP/1.0
_SERVER["REQUEST_METHOD"] GET
_SERVER["QUERY_STRING"] &MY_REQUEST_URI=/site/apache.shtml
_SERVER["REQUEST_URI"] /site/apache.shtml
_SERVER["SCRIPT_NAME"] /index.php
_SERVER["PHP_SELF"] /index.php
_SERVER["REQUEST_TIME_FLOAT"] 1566178944.394
_SERVER["REQUEST_TIME"] 1566178944

PHP License

This program is free software; you can redistribute it and/or modify it under the terms of the PHP License as published by the PHP Group and included in the distribution in the file: LICENSE

This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

If you did not receive a copy of the PHP license, or have any questions about PHP licensing, please contact license@php.net.



Теперь наберите в браузере: http://localhost/test.php. Должна отобразиться страница с разнообразной информацией о PHP, которая генерируется функцией phpinfo().
Важно!
Напоминаем, что php-скрипты - не то же самое, что cgi-скрипты. В частности, если cgi-скрипты обычно располагают в /cgi-bin/ или /cgi/, то php-скрипт должен находиться в директории с документами.

Если страница не отображается, значит, Вы допустили ошибку в файле httpd.conf. Откройте его снова и исправьте ошибку, затем не забудьте перезапустить Apache.

Важно!
Напоминаю еще раз, что просто закрыть окно Apache, так сказать, принудительным способом нельзя - нужно воспользоваться ярлыком Stop Apache, как это было описано выше. В противном случае закроется только окно Apache, а сам сервер останется работать.

Установка дополнительных модулей

После того как мы убедились в работоспособности PHP, нужно установить для него дополнительные модули, которые находятся в скачанном zip-файле. Среди них - средства для работы с рисунками, календарем, FTP (File Transfer Protocol - Протокол передачи файлов) и т.д. Нужно заметить, что архив содержит полную версию PHP, а не только модули для него. Единственная причина, почему мы не воспользовались им сразу - отсутствие удобной программы установки. Итак, нужно проделать следующие действия.
  • Разархивируйте zip-архив прямо в ту же самую директорию, где уже установлен PHP (в нашем примере это C:\Program Files\PHP4). Некоторые файлы перепишутся поверх, некоторые - добавятся. В частности, появится директория extensions, как раз и содержащая практически все необходимые модули.
  • Теперь нужно дать знать PHP, какие модули он может использовать, а также сделать еще некоторые настройки. Для этого откройте в Блокноте файл php.ini в директории с файлами Windows (обычно C:\WINDOWS). Этот файл был помещен туда программой установки PHP. Файл представляет собой набор строк, в каждой из которых устанавливается значение одного параметра. Части строк, расположенные после символа ";", рассматриваются как комментарии и игнорируются.
  • Найдите параметр magic_quotes_gpc и установите его так:
    magic_quotes_gpc=Off
    Этим мы запрещаем PHP принудительно вставлять обратные слэши перед некоторыми символами, приходящими из формы.
  • Теперь найдите и настройте следующий параметр:
    extension_dir=C:\Program Files\PHP4\extensions
    Этим мы говорим PHP, что модули он должен искать в директории C:\Program Files\PHP4\extensions, то есть как раз там, где нужно. Обратите внимание на то, что по умолчанию в этом параметре стоит значение "./", то есть в той же самой директории, что и PHP. Это, конечно же, неправильно.
  • Найдите закомментированные строки, которые начинаются с ;extension=. Вам предстоит раскомментировать те из них, которые соответствуют нужным нам модулям. Поддержка MySQL и календарных функций уже встроена в PHP.
  • Не забудьте сохранить изменения в файле php.ini. Чтобы изменения вступили в силу, перезапускать Apache не нужно, ведь мы установили PHP не как модуль сервера, а как отдельную программу.
Нужно заметить, что в предыдущей версии статьи была описана процедура установки PHP3, а не PHP4. Однако прогресс дает о себе знать, и в ближайшем будущем PHP3, по-видимому, будет полностью вытеснен своим собратом четвертой версии (об этом говорит хотя бы то, что последний выполняет скрипты в несколько десятков (!) раз быстрее, имея при этом почти в 2 раза большее число встроенных функций). Кроме того, PHP4 совместим "сверху вниз" с PHP3, что означает, что большинство скриптов, написанных для PHP3, будут работать и на четвертой версии интерпретатора.

6. Установка Perl

"Язык может считаться законченным только тогда, когда
в его синтаксисе используются все клавиши на клавиатуре"
Отец-основатель Perl

Пожалуй, установка Perl - один из самых простых шагов, однако, как это не парадоксально, он чаще всего порождает больше всего осложнений. Приведенные ниже рекомендации помогут Вам установить Perl и забыть обо всех неприятностях, связанных с CGI-скриптами на Perl.

  • Первым делом посетите http://www.activestate.com, зайдите в раздел Downloads и скачайте оттуда самый последний дистрибутив Perl для платформы Win32. При этом следуйте рекомендациям, приведенным на сайте. Вкратце они заключаются в следующем: Perl предоставляется не в виде саморазворачивающегося exe-архива, а в виде так называемого msi-архива для Microsoft Installer-а. Возможно, на Вашем компьютере Installer не установлен, так что Вам придется это сделать, прежде чем устанавливать Perl (ссылка на дистрибутив Microsoft Installer-а приведена на сайте в разделе Downloads).
  • В Проводнике щелкните дважды на имени файла только что скачанного дистрибутива Perl. Автоматически запустится Microsoft Installer и начнется процесс установки. Как обычно, нажимайте кнопку Next до тех пор, пока не появится диалог с запросом директории, в которую будет установлен Perl. По умолчанию там предлагается C:\Perl. Рекомендуем сменить эту директорию на нечто более удобное - например, C:\Program Files\Perl. Если Вы любите порядок, сделайте это обязательно.
  • Теперь настроим сервер. Найдите в файле конфигурации Apache httpd.conf строчку
    AddHandler cgi-script .bat .exe
    Замените ее на
    AddHandler cgi-script .bat .exe .pl .cgi
    Как это ни странно, но эту директиву AddHandler иногда указывать не обязательно. Однако лучше перестраховаться...
  • Найдите и раскомментируйте параметр:
    ScriptInterpreterSource registry
    Это позволит Apache использовать Реестр для поиска Perl-интерпретатора.

Вот, собственно, и все. Для проверки работоспособности Perl создайте в директории z:\localhost\cgi файл test.pl с таким содержанием:
#!/usr/local/bin/perl -w print "Content-type: text/html\n\n"; print "It works!
\n";

Важно!
Обратите внимание на первую строчку в скрипте. Можно подумать, что она указывает Apache, что Perl расположен в z:\usr\local\bin\perl.exe. На самом же деле Apache видит, что такого файла не существует, и использует Реестр для поиска ассоциации для расширения pl. Происходит это благодаря директиве ScriptInterpreterSource, которую мы активизировали до этого. Однако, хотя Apache игнорирует первую строку в скрипте, Perl ее использует для того, чтобы определить, какие флаги были использованы при его запуске (в нашем примере это флаг -w, который включает режим вывода сообщений об ошибках в скрипте).

7. Установка MySQL

Что ж, очень полезно... Даже чересчур.
Дмитрий Котеров

Сначала определимся: зачем же вообще нужны базы данных Web-программисту? Неужели не проще использовать обычный обмен с файлами? Ведь обычно объем данных не очень велик (если Вы только не пишете поисковую систему). Наш личный опыт таков: оказывается, стоит затратить какое-то время на изучение MySQL - это удивительно мощный инструмент, который сэкономит в будущем немало часов, потраченных на отладку "взбесившегося" скрипта. Итак, Вы решили установить у себя на локальном хосте поддержку MySQL. Это довольно несложно. Что ж, приступим.

  • Для начала скачайте с официального сайта MySQL http://www.mysql.com, раздел Downloads дистрибутив MySQL. Рекомендую выбрать самую последнюю версию для Windows. Дистрибутив представляет собой zip-архив, который нужно развернуть в любую удобную Вам директорию.
  • Запустите setup.exe из только что разархивированного дистрибутива. Нажмите кнопку Next.
  • В появившемся окне с информацией снова нажмите Next. Появится диалог с запросом о выборе директории для MySQL. По умолчанию предлагается C:\mysql, но будет удобнее использовать C:\Program Files\MySQL. Установите эту директорию и нажмите Next.
  • Выберите тип установки Typical. Начнется копирование файлов MySQL. Дождитесь его окончания. MySQL установлена.
  • Для того, чтобы активизировать MySQL-сервер, запустите файл C:\Program Files\MySQL\bin\mysqld.exe. Можете сделать для него ярлык, однако, так как обычно MySQL запускается "в связке" с Apache, будет логично создать bat-файл, который будет запускать и Apache, и MySQL. Назовем его server.bat и расположим в корневом каталоге диска Z:. Вот содержание этого файла для Windows 95/98/ME:
    @echo off C:\Progra~1\MySQL\bin\mysqld.exe -u root C:\Progra~1\Apache~1\Apache\Apache.exe -k startЕсли у Вас установлен Windows NT или 2000, то лучше воспользоваться таким файлом:
    @echo off
    start C:\Progra~1\MySQL\bin\mysqld-nt.exe -u root --standalone
    C:\Progra~1\Apache~1\Apache\Apache.exe -k start

    Именно для этого bat-файла лучше всего и создать ярлык, назначив ему горячую клавишу Ctrl+Alt+A (только, если Вы до этого назначили ту же комбинацию ярлыку Apache, не забудьте ее там отключить).
  • Перед выключением или перезагрузки компьютера нужно завершать работу Apache и MySQL. Для этого удобнее всего создать такой bat-файл с именем, например, shutdown.bat, расподложив его в корневом каталоге диска Z:
    @echo off C:\Progra~1\Apache~1\Apache\Apache.exe -k shutdown C:\Progra~1\MySQL\bin\mysqladmin -u root shutdown
    Удобно также создать для этого файла ярлык и назначить ему комбинацию клавиш Ctrl+Alt+S.

Тестирование MySQL

Давайте теперь проверим, все ли работает. Для начала запустите наш файл server.bat, чтобы активизировать сервер. Создайте такой PHP-скрипт с именем mysql.php в директории z:\home\localhost\www.
"; echo mysql_error(); exit; } mysql_select_db(DBName); // Создаем таблицу t. Если такая таблица уже есть, // сообщение об ошибке будет подавлено, т.к. // используется "@" @mysql_query("create table t(id int,a text)"); // Вставляем в таблицу 10 записей for($i=0; $i $f[a]
\n"; } ? >

Теперь наберите в браузере:
http://localhost/mysql.php
Если все установилось правильно, Вы должны получить несколько строк вывода без сообщений об ошибках. При каждом запуске в таблицу t добавляются новые строки, так что с каждым нажатием кнопки Обновить в браузере объем вывода будет все увеличиваться.

Обращаю ваше внимание на константы DBName, HostName, UserName и Password. DBName должен содержать имя базы данных (в нашем случае это test, база данных, которая создается MySQL по умолчанию). HostName - всегда localhost, ведь мы работаем на локальном компьютере. В определении UserName проще всего подставлять root, который является собственником всех таблиц. При установке MySQL пользователю root не назначается пароль, так что константа Password равна пустой строке.