Выберите веб-сервер
IIS
IIS является встроенным в Windows.
На сервере Windows используйте Server Manager для добавления роли IIS. Убедитесь, что функция роли CGI включена.
На рабочем столе Windows используйте панель «Установка и удаление программ» для добавления IIS.
В документации Microsoft есть » подробные инструкции.
Для настольных веб-приложений и веб-разработки можно также использовать IIS/Express или рабочий стол PHP.
Пример #1 Командная строка для настройки IIS и PHP
@echo off REM download .ZIP file of PHP build from http://windows.php.net/downloads/ REM path to directory you decompressed PHP .ZIP file into (no trailing ) set phppath=c:php REM Clear current PHP handlers %windir%system32inetsrvappcmd clear config /section:system.webServer/fastCGI REM The following command will generate an error message if PHP is not installed. This can be ignored. %windir%system32inetsrvappcmd set config /section:system.webServer/handlers /-[name='PHP_via_FastCGI'] REM Set up the PHP handler %windir%system32inetsrvappcmd set config /section:system.webServer/fastCGI /+[fullPath='%phppath%php-cgi.exe'] %windir%system32inetsrvappcmd set config /section:system.webServer/handlers /+[name='PHP_via_FastCGI',path='*.php',verb='*',modules='FastCgiModule',scriptProcessor='%phppath%php-cgi.exe',resourceType='Unspecified'] %windir%system32inetsrvappcmd set config /section:system.webServer/handlers /accessPolicy:Read,Script REM Configure FastCGI Variables %windir%system32inetsrvappcmd set config -section:system.webServer/fastCgi /[fullPath='%phppath%php-cgi.exe'].instanceMaxRequests:10000 %windir%system32inetsrvappcmd.exe set config -section:system.webServer/fastCgi /+"[fullPath='%phppath%php-cgi.exe'].environmentVariables.[name='PHP_FCGI_MAX_REQUESTS',value='10000']" %windir%system32inetsrvappcmd.exe set config -section:system.webServer/fastCgi /+"[fullPath='%phppath%php-cgi.exe'].environmentVariables.[name='PHPRC',value='%phppath%php.ini']"
Apache
Существует несколько версий Apache2 для Windows.
Мы поддерживаем ApacheLounge, но другие варианты включают XAMPP, WampServer и BitNami, которые предоставляют средства автоматической установки.
Вы можете использовать mod_php или mod_fastcgi для загрузки PHP на Apache.
Если вы используете mod_php, необходимо использовать TS-build Apache, Visual C той же версии и тот же процессор (x86 или x64).
Выберите сборку
Скачайте PHP-релизы с » http://windows.php.net/download/.
Все сборки оптимизированы (PGO), а выпуски QA и GA тщательно протестированы.
Есть 4 типа сборок PHP:
-
Thread-Safe(TS) — для одного процесса веб-служб, как Apache с mod_php
-
Non-Thread-Safe(NTS) — для служб IIS и других FastCGI веб-серверов (Apache с mod_fastcgi) рекомендуется и для сценариев командной строки
-
для x86 — для 32-разрядной версии
-
для x64 — для 64-разрядной версии
klaussantana at gmail dot com ¶
2 years ago
If you're installing PHP 8.0.1 as Apache http server module, in httpd.conf you must use "php_module" in "LoadModule" directive instead of versioned names like in previous versions (aka, php5_module, php7_module, ...). Make the directive as follow:
LoadModule php_module "/path/to/php8apache2_4.dll"
I cracked my head over this...
md dot shahin dot hawladar at gmail dot com ¶
1 year ago
when using apache we will add this php8apache2_4.dll module in httpd.config file
example: LoadModule php_module C:/php/php8apache2_4.dll
I extracted php in "C" drive
Опубликовано: 28.11.2019
Используемые термины: IIS, PHP, MySQL.
Чаще всего, PHP и MySQL устанавливается на серверы с Linux. Однако, при необходимости, можно настроить запуск и обработку PHP скриптов на Windows. Версии последней могут быть разные, например, Server 2008/2012/2016/2019 или не серверные системы, такие как, 7/8/10. Данная инструкция подойдет как для чайника, так и опытного специалиста (в качестве шпаргалки).
Устанавливаем IIS
Публикация сайта для PHP
Работаем с PHP
Устанавливаем
Настраиваем IIS + PHP
PHP Manager для управления
Установка MySQL
Установка IIS
Для установки веб-сервера, открываем Диспетчер серверов — переходим в Управление — Добавить роли и компоненты:
Если откроется окно с приветствием, нажимаем Далее:
При выборе типа установки выбираем Установка ролей или компонентов:
При выборе целевого сервера оставляем локальный сервер (или выбираем удаленный, если установка выполняется из удаленной консоли):
Среди ролей выбираем Веб-сервер (IIS) — во всплывающем окне кликаем по Добавить компоненты:
Также среди ролей в подразделе «Разработка приложений» ставим галочку для установки CGI — этот компонент нам нужен для работы PHP:
При выборе компонентов ничего не меняем — нажимаем Далее:
Откроется окно настройки роли веб-сервера — просто нажимаем Далее:
Выбор служб ролей — нажимаем далее или, при необходимости, выбираем FTP-сервер:
В следующем окне ставим галочку Автоматический перезапуск конечного сервера, если требуется и кликаем по Установить:
Дожидаемся окончания процесса установки.
Сразу после установки IIS запускается автоматически. Но, если что, его можно запустить с помощью команды iisreset:
iisreset /start
* если выполнить данную команду без опций, то она перезапустить веб-сервер.
Также мы можем открыть диспетчер служб (команда services.msc) и перезапустить Службу веб-публикаций:
Открываем браузер и вводим адрес http://localhost — должен открыться стартовый портал:
Развертывание отдельного сайта
Мы можем пропустить данный пункт, если хотим использовать сайт по умолчанию. Однако, в данной инструкции мы разберем пример, когда для сайта на PHP будет создана отдельная настройка.
Открываем Диспетчер серверов — кликаем по Средства — Диспетчер служб IIS:
Находим раздел сайты — кликаем правой кнопкой мыши по Добавить веб-сайт…:
Заполняем данные для нового сайта:
* где:
- Имя сайта — произвольно имя будущего сайта.
- Физический путь — путь до папки на сервере, где будут расположены файлы сайта.
- Тип — тип соединения (http или https). Для первого запуска обойдемся http. При необходимости, его можно всегда поменять или использовать оба типа одновременно.
- IP-адрес — если на сервере много IP-адресов, то мы можем выбрать конкретный, на котором будет работать сайт.
- Порт — сетевой порт, на котором будет работать сайт. Как правило, это 80 для http или 443 для https.
- Имя узла — доменное имя сайта, при обращении по которому должен открываться создаваемый сайт.
После заходим в каталог с сайтом (в нашем примере, это C:inetpubwwwrootphp) и создадим в нем файл index.html со следующим содержимым:
<h1>Hello from PHP site</h1>
Открываем браузер и переходим на созданный сайт, например, как в нашей инструкции — http://php.dmosk.ru. Мы должны увидеть страницу с написанным нами текстом:
Тестовый сайт создан.
PHP
Установка PHP
Для установки php на Windows переходим на страницу загрузки PHP — выбираем нужную нам версию, например, последнюю стабильную и переходим по ссылке для загрузки версии для Windows:
Откроется страница с несколькими версиями пакета — там как мы ставим PHP как FastCGI, нам нужна версия «Non Thread Safe» (не потокобезопасная), так как она будет работать быстрее. И так, скачиваем zip-архив на сервер:
Для установка PHP на Windows достаточно просто распаковать содержимое архива в любой каталог, например, C:Program FilesPHP:
Делаем копию файла php.ini-production и переименовываем его в php.ini:
Открываем на редактирование данный файл и правим следующее:
open_basedir = C:inetpubwwwroot
…
cgi.force_redirect = 0
…
short_open_tag = On
* где open_basedir — директория, в которой будут разрешены PHP-скрипты; cgi.force_redirect — указывает будет ли скрипты обрабатываться при прямом запросе или только при запросе от веб-сервера. В IIS запросы контролируются самим веб-сервером, поэтому опция может оказать обратный эффект; short_open_tag — позволяет использовать короткий вид открывающих тегов для PHP.
Проверяем, что PHP работает. Открываем командную строку Windows — переходим в каталог с установленным PHP:
cd «C:Program FilesPHP»
Запускаем php с параметром -m:
php -m
Мы должны получить список подключенных модулей:
[PHP Modules]
bcmath
calendar
Core
ctype
…
Но если мы получим ошибку, связанную с отсутствием файла VCRUNTIME140.dll:
… необходимо установить Microsoft Visual C++ Redistributable. Переходим на страницу https://www.microsoft.com/ru-RU/download/details.aspx?id=52685 и скачиваем компонент:
После загрузки, устанавливаем его на сервер, после чего, снова пробуем вывести на экран модули php:
php -m
Настройка сайта на IIS для работы с PHP
И так, веб-сервер поднят, PHP установлено, сайт работает. Настроим связку IIS + PHP. Открываем панель управления IIS — переходим к созданному сайту и кликаем по Сопоставления обработчиков:
В меню справа кликаем по Добавить сопоставление модуля:
Заполняем поля:
* где:
- Путь запроса — путь к файлам, при вызове которых действует сопоставление. В данном примере для всех файлов, заканчивающихся на php.
- Модуль — действующий модуль для обработки запроса.
- Исполняемый файл — файл, который будет выполнять обработку запроса. В данном примере мы выбрали файл из скачанного и распакованного нами архива PHP.
- Имя — произвольное имя для сопоставления.
Нажимаем OK и подтверждаем действие. Сопоставление создано.
Теперь заходим в Документ по умолчанию:
… и добавляем новый документ:
* в данном примете мы указываем, что по умолчанию сервер будет искать файл index.php, если таковой не указан явно в запросе.
Открываем в проводнике папку, в которой находятся файлы сайта (в нашем примере, C:inetpubwwwrootphp). Создаем файл index.php с содержимым:
Открываем браузер и снова переходим на наш сайт — мы должны увидеть страницу с информацией о php:
PHP Manager в IIS
Для того, чтобы упростить настройку PHP мы можем установить диспетчер PHP для IIS. Для этого переходим по ссылке https://www.iis.net/downloads/community/category/manage и переходим по ссылке для скачивания стабильной версии php-менеджера:
Скачиваем дополнение:
Выполняем установку на сервере, запустив загруженный файл. Открываем диспетчер управления IIS — мы должны увидеть PHP Manager:
Установка MySQL
MySQL для Windows можно скачать бесплатно. Переходим на страницу https://dev.mysql.com/downloads/mysql/ — выбираем операционную систему Microsoft Windows — кликаем по Go to Download Page:
На следующей странице выбираем для скачивания mysql-installer-community:
В открывшемся окне кликаем по No thanks, just start my download:
Начнется загрузка файла для установки MySQL. Дожидаемся скачивания и запускаем установочный файл — в открывшемся окне выбираем Server only:
В следующем окне кликаем по Execute:
… и дожидаемся установки СУБД:
Откроется окно конфигурации MySQL — нажимаем Next:
Выбираем установку одиночного сервера MySQL:
Оставляем все значения по умолчанию для настроек сети:
Требуем сложные пароли:
Вводим дважды пароль для пользователя root:
* также, на данном этапе мы можем сразу добавить новых пользователей.
Устанавливаем СУБД как сервис и стартуем его:
Настройки готовы для применения — нажимаем Execute:
Дожидаемся применения настроек и кликаем по Next:
Настройка завершена:
Установка завершена — нажимаем Finish.
Сервер баз данных готов к использованию.
По умолчанию, PHP поддерживаем mysql — в этом можно убедиться на странице phpinfo, найдя раздел mysqlnd:
На 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:WebPHP.
В качестве базовой конфигурации воспользуемся рекомендованными установками:
cделаем копию файла php.ini-recommended в php.ini в этой же директории и откроем
его для редактирования, после чего пройдем файл сверху расскоментируя следующие
строки, дабы обеспечить безопасность и совместимость с большинством PHP
приложений:
- open_basedir = директория, где размещены PHP приложения.
Указание директории ограничит права доступа к файлам PHP приложений только
этой директорией. Удобно переопределять эту настройку в файлах конфиграции
непосредственно для каждого приложения, однако не помешает установить эту
настройку и указать корневую директорию всех PHP приложений. Например, C:inetpubPhpSites. - 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:webphpphp.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:WebPHPphp-cgi.exe (путь к PHP)
Name: PHP (имя для удобства)
После добавления этой настройки появится окно с вопросом о регистрации
FastCGI приложения для этого обработчика. Подтверждаем.
Описанные выше действия привели к созданию в директории PhpSites следующего
web.config файла:
<?xml version=«1.0» encoding=«UTF-8»?>
<configuration>
<system.webServer>
<handlers>
<add name=«PHP» path=»*.php» verb=»*»
modules=«FastCgiModule» scriptProcessor=»C:WebPHPphp-cgi.exe»
resourceType=«Unspecified» />
</handlers>
</system.webServer>
</configuration>
* This source code was highlighted with Source Code Highlighter.
Теперь можно переходить к проверке работоспособности PHP.
Шаг 3. Проверяем корректность настройки
В директории узла для которого мы сконфигурировали PHP создаем файл
index.php:
<?<br /> phpinfo();<br />?>
И обращаемся к этому файлу через HTTP запрос. В результате, если все хорошо и
наша карма не испорчена, запрос будет корректно обработан:
Рекомендации по настройке PHP на
IIS7
Разумеется, при использовании 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:windowssystem32inetsrvconfig).
В конфигурации должна быть следующая информация:
<fastCgi>
<application fullPath=»C:inetpubphpphp-cgi.exe»
maxInstances=«4» instanceMaxRequests=«10000»>
<environmentVariables>
<environmentVariable name=«PHP_FCGI_MAX_REQUESTS» value=«10000»>
</environmentVariables>
</application>
</fastCgi>
* This source code was highlighted with Source Code Highlighter.
Использование нескольких версий PHP
Поскольку разные версии PHP могут использоваться в
приложениях, которые размещаются на сервере, то хорошо бы было дать возможность
использовать разные версии для разных сайтов.
В файле конфигурации applicationHost.config
достаточно определить секции для разных версий PHP:
<fastCgi>
<application fullPath=«C:inetpubphpphp-cgi.exe»>
…
</application>
<application fullPath=«C:inetpubphp4php4.exe»>
…
</application>
<application fullPath=«C:inetpubphp41php41.exe»>
…
</application>
</fastCgi>
* This source code was highlighted with Source Code Highlighter.
А уже для каждого из сайтов конфигурируется модуль, использующий ту или иную
версию (можно использовать интерфейс, который описан выше, а можно
отредактировать конфигурацию в тексте):
<handlers>
<add name=«PHP4» path=»*.php» verb=»*» modules=«FastCgiModule»
scriptProcessor=»C:inetpubphpphp41.exe»
resourceType=«Unspecified» />
</handlers>
* This source code was highlighted with Source Code Highlighter.
Использование разных наборов настроек PHP
Если есть желание настраивать PHP по-разному для
разных сайтов, то опять же все это можно описать через настройки конфигурации в
applicationHost.config.
<fastCgi>
<application fullPath=»C:inetpubphpphp-cgi.exe»
arguments=»-d my.website=wordpress»>
<environmentVariables>
<environmentVariable name=«PHPRC» value=«C:inetpubwordpress» />
</environmentVariables>
</application>
<application fullPath=»C:inetpubphpphp-cgi.exe»
arguments=»-d my.website=phpsite»>
<environmentVariables>
<environmentVariable name=«PHPRC» value=«C:inetpubphpsite» />
</environmentVariables>
</application>
</fastCgi>
* This source code was highlighted with Source Code Highlighter.
После этого, настройки связываются с соответствующими сайтами в
web.config:
<system.webServer>
<handlers accessPolicy=«Read, Script»>
<add name=«PHP» path=»*.php» verb=»*» modules=«FastCgiModule»
scriptProcessor=»C:inetpubphpphp-cgi.exe|-d my.website=wordpress»
resourceType=«Unspecified» requireAccess=«Script» />
</handlers>
</system.webServer>
* This source code was highlighted with Source Code Highlighter.
В соответствии с приведенной конфигурацией, 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, а мы будем
стараться проблемы решать, а пожелания реализовывать.
Этот раздел содержит инструкции по настройке Internet Information
Services (IIS) 7.0 и более поздних версий для работы с PHP на Microsoft Windows Vista SP1,
Windows 7, Windows Server 2008 и Windows Server 2008 R2. Для получения инструкций по настройке
IIS 5.1 и IIS 6.0 на Windows XP и Windows Server 2003 перейдите на страницу
Microsoft IIS 5.1 и IIS 6.0.
Включение поддержки FastCGI в IIS
Модуль FastCGI при установке IIS по умолчанию отключён. Способы включения его различаются
в зависимости от версии используемой Windows.
Для включения поддержки FastCGI на Windows Vista SP1 и Windows 7:
-
В меню «Пуск» выберите пункт «Выполнить», в появившемся
окне введите с клавиатуры «optionalfeatures.exe» и
нажмите «Ok»; -
В открывшемся окне «Компоненты Windows» раскройте папку «Службы IIS»,
«Службы интернета», «Компоненты разработки приложений»
и установите галочку напротив «CGI»; -
Нажмите OK и ждите окончания процесса установки.
Чтобы включить поддержку FastCGI на Windows Server 2008 и Windows Server 2008 R2:
-
В Windows откройте меню Пуск выберите пункт «Выполнить:», наберите с клавиатуры
«CompMgmtLauncher»
и нажмите «Ok»; -
Если роль «Веб-сервер (IIS)» не представлена во вкладке «Роли»,
добавьте её, выбрав «Добавить роли»; -
Если роль «Веб-сервер (IIS)» присутствует, выберите «Выбор службы ролей»
и установите галочку напротив «CGI» в группе «Компоненты разработки приложений»; -
Нажмите «Далее» затем «Установить» и ждите окончания процесса установки.
Настройка IIS для обработки PHP запросов
Скачайте и установите PHP в соответствии с инструкциями, приведёнными в
описании установки
Замечание:
При использовании IIS рекомендуется использовать потоко-небезопасную (Non-thread-safe) сборку PHP,
которая доступна по ссылке » PHP для Windows:
Установочные файлы и исходный код.
Измените CGI и FastCGI настройки в файле php.ini как показано ниже:
Пример #1 CGI и FastCGI настройки в php.ini
fastcgi.impersonate = 1 fastcgi.logging = 0 cgi.fix_pathinfo=1 cgi.force_redirect = 0
Настройте IIS обработчик для PHP, используя Интерфейс управления IIS
или через командную строку.
Использование Интерфейса управления IIS для создания обработчика PHP
Следующие шаги позволят вам создать IIS обработчик для PHP в Интерфейсе управления IIS:
-
В Windows меню Пуск выберите команду «Выполнить:»,
введите в клавиатуры команду «inetmgr»
и нажмите «Ok»; -
В Интерфейсе управления IIS выберите сервер в дереве «Подключения»;
-
На «Начальной странице» откройте «Сопоставления обработчиков»;
-
На вкладке «Действия» выберите «Добавить сопоставление модуля…»;
-
В окне «Добавление сопоставления модуля» введите следующее:
- Путь запроса: *.php
- Модуль: FastCgiModule
- Исполняемый файл: C:[Path to PHP installation]php-cgi.exe
- Имя: PHP_via_FastCGI
-
Нажмите кнопку «Ограничения запроса» и сконфигурируйте сопоставление вызывать обработчик
только при сопоставлении с файлом или каталогом; -
Нажмите OK во всех диалогах для сохранения конфигурации.
Использование командной строки для создания сопоставления обработчика PHP
Используйте команды приведённые ниже для создания пула процессов IIS FastCGI который будет использовать php-cgi.exe
выполняемый для PHP запросов. Замените значение параметра fullPath на абсолютный путь к файлу php-cgi.exe.
Пример #2 Создание IIS FastCGI пула процессов
%windir%system32inetsrvappcmd set config /section:system.webServer/fastCGI ^ /+[fullPath='c:PHPphp-cgi.exe']
Настройка IIS для обработки специфических запросов PHP из командной строки показана ниже. Замените значение
параметра scriptProcessor на абсолютный путь к файлу php-cgi.exe.
Пример #3 Создание сопоставления обработчика запросов PHP
%windir%system32inetsrvappcmd set config /section:system.webServer/handlers ^ /+[name='PHP_via_FastCGI', path='*.php',verb='*',modules='FastCgiModule',^ scriptProcessor='c:PHPphp-cgi.exe',resourceType='Either']
Эта команда создает для IIS сопоставление обработчика для файлов с расширением *.php, который получается
в результате и обрабатывается модулем FastCGI.
Замечание:
На этом шаге установка и настройка завершены.
Следующие инструкции необязательны, но очень рекомендуются для достижения оптимальной функциональности
и производительности PHP на IIS.
Представление и доступ к файловой системе
При использовании IIS рекомендуется включить представление FastCGI в PHP. Это контролируется директивой
fastcgi.impersonate в php.ini файле.
Когда имперсонация включена, PHP будет выполнять все операции с файловой системой под аккаунтом,
который был определён при аутентификации IIS. Это гарантирует, что при общем PHP процессе для всех
сайтов IIS, PHP скрипты этих сайтов не будут иметь доступ к файлам друг друга до тех пор, пока IIS использует
различные учетные записи для каждого из сайтов.
Для примера, в настройках по умолчанию IIS 7, включена анонимная аутентификация под стандартным пользователем
IUSR. Это значит, что давая разрешение IIS выполнить PHP скрипт, так же необходимо дать права на чтение
этого скрипта аккаунту IUSR.
Если PHP приложению необходимо выполнить запись в некоторые файлы или папки, тогда аккаунту IUSR следует дать
права на запись в них.
Чтобы решить какой пользователь используется для идентификации в IIS 7, можно использовать следующие команды.
Замените «Default Web Site» на имя IIS сайта, с которым вы работаете. На выходе, в
XML конфигурации смотрите атрибут userName.
Пример #4 определение аккаунта, используемого IIS при анонимной идентификации
%windir%system32inetsrvappcmd.exe list config "Default Web Site" ^ /section:anonymousAuthentication <system.webServer> <security> <authentication> <anonymousAuthentication enabled="true" userName="IUSR" /> </authentication> </security> </system.webServer>
Замечание:
Если атрибут userName отсутствует в элементе anonymousAuthentication,
или установлен как пустая строка, это значит, что удостоверение пула приложений используется как анонимное
для этого веб-сайта.
Для изменения настроек доступа для файлов или папок, используйте интерфейс пользователя в проводнике Windows
или команду icacls.
Пример #5 Настройка разрешения доступа к файлам
icacls C:inetpubwwwrootupload /grant IUSR:(OI)(CI)(M)
Установка index.php как документ по умолчанию в IIS
По умолчанию в IIS не установлено имя документа для обработки HTTP запросов по умолчанию.
В PHP приложениях, обычно используется по умолчанию документ index.php.
Чтобы добавить index.php в лист документов по умолчанию IIS,
используйте такую команду:
Пример #6 Установка index.php как документ по умолчанию в IIS
%windir%system32inetsrvappcmd.exe set config ^ -section:system.webServer/defaultDocument /+"files.[value='index.php']" ^ /commit:apphost
FastCGI и PHP удаление конфигурации
Настройка IIS FastCGI установок для утилизации PHP процессов с помощью команд приведена ниже.
Опция FastCGI instanceMaxRequests устанавливает максимальное количество запросов,
которое может обрабатываться одним php-cgi.exe процессом пока IIS не начнет их отключать.
PHP переменная окружения PHP_FCGI_MAX_REQUESTS устанавливает как много запросов
будет обрабатывать один php-cgi.exe процесс пока сам не начнет удалять их.
Конечно, значение установленное для FastCGI InstanceMaxRequests
меньше или равно PHP_FCGI_MAX_REQUESTS.
Пример #7 Настройка FastCGI и PHP утилизации
%windir%system32inetsrvappcmd.exe set config -section:system.webServer/fastCgi ^ /[fullPath='c:phpphp-cgi.exe'].instanceMaxRequests:10000 %windir%system32inetsrvappcmd.exe set config -section:system.webServer/fastCgi ^ /+"[fullPath='C:{php_folder}php-cgi.exe'].environmentVariables.^ [name='PHP_FCGI_MAX_REQUESTS',value='10000']"
Установка таймаута FastCGI
Увеличение параметра таймаута для FastCGI делается, если имеется долго выполняемый PHP скрипт.
Два параметра контролируют таймаут, это: activityTimeout и
requestTimeout. Используйте команды приведённые ниже для изменения настроек таймаута.
Конечно, надо заменить значение параметра fullPath на полный путь к файлу
php-cgi.exe.
Пример #8 Конфигурация установок таймаута FastCGI
%windir%system32inetsrvappcmd.exe set config -section:system.webServer/fastCgi ^ /[fullPath='C:phpphp-cgi.exe',arguments=''].activityTimeout:"90" /commit:apphost %windir%system32inetsrvappcmd.exe set config -section:system.webServer/fastCgi ^ /[fullPath='C:phpphp-cgi.exe',arguments=''].requestTimeout:"90" /commit:apphost
Изменение положения файла php.ini
PHP ищет файл php.ini
некоторых метах и это даёт нам возможность изменить
местоположения по умолчанию файла php.ini, используя переменную окружения
PHPRC. Чтобы указать PHP загружать конфигурационный файл из определённого места
используйте команды, приведённые ниже.
Абсолютный путь до директории, где лежит файл php.ini, определяется как значение
переменной окружения PHPRC.
Пример #9 Изменение положения файла php.ini
appcmd.exe set config -section:system.webServer/fastCgi ^ /+"[fullPath='C:phpphp.exe',arguments=''].environmentVariables.^ [name='PHPRC',value='C:SomeDirectory']" /commit:apphost
Вернуться к: Установка в системах Windows
Для работы с веб-проектами на базе популярных CMS (англ. Content Management System — система управления содержимым), таких как WordPress, Drupal, Joomla и др. необходим компонент, который бы обрабатывал скрипты PHP и преобразовывал бы их в код HTML, понятный браузеру. В данной статье рассмотрим 2 способа установки компоненты PHP на входящий в поставку Windows веб-сервер IIS (Internet Information Services) с помощью программы «Установщик веб-платформы» от компании Mocrosoft и вручную, с помощью официального инсталлятора.
0. Оглавление
- Установка и настройка веб-сервера IIS
- Установка компоненты PHP c помощью программы «Установщик веб-платформы» от компании Mocrosoft
- Установка компоненты PHP вручную, с помощью официального инсталлятора
1. Установка и настройка веб-сервера IIS
Прежде всего, у вас должен быть установлен веб-сервер IIS. Об установке IIS можно прочитать в статьях:
- Установка веб-сервера IIS 8 в Windows Server 2012 (R2)
- Установка веб-сервера IIS 7 в Windows Server 2008 (R2)
- Установка веб-сервера IIS 8 в Windows 8/8.1
Кроме того, в процессе установки помимо компонент по умолчанию обязательно должна быть установлена компонента FastCGI. Если же веб-сервер IIS уже установлен, но данная компонента не была выбрана, то это можно сделать и позже. Рассмотрим процесс установки компоненты FastCGI в Winows 8/8.1. Чтобы активировать FastCGI, проходим тот же путь, что и для активации IIS. Кстати, в Windows 8.1 нужный нам раздел панели управления «Программы и компоненты» удобно вынесен в контекстное меню кнопки «Пуск».
В открывшемся окне раздела кликаем «Включение и отключение компонентов Windows».
Раскрываем список «Службы IIS», в нём – «Службы Интернета», далее – «Компоненты разработки приложений». И уже в этом списке ставим галочку возле «CGI». Далее жмём «ОК» и дожидаемся, пока система настроит и применит изменения.
Далее рассмотрим 2 способа установки компоненты PHP на веб-сервер IIS:
2. Установка компоненты PHP с помощью программы «Установщик веб-платформы»
Установщик веб-платформы предоставляет собой небольшую программу, предоставляющую доступ к быстрой установке и настройке всего спектра продуктов, которые могут понадобиться для разработки или развертывания веб-сайтов и веб-приложений на базе платформы Windows. Скачать установщик веб-платформы можно на официальном сайте программы.
После скачивания запускаем инсталлятор и дожидаемся окончания установки. После того, как процесс установки будет завершен, мы попадем в главное окно программы, где можно увидеть огромное количество программ, компонент, сборок и пр. существующих для разработки веб-сайтов и веб-приложений. Необходимая нам компонента PHP также присутствует в данном списке. Найти ее проще всего вбив соответствующий запрос в поле поиска, расположенное в верхнем правом углу окна программы. Затем необходимо нажать кнопку «Добавить» в строке с компонентой требуемой версии (на момент написания статьи, актуальной была версия 5.63)
Данная компонента будет добавлена в список устанавливаемых элементов. Нажимаем «Установить» для установки приложений из этого списка.
Запустится мастер установки, принимаем условия лицензионного соглашения нажав кнопку «Принимаю».
И дожидаемся окончания установки, нажав «Готово» когда мастер закончит работу.
На этом в общем то и все. Компонента PHP успешно установлена. Аналогичным образом можно также добавить компоненту «Диспетчер PHP для IIS» с помощью которой можно будет настраивать компоненты PHP прямо из «Диспетчера служб IIS».
3. Установка компоненты PHP с помощью официального инсталлятора
Теперь рассмотрим процесс установки компоненты PHP вручную, т. е. с помощью инсталлятора. Дистрибутив PHP можно скачать с официального сайта. В нашем случае скачиваем инсталлятор PHP.
Запускаем инсталлятор PHP и в окне мастера установки жмём «Next».
Соглашаемся с лицензионными условиями. Жмём «Next».
Соглашаемся с путём установки, если нет необходимости его менять. Жмём «Next».
В следующем окне выбираем режим «IIS FastCGI», если текущая операционная система — Windows Server. Если работа происходит в Windows 7, 8, 8.1, выбираем режим «Other CGI». И жмём «Next».
Затем, ничего не меняя, жмём «Next».
Следующий шаг – запуск самой инсталляции. Жмём «Install».
По завершению инсталляции жмём «Finish».
В довесок к самому PHP также установим плагин для его управления в «Диспетчере служб IIS». Плагин PHP Manager for IIS, в соответствии с разрядностью операционной системы, скачиваем с официального сайта.
Запускаем установку плагина. Если на компьютере не установлена программная платформа NET Framework, инсталлятор плагина предложит отправиться на официальный сайт для скачивания её дистрибутива. И только после установки NET Framework и перезагрузки компьютера плагин PHP Manager for IIS захочет устанавливаться без каких-либо проблем. Жмём «Next».
Соглашаемся с лицензионными условиями и жмём снова «Next».
По завершению установки плагина закрываем окно установщика.
Запускаем «Диспетчер служб IIS». Если все действия осуществлены корректно, в «Диспетчере служб IIS» увидим появившийся раздел «Администратор PHP». Заходим сюда двойным щелчком.
Для дальнейшем работы потребуется зарегистрировать компоненту PHP – увидим активной ссылку регистрации новой версии PHP. Жмём её.
В появившемся окошке указываем путь к запрашиваемому исполняемому файлу и нажимаем «ОК».
Это завершающий этап настройки PHP.
Установим PHP на IIS. Ставить будем PHP 8.0 на IIS 10. IIS крутится на сервере с Windows Server 2016.
Если вы хотите настроить PHP используя в качестве веб-сервера IIS, то проще всего это сделать используя
Microsoft Web Platform Installer (WebPI).
Заходим по ссылке:
Нажимаем зелёную кнопку Install this extension и качаем инсталлятор.
Запускаем WebPlatformInstaller_x64_en-US.msi.
Открывается мастер установки WebPI.
Принимаем лицензионное соглашение — Install.
Ждём.
Установка завершена, это было несложно. Finish.
Находим в установленных программах Web Platform Installer и запускаем.
Ждём. Открывается окошко.
Кликаем на вкладку Products. Слева выбираем Frameworks. Находим в списке PHP 8.0.0 (x64).
Тыкаем в Add. Вместе с PHP автоматически добавляются и другие модули, например, PHP Manager for IIS. У меня он уже стоял, но вы поставьте тоже, пригодится для IIS.
Install.
Соглашаемся — I Accept.
Полетела установка.
PHP 8.0.0 (x64) установлен. Установка производится по умолчанию в:
C:Program FilesPHPv8.0
Там же лежит конфигурационный файл php.ini, который нужно настроить под свои нужды.
PHP Manager for IIS
PHP Manager for IIS может не устанавливаться с ошибкой:
We’re sorry. The following product have failed to install.
Возвращаемся обратно и удаляем из списка PHP Manager for IIS. Устанавливаем только PHP 8.
Гуглим ссылочку:
https://www.iis.net/downloads/community/2018/08/php-manager-20-beta-1-for-iis
У меня уже установлен PHP Manager, но более старой версии. Удаляю старый. Качаю новый и запускаю инсталлятор.
Next.
Принимаем лицензионное соглашение, Next.
Next.
Install.
Ждём.
Finish.
В IIS появляется новая оснастка под названием PHP Manager.
Для каждого сайта можно выбирать свою PHP версию, регистрировать новые, управлять расширениями и т.д.
IIS — служба Microsoft Windows, предназначенная для развертывания web-сервера. Служба IIS является отдельной функцией ОС, и изначально она не установлена.
Установка для Windows Server 2012
Устанавливаем и настраиваем службу IIS
Заходим в «Диспетчер серверов», нажимаем на вкладку «Управление» и выбираем «Добавить роли и компоненты».
Откроется «Мастер добавления ролей и компонентов». В разделе «Перед началом работы» ознакомимся с информацией и нажмем кнопку «Далее».
В разделе тип «Тип установки» выбираем «Установка ролей или компонентов» и жмем «Далее»
Ставим флажок на «Выберите сервер из пула серверов», выбираем сервер и нажимаем «Далее».
Отмечаем «Веб-сервер (IIS)».
Появится окно, в нем необходимо нажать «Добавить компоненты». Затем нажимаем «Далее».
После этого откроется информационный раздел «Роль веб-сервера (IIS)», ознакомить с ним и нажмите «Далее».
Открываем «Службы ролей», и в «Разработке приложений» отмечаем все, кроме «Инициализация приложений».
После этого появится надпись об отсутствии исходников. Интернет должен быть включен, нажимаем «Установить», далее установка пройдет в автоматическом режиме.
По окончанию инсталляции настраиваем веб-сервер IIS.
Открываем «Диспетчер серверов» переходим в «IIS» нажимаем «Средства», и из списка выбираем «Диспетчер служб IIS».
Мы видим созданный веб-сайт. Для его просмотра на правой панели нажимаем «Обзор *:80 (http)»
При его просмотре откроется приветственная страница.
Устанавливаем PHP
Для установки PHP потребуется скачать PHP Manager for IIS и необходимую вам версию PHP (рекомендуем 5.6.40).
Скачиваем архив с файлами PHP и распаковываем его в С:php.
Затем скачиваем и устанавливаем PHP Manage For IIS. Дальше везде кликаем «Next».
По окончанию инсталляции в Диспетчере служб IIS появится иконка «Администратор PHP». Кликаем по ней.
Далее нажимаем «зарегистрировать новую версию PHP».
При регистрации переходим в папку С:php и выбираем файл «php-cgi.exe».
Проверяем работоспособность РНР. В этой же вкладке кликаем «проверить phpinfo()».
Если при открытии тестовой страницы появилась ошибка «HTTP 500.0 — Internal Server Error», то нужно установить пакет Visual C++ для Visual Studio 2012.
Для этого переходим на сайт Microsoft и скачиваем «Распространяемый пакет Visual C++ для Visual Studio 2012 Обновление 4».
Выбираем VSU4vcredist_x64.exe.
Затем устанавливаем его на сервере и снова нажимаем «проверить phpinfo()».
Устанавливаем MySQL
Скачиваем версию MySQL необходимую для вашего проекта и запускаем установщик.
Читаем лицензионное соглашение, ставим галочку и нажимаем «Next».
Выбираем «Developer Default» и нажимаем «Next».
Затем нажимаем «Execute» и ждем пока установщик проверит конфигурацию, при необходимости загрузит недостающие компоненты, а затем нажмем «Next».
Соглашаемся с лицензией и запускаем установку.
Параметры сети для MySQL сервера оставляем по умолчанию и нажимаем «Next».
Задаем пароль для root пользователя и нажимаем «Next».
Дальнейшие настройки оставляем по умолчанию и и нажимаем «Next».
Присоединяемся к серверу MySQL серверу.
Принимаем настройки и нажимаем «Finish».
Откроется MySQL Workbench нажмем на «Local instance MySQL» и в появившемся окне введем заданный ранее пароль.
Откроется окно управления нашим MySQL-сервером.
Установка модуля rewrite
Скачиваем Модуль переопределения URL-адресов (URLRewriter) 2.0 для IIS с сайта Microsoft.
Запускаем установщик, читаем лицензионное соглашение, ставим галочку о согласии и нажимаем «Установить».
Ждем завершения установки и нажимаем «Готово»
Установка для Windows Server 2019
Установка для Windows Server 2019 не имеет значительных отличий, но при добавлении ролей и компонентов не нужно указывать «.NET Extensibility» 3.5 и «ASP.NET 3.5».