Установка PHP под ОС Windows. Установка Apache, PHP, MySQL

В этой статье мы рассмотрим установку и настройку Web-сервера Apache , PHP 5 и СУБД MySQL для использования их на локальной машине под операционной системой Windows (2000 и XP). Использование локальных серверов может понадобится по многим причинам – вам необходимо изучить PHP или MySQL, а тестирование своих Web-приложений на хостинге либо дорого обходится, либо такой возможности вообще нет. В этом случае вам понадобится связка Apache+PHP+MySQL на локальной машине.

Для начала необходимо раздобыть дистрибутивы серверов Apache и MySQL, а так же архив PHP. Мы будем устанавливать и настраивать Apache 2, MySQL 4 и PHP 5.

Так же можете скачать с нашего сайта файлы php.ini для настройки PHP и httpd.conf для Apache. Однако, делайте это только в крайнем случае - если у Вас ничего не получилось с "родными" файлами, которые появилиcь при установке приложений. Но в любом случае, их необходимо будет настроить под конкретную машину. Скачать php.ini и httpd.conf

Скачать Apache можно с зеркал приведённых на официальном сайте http://www.apache.org/dyn/closer.cgi . При поиске следует помнить, что Apache так же может называться httpd, по имени его демона в UNIX. На зеркалах обычно много различных файлов, например:
httpd-2.0.49-win32-src.zip - это архив с исходными кодами (src) для Windows (win32) Web-сервера Apache (httpd) версии 2.0.49.
httpd-2.0.49.tar.gz - тоже самое, но для Linux, в котором программы принято распространять в исходных кодах.
apache_2.0.50-win32-x86-no_ssl.exe - а вот это, откомпилированный под архитектуру (x86) для Windows (win32) без поддержки SSL(no_ssl) сервер Apache (apache) версии 2.0.50 - вот он и нужен.

Замечание

Бинарные коды дистрибутивов Apache распространяются в нескольких вариантах, как с расширением *.exe, так и *.msi и имеют название вида httpd_версия_win32_*_.msi.

Чтобы вам не мучатся, вот ресурс где можно его взять: http://apache.rinet.ru/dist/httpd/binaries/win32/
Вторая и третья цифра в версии могут отличаться от приведённых здесь – следует выбирать самую последнюю версию, так как в ней устранены ошибки обнаруженные в предыдущих версиях.

PHP 5 можно загрузить из раздела нашего сайта.

Дистрибутив MySQL можно загрузить со страницы нашего сайта.

Полное справочное руководство на русском языке можно найти по адресу .

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

Установка Web-сервера Apache

Запустите установщик Web-сервера Apache. Результатом будет окно с лицензионным соглашением, после принятия которого, следует перейти к следующему окну с краткой информацией о нововведениях во второй версии Apache. Следующее окно, показанное на рисунке, позволяет ввести информацию о сервере: доменное имя сервера , имя сервера и адрес электронной почты администратора . Если установка происходит на локальную машину, то в поля для доменного имени и имени сервера следует ввести localhost (см. рисунок.). В нижней части окна предлагается выбрать номер порта по которому сервер будет принимать запросы (80 или 8080).


localhost - это имя для использования сервера на локальной машине, которое связано с IP-адресом 127.0.0.1, который зарезервирован для локального использования.

После этого будет предложен способ установки: стандартный (Typical ) или выборочный (Custom ), позволяющий выбрать компоненты сервера вручную. Следующее окно позволяет выбрать каталог установки сервера, по умолчанию это C:Program FilesApache Group , но мы рекомендуем выбрать другой каталог, например, С:www. После этого мастер установки сообщит о готовности к процессу установки и после нажатия кнопки Install , будет произведено копирование файлов сервера. Если установка прошла успешно, Windows автоматически запустит Apache.

После успешной инсталляции при наборе в окне браузера http://localhost/ или http://127.0.0.1/ - должна загрузится страница сервера.

Теперь необходимо научиться управлять Apache, а именно научится запускать, останавливать и перезапускать сервер. Существует много способов осуществить эти операции: при помощи утилиты ApacheMonitor, используя консоль управления сервисов Windows, используя пункты меню Пуск, из командной строки… Мы рассмотрим консоль управления сервисов Windows, позволяющего настроить Apache для автоматического старта при запуске системы. Для запуска консоли управления выполните команду
Пуск->Настройка->Панель управления->Администрирование->Службы .
В появившемся окне консоли, на приведённом ниже рисунке, следует выбрать сервис Apache2. Контекстное меню, открывающееся по нажатию на правой кнопке, позволяет осуществлять запуск, остановку и перезапуск сервиса.


Службы Windows позволяют осуществлять запуск фоновых приложений при старте системы. Для этого необходимо перейти в окно Свойства, выбрав в контекстном меню сервиса пункт Свойства и в появившемся окне в выпадающем списке "Тип запуска " выбрать пункт "Авто ".

Конфигурирование Apache

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

Пути к файлам

В конфигурационных файлах Apache и PHP Вам часто придется указывать пути к различным директориям и папкам. В операционных системах UNIX и Windows при-меняются различные разделители каталогов. В UNIX используется прямая косая черта "/", например /usr/bin/perl, в в Windows обратная, например, c:Apachein. Вообще, в некоторых директивах Apache и PHP работают оба вида разделителей каталогов: прямой(/) и обратный(), но так как и Apache и PHP изначально разрабаты-вались под UNIX, то применяя их "родной" формат, Вы сможете избежать ряда проблем. Поэтому пути в настроечных файлах (httpd.conf и php.ini) рекомендуется писать через слеш в формате UNIX - "/". Например:

ScriptAlias "/php_dir/" "c:/php/"

Директивы файла httpd.conf

Port

Port 80

Устанавливает порт TCP, который используется Apache для установки соединения. По умолчанию используется 80 порт.

Примечание

Единственная причина использования нестандартного порта - это отсутствие прав на использование стандартного порта. При использовании нестандартного порта, например, 8080 номер порта следует указывать в адресе, например: http://localhost:8080/.

ServerAdmin

ServerAdmin [email protected]

Содержит e-mail-адрес администратора web-сервера, который будет отображаться при ошибках работы сервера.

ServerName

ServerName myserver

Содержит имя компьютера для сервера.

ServerRoot

ServerRoot "C:/Apache2"

Указывает на каталог, содержащий файлы WEB-сервера Apache.

Примечание

Не путайте директиву ServerRoot с директивой DocumentRoot, которая указывает каталог для файлов WEB-сайта.

DocumentRoot

DocumentRoot "C:/Apache2/htdocs"

Определяет каталог, в котором расположены файлы WEB-сайта.

Контейнер

Сфера действия директив внутри этого контейнера распространяется на все файлы и подкаталоги внутри DocumentRoot.


Options FollowSymLinks Includes Indexes
AllowOverride All

  • Директива AllowOverride установленная в значение All разрешает переопределять значения главного конфигурационного файла httpd.conf в файлах.htaccess.
  • Директива Options FollowSymLinks разрешает Apache следовать символическим ссылкам.
  • Директива Options Includes разрешает выполнение директив SSI (Server Side Includes) в коде страниц web-сайта.
  • Директива Options Indexes указывает, что нужно возвращать содержимое каталога, если отсутствует индексный файл.

DirectoryIndex

DirectoryIndex index.html index.phtml index.php

Содержит список индексных файлов, которые следует отображать при обращении к директории без указания имени файла (например, http://localhost/test/).

AddDefaultCharset

AddDefaultCharset windows-1251

Устанавливает кодировку по умолчанию, если кодировка не установлена в заголовке HTML-документа. Также Вам может потребоваться указывать значение кодировки KOI8-R.

Создание виртуальных хостов

На одном WEB-сервере Apache можно установить несколько WEB-сайтов. Эта функция сервера называется виртуальным хостингом. Ниже рассмотрим создание виртуальных узлов на основе имен. Виртуальные узлы обычно расположены в конце файла httpd.conf.

Сначала требуется указать какой IP-адрес используется для виртуальных хостов.



# Директивы виртуального хоста

Файл httpd.conf. Контейнер


ServerAdmin webmaster@may_domain.ru
DocumentRoot c:/www/mysite
ServerName www.mysite.ru
ServerAlias www.site.ru www.host2.ru
ErrorLog logs/mysite-error.log
CustomLog logs/mysite-access.log common

Рассмотрим директивы виртуального узла:

  • DocumentRoot указывает каталог, где расположены файлы (странички) данного виртуального узла (WEB-сайта)
  • ServerName указывает имя виртуального узла, по которому к нему можно обратиться. В данном случае, по адресу http://www.mysite.ru/.
  • ServerAlias содержит псевдонимы имен виртуального узла. В данном случае к виртуальному узлу можно также обратиться, используя имена: http://www.site.ru/ и http://www.host2.ru/.
  • ErrorLog и CustomLog указывает имена логов сервера для этого виртуального хоста.

Контейнеры обычно располагают один за другим в конце файла httpd.conf.

Файл httpd.conf. Настройка виртуальных хостов

NameVirtualHost 127.0.0.1:80

# Директивы виртуального хоста 1


# Директивы виртуального хоста 2


# Директивы виртуального хоста 3

Примечание

Для применения изменений, вносимых в файл httpd.conf, Apache следует перезагрузить.

Для того, чтобы обращаться к виртуальным узлам по именам их следует прописать в базы данных DNS-сервера. Если Вы используете Apache для тестирования файлов на локальной машине, то имена ваших виртуальных узлов следует прописать в файле hosts. Для Windows 2000 и XP он расположен в каталоге C:WindowSystem32Driversets. Файл hosts содержит записи вида:

Формат записей файла hosts

127.0.0.1 www.mysite.ru
127.0.0.1 www.site.ru
127.0.0.1 www.host2.ru

Установка и настройка PHP

Для установки PHP следует создать каталог c:/php и разместить в нём файлы из zip-архива дистрибутива. После этого следует переименовать конфигурационный файл php.ini-dist в php.ini и скопировать его в директорию Windows.

Установка PHP в качестве модуля

Установка PHP в качестве модуля немного повышает быстродействие, так как модуль PHP загружается один раз при запуске Web-сервера

Замечание

При установке PHP в качестве модуля настройки из php.ini читаются один раз при запуске Web-сервера. Поэтому при внесении изменений в php.ini необходимо перегрузить Apache для того, чтобы внесенные изменения вступили в силу.

Для установки PHP откройте файл главный настроечный файл Apache httpd.conf на редактирование и удалите символы комментариев со следующих строк, при необходимости изменив их:

Файл httpd.conf. Подключение PHP как модуль Apache


LoadModule php5_module c:/php/php5apache2.dll

Примечание

Установка PHP, как CGI-приложения

При установке PHP, как CGI-приложения интерпретатор PHP будет загружаться каждый раз при вызове PHP-сценария. В связи с этим, возможно, некоторое ухудшение быстродействия. Если PHP установлен, как CGI, то при внесении изменений в файл php.ini Apache перезагружать не следует, так как установки читаются каждый раз при выполнении PHP-сценария. Установка PHP как CGI немного ускоряет внесение изменений в конфигурацию PHP, так она не требует перезагрузки WEB-сервера.

Примечание

При установке PHP, как CGI перестанут работать некоторые заголовки, например, Вы не сможете организовать авторизацию пользователей средствами PHP. Авторизации можно будет реализовать только средствами самого Apache с помощью файлов.htaccess.

Для установки PHP откройте главный настроечный файл httpd.conf на редактирование, найдите в нем закомментированные строки подключения PHP и измените их следующим образом:

Файл httpd.conf. Подключение PHP как CGI

AddType application/x-httpd-php phtml php

Options ExecCGI

ScriptAlias "/php_dir/" "c:/php/"
Action application/x-httpd-php "/php_dir/php-cgi.exe"

Примечание

Вместо директории c:/php подставьте Вашу директорию с установленным PHP.

Конфигурирование PHP (файл php.ini)

Так как на локальной машине вы, скорее всего, будете заняты тестированием Ваших Web-приложений, то необходимо должным образом настроить конфигурационный файл php.ini. Найдите директиву error_reporting и установите для неё следующее значение:

Это значение настроит PHP таким образом, что при работе PHP-скриптов будут отображаться все ошибки, а "замечания" будут игнорироваться. Так же обходимо проследить, чтобы директива display_errors, была включена:

Display_errors = On

Если данная директива отключена (Off), то сообщения об ошибках не будут выводится в окно браузера и в случае возникновения в коде ошибки вы будете гадать перед девственно белым окном - что бы это означало.
Так же необходимо проследить, чтобы директива variables_order имела следующее значение:

Variables_order = "EGPCS"

Буквы здесь означают следующее:
E - переменными среды
G - переменными передаваемыми по методу GET (G)
P - переменными передаваемыми по методу POST (P)
C - Cookies
S - сессии
Отсутствие какой-либо из букв не позволит вам работать с соответствующими переменными.

Следующая директива, которая может потребовать настройки – это register_globals . Если данная директива включена

Register_globals = On

то переменные передаваемые метором GET, POST, через cookies и сессии можно использовать в PHP-скрипте, обращаясь к ним просто как обычным переменным $someone.
Если данная директива отключена

Register_globals = Off

то к таким переменным можно будет обращаться только при помощи суперглобальных массивов ($_POST, $_GET и т.п.).
Директива register_long_arrays позволяет использовать суперглобальные массивы в старом формате ("длинном" - $HTTP_GET_VARS, $HTTP_POST_VARS и т.д.)

Register_long_arrays = On

Теперь необходимо настроить индексный файл. Если в окне браузера набрать строку http://localhost/, а не http://localhost/index.html. Сервер всё равно предоставит браузеру index.html, так как этот файл является индексным и ищется в директории первую очередь, если не указан конкретный файл. Теперь необходимо настроить http.conf, таким образом, чтобы Web-сервер Apache так же реагировал на файлы index.php. Для этого найдте в http.conf директиву DirectoryIndex и исправьте её следующим образом:

DirectoryIndex index.html index.html.var index.php

После этого необходимо перегрузить сервер Apache, а в корневой директории виртуального хоста ("C:/www/scripts") создать пробный файл PHP (index.php):

phpinfo ();
?>

В случае успешной настройки, обращение по адресу http://localhost/index.php отобразит фиолетовую таблицу с текущими настройками PHP, которая выдаётся функцией phpinfo().
Таким образом, у нас настроена связка Apache и PHP и можно переходить к настройке MySQL. Распакуйте дистрибутив MySQL во временную директорию и запустите установщик. Контролировать работу сервера MySQL можно точно так же как и Apache, используя консоль управления сервисов Windows.

Подключение MySQL

Подробная методика подключения к PHP расширения MySQL описана в статье по ссылке: .

Если сервер MySQL уже установлен на Вашей машине, то следующим шагом будет настройка PHP для работы с базами данных MySQL.

Откройте на редактирование файл php.ini из каталога Windows. Для подключения библиотеки расширения MySQL Вам нужно убрать символ комментария;(точка с запятой) из строки:

Extension=php_mysql.dll

Также проверьте значение директивы extension_dir

Extension_dir ="c:/php-5.0/ext"

Она должна указывать на каталог, где хранятся расширения PHP. Разделители каталогов рекомендуется писать в формате UNIX (/) - обратный слеш. Однако, если ничего не получается, просто откатите назад значение директивы extension_dir, а библиотеку php_mysql.dll скопируйте в корень C:/php-5.0/ - в большинстве случаев это должно помочь.

Если PHP Вас подключен как модуль, то Вам также необходимо скопировать библиотеку libmysql.dll из каталога с установленным PHP в системный каталог C:/Windows/System32. Чтобы внесенные изменения вступили в силу - перезагрузите Apache.

Для проверки работы MySQL перезапустите сервер Apache и создайте проверочный скрипт со следующим кодом:

$dblocation = "127.0.0.1" ;
$dbname = "test" ;
$dbuser = "root" ;
$dbpasswd = "" ;

$dbcnx = @ mysql_connect ($dblocation , $dbuser , $dbpasswd );
if (! $dbcnx )
{
echo "

К сожалению, не доступен сервер mySQL

" ;
exit();
}
if (!@
mysql_select_db ($dbname , $dbcnx ))
{
echo "

К сожалению, не доступна база данных

"
;
exit();
}
$ver = mysql_query ("SELECT VERSION()" );
if(! $ver )
{
echo "

Ошибка в запросе

"
;
exit();
}
echo
mysql_result ($ver , 0 );
?>

В случае успешной интеграции MySQL в связку Apache и PHP, обращение к проверочному скрипту выведет в окно браузера версию сервера MySQL.

В новых версиях MySQL (начиная с 4.1.0) изменился порядок работы с национальными кодировками, поэтому старый код может вызывать появление в таблице базы данных знаков вопроса "????????" вместо русского текста. Для того, чтобы этого не возникало в начало PHP-скрипта, после установки соединения с базой данных, следует поместить следующие строки:

mysql_query ("set character_set_client="cp1251"" );
mysql_query ("set character_set_results="cp1251"" );
mysql_query ("set collation_connection="cp1251_general_ci"" );
?>

Установка расширений PHP

На последок вам возможно понадобится настроить некоторые расширения PHP, они настраиваются точно так же как и MySQL.

Так для того, чтобы подключить графическую библиотеку GDLib в php.ini необходимо раскомментировать строку:

Extension=php_gd2.dll

Проверьте после этого наличие данной библиотеки в папке c:phpext. После внесения изменений в php.ini перезапустите сервер. Что бы быстро проверить: подключилась ли библиотека - выполните функцию phpinfo(). Если все в порядке, то в таблице, которая отображается функций phpinfo(), должен появится раздел "gd

При использовании устаревшего имени php.exe, использовавшегося в более ранних версиях вместо php-cgi.exe также возможно появлении ошибки:

403 Forbidden You don"t have permission to access /__php_dir__/php.exe/test.php on this server

HTML-файлы выполняются, а PHP-скрипты нет

При ненастроенном подключении PHP при обращении к файлам с расширением php, например: http:/localohost/index.php открывается окно с запрос на загрузку такого файла. Это говорит о том, что не настроена обработка файлов с расширением php. Проверьте в файле httpd.conf существование следующей строки:

AddType application/x-httpd-php phtml php

Notice: Undefined variable...

На новом, только что установленном, PHP можно часто видеть сообщения вида:

Notice: Undefined variable: msg in C:/Main/addrec.php on line 7

Error_reporting = E_ALL & ~E_NOTICE

Не подключается MySQL

Иногда возникают проблемы с установкой MySQL. Следует проконтролировать запускается ли MySQL в качестве сервиса каждый раз при старте системы. Для этого откройте консоль сервисов:

Пуск | Настройка | Панель управления | Администрирование | Службы

найдите там MySQL - запустите. Чтобы сервер стартовал при каждой загрузке системы нажмите правую кнопку мыши на сервисе и выберите "Свойства" - в открывшемся выпадающем списке "Тип запуска" выберите пункт "Авто".

Если при запуске Apache и при обращении ко скриптам выдается сообщение о невозможности загрузки библиотеки php_mysql.dll.

PHP startup: Unable to load dynamic library c:/php/ext/php_mysql.dll
- не найден указанный модуль

То еще раз сверьтесь с инструкциями из раздела, где описывается подключение к PHP библиотеки для работы с MySQL. Используете ли Вы "правильную" версию файла php_mysql.dll (именно для той версии PHP, которая установлена в системе)?
Версии файла php_mysql.dll различаются для разных версий PHP, хотя и имеют одно и тоже название.

  • Использование разделителей каталогов формате Windows (обратный слеш): c:apache/bin. Для надежной работы следует использовать разделители в формате UNIX (прямой слеш), например: c:/apache/bin.
  • Существование нескольких настроечных файлов php.ini на машине, либо отсутствие такого файла. Нужный файл php.ini должен лежать в директории Windows. Проведите поиск по дискам компьютера, найдите все лишние версии файлов и удалите их.
  • Любые возникающие по установке связки Apache+PHP+MySQL вопросы вы можете задать на нашем форуме посвященном установке и настройке Apache, PHP и библиотек расширений .

    На PHP написано много хороших приложений. Даже нет,
    очень много и некоторые из них очень хорошие, так почему бы не использовать эти
    приложения на Windows? Особенно, если внутренний портал работает на Windows, а
    на Unix машине крутиться внешний сайт компании - тогда
    можно сэкономить на инфраструктуре и разместить на Windows
    сервере еще и внешний сайт. Либо, если есть желание стандартизировать
    инфраструктуру и размещать сайты на Windows
    платформе, поскольку разработчики и пользователи работают на
    Windows платформе.
    На сайте www.iis.net
    можно найти
    список
    популярных PHP приложений
    с инструкциями по установке на IIS. Для их запуска
    на IIS не требуется изменения
    PHP кода.

    Установка и настройка PHP для использования с модулем FastCGI.

    Для начала, чтобы успешно использовать PHP на
    Windows, неплохо было бы PHP
    установить.
    Шаг 1. Скачать PHP
    На сайте PHP.net нужно скачать
    последную версию PHP для Windows . Для использования с FastCGI рекомендуется
    устанавливать версию PHP без контроля безопасности потоков, поскольку сам модуль
    FastCGI гарантирует, что выполнение происходит в одном потоке и поддержка
    контроля безопасности потоков в самом PHP привносит лишние проверки и
    блокировки, приводящие к значительному падению производительности. Поэтому
    выбираем Non-thread-safe Win32 binaries (версия 5.2.6 актуальна на момент написания
    этого сообщения).
    Стоит отметить, что веряим Non-thread-safe была разработана специально для
    работы с FastCGI на IIS (первый релиз был в версии 5.2.1) и использовать в
    других средах не рекомендуется. Кстати, начиная с версии 5.2.2 Zend серьезно
    работает над оптимизацией производительности PHP под Windows, что не может не
    радовать. Если сравнить версии 5.2.1 и 5.2.2, то разницу в скорости обработки
    запросов можно легко увидеть с помощью простого нагрузочного теста.
    Шаг 2. Установка PHP
    Установка осуществляется совсем просто: поскольку мы скачали архив с
    исполнимыми файлами, достаточно развернуть этот архив, например, в
    директорию C:\Web\PHP.
    В качестве базовой конфигурации воспользуемся рекомендованными установками:
    cделаем копию файла php.ini-recommended в php.ini в этой же директории и откроем
    его для редактирования, после чего пройдем файл сверху расскоментируя следующие
    строки, дабы обеспечить безопасность и совместимость с большинством PHP
    приложений:
    • open_basedir = директория, где размещены PHP приложения .
      Указание директории ограничит права доступа к файлам PHP приложений только
      этой директорией. Удобно переопределять эту настройку в файлах конфиграции
      непосредственно для каждого приложения, однако не помешает установить эту
      настройку и указать корневую директорию всех PHP приложений. Например, C:\inetpub\PhpSites.
    • cgi.force_redirect = 0
      По умолчанию установлено 1, но необходимо установить в 0, поскольку IIS
      контролирует безопасность выполнения PHP и в этой настройке нет
      необходимости. Более того, включение может привести к неожиданным
      результатам. При использовании с другими web-серверами на Windows эту
      настройку необходимо включить.
    • cgi.fix_pathinfo = 1
      PHP будет устанавливать имя файла в переменной SCRIPT_FILENAME, если
      установить значение 0, то имя файла будет в переменной PATH_TRANSLATED, что
      может нарушить совместимость с большинством приложений.
    • fastcgi.impersonate = 1;
      FastCGI позволяет процессу имперсонироваться используя контекст клиента,
      вызывающего процесс. Этот механизм работает только под FastCGI/IIS, например
      на Apache на Windows это работать не будет.
    • short_open_tag = On
      Большинство приложений используют короткие теги , поэтому будет не
      лишним включить их поддержку.
    • display_errors = On
      На время проверки и отладки PHP приложений на FastCGI стоит включить вывод
      сообщений об ошибках.
    Шаг 3. Проверка работоспособности PHP
    Пока мы не сконфигурировали IIS, проверить работоспособность интерпретатора
    можно просто, например, выполнив команду c:\web\php\php.exe -info > c:\test.txt

    Установка и настройка модуля FastCGI на IIS7.

    Если у вас у IIS7, то что-то мне подсказывает о названии вашей операционной
    системы - Windows Vista? Не угадал, тогда Windows Server 2008! Либо вы хакер и
    поставили IIS7 еще-куда-то, но это нестандартное решение и мы его не
    поддерживаем;).
    Шаг 1. Установка FastCGI
    Хочу обрадовать сразу - в IIS7, идущем с Windows Server 2008 и Windows Vista
    Service Pack 1 модуль FastCGI уже включен. Его необходимо лишь подключить в
    настройках. Для этого на Vista нужно открыть Control Panel -> Programs и выбрать
    «Turn Windows Features On or Off»:

    После этого необходимо установить фичу в IIS: Internet Information Services
    -> World Wide Web Services -> Application Development Features -> CGI. При этом
    будет установлена поддержка и CGI и FastCGI.

    На Windows Server 2008 процесс аналогичен: Server Manager -> Roles -> Add
    Role Services -> Web Server -> Application Development -> CGI.
    Собственно все, что требуется для включения модуля FastCGI.
    Шаг 2. Конфигурация IIS7
    1. Открыть IIS Manager, выбрать узел (сервер) для которого нужно настроить
    поддержку PHP. И далее выбрать Handler Mappings.

    2. Выбираем на странице Handler Mappings ссылку Add Module Mapping и
    заполняем окно следующими значениями:
    Request path: *.php (обработка всех файлов с расширением.php)
    Module: FastCgiModule (модуль FastCGI)
    Executable: C:\Web\PHP\php-cgi.exe (путь к PHP)
    Name: PHP (имя для удобства)

    После добавления этой настройки появится окно с вопросом о регистрации
    FastCGI приложения для этого обработчика. Подтверждаем.
    Описанные выше действия привели к созданию в директории PhpSites следующего
    web.config файла:


    < configuration >
    < system.webServer >
    < handlers >
    < add name =«PHP» path ="*.php" verb ="*"
    modules =«FastCgiModule» scriptProcessor ="C:\Web\PHP\php-cgi.exe "
    resourceType =«Unspecified» />



    Теперь можно переходить к проверке работоспособности PHP.
    Шаг 3. Проверяем корректность настройки
    В директории узла для которого мы сконфигурировали PHP создаем файл
    index.php:
    phpinfo();
    ?>
    И обращаемся к этому файлу через HTTP запрос. В результате, если все хорошо и
    наша карма не испорчена, запрос будет корректно обработан:

    Разумеется, при использовании PHP на
    IIS7 могут возникать подводные камни, с которыми нужно
    бороться, чтобы достичь ожидаемого результата (замечательной работы
    PHP приложений на Windows).
    Молотки для разбивания часто встречающихся камней приведены ниже.

    Частота перезапуска процессов PHP

    Поскольку при использовании PHP на
    IIS7 с использованием FastCGI
    модуля, сам модуль FastCGI берет на себя
    управление процессами и ресурсами, необходимо убедится, что механизм перезапуска
    процессов (recycling) в PHP
    не будет мешать FastCGI. Это легко сделать, если
    настроить FastCGI так, чтобы он всегда перезапускал
    процессы раньше, чем это сделает PHP.
    В настройках FastCGI существует настройка
    instanceMaxRequests, определяющая после обработки какого количества запросов,
    процесс будет перезапущен. В PHP аналогичный параметр
    задается значением переменной PHP_FCGI_MAX_REQUESTS. Очевидно, чтобы дать
    возможность FastCGI рулить процессом, достаточно
    установить instanceMaxRequests <= PHP_FCGI_MAX_REQUEST.
    Это удобно сделать, отредактировав файл
    applicationHost.config (прячется в директории C:\windows\system32\inetsrv\config\).
    В конфигурации должна быть следующая информация:

    < fastCgi >
    < application fullPath ="C:\inetpub\php\php-cgi.exe "
    maxInstances =«4» instanceMaxRequests =«10000» >
    < environmentVariables >
    < environmentVariable name =«PHP_FCGI_MAX_REQUESTS» value =«10000» >


    Использование нескольких версий PHP

    Поскольку разные версии PHP могут использоваться в
    приложениях, которые размещаются на сервере, то хорошо бы было дать возможность
    использовать разные версии для разных сайтов.
    В файле конфигурации applicationHost.config
    достаточно определить секции для разных версий PHP:
    < fastCgi >
    < application fullPath =«C:\inetpub\php\php-cgi.exe» >
    ...

    < application fullPath =«C:\inetpub\php4\php4.exe» >
    ...

    < application fullPath =«C:\inetpub\php41\php41.exe» >
    ...


    * This source code was highlighted with .
    А уже для каждого из сайтов конфигурируется модуль, использующий ту или иную
    версию (можно использовать интерфейс, который описан выше, а можно
    отредактировать конфигурацию в тексте):
    < handlers >
    < add name =«PHP4» path ="*.php" verb ="*" modules =«FastCgiModule»
    scriptProcessor ="C:\inetpub\php\php41.exe "
    resourceType =«Unspecified» />

    * This source code was highlighted with .

    Использование разных наборов настроек PHP

    Если есть желание настраивать PHP по-разному для
    разных сайтов, то опять же все это можно описать через настройки конфигурации в
    applicationHost.config.
    < fastCgi >

    < application fullPath ="C:\inetpub\php\php-cgi.exe "

    arguments ="-d my.website=wordpress" >

    < environmentVariables >

    < environmentVariable name =«PHPRC» value =«C:\inetpub\wordpress» />





    < application fullPath ="C:\inetpub\php\php-cgi.exe "

    arguments ="-d my.website=phpsite" >

    < environmentVariables >

    < environmentVariable name =«PHPRC» value =«C:\inetpub\phpsite» />






    * This source code was highlighted with .

    После этого, настройки связываются с соответствующими сайтами в
    web.config:
    < system.webServer >

    < handlers accessPolicy =«Read, Script» >
    < add name =«PHP» path ="*.php" verb ="*" modules =«FastCgiModule»
    scriptProcessor ="C:\inetpub\php\php-cgi.exe|-d my.website=wordpress "

    resourceType =«Unspecified» requireAccess =«Script» />




    * This source code was highlighted with .

    В соответствии с приведенной конфигурацией, php.ini
    нужно разместить в директории каждого из сайтов.
    При редактировании настроек, стоит строго соблюдать совпадение путей к
    соответствующей версии PHP и с
    applicationHost.config и в web.config, чтобы
    избежать неожиданных результатов, если пути будут перепутаны.
    На первый взгляд редактирование конфигурации может показаться сложным и
    неудобным процессом, но как только вы привыкните к конфигурации в
    XML и распространению настроек методом
    Ctrl+C, Ctrl+V, вы будете удивляться наличию других
    способов конфигурации:)

    Настройки безопасности PHP

    В php.ini мноо разных настроек, многие из которых
    влияют на безопасность использования PHP. Настроить
    все подходящим образом, достойное дело.
    Set allow_url_fopen=Off
    ; использование URL для операций с файлами
    Set allow_url_include=Off
    register_globals=Off
    ; отмена регистрации глобальных переменных
    open_basedir=«c:\inetpub\» ;
    ограничение на директорию, в которой работает PHP

    Max_execution_time=30 ; ограничение
    времени выполнения скриптов
    max_input_time=60
    memory_limit=16M ;
    ограничение на размер используемой памяти
    upload_max_filesize=2M
    post_max_size=8M
    max_input_nesting_levels=64
    display_errors=Off
    ; отключение сообщений об ошибках
    log_errors=On
    error_log=«C:\error.log»
    expose_php=Off
    ; скрыть присутствие PHP

    Заключение

    PHP на Windows - это не
    просто интересно и удобно, главное, что это работает. А команда
    IIS работает над тем, чтобы PHP
    работал на Windows не хуже, чем на
    Unix/Linux (конечно, стараются сделать лучше).
    Поскольку это новая тема для Microsoft, то мы можем
    сделать какие-то ошибки, можем чего-то не замечать и не понимать, поэтому нам
    очень важно получать комментарии от вас - разработчиков и администраторов.
    Пишите в комментариях ваши пожелания и проблемы, которые вы видите сейчас в
    PHP на Windows, а мы будем
    стараться проблемы решать, а пожелания реализовывать.

    Теги: Добавить метки

    А сегодня мы поговорим об установке PHP . Как и в случае с Apache здесь нет ничего сложного. Если вы первый раз занимаетестьустановкой и настройкой PHP на локальной машине, то вам будет полезно прочитать это руководство с картинками. Если вы уже матерый зубр в этих делах, то можете смело пропустить эту заметку.

    Итак, если вы читаете этот пост, то либо вы первый раз устанавливаете PHP, либо у вас возникли вопросы/проблемы в процессе установки или настройки PHP. Я постараюсь как можно подробнее описать этот процесс.

    Для начала нам нужен дистрибутив с самой свежей версией PHP. Его можно скачать с официального сайта – www.php.net (9.5 Mb).

    Скачиваем дистрибутив на компьютер, выбирая зеркало, которое географически наиболее ближе к вам находиться

    Извлекаем содержимое архива в папку C:/php5 . Опять же, если вы первый раз устанавливаете связку Apache -PHP- MySQL рекомендую устанавливать по указанным мной путям.

    Итак, в C:/php5 у вас должно находиться следующее:

    Установка PHP завершена, теперь займемся его настройкой.

    Переименуйте файл php.ini-recommended в php.ini :

    • выбираем файл
    • нажимаем F2
    • удаляем -recommended
    • нажимаем Enter.

    Теперь откроем файл в блокноте и займемся настройкой PHP . Файл содержит в себе довольно большое количество настроек PHP, но нам они сейчас не нужны. Мы займемся лишь базовой настройкой, которая позволит нам запустить PHP на локальной машине.

    Немного о формате описания в файле настроек

    Символ ‘;’ означает, что строки закоментированы (они не будут учитываться). Например:

    ; ignore_user_abort = On

    Как вы могли заметить настройки поделены на группы, для удобства поиска по файлу. Например, настройки управления ограничением ресурсов:

    ;;;;;;;;;;;;;;;;;;;;;;
    ; Resource Limits ;
    ;;;;;;;;;;;;;;;;;;;;;;

    max_execution_time = 30 ; Maximum execution time of each script, in seconds (Максимальное время выполнения скрипта).
    max_input_time = 60 ; Maximum amount of time each script may spend parsing request data
    ;max_input_nesting_level = 64 ; Maximum input variable nesting level
    memory_limit = 128M ; Maximum amount of memory a script may consume (128MB) (Максимальное количество выделяемой для скрипта памяти).

    Формат описания параметров и их значений:

    имя_переменной = ее_значение

    Настройка модулей PHP.

    Найдите секцию Dynamic Extensions (динамические расширения). Там представлен довольно большой список модулей для PHP:

    ;extension=php_bz2.dll
    ;extension=php_curl.dll
    ;extension=php_dba.dll
    ;extension=php_dbase.dll
    ;extension=php_exif.dll
    ;extension=php_fdf.dll
    ;extension=php_gd2.dll
    ;extension=php_gettext.dll
    ;extension=php_gmp.dll
    ;extension=php_ifx.dll
    ;extension=php_imap.dll
    ;extension=php_interbase.dll
    ;extension=php_ldap.dll
    ;extension=php_mbstring.dll
    ;extension=php_mcrypt.dll
    ;extension=php_mhash.dll

    ;extension=php_ming.dll
    ;extension=php_msql.dll
    ;extension=php_mssql.dll
    ;extension=php_mysql.dll
    ;extension=php_mysqli.dll
    ;extension=php_oci8.dll
    ;extension=php_openssl.dll
    ;extension=php_pdo.dll

    ;extension=php_pdo_mssql.dll
    ;extension=php_pdo_mysql.dll
    ;extension=php_pdo_oci.dll
    ;extension=php_pdo_oci8.dll
    ;extension=php_pdo_odbc.dll
    ;extension=php_pdo_pgsql.dll

    ;extension=php_pgsql.dll
    ;extension=php_pspell.dll
    ;extension=php_shmop.dll
    ;extension=php_snmp.dll
    ;extension=php_soap.dll
    ;extension=php_sockets.dll
    ;extension=php_sqlite.dll
    ;extension=php_sybase_ct.dll
    ;extension=php_tidy.dll
    ;extension=php_xmlrpc.dll
    ;extension=php_xsl.dll

    При подключении каждого модуля, он занимает определенное количество операционной памяти. Для работы мы подключим только те модули, которые нам точно понадобятся, а остальные, можно будет подключить по мере необходимости.

    Для того чтобы подключить модуль нужно удалить перед строкой символ ‘;’. Тем самым мы раскомментируем строку и модуль будет использоваться.

    Давайте подключим расширение PHP для работы с графикой – php_gd2.dll (оно нам понадобиться в будущем).

    Для того, чтобы PHP смог найти, где лежат расширения, укажем путь к ним. Добавьте следующую строку до или после подключения расширений. В итоге у вас должно получиться следующее:

    ;;;;;;;;;;;;;;;;;;;;;;
    ; Dynamic Extensions ;
    ;;;;;;;;;;;;;;;;;;;;;;
    ;
    ; If you wish to have an extension loaded automatically, use the following
    ; syntax:
    ;
    ; extension=modulename.extension
    ;
    ; For example, on Windows:
    ;
    ; extension=msql.dll
    ;
    ; … or under UNIX:
    ;
    ; extension=msql.so
    ;
    ; Note that it should be the name of the module only; no directory information
    ; needs to go here. Specify the location of the extension with the
    ; extension_dir directive above.

    ; Windows Extensions
    ; Note that ODBC support is built in, so no dll is needed for it.
    ; Note that many DLL files are located in the extensions/ (PHP 4) ext/ (PHP 5)
    ; extension folders as well as the separate PECL DLL download (PHP 5).
    ; Be sure to appropriately set the extension_dir directive.

    extension_dir=”C:/php5/ext”

    ;extension=php_bz2.dll
    ;extension=php_curl.dll
    ;extension=php_dba.dll
    ;extension=php_dbase.dll
    ;extension=php_exif.dll
    ;extension=php_fdf.dll
    extension=php_gd2.dll
    ;extension=php_gettext.dll
    ;extension=php_gmp.dll
    ;extension=php_ifx.dll
    ;extension=php_imap.dll
    ;extension=php_interbase.dll
    ;extension=php_ldap.dll
    ;extension=php_mbstring.dll
    ;extension=php_mcrypt.dll
    ;extension=php_mhash.dll
    ;extension=php_mime_magic.dll
    ;extension=php_ming.dll
    ;extension=php_msql.dll
    ;extension=php_mssql.dll
    ;extension=php_mysql.dll
    ;extension=php_mysqli.dll
    ;extension=php_oci8.dll
    ;extension=php_openssl.dll
    ;extension=php_pdo.dll
    ;extension=php_pdo_firebird.dll
    ;extension=php_pdo_mssql.dll
    ;extension=php_pdo_mysql.dll
    ;extension=php_pdo_oci.dll
    ;extension=php_pdo_oci8.dll
    ;extension=php_pdo_odbc.dll
    ;extension=php_pdo_pgsql.dll
    ;extension=php_pdo_sqlite.dll
    ;extension=php_pgsql.dll
    ;extension=php_pspell.dll
    ;extension=php_shmop.dll
    ;extension=php_snmp.dll
    ;extension=php_soap.dll
    ;extension=php_sockets.dll
    ;extension=php_sqlite.dll
    ;extension=php_sybase_ct.dll
    ;extension=php_tidy.dll
    ;extension=php_xmlrpc.dll
    ;extension=php_xsl.dll
    ;extension=php_zip.dll

    Сохраняем сделанные нами изменения. Чтобы сделанные нами настройки применились необходимо перезагрузить Apache .

    Установка и настройка PHP завершена!

    Как видите – ничего сложного. Если в процессе работы вам понадобятся другие расширения, просто раскомментируйте строку, с нужным вам расширением (аналогично с php_gd2.dll ) и перезагрузите Apache .

    В следующем посте, я расскажу как заставить работать PHP и Apache в связке.

    Продолжаем собирать локальный сервер WAMP на локальной машине (персональном компьютере). В этой статье устанавливаем интерпретатор PHP, он же буква [P] в акрониме WAMP.

    В прошлых статьях я рассказывал, как , как установить веб-сервер HTTP Apache. Локальный сервер собираем под управлением Windows 7. Пришло время установить PHP.

    Устанавливать PHP будем в папку php созданную на системном диске: C:\Program Files\PHP.

    Где взять PHP

    Последнюю версию php берем только на официальном сайте, вот ссылка: http://php.net/downloads.php . еще одна: http://windows.php.net/download#php-7.0. Последнюю версию php7.0 брать не будем, возьмем не такую «революционную» PHP 5.6 (5.6.20). Я беру сборку под 32 битную архитектуру Windows 7 с встроенным инсталлятором Windows.

    Установка PHP с инсталлятором (MSI)

    Последний PHP с инсталлятором и главное с модулем Apache 2.2. это php-5.3.10-nts-Win32-VC9-x86.msi. Берем его тут: http://windows.php.net/downloads/releases/archives / его и поставим.

    Примечание: Выбираем с модулем Apache 2.2., так как мы собираем WAMP на Apache 2.2, который мы уже установили в статье: тут .

    Установка PHP при помощи инсталлятора (MSI) простая, в несколько окон:

    1. Запускаем скаченный файл php-5.3.10-nts-Win32-VC9-x86.msi. Первое окно установки php-5.3.10 2. Знакомимся с лицензией и согласившись с ней, идем дальше, нажимая кнопку «Next».

    3. На этой странице задаем папку, в которую ставим PHP. Пусть это будет каталог:

    4. На следующей странице, выбираем используемый веб-сервер. В нашей сборке это Apache2.

    5. На этой странице нужно выбрать модули PHP, которые нам будут нужны. Для подстраховки выбираем всё.

    6. Жмем «Install»
    Жмем Install для установки php-5.3.10
    Видим процесс окно установки php-5.3.10

    Всё! Установка PHP на локальный компьютер завершена.

    Последнее обновление: 16.12.2017

    Есть разные способы установки всего необходимого программного обеспечения. Мы можем устанавливать компоненты по отдельности, а можем использовать уже готовые сборки на подобие Denwer или EasyPHP. В подобных сборках компоненты уже имеют начальную настройку и уже готовы для создания сайтов. Однако рано или поздно разработчикам все равно приходится прибегать к установке и конфигурации отдельных компонентов, подключения других модулей. Поэтому мы будем устанавливать все компоненты по отдельности. В качестве операционной системы будет использоваться Windows.

    Что подразумевает установка PHP? Во-первых, нам нужен интерпретатор PHP. Во-вторых, необходим веб-сервер, например, Apache, с помощью которого мы сможем обращаться к ресурсам создаваемого нами сайта. В-третьих, поскольку мы будем использовать базы данных, то нам также надо будет установить какую-нибудь систему управления базами данных. В качестве такой выбрана MySQL как наиболее популярная в связке с PHP.

    Для установки PHP перейдем на офсайт разработчиков http://php.net/ . На странице загрузок мы можем найти различные дистрибутивы для операционной системы Linux. Если нашей операционной системой является Windows, то нам надо загрузить один из пакетов со страницы http://windows.php.net/download/ .

    Загрузим zip-пакет последнего выпуска PHP:

    Как правило, последний выпуск PHP имеет две версии: Non Thread Safe и Thread Safe. Нам надо выбрать версию Thread Safe . Для этой версии доступны варинты для 32-битной и 64-битной систем.

    Распакуем загруженный архив в папку, которую назовем php . Пусть эта папка у нас будет располагаться в корне диска C.

    Теперь нам надо выполнить минимальную конфигурацию PHP. Для этого зайдем в каталог c:\php и найдем там файл php.ini-development . Это файл начальной конфигурации интерпретатора. Переименуем этот файл в php.ini и затем откроем его в текстовом редакторе.

    Найдем в файле строку:

    ; extension_dir = "ext"

    Эта строка указывает на каталог с подключаемыми расширениями для PHP. Раскомментируем ее (убрав точку с запятой):

    Extension_dir = "ext"

    Так как все расширения находятся в каталоге ext .

    Поскольку мы будем использовать базы данных MySQL, то нам надо указать расширение в php.ini. По умолчанию оно уже имеется в файле, только оно закомментировано:

    ;extension=mysqli

    Раскомментируем его, убрав знак точки с запятой:

    Extension=mysqli

    Теперь по умолчанию эта библиотека будет использоваться при работе с базой данных. Также мы можем при необходимости раскомментировать и другие расширения. Но для начала нам хватит и одного.

    Остальное содержимое файла оставим без изменений.

    Теперь установим веб-сервер.