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

Установка PHP 8.1 на IIS 10

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

Теги

 

Похожие материалы

Установка PHP 7.3.1 на IIS 10

Расскажу вам о наиболее оптимальном способе установки PHP на IIS. Ставить будем PHP 7.3.1 на IIS 10. IIS крутится на сервере с Windows Server 2016. Раньше я устанавливал PHP руками, помните, что для Windows нужно выбирать PHP NTS версию. Однако, теперь решил последовать совету с официального сайта. 

Теги