Install php windows server

В данной статье мы научимся устанавливать PHP на Windows Server. Существует несколько способов установки PHP, включая PHP Manager for IIS от Microsoft, но мы остановимся на универсальном способе установки, который позволит установить PHP даже без привязки, например к IIS. Интегрировать PHP и IIS не сложно.

Для каждой версии PHP существует два варианта PHP: Non Thread Safe и Thread Safe

Thread Safe — потоко безопасная. Выбираем этот вариант, если PHP используется как mod_php (модуль Apache). В большинстве случаев, в связке с веб-сервером IIS, для операционной системы Windows Server вариант Thread Safe не подходит.

Non Thread Safe — потоконебезопасная версия PHP. Используется в случаях, когда PHP запускается через CGI и каждый поток, это отдельный, изолированный от других процесс CGI и нет необходимости в потокобезопасноcти. При этом скорость обработки запросов выше. Non Thread Safe также необходимо выбирать, если планируется использовать FastCGI. Как раз этот режим работы рекомендуется использовать в работе IIS + PHP.

Для установки PHP необходимой версии, перейдем на страницу скачивания PHP для Windows и скачаем zip архив VS16 x64 Non Thread Safe необходимой нам версии PHP. В данном примере будем использовать PHP 8.1

Далее, создадим на диске сервера папку, в которую необходимо разархивировать скачанный архив. Например, C:\php

Кроме того, для работы PHP на операционной системе Windows необходим пакет Microsoft Visual Studio.

Так как мы выбрали версию VS16 x64, на этой же странице сайта есть ссылка на скачивание необходимой версии Microsoft Visual Studio, а именно Visual Studio 2015-2019

Скачаем и установим: Во время установки не изменяем предлагаемые настройки и дожидаемся завершения.

Дополнительно рекомендуется прописать путь к PHP в глобальной переменной PATH. Для этого откроем окно Свойств системы: Пуск — Выполнить и выполним команду

control system

Далее откройте окно дополнительных свойств системы (Advanced sysytem setting) — вкладка Дополнительно (Advanced) — нажмите кнопку Переменные среды (Environmant Variables)

Добавьте путь к папке, в которой размещен PHP в значение переменной PATH. В нашем случае, это папка C:\php; (после указанного пути обязательно поставьте точку с запятой)

Сохраните изменения, поочередно нажимая ОК в открытых окнах.

Чтобы узнать установленную версию PHP, в окне командной строки выполним команду

php -v

При этом нет надобновти перехода в каталог С:/php так как ранее путь к исполняемому файлу PHP был добавлен в переменные окружения.

В данной статье мы научились устанавливать PHP необходимой версии на Windows Server.

@echo off

REM download .ZIP file of PHP build from http://windows.php.net/downloads/

REM path to directory into which PHP .ZIP file was decompressed (no trailing \)
set phppath=c:\php


REM Clear current PHP handlers
%windir%\system32\inetsrv\appcmd 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%\system32\inetsrv\appcmd set config /section:system.webServer/handlers /-[name='PHP_via_FastCGI']

REM Set up the PHP handler
%windir%\system32\inetsrv\appcmd set config /section:system.webServer/fastCGI /+[fullPath='%phppath%\php-cgi.exe']
%windir%\system32\inetsrv\appcmd set config /section:system.webServer/handlers /+[name='PHP_via_FastCGI',path='*.php',verb='*',modules='FastCgiModule',scriptProcessor='%phppath%\php-cgi.exe',resourceType='Unspecified']
%windir%\system32\inetsrv\appcmd set config /section:system.webServer/handlers /accessPolicy:Read,Script

REM Configure FastCGI Variables
%windir%\system32\inetsrv\appcmd set config -section:system.webServer/fastCgi /[fullPath='%phppath%\php-cgi.exe'].instanceMaxRequests:10000
%windir%\system32\inetsrv\appcmd.exe set config -section:system.webServer/fastCgi /+"[fullPath='%phppath%\php-cgi.exe'].environmentVariables.[name='PHP_FCGI_MAX_REQUESTS',value='10000']"
%windir%\system32\inetsrv\appcmd.exe set config -section:system.webServer/fastCgi /+"[fullPath='%phppath%\php-cgi.exe'].environmentVariables.[name='PHPRC',value='%phppath%\php.ini']"

PHP — широко используемый скриптовый язык программирования общего назначения, который часто применяется для разработки динамических веб-сайтов и веб-приложений. Он является одним из наиболее популярных языков программирования в веб-разработке благодаря своей гибкости, простоте использования и богатому функционалу.

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

Предварительная настройка сервера

Итак, в нашем распоряжении виртуальный выделенный сервер с Windows Server 2016, на котором установлен веб-сервер IIS. Если вы настраивали свой IIS-сервер в соответствии со статьёй нашего справочника, то сначала вам нужно будет добавить в настройках веб-сервера поддержку протокола CGI.

Для этого запустите Server Manager.

Запуск Диспетчера Серверов - Установка PHP на веб-сервер IIS

После чего перейдите Manage 🠖 Add Roles and Features.

Затем пройдите окна при помощи кнопки Next не внося изменений до окна Select server roles, где перейдите в Web Server (IIS) 🠖 Web Server 🠖 Application Development. После чего в открывшемся списке активируйте строку CGI. Для продолжения нажмите Next.

Добавление роли CGI - Установка PHP на веб-сервер IIS

Следующие шаги так же пропустите при помощи кнопки Next. И для внесения требуемого изменения в настройку веб-сервера в окне Confirm installation selection нажмите Install.

Запуск добавления роли CGI - Установка PHP на веб-сервер IIS

После завершения установки роли CGI проинсталлируйте в системе распространяемый компонент Microsoft Visual C++ для Visual Studio 2015 — 2022 для 64-х разрядной системы.

После загрузки установщика установите галочку, означающую ваше согласие с условиями лицензионного соглашения, и нажмите Install.

Установка Microsoft Visual C++ 2015-2022

Windows-дистрибутив актуальной версии PHP можно загрузить с официальной страницы PHP. В нашем примере мы загружаем zip-архив версии 8.3.4 для 64-х разрядных систем.

Загрузка zip-архива PHP для Windows

Содержимое архива распакуйте, например, в каталог PHP на диске C:.

После этого информацию о каталоге, содержащем файлы PHP, необходимо добавить в настройку переменных среды окружения. Для чего откройте Server Manager, перейдите в Local Server и нажмите в название вашего сервера в строке Computer name. В открывшемся окне переключитесь на вкладку Advanced и кликните в Environment Variables.

Настройка переменных окружения - Установка PHP на веб-сервер IIS

В нижней части открывшегося окна кликните в строку Path и нажмите Edit.

Редактирование переменной Path - Установка PHP на веб-сервер IIS

Для добавления новой переменной окружения нажмите New.

Добавление значения в переменную Path

В новой строке наберите C:\PHP, затем нажмите ОК.

Значение C:\PHP в переменной Path

Чтобы информация о добавленной переменной сохранилась в системе, закройте открытые окна нажатием на ОК.

На следующем шаге откройте проводник, перейдите в каталог C:\PHP, отыщите там файл php.ini-production и переименуйте его в php.ini.

Переименование файла php.ini-production в php.ini

Чтобы убедиться в применении изменений в настройки, запустите командную строку и выполните там команду php -info. Вывод команды не должен содержать ошибок, и при этом на экране должна появиться подробная информация о версии PHP, компиляции, модулях, настройках конфигурации и многое другое.

Вывод команды php -info - Установка PHP на веб-сервер IIS

Изменение настроек веб-сайта

Для того, чтобы соединить IIS и установленный на сервере PHP, необходимо произвести дополнительные настройки на веб-сервере. Чтобы сделать это, откройте Server Manager, перейдите в раздел IIS, нажмите правую кнопку мыши на строке с сервером и в открывшемся меню выберите Internet Information Services (IIS) Manager.

Запуск менеджера IIS - Установка PHP на веб-сервер IIS

В открывшемся окне менеджера IIS кликните в строку с веб-сервером и перейдите в Handler Mappings.

Handler Mappings в настройках сервера IIS

Далее, в правой части окна кликните в Add Module Mapping.

Добавление модуля в Handler Mappings

В открывшемся окне добавления нового модуля заполните следующие поля:

  • Request path: здесь укажите *.php.
  • Module: в этом поле из выпадающего списка выберите FastCgiModule.
  • Executable: здесь укажите исполняемый файл модуля — C:\PHP\php-cgi.exe.
  • Name: в данной строке укажите название добавляемого модуля, в нашем примере это — PHP.

По окончании заполнения полей нажмите Request Restrictions.

Содержимое добавляемого модуля

Здесь из доступных радиокнопок выберите File or folder и нажмите OK.

Окно Request Restrictions - Установка PHP на веб-сервер IIS

Окно добавления модуля также закройте кнопкой ОК.

Далее в менеджере IIS откройте Default Document.

Default Document в настройках сервера IIS

Затем в правой части окна кликните Add.

Добавление элемента в Default Document

И укажите дефолтное имя PHP-страницы для нашего веб-сайта — index.php, и нажмите ОК.

Чтобы применить все внесённые в настройки сервера IIS изменения, необходимо перезапустить его. Для чего на имени веб-сервера нажмите правую кнопку мыши и кликните Stop. После того, как служба остановится, также нажмите правую кнопку мыши и кликните Start.

Остановка сервера IIS - Установка PHP на веб-сервер IIS

В итоге сервер IIS теперь сможет оперировать PHP-файлами. В качестве примера мы выведем информацию о PHP через веб-страницу. Для этого перейдите в каталог веб-сайта, например, C:\inetpub\your-domain.host, и создайте там файл index.php. Затем скопируйте в него следующее содержимое:

<?php phpinfo(); ?>

Затем сохраните созданный файл, откройте браузер и перейдите на свой веб-сайт набрав в строке браузера доменное имя сайта или его IP-адрес.

В нашем примере данная страница выглядит так:

Вывод phpinfo() через веб-страницу

Опубликовано:

Используемые термины: 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:

Установка CGI

При выборе компонентов ничего не меняем — нажимаем Далее:

Выбор компонентов

Откроется окно настройки роли веб-сервера — просто нажимаем Далее:

Роль веб-сервера

Выбор служб ролей — нажимаем далее или, при необходимости, выбираем FTP-сервер:

Выбор служб ролей

В следующем окне ставим галочку Автоматический перезапуск конечного сервера, если требуется и кликаем по Установить:

Подтверждение компонентов установки

Дожидаемся окончания процесса установки.

Сразу после установки IIS запускается автоматически. Но, если что, его можно запустить с помощью команды iisreset:

iisreset /start

* если выполнить данную команду без опций, то она перезапустить веб-сервер.

Также мы можем открыть диспетчер служб (команда services.msc) и перезапустить Службу веб-публикаций:

Служба веб-публикаций

Открываем браузер и вводим адрес http://localhost — должен открыться стартовый портал:

Проверка загрузки стартового сайта

Развертывание отдельного сайта

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

Открываем Диспетчер серверов — кликаем по СредстваДиспетчер служб IIS:

Запуск диспетчера служб IIS

Находим раздел сайты — кликаем правой кнопкой мыши по Добавить веб-сайт…:

Добавление нового сайта в IIS

Заполняем данные для нового сайта:

Данные для нового сайта

* где:

  • Имя сайта — произвольно имя будущего сайта.
  • Физический путь — путь до папки на сервере, где будут расположены файлы сайта.
  • Тип — тип соединения (http или https). Для первого запуска обойдемся http. При необходимости, его можно всегда поменять или использовать оба типа одновременно.
  • IP-адрес — если на сервере много IP-адресов, то мы можем выбрать конкретный, на котором будет работать сайт.
  • Порт — сетевой порт, на котором будет работать сайт. Как правило, это 80 для http или 443 для https.
  • Имя узла — доменное имя сайта, при обращении по которому должен открываться создаваемый сайт.

После заходим в каталог с сайтом (в нашем примере, это C:\inetpub\wwwroot\php) и создадим в нем файл index.html со следующим содержимым:

<h1>Hello from PHP site</h1>

Открываем браузер и переходим на созданный сайт, например, как в нашей инструкции — http://php.dmosk.ru. Мы должны увидеть страницу с написанным нами текстом:

Загрузка тестовой страницы

Тестовый сайт создан.

PHP

Установка PHP

Для установки php на Windows переходим на страницу загрузки PHP — выбираем нужную нам версию, например, последнюю стабильную и переходим по ссылке для загрузки версии для Windows:

Переходим к загрузке PHP для Windows

Откроется страница с несколькими версиями пакета — там как мы ставим PHP как FastCGI, нам нужна версия «Non Thread Safe» (не потокобезопасная), так как она будет работать быстрее. И так, скачиваем zip-архив на сервер:

Загрузка PHP-архива zip для Windows

Для установка PHP на Windows достаточно просто распаковать содержимое архива в любой каталог, например, C:\Program Files\PHP:

Распакованные файла из архива PHP

Делаем копию файла php.ini-production и переименовываем его в php.ini:

Открываем на редактирование данный файл и правим следующее:

open_basedir = C:\inetpub\wwwroot

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 Files\PHP»

Запускаем php с параметром -m:

php -m

Мы должны получить список подключенных модулей:

[PHP Modules]
bcmath
calendar
Core
ctype

Но если мы получим ошибку, связанную с отсутствием файла VCRUNTIME140.dll:

Ошибка при отсутствии файла 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:\inetpub\wwwroot\php). Создаем файл index.php с содержимым:

Открываем браузер и снова переходим на наш сайт — мы должны увидеть страницу с информацией о php:

phpinfo в браузере

PHP Manager в IIS

Для того, чтобы упростить настройку PHP мы можем установить диспетчер PHP для IIS. Для этого переходим по ссылке https://www.iis.net/downloads/community/category/manage и переходим по ссылке для скачивания стабильной версии php-менеджера:

Скачиваем PHP Manager для IIS

Скачиваем дополнение:

Загрузка дополнения PHP Manager для IIS

Выполняем установку на сервере, запустив загруженный файл. Открываем диспетчер управления IIS — мы должны увидеть PHP Manager:

PHP Manager для IIS

Установка MySQL

MySQL для Windows можно скачать бесплатно. Переходим на страницу https://dev.mysql.com/downloads/mysql/ — выбираем операционную систему Microsoft Windows — кликаем по Go to Download Page:

Выбор операционной системы и переход к загрузке MySQL

На следующей странице выбираем для скачивания mysql-installer-community:

Скачиваем MySQL для Windows

В открывшемся окне кликаем по No thanks, just start my download:

Пропускаем регистрации и скачиваем сервер

Начнется загрузка файла для установки MySQL. Дожидаемся скачивания и запускаем установочный файл — в открывшемся окне выбираем Server only:

Выбираем установку сервера MySQL

В следующем окне кликаем по Execute:

Все готово для установки MySQL на Windows

… и дожидаемся установки СУБД:

Установка MySQL завершена

Откроется окно конфигурации MySQL — нажимаем Next:

Начало настройки MySQL сразу после установки

Выбираем установку одиночного сервера MySQL:

Выбираем вариант установки сервера

Оставляем все значения по умолчанию для настроек сети:

Сетевые настройки для MySQL

Требуем сложные пароли:

Настройка сложности пароля

Вводим дважды пароль для пользователя root:

Вводим новый пароль для пользователя root

* также, на данном этапе мы можем сразу добавить новых пользователей.

Устанавливаем СУБД как сервис и стартуем его:

Установка MySQL в качестве службы Windows

Настройки готовы для применения — нажимаем Execute:

Все готово для конфигурирования MySQL

Дожидаемся применения настроек и кликаем по Next:

Конфигурирование MySQL завершено

Настройка завершена:

Настройка СУБД завершена

Установка завершена — нажимаем Finish.

Установка MySQl на Windows выполнена успешно

Сервер баз данных готов к использованию.

По умолчанию, PHP поддерживаем mysql — в этом можно убедиться на странице phpinfo, найдя раздел mysqlnd:

mysqlnd должен быть включен в php

Сегодня мы будем с вам устанавливать PHP 8.1 на Windows Server 2016 для web-сервера IIS 10.

Начиная с этой версии PHP установка сильно усложнилась. Microsoft Web Platform Installer (WebPI), которым раньше я пользовался для установки PHP больше не работает, так что устанавливать приходится вручную. Возня с дополнительными расширениями тоже приключение. Очень печально, что для Windows Server 2016 нет нормальных способов установки.

Дистрибутив PHP 8.1

https://www.php.net/downloads

php

Переходим на официальный сайт PHP в раздел загрузок, находим PHP 8.1, и тыкаем в ссылку Windows downloads.

https://windows.php.net/download#php-8.1

Попадаем на windows.php.net, можно было и сразу сюда пойти.

php

Доступны две версии PHP:

  • Non Thread Safe
  • Thread Safe

По какой-то странной причине в большинстве инструкций показывают, что нужно ставить версию Thread Safe, это в корне неверно. Примечательно, что про «TS and NTS» на той же странице загрузок всё написано.

Версию нужно выбирать в зависимости от того, как вы интегрируете PHP c веб-сервером. Когда вы используете mod_php, у вас модуль и PHP всегда загружены в память и каждый запрос обрабатывается в отдельном потоке. Из-за этого mod_php работает быстрее, чем CGI. В данном случае нужно использовать потокобезопасную реализацию (thread-safe) поскольку каждый поток имеет доступ к памяти другого потока. Здесь мы мягко намекаем на Linux.

Когда вы работаете с IIS,  здесь мы мягко намекаем на Windows, у вас PHP запускается в виде отдельного процесса посредством CGI. В таком случае потокобезопасность не имеет смысла, поскольку у вас один процесс и один поток созданный этим процессом. Операционная система изолирует память процессов по умолчанию, NTS в этом случае работает быстрее.

В случае модели с FastCGI, потокобезопасность также не имеет смысла, поскольку тот же PHP-FPM держит несколько отдельных процессов PHP в памяти, но не потоков. Тоже имейте в виду.

В нашем случае (Windows, IIS, CGI) нам нужна версия PHP NTS — Non Thread Safe. Скачиваем соответствующий ZIP архив, распаковываем.

php

Создаём папку C:\Program Files\PHP\v8.1, копируем в неё содержимое архива.

php

Права доступа

В папке C:\Program Files\PHP выше уровнем у вас может находиться несколько версий PHP. На неё нужно дать права IIS. Удобнее вешать права на неё, чтобы они применялись ко всем версиям PHP через наследование.

php

Не помню каким точно юзерам надо права, напишите уточнение в комментариях, кто знает, я даю двум юзерам IUSR и IIS_IUSRS права:

  • чтение
  • чтение и выполнение
  • чтение списка содержимого директории

Серверные переменные

Настроим серверные переменные. Свойства компьютера или Control Panel → System and Security → System. Advanced System Settings.

php

Вкладка Advanced, кнопка Environment Variables…

php

Блок System variables, находим переменную Path, выделяем её. Edit.

php

Добавляем новый путь:

C:\Program Files\PHP\v8.1

php

Кнопкой Move Up поднимаем его выше остальных версий PHP, если они у вас есть. OK, OK, OK.

В командной строке проверяем:

php --version

php

По умолчанию теперь используется PHP 8.1.26.

PHP и IIS

IIS и PHP можно подружить вручную, но мне лень. Использую для этих целей PHP Manager for IIS.

https://github.com/phpmanager/phpmanager/releases

Я уже ставил его ранее, приведу инструкцию для версии 2.4:

Запускаю инсталлятор.

php

Next.

php

Принимаем лицензионное соглашение, Next.

php

Next.

php

Install.

php

Ждём.

php

Finish.

В IIS появляется новая оснастка под названием PHP Manager.

php

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

Однако, если вы собираетесь обновить версию PHP Manager for IIS, то сначала удаляйте старую, потом устанавливайте новую. Я обновил до версии 2.12.

Выбираем в IIS сайт или сам сервер, запускаем оснастку PHP Manager.

php

Зарегистрируем новую версию PHP. Register new PHP version.

php

Указываем путь к php-cgi.exe.

C:\Program Files\PHP\v8.1\php-cgi.exe

OK.

php

Путь к файлу php.ini и логу ошибок подставляется автоматически.

php.ini

Теперь нужно настроить php.ini я уже не помню что раньше настраивал для прежней версии PHP, поэтому воспользуюсь сравнением файлов с помощью Total Commander.

Сравнить файлы с помощью Total Commander

Расширения можно искать здесь:

http://pecl.php.net/

php

Понравилась статья? Поделить с друзьями:
0 0 голоса
Рейтинг статьи
Подписаться
Уведомить о
guest

0 комментариев
Старые
Новые Популярные
Межтекстовые Отзывы
Посмотреть все комментарии
  • Панель бар для windows 10
  • Как перенести систему с диска на диск windows 10
  • Windows 10 net send не работает
  • Как выйти из тестового режима windows 11 pro
  • Как убрать фон панели задач windows 10