Установка PHP 5 на IIS 6: Подробное Руководство
Введение
Windows Server 2003 с установленным Internet Information Services (IIS) 6.0 был одной из самых популярных платформ для размещения веб-сайтов, особенно тех, которые использовали ASP.NET. Однако, IIS 6.0 также мог успешно работать с PHP, хотя настройка требовала некоторой ручной работы. Хотя PHP 5 является устаревшей версией, иногда необходимо поддерживать старые приложения, требующие именно этой версии. В этой статье мы подробно рассмотрим процесс установки и настройки PHP 5 на IIS 6.0.
Почему может понадобиться PHP 5 на IIS 6?
Несмотря на наличие более новых версий PHP и IIS, существуют ситуации, когда установка PHP 5 на IIS 6 может быть необходимой:
* **Поддержка устаревших приложений:** Некоторые старые веб-приложения были разработаны и протестированы исключительно для PHP 5. Обновление до более новых версий PHP может привести к несовместимости и необходимости переписывания значительной части кода.
* **Ограничения инфраструктуры:** В некоторых случаях обновление операционной системы или IIS может быть затруднено или невозможно из-за аппаратных ограничений или других зависимостей.
* **Тестирование и разработка:** Для воспроизведения проблем или разработки исправлений для старых приложений может потребоваться среда, идентичная той, в которой они были развернуты.
Важно отметить, что использование устаревших версий программного обеспечения, таких как PHP 5, несет определенные риски безопасности. Рекомендуется тщательно оценивать риски и принимать меры по их смягчению, такие как использование брандмауэра, регулярное сканирование на уязвимости и ограничение доступа к серверу.
Прежде чем начать
Перед началом установки убедитесь, что у вас есть следующее:
* **Windows Server 2003 с установленным IIS 6.0:** Убедитесь, что IIS установлен и работает. Вы можете проверить это, открыв Internet Explorer и перейдя по адресу `http://localhost`. Если IIS установлен правильно, вы увидите страницу приветствия IIS.
* **Права администратора:** Для установки и настройки PHP вам потребуются права администратора на сервере.
* **Дистрибутив PHP 5:** Скачайте подходящий дистрибутив PHP 5. Обычно это ZIP-архив. Важно выбрать версию, совместимую с вашей архитектурой (32-bit или 64-bit). Рекомендуется искать дистрибутив PHP 5.6, так как это одна из наиболее стабильных и поддерживаемых версий PHP 5.
* **Visual C++ Redistributable для Visual Studio 2012 (или соответствующий для версии PHP 5):** Некоторые версии PHP 5 требуют установки Visual C++ Redistributable. Убедитесь, что у вас установлена подходящая версия. Информацию о необходимой версии Visual C++ Redistributable можно найти в документации к дистрибутиву PHP.
Шаг 1: Скачивание и распаковка PHP 5
1. **Скачайте дистрибутив PHP 5:** Перейдите на сайт, предлагающий старые версии PHP. Официальный сайт PHP может не предоставлять прямые ссылки на старые версии, поэтому вам может потребоваться поиск на сторонних ресурсах. Будьте внимательны и скачивайте дистрибутивы только с надежных источников.
2. **Распакуйте архив PHP 5:** Создайте папку `C:\PHP5` (или любое другое удобное для вас место) и распакуйте содержимое скачанного ZIP-архива в эту папку. Убедитесь, что в папке `C:\PHP5` находятся файлы `php.exe`, `php5ts.dll` и другие файлы PHP.
Шаг 2: Настройка PHP
1. **Переименуйте `php.ini-recommended`:** В папке `C:\PHP5` найдите файл `php.ini-recommended`. Сделайте его копию и переименуйте копию в `php.ini`. Этот файл содержит настройки PHP.
2. **Отредактируйте `php.ini`:** Откройте файл `php.ini` в текстовом редакторе (например, Notepad). Внесите следующие изменения:
* **`extension_dir`:** Найдите строку `; extension_dir = “ext”` и измените ее на `extension_dir = “C:\PHP5\ext”`. Уберите точку с запятой в начале строки, чтобы раскомментировать ее. Укажите правильный путь к папке, содержащей расширения PHP.
* **`date.timezone`:** Найдите строку `;date.timezone =` и добавьте свою временную зону, например, `date.timezone = Europe/Moscow`. Список поддерживаемых временных зон можно найти в документации PHP.
* **Включите необходимые расширения:** Найдите разделы, начинающиеся с `;extension=`. Удалите точку с запятой перед расширениями, которые вам необходимы. Например, для работы с MySQL вам потребуется раскомментировать строку `;extension=php_mysql.dll` (или `extension=php_mysqli.dll` для MySQLi).
* **`cgi.force_redirect`:** Установите `cgi.force_redirect = 0`. Эта настройка важна для работы PHP с IIS.
* **`cgi.fix_pathinfo`:** Установите `cgi.fix_pathinfo = 1`. Это помогает PHP правильно обрабатывать URL-адреса.
* **(Опционально) `upload_max_filesize` и `post_max_size`:** Если вам необходимо загружать большие файлы, увеличьте значения `upload_max_filesize` и `post_max_size`. Например, `upload_max_filesize = 20M` и `post_max_size = 20M`.
* **(Опционально) `memory_limit`:** Если вы столкнулись с ошибками, связанными с нехваткой памяти, увеличьте значение `memory_limit`. Например, `memory_limit = 128M`.
3. **Сохраните `php.ini`:** Сохраните внесенные изменения в файл `php.ini`.
Шаг 3: Настройка IIS 6
1. **Откройте диспетчер IIS:** Перейдите в «Пуск» -> «Администрирование» -> «Диспетчер служб IIS» (Internet Information Services (IIS) Manager).
2. **Свойства веб-сайта:** В диспетчере IIS найдите свой веб-сайт (обычно это «Веб-узел по умолчанию»). Щелкните правой кнопкой мыши по веб-сайту и выберите «Свойства» (Properties).
3. **Вкладка «Домашний каталог» (Home Directory):** Перейдите на вкладку «Домашний каталог» (Home Directory).
4. **Настройка приложения:** В разделе «Настройка приложения» (Application Settings) нажмите кнопку «Настройка» (Configuration).
5. **Сопоставления приложений (Mappings):** Откроется окно «Сопоставления приложений» (Application Configuration). Нажмите кнопку «Добавить» (Add).
6. **Добавление сопоставления .php:** В появившемся окне «Добавить сопоставление приложений» (Add Application Mapping) выполните следующие действия:
* **Исполняемый файл (Executable):** Укажите полный путь к файлу `php5isapi.dll`. Обычно это `C:\PHP5\php5isapi.dll`.
* **Расширение (Extension):** Введите `.php`.
* **Глаголы (Verbs):** Выберите «Все глаголы» (All Verbs).
* **Снимите флажок «Проверить существование файла» (Check that file exists).** Это важно для правильной обработки URL-адресов.
* Нажмите кнопку «ОК» (OK).
7. **Добавление сопоставления .php5:** Повторите шаги 5 и 6, но на этот раз в поле «Расширение» (Extension) введите `.php5`. Укажите тот же исполняемый файл (`C:\PHP5\php5isapi.dll`).
8. **Порядок обработки:** В окне «Сопоставления приложений» (Application Configuration) убедитесь, что сопоставления `.php` и `.php5` находятся выше в списке, чем сопоставления для ASP.NET (например, `.aspx`). Если это не так, выберите сопоставление `.php` и нажмите кнопку «Вверх» (Move Up) до тех пор, пока оно не окажется выше сопоставлений ASP.NET. Повторите для `.php5`.
9. **Настройка расширений ISAPI:** Перейдите на вкладку «ISAPI-фильтры» (ISAPI Filters). Если там уже есть фильтр для PHP, пропустите этот шаг. В противном случае, нажмите кнопку «Добавить» (Add).
* **Имя фильтра (Filter Name):** Введите `PHP` (или любое другое понятное вам имя).
* **Исполняемый файл (Executable):** Укажите полный путь к файлу `php5isapi.dll`. Обычно это `C:\PHP5\php5isapi.dll`.
* Нажмите кнопку «ОК» (OK).
10. **Вкладка «Документы» (Documents):** Перейдите на вкладку «Документы» (Documents).
11. **Добавьте index.php:** В разделе «Документы по умолчанию» (Enable Default Document) нажмите кнопку «Добавить» (Add).
* **Имя документа (Document Name):** Введите `index.php`.
* Нажмите кнопку «ОК» (OK).
12. **Перезапустите IIS:** После внесения всех изменений необходимо перезапустить IIS, чтобы изменения вступили в силу. Это можно сделать, открыв командную строку (cmd) и выполнив команду `iisreset`.
Шаг 4: Тестирование установки PHP
1. **Создайте файл `phpinfo.php`:** Создайте текстовый файл с именем `phpinfo.php` и поместите его в корневой каталог вашего веб-сайта (обычно это `C:\Inetpub\wwwroot`).
2. **Добавьте следующий код PHP в файл `phpinfo.php`:**
php
3. **Откройте `phpinfo.php` в браузере:** Откройте Internet Explorer (или любой другой браузер) и перейдите по адресу `http://localhost/phpinfo.php` (или `http://<имя_вашего_сервера>/phpinfo.php`, если вы обращаетесь к серверу с другого компьютера).
4. **Проверьте информацию PHP:** Если PHP установлен правильно, вы увидите страницу с информацией о конфигурации PHP. Убедитесь, что версия PHP соответствует той, которую вы установили, и что включены необходимые расширения.
5. **Устранение неполадок:** Если страница `phpinfo.php` не отображается или отображается с ошибками, проверьте следующие моменты:
* **Правильность пути к `php5isapi.dll`:** Убедитесь, что в настройках IIS указан правильный путь к файлу `php5isapi.dll`.
* **Права доступа:** Убедитесь, что учетная запись, под которой работает IIS (обычно это `IUSR_<имя_компьютера>`), имеет права на чтение и выполнение файлов в папке `C:\PHP5`.
* **Ошибки в `php.ini`:** Проверьте файл `php.ini` на наличие ошибок. Особенно обратите внимание на правильность указания путей и раскомментирования расширений.
* **Журнал событий Windows:** Проверьте журнал событий Windows на наличие ошибок, связанных с IIS или PHP.
* **Перезапуск IIS:** Убедитесь, что вы перезапустили IIS после внесения изменений в конфигурацию.
Шаг 5: Настройка прав доступа (если необходимо)
В некоторых случаях может потребоваться настроить права доступа к папке `C:\PHP5` и файлам в ней, чтобы учетная запись, под которой работает IIS (обычно `IUSR_<имя_компьютера>`), имела необходимые права на чтение и выполнение.
1. **Откройте свойства папки `C:\PHP5`:** Щелкните правой кнопкой мыши по папке `C:\PHP5` и выберите «Свойства» (Properties).
2. **Вкладка «Безопасность» (Security):** Перейдите на вкладку «Безопасность» (Security).
3. **Добавьте учетную запись `IUSR_<имя_компьютера>`:** Если учетной записи `IUSR_<имя_компьютера>` нет в списке, нажмите кнопку «Изменить» (Edit) и затем «Добавить» (Add).
4. **Введите имя объекта:** Введите `IUSR_<имя_компьютера>` (замените `<имя_компьютера>` на имя вашего компьютера) и нажмите кнопку «Проверить имена» (Check Names). Если имя найдено, нажмите кнопку «ОК» (OK).
5. **Настройте права доступа:** Выберите учетную запись `IUSR_<имя_компьютера>` в списке и установите флажки «Чтение и выполнение» (Read & Execute), «Список содержимого папки» (List folder contents) и «Чтение» (Read). Нажмите кнопку «ОК» (OK).
6. **Повторите для файлов `php.exe` и `php5isapi.dll`:** Повторите шаги 1-5 для файлов `php.exe` и `php5isapi.dll` в папке `C:\PHP5`.
Альтернативные способы обработки PHP-файлов: CGI vs ISAPI
В этом руководстве мы использовали `php5isapi.dll`, что означает использование ISAPI (Internet Server Application Programming Interface) для обработки PHP-файлов. Это более производительный способ по сравнению с CGI (Common Gateway Interface), так как ISAPI позволяет PHP работать как часть процесса IIS, а не запускать новый процесс для каждого запроса. Однако, в некоторых случаях, использование CGI может быть предпочтительным, например, если у вас возникают проблемы с ISAPI или если вы хотите иметь большую изоляцию между PHP и IIS.
Для настройки CGI необходимо:
1. **Изменить сопоставление в IIS:** Вместо `php5isapi.dll` указать `php.exe` в сопоставлении для расширения `.php` и `.php5`.
2. **Убедиться, что `php.exe` находится в системной переменной `PATH`:** Добавьте путь к папке `C:\PHP5` в системную переменную `PATH`. Это позволит IIS находить `php.exe`.
3. **Перезапустить IIS:** Перезапустите IIS, чтобы изменения вступили в силу.
Важно помнить, что CGI может быть значительно медленнее, чем ISAPI, особенно при большом количестве запросов.
Безопасность PHP 5 на IIS 6
Как уже упоминалось, использование PHP 5 несет риски безопасности. Вот несколько рекомендаций по повышению безопасности:
* **Регулярно обновляйте PHP 5:** Хотя PHP 5 больше не поддерживается официально, иногда выпускаются неофициальные патчи безопасности. Следите за новостями и устанавливайте обновления, если они доступны.
* **Используйте брандмауэр:** Настройте брандмауэр для ограничения доступа к серверу только с доверенных IP-адресов.
* **Регулярно сканируйте на уязвимости:** Используйте инструменты для сканирования на уязвимости, чтобы выявлять потенциальные проблемы безопасности.
* **Ограничьте доступ к файлам PHP:** Убедитесь, что только необходимые пользователи имеют доступ к файлам PHP.
* **Отключите неиспользуемые расширения PHP:** Отключите все расширения PHP, которые вам не нужны. Это уменьшит поверхность атаки.
* **Используйте безопасные методы кодирования:** Пишите код PHP с учетом рекомендаций по безопасности, чтобы предотвратить распространенные уязвимости, такие как SQL-инъекции и межсайтовый скриптинг (XSS).
Альтернативы PHP 5
Если это возможно, рассмотрите возможность обновления до более новой версии PHP. PHP 7 и PHP 8 предлагают значительные улучшения производительности и безопасности. Для этого может потребоваться переписывание части кода, но в долгосрочной перспективе это будет более безопасным и эффективным решением.
В качестве альтернативы можно рассмотреть использование виртуализации или контейнеризации. Можно создать виртуальную машину или контейнер с установленной PHP 5 и IIS 6 и запускать старое приложение в этой изолированной среде. Это позволит вам избежать необходимости устанавливать PHP 5 на основной сервер и повысить безопасность.
Заключение
Установка PHP 5 на IIS 6 может быть сложной задачей, но следуя этому подробному руководству, вы сможете успешно настроить PHP 5 и запустить свои старые приложения. Помните о рисках безопасности, связанных с использованием устаревших версий программного обеспечения, и примите меры по их смягчению. Если это возможно, рассмотрите возможность обновления до более новой версии PHP или использования альтернативных решений, таких как виртуализация или контейнеризация.