|
Microsoft IIS 7.0 и вышеЭтот раздел содержит инструкции по настройке 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:
Чтобы включить поддержку FastCGI на Windows Server 2008 и Windows Server 2008 R2:
Настройка IIS для обработки PHP запросовСкачайте и установите PHP в соответствии с инструкциями, приведёнными в описании установки
Измените 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:
Использование командной строки для создания сопоставления обработчика PHPИспользуйте команды приведённые ниже для создания пула процессов IIS FastCGI который будет использовать php-cgi.exe выполняемый для PHP запросов. Замените значение параметра fullPath на абсолютный путь к файлу php-cgi.exe. Пример #2 Создание IIS FastCGI пула процессов %windir%\system32\inetsrv\appcmd set config /section:system.webServer/fastCGI ^ /+[fullPath='c:\PHP\php-cgi.exe'] Настройка IIS для обработки специфических запросов PHP из командной строки показана ниже. Замените значение параметра scriptProcessor на абсолютный путь к файлу php-cgi.exe. Пример #3 Создание сопоставления обработчика запросов PHP %windir%\system32\inetsrv\appcmd set config /section:system.webServer/handlers ^ /+[name='PHP_via_FastCGI', path='*.php',verb='*',modules='FastCgiModule',^ scriptProcessor='c:\PHP\php-cgi.exe',resourceType='Either'] Эта команда создает для IIS сопоставление обработчика для файлов с расширением *.php, который получается в результате и обрабатывается модулем FastCGI.
Представление и доступ к файловой системеПри использовании 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%\system32\inetsrv\appcmd.exe list config "Default Web Site" ^ /section:anonymousAuthentication <system.webServer> <security> <authentication> <anonymousAuthentication enabled="true" userName="IUSR" /> </authentication> </security> </system.webServer>
Для изменения настроек доступа для файлов или папок, используйте интерфейс пользователя в профоднике Windows или команду icacls. Пример #5 Настройка разрешения доступа к файлам icacls C:\inetpub\wwwroot\upload /grant IUSR:(OI)(CI)(M) Установка index.php как документ по умолчанию в IISПо умолчанию в IIS не установлено имя документа для обработки HTTP запросов по умолчанию. В PHP приложениях, обычно используется по умолчанию документ index.php. Чтобы добавить index.php в лист документов по умолчанию IIS, используйте такую команду: Пример #6 Установка index.php как документ по умолчанию в IIS %windir%\system32\inetsrv\appcmd.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%\system32\inetsrv\appcmd.exe set config -section:system.webServer/fastCgi ^ /[fullPath='c:\php\php-cgi.exe'].instanceMaxRequests:10000 %windir%\system32\inetsrv\appcmd.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%\system32\inetsrv\appcmd.exe set config -section:system.webServer/fastCgi ^ /[fullPath='C:\php\php-cgi.exe',arguments=''].activityTimeout:"90" /commit:apphost %windir%\system32\inetsrv\appcmd.exe set config -section:system.webServer/fastCgi ^ /[fullPath='C:\php\php-cgi.exe',arguments=''].requestTimeout:"90" /commit:apphost Изменение положения файла php.iniPHP ищет файл php.ini некоторых метах и это даёт нам возможность изменить местоположения по умолчанию файла php.ini, используя переменную окружения PHPRC. Чтобы указать PHP загружать конфигурационный файл из определённого места используйте команды, приведённые ниже. Абсолютный путь до дирректории где лежит файл php.ini определяется как значение переменной окружения PHPRC. Пример #9 Изменение положения файла php.ini appcmd.exe set config -section:system.webServer/fastCgi ^ /+"[fullPath='C:\php\php.exe',arguments=''].environmentVariables.^ [name='PHPRC',value='C:\Some\Directory\']" /commit:apphost |
|