Установка 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. Виртуальные хосты Apache5. Установка PHP версии 4
Установка PHP
Настройка Apache для работы с PHP
Тестирование PHP
Установка дополнительных модулей6. Установка Perl7. Установка MySQL
Тестирование MySQL8. Часто задаваемые вопросы"А не послать ли нам гонца?.."
Кинорежиссер
Вот список ссылок на сайты, на которых всегда можно найти самые свежие версии программных продуктов, на которые ссылается статья. Итак:
- Официальный сайт Apache: http://www.apache.org
- Официальный сайт PHP: http://ru.php.net
- Официальный сайт Active Perl: www.activestate.com
- Официальный сайт MySQL: http://www.mysql.com
И еще несколько ссылок:
- Всероссийский клуб вебмастеров: http://www.webclub.ru
- Клуб разработчиков PHP: http://www.phpclub.net
- Ну и, конечно, Лаборатория dk: http://dklab.ru
"Ну к чему все это, лучше бы водки выпили"
Из писем Белинского Гоголю
Если Вы читаете этот документ, а также если у Вас установлен 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.
"У меня для Вас две новости: плохая и хорошая. Плохая: мяса
мало, будем есть бизоний помет. И хорошая: его-то у нас много!.."
Из выступления вождя апачей
Итак, Вы решились установить на свой компьютер 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 использует для этого
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 Web Server,
Management и
Start Apache, при этом появится окно, очень похожее на
Сеанс MS-DOS, и ничего больше не произойдет. Не закрывайте его и не трогайте до конца работы с Apache.
Если окно открывается и тут же закрывается, это означает, что Вы допустили какую-то ошибку в файле httpd.conf. В этом случае придется искать неточность. Проще всего это сделать так.
Несколько слов о том, как можно упростить запуск и завершение сервера. В Windows можно назначить любому ярлыку функциональную комбинацию клавиш, нажав которые, Вы запустите этот ярлык. Так что щелкните правой кнопкой на панели задач, в контекстном меню выберите Свойства, затем Настройка меню и кнопку Дополнительно. В открывшемся Проводнике назначьте ярлыку Start Apache комбинацию Ctrl+Alt+A а ярлыку Stop Apache - Ctrl+Alt+S. Теперь Вы сможете запускать сервер нажатием Ctrl+Alt+A и останавливать его, нажав Ctrl+Alt+S.
Теперь проверим, правильно ли мы настроили директории для документов.
В директории
z:/home/localhost/www с html-документами Apache создайте файл
index.html с любым текстовым содержанием. Теперь запустите браузер и наберите:
http://localhost/index.html
или просто
http://localhost/
Должен загрузиться Ваш файл.
В директории
z:/home/localhost/www с html-документами Apache создайте файл
test.shtml c таким содержанием (внимательно следите за соблюдением пробелов в директиве include!):
SSI Test!
Теперь наберите в браузере:
http://localhost/test.shtml
Должен загрузиться файл, который состоит из текста "SSI Test!", за которым следует содержимое файла
index.html между двумя горизонтальными чертами. Если этого не произошло, значит, Вы неправильно настроили работу SSI.
В директории
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.
"Виртуальные хосты - хосты, имеющие уникальный адрес
в Интернет,
эмулируемые и поддерживаемые сервером"
Древнее языческое заклинание
Итак, Вы установили 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, не будут активизированы. Действует принцип: если ярлык закрытия сервера в меню Пуск присутствует, значит, обязательно нужно им пользоваться, иначе - можно закрывать окно принудительно.
"- Больной, читайте первую строчку сверху!
- Ша, Бэ, Пэ Ха Пэ... Доктор, кодировочку-то пофиксите..."
Народный фольклор
Давайте теперь перейдем к установке языка 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 сильно проигрывает четвертому по количеству поддерживаемых функций.
- Запустите только что скачанный 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 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-скрипты работают. Для этого создадим в директории
z:/home/localhost/www файл
test.php со следующим содержанием:
It works!
phpinfo()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.* |
This program makes use of the Zend Scripting Language Engine: Zend Engine v2.4.0, Copyright (c) 1998-2014 Zend Technologies
|
Configuration
Apache Version | Apache/2.2.22 (Debian) |
Apache API Version | 20051115 |
Server Administrator | www@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_headers 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_RF | /var/www/admin/data/www/shram.kiev.ua/site |
REDIRECT_STATUS | 200 |
HTTP_HOST | www.molekyla.kiev.ua |
HTTP_X_FORWARDED_FOR | 3.139.67.157 |
HTTP_X_FORWARDED_PROTO | http |
HTTP_X_REAL_IP | 3.139.67.157 |
HTTP_CONNECTION | close |
HTTP_ACCEPT | */* |
HTTP_USER_AGENT | Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; ClaudeBot/1.0; +claudebot@anthropic.com) |
HTTP_ACCEPT_ENCODING | gzip, br, zstd, deflate |
HTTP_REFERER | http://molekyla.kiev.ua/site/apache.shtml |
PATH | /usr/local/bin:/usr/bin:/bin |
SERVER_SIGNATURE | <address>Apache/2.2.22 (Debian) Server at www.molekyla.kiev.ua Port 80</address>
|
SERVER_SOFTWARE | Apache/2.2.22 (Debian) |
SERVER_NAME | www.molekyla.kiev.ua |
SERVER_ADDR | 178.20.157.4 |
SERVER_PORT | 80 |
REMOTE_ADDR | 3.139.67.157 |
DOCUMENT_ROOT | /var/www/admin/data/www/shram.kiev.ua |
SERVER_ADMIN | www@shram.kiev.ua |
SCRIPT_FILENAME | /var/www/admin/data/www/shram.kiev.ua/index.php |
REMOTE_PORT | 45731 |
REDIRECT_QUERY_STRING | catpage=site&whatpage=apache |
REDIRECT_URL | /site/apache.shtml |
GATEWAY_INTERFACE | CGI/1.1 |
SERVER_PROTOCOL | HTTP/1.0 |
REQUEST_METHOD | GET |
QUERY_STRING | catpage=site&whatpage=apache |
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.molekyla.kiev.ua |
X-Forwarded-For | 3.139.67.157 |
X-Forwarded-Proto | http |
X-Real-IP | 3.139.67.157 |
Connection | close |
accept | */* |
user-agent | Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; ClaudeBot/1.0; +claudebot@anthropic.com) |
accept-encoding | gzip, br, zstd, deflate |
referer | http://molekyla.kiev.ua/site/apache.shtml |
HTTP Response Headers |
---|
X-Powered-By | PHP/5.4.45-0+deb7u14 |
Cache-Control | public, max-age=2592000 |
Last-Modified | Thu, 01 Jan 1970 00:00:00 GMT |
Etag | no value |
Expires | Mon, 20 Jan 2025 15:35:57 GMT |
Directive | Local Value | Master Value |
---|
bcmath.scale | 0 | 0 |
BZip2 Support | Enabled |
Stream Wrapper support | compress.bzip2:// |
Stream Filter support | bzip2.decompress, bzip2.compress |
BZip2 Version | 1.0.6, 6-Sept-2010 |
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 | On | 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 | 32759 | 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 | 15 | 15 |
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 | 4M | 4M |
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 www@shram.kiev.ua | /usr/sbin/sendmail -t -i -f www@shram.kiev.ua |
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 | 4M | 4M |
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 |
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/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 support | enabled |
Supported handlers | cdb cdb_make db4 inifile flatfile qdbm |
Directive | Local Value | Master Value |
---|
dba.default_handler | flatfile | flatfile |
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 |
Regex Library | Bundled library enabled |
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 support | enabled |
version | 1.0.5 |
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 |
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 |
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 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 support | enabled |
json version | 1.2.1 |
libXML support | active |
libXML Compiled Version | 2.8.0 |
libXML Loaded Version | 20800 |
libXML streams | enabled |
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 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 support | Enabled |
MHASH API Version | Emulated Support |
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 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 support | enabled |
OpenSSL Library Version | OpenSSL 1.0.1t 3 May 2016 |
OpenSSL Header Version | OpenSSL 1.0.1t 3 May 2016 |
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 support | enabled |
---|
PDO drivers | 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: 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 |
Revision | $Id: 1dfa9997ed76804e53c91e0ce862f3707617b6ed $ |
Reflection | enabled |
---|
Version | $Id: f6367cdb4e3f392af4a6d441a6641de87c2e50c4 $ |
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 |
Simplexml support | enabled |
---|
Revision | $Id: 16070fc92ad6f69cebb2d52ad3f02794f833ce39 $ |
Schema support | enabled |
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 |
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 |
Dynamic Library Support | enabled |
Path to sendmail | /usr/sbin/sendmail -t -i -f www@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 support | enabled |
Revision | $Id: adf1d2d6be849c46eed3c3ee6f1cbebd1448d6e5 $ |
Tokenizer Support | enabled |
WDDX Support | enabled |
---|
WDDX Session Serializer | enabled |
XML Support | active |
XML Namespace Support | active |
libxml2 Version | 2.8.0 |
Zip | enabled |
Extension Version | $Id: 6c872ebfb022206b0cc2a183c7a388c7b6ad8685 $ |
Zip version | 1.11.0 |
Libzip version | 0.10.1 |
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["catpage"] | site |
_REQUEST["whatpage"] | apache |
_GET["catpage"] | site |
_GET["whatpage"] | apache |
_SERVER["REDIRECT_RF"] | /var/www/admin/data/www/shram.kiev.ua/site |
_SERVER["REDIRECT_STATUS"] | 200 |
_SERVER["HTTP_HOST"] | www.molekyla.kiev.ua |
_SERVER["HTTP_X_FORWARDED_FOR"] | 3.139.67.157 |
_SERVER["HTTP_X_FORWARDED_PROTO"] | http |
_SERVER["HTTP_X_REAL_IP"] | 3.139.67.157 |
_SERVER["HTTP_CONNECTION"] | close |
_SERVER["HTTP_ACCEPT"] | */* |
_SERVER["HTTP_USER_AGENT"] | Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; ClaudeBot/1.0; +claudebot@anthropic.com) |
_SERVER["HTTP_ACCEPT_ENCODING"] | gzip, br, zstd, deflate |
_SERVER["HTTP_REFERER"] | http://molekyla.kiev.ua/site/apache.shtml |
_SERVER["PATH"] | /usr/local/bin:/usr/bin:/bin |
_SERVER["SERVER_SIGNATURE"] | <address>Apache/2.2.22 (Debian) Server at www.molekyla.kiev.ua Port 80</address>
|
_SERVER["SERVER_SOFTWARE"] | Apache/2.2.22 (Debian) |
_SERVER["SERVER_NAME"] | www.molekyla.kiev.ua |
_SERVER["SERVER_ADDR"] | 178.20.157.4 |
_SERVER["SERVER_PORT"] | 80 |
_SERVER["REMOTE_ADDR"] | 3.139.67.157 |
_SERVER["DOCUMENT_ROOT"] | /var/www/admin/data/www/shram.kiev.ua |
_SERVER["SERVER_ADMIN"] | www@shram.kiev.ua |
_SERVER["SCRIPT_FILENAME"] | /var/www/admin/data/www/shram.kiev.ua/index.php |
_SERVER["REMOTE_PORT"] | 45731 |
_SERVER["REDIRECT_QUERY_STRING"] | catpage=site&whatpage=apache |
_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"] | catpage=site&whatpage=apache |
_SERVER["REQUEST_URI"] | /site/apache.shtml |
_SERVER["SCRIPT_NAME"] | /index.php |
_SERVER["PHP_SELF"] | /index.php |
_SERVER["REQUEST_TIME_FLOAT"] | 1734795357.108 |
_SERVER["REQUEST_TIME"] | 1734795357 |
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, а не только модули для него. Единственная причина, почему мы не воспользовались им сразу - отсутствие удобной программы установки. Итак, нужно проделать следующие действия.
Нужно заметить, что в предыдущей версии статьи была описана процедура установки PHP3, а не PHP4. Однако прогресс дает о себе знать, и в ближайшем будущем PHP3, по-видимому, будет полностью вытеснен своим собратом четвертой версии (об этом говорит хотя бы то, что последний выполняет скрипты в несколько десятков (!) раз быстрее, имея при этом почти в 2 раза большее число встроенных функций). Кроме того, PHP4 совместим "сверху вниз" с PHP3, что означает, что большинство скриптов, написанных для PHP3, будут работать и на четвертой версии интерпретатора.
"Язык может считаться законченным только тогда, когда
в его синтаксисе используются все клавиши на клавиатуре"
Отец-основатель 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, который включает режим вывода сообщений об ошибках в скрипте).
Что ж, очень полезно... Даже чересчур.
Дмитрий Котеров
Сначала определимся: зачем же вообще нужны базы данных 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.
Давайте теперь проверим, все ли работает. Для начала запустите наш файл
server.bat, чтобы активизировать сервер. Создайте такой PHP-скрипт с именем
mysql.php в директории
z:\home\localhost\www.
< ?
define("DBName","test");
define("HostName","localhost");
define("UserName","root");
define("Password","");
if(!mysql_connect(HostName,UserName,Password))
{ echo "Не могу соединиться с базой ".DBName."!
";
echo mysql_error();
exit;
}
mysql_select_db(DBName);
// Создаем таблицу t. Если такая таблица уже есть,
// сообщение об ошибке будет подавлено, т.к.
// используется "@"
@mysql_query("create table t(id int,a text)");
// Вставляем в таблицу 10 записей
for($i=0; $i<10; $i++)
{ $id=time();
mysql_query("insert into t(id,a) values($id,'Стр$i!')");
}
// Выводим все записи
$r=mysql_query("select * from t");
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 равна пустой строке.
Created/Updated: 25.05.2018