Fastcgi - - - php - - - iis 7

ІспользованіеFastCGIдля хостінгаPHPпріложеній наIIS7.0

Завдяки модулю FastCGI в IIS підтримується більшість популярних додатків колективної роботи, які використовують протокол FastCGI для хостингу на Web сервері IIS високопродуктивних і надійних засобів. FastCGI надає високопродуктивну альтернативу CGI (Common Gateway Interface), стандартного засобу, що є інтерфейсом між зовнішніми додатками і Web серверами, які підтримуються як частина можливостей IIS починаючи з перших версій сервера.

Програми CGI виконуються на сервері при кожному запиті, це дозволяє обробити запити, динамічно згенерувати відповіді і повернути їх назад клієнтам. Через те, що багато програм колективної роботи не підтримують виконання відразу декількох потоків, CGI дозволяє надійно ісполненять декількох процесів під управлінням IIS, обробляючи по одному запиту на процес. На жаль це призводить до зниження продуктивності через високі накладних витрат пов'язаних з необхідністю запуску і зупинки процесів при обробці кожного запиту.

FastCGI є більш продуктивним у порівнянні з CGI, механізм його роботи виглядає так - один і той же процес використовується для обробки безліч надійшли запитів. FastCGI так само підтримує роботу з бібліотеками які не вміють безпечно працювати в багатопотокової середовищі. При роботі з набором повторно використовуваних процесів ми можемо бути впевнені в тому, що кожен процес буде обробляти не більше одного запиту в кожен момент часу.

Додайте роль CGI сервісу через меню Server Manager -> Roles -> Add Role Services. Цим ми включимо підтримку двох сервісів CGI і FastCGI:

Fastcgi - - - php - - - iis 7

Windows Vista SP1

Додайте розширення CGI, використовуючи Control Panel -> Programs and Features -> Turn Windows features on or off. Цим ми включимо підтримку двох сервісів CGI і FastCGI:

Fastcgi - - - php - - - iis 7

Важливо: Установка оновлень для модуляFastCGI

Установка пакета адміністрування дляIIS7.0

Примітка: Даний крок не обов'язковий (опціональний).

З великого числа корисних функцій адміністративного пакета IIS 7.0 можна виділити інтерфейс розширеного налаштування модуля FastCGI. Адміністративний пакет може бути встановлений з наступних джерел:
  • Адміністративний пакет для IIS 7.0 CTP2 - x86
  • Адміністративний пакет для IIS 7.0 CTP2 - x64

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

НастройкаIIS7.0 для обработкіPHPзапросов

Для того щоб додатки PHP коректно працювали на IIS 7.0 необхідно налаштовувати прив'язку до запитуваною файлів, за допомогою яких IIS буде пропускати специфічні PHP запити до PHP додатків, використовуючи протокол FastCGI.

Прім.переводчіка: при запиті клієнтом файлу з розширенням * .phpсWebсайта / сервера, розташованого наIIS7.0, сервер буде «віддавати» обработкуphpфайлов додатком, який відповідає за обработкуphpфайлов.

Використовуючи консоль управленіяIIS

Відкрийте IIS Manager і виберете "Handler Mappings" на рівні управління сервером:

Fastcgi - - - php - - - iis 7

Запустіть "Add Module Mapping" для конфігурації, представленої на малюнку нижче:

Fastcgi - - - php - - - iis 7
  • Запитуваний шлях: * .php
  • Модуль: FastCgiModule
  • Додаток обробник: "C: \ [шлях установкіPHP] \ php-cgi.exe"
  • Ім'я: PHP via FastCGI

Натисніть OK. На запит про створення додатка FastCGI натисніть Yes.

Fastcgi - - - php - - - iis 7

Протестуйте коректну прив'язку заголовків, створенням файлу phpinfo.php в папці C: \ inetpub \ wwwroot, використовуючи наступний код:

phpinfo()

PHP Logo

PHP Version 5.4.16


System Linux vps12712.ua-hosting.company 3.10.0-1160.41.1.el7.x86_64 #1 SMP Tue Aug 31 14:52:47 UTC 2021 x86_64
Build Date Apr 1 2020 04:07:13
Server API CGI/FastCGI
Virtual Directory Support disabled
Configuration File (php.ini) Path /etc
Loaded Configuration File /var/www/php-bin/bono/php.ini
Scan this dir for additional .ini files /etc/php.d
Additional .ini files parsed /etc/php.d/bcmath.ini, /etc/php.d/curl.ini, /etc/php.d/dom.ini, /etc/php.d/fileinfo.ini, /etc/php.d/gd.ini, /etc/php.d/intl.ini, /etc/php.d/json.ini, /etc/php.d/ldap.ini, /etc/php.d/mbstring.ini, /etc/php.d/mysql.ini, /etc/php.d/mysqli.ini, /etc/php.d/pdo.ini, /etc/php.d/pdo_mysql.ini, /etc/php.d/pdo_sqlite.ini, /etc/php.d/phar.ini, /etc/php.d/posix.ini, /etc/php.d/pspell.ini, /etc/php.d/sqlite3.ini, /etc/php.d/sysvmsg.ini, /etc/php.d/sysvsem.ini, /etc/php.d/sysvshm.ini, /etc/php.d/tidy.ini, /etc/php.d/wddx.ini, /etc/php.d/xmlreader.ini, /etc/php.d/xmlwriter.ini, /etc/php.d/xsl.ini, /etc/php.d/zip.ini
PHP API 20100412
PHP Extension 20100525
Zend Extension 220100525
Zend Extension Build API220100525,NTS
PHP Extension Build API20100525,NTS
Debug Build no
Thread Safety disabled
Zend Signal Handling disabled
Zend Memory Manager enabled
Zend Multibyte Support provided by mbstring
IPv6 Support enabled
DTrace Support disabled
Registered PHP Streamshttps, ftps, compress.zlib, compress.bzip2, php, file, glob, data, http, ftp, phar, zip
Registered Stream Socket Transportstcp, udp, unix, udg, ssl, sslv3, tls
Registered Stream Filterszlib.*, bzip2.*, convert.iconv.*, string.rot13, string.toupper, string.tolower, string.strip_tags, convert.*, consumed, dechunk

Zend logo This program makes use of the Zend Scripting Language Engine:
Zend Engine v2.4.0, Copyright (c) 1998-2013 Zend Technologies


PHP Credits


Configuration

bcmath

BCMath support enabled

DirectiveLocal ValueMaster Value
bcmath.scale00

bz2

BZip2 Support Enabled
Stream Wrapper support compress.bzip2://
Stream Filter support bzip2.decompress, bzip2.compress
BZip2 Version 1.0.6, 6-Sept-2010

calendar

Calendar support enabled

cgi-fcgi

DirectiveLocal ValueMaster Value
cgi.check_shebang_line11
cgi.discard_path00
cgi.fix_pathinfo11
cgi.force_redirect11
cgi.nph00
cgi.redirect_status_envno valueno value
cgi.rfc2616_headers00
fastcgi.logging11

Core

PHP Version 5.4.16

DirectiveLocal ValueMaster Value
allow_url_fopenOnOn
allow_url_includeOffOff
always_populate_raw_post_dataOffOff
arg_separator.input&&
arg_separator.output&&
asp_tagsOffOff
auto_append_fileno valueno value
auto_globals_jitOnOn
auto_prepend_fileno valueno value
browscapno valueno value
default_charsetno valueno value
default_mimetypetext/htmltext/html
disable_classesno valueno value
disable_functionsno valueno value
display_errorsOffOff
display_startup_errorsOffOff
doc_rootno valueno value
docref_extno valueno value
docref_rootno valueno value
enable_dlOffOff
enable_post_data_readingOnOn
error_append_stringno valueno value
error_logno valueno value
error_prepend_stringno valueno value
error_reporting2252722527
exit_on_timeoutOffOff
expose_phpOnOn
extension_dir/usr/lib64/php/modules/usr/lib64/php/modules
file_uploadsOnOn
highlight.comment#FF8000#FF8000
highlight.default#0000BB#0000BB
highlight.html#000000#000000
highlight.keyword#007700#007700
highlight.string#DD0000#DD0000
html_errorsOnOn
ignore_repeated_errorsOffOff
ignore_repeated_sourceOffOff
ignore_user_abortOffOff
implicit_flushOffOff
include_path.:/usr/share/pear:/usr/share/php.:/usr/share/pear:/usr/share/php
log_errorsOnOn
log_errors_max_len10241024
mail.add_x_headerOnOn
mail.force_extra_parametersno valueno value
mail.logno valueno value
max_execution_time300300
max_file_uploads2020
max_input_nesting_level6464
max_input_time6060
max_input_vars10001000
memory_limit512M512M
open_basedirno valueno value
output_buffering40964096
output_handlerno valueno value
post_max_size512M512M
precision1414
realpath_cache_size16K16K
realpath_cache_ttl120120
register_argc_argvOffOff
report_memleaksOnOn
report_zend_debugOnOn
request_orderGPGP
sendmail_fromno valueno value
sendmail_path/usr/sbin/sendmail -t -i -f [email protected]/usr/sbin/sendmail -t -i -f [email protected]
serialize_precision1717
short_open_tagOnOn
SMTPlocalhostlocalhost
smtp_port2525
sql.safe_modeOffOff
track_errorsOffOff
unserialize_callback_funcno valueno value
upload_max_filesize512M512M
upload_tmp_dir/var/www/bono/data/bin-tmp//var/www/bono/data/bin-tmp/
user_dirno valueno value
user_ini.cache_ttl300300
user_ini.filename.user.ini.user.ini
variables_orderGPCSGPCS
xmlrpc_error_number00
xmlrpc_errorsOffOff
zend.detect_unicodeOnOn
zend.enable_gcOnOn
zend.multibyteOffOff
zend.script_encodingno valueno value

ctype

ctype functions enabled

curl

cURL support enabled
cURL Information 7.29.0
Age 3
Features
AsynchDNS Yes
Debug No
GSS-Negotiate Yes
IDN Yes
IPv6 Yes
Largefile Yes
NTLM Yes
SPNEGO No
SSL Yes
SSPI No
krb4 No
libz Yes
CharConv No
Protocols dict, file, ftp, ftps, gopher, http, https, imap, imaps, ldap, ldaps, pop3, pop3s, rtsp, scp, sftp, smtp, smtps, telnet, tftp
Host x86_64-redhat-linux-gnu
SSL Version NSS/3.53.1
ZLib Version 1.2.7
libSSH Version libssh2/1.8.0

date

date/time support enabled
"Olson" Timezone Database Version 0.system
Timezone Database internal
Default timezone America/New_York

DirectiveLocal ValueMaster Value
date.default_latitude31.766731.7667
date.default_longitude35.233335.2333
date.sunrise_zenith90.58333390.583333
date.sunset_zenith90.58333390.583333
date.timezoneAmerica/New_YorkAmerica/New_York

dom

DOM/XML enabled
DOM/XML API Version 20031129
libxml Version 2.9.1
HTML Support enabled
XPath Support enabled
XPointer Support enabled
Schema Support enabled
RelaxNG Support enabled

ereg

Regex Library Bundled library enabled

exif

EXIF Support enabled
EXIF Version 1.4 $Id$
Supported EXIF Version 0220
Supported filetypes JPEG,TIFF

DirectiveLocal ValueMaster Value
exif.decode_jis_intelJISJIS
exif.decode_jis_motorolaJISJIS
exif.decode_unicode_intelUCS-2LEUCS-2LE
exif.decode_unicode_motorolaUCS-2BEUCS-2BE
exif.encode_jisno valueno value
exif.encode_unicodeISO-8859-15ISO-8859-15

fileinfo

fileinfo support enabled
version 1.0.5

filter

Input Validation and Filtering enabled
Revision $Id: 2aa8dd57d9c0c655cd45e6e5872bb95fa5ad76cf $

DirectiveLocal ValueMaster Value
filter.defaultunsafe_rawunsafe_raw
filter.default_flagsno valueno value

ftp

FTP support enabled

gd

GD Support enabled
GD Version bundled (2.1.0 compatible)
FreeType Support enabled
FreeType Linkage with freetype
FreeType Version 2.8.0
T1Lib Support enabled
GIF Read Support enabled
GIF Create Support enabled
JPEG Support enabled
libJPEG Version 6b
PNG Support enabled
libPNG Version 1.5.13
WBMP Support enabled
XPM Support enabled
libXpm Version 30411
XBM Support enabled

DirectiveLocal ValueMaster Value
gd.jpeg_ignore_warning00

gettext

GetText Support enabled

gmp

gmp support enabled
GMP version 6.0.0

hash

hash support enabled
Hashing Engines md2 md4 md5 sha1 sha224 sha256 sha384 sha512 ripemd128 ripemd160 ripemd256 ripemd320 whirlpool tiger128,3 tiger160,3 tiger192,3 tiger128,4 tiger160,4 tiger192,4 snefru snefru256 gost adler32 crc32 crc32b fnv132 fnv164 joaat haval128,3 haval160,3 haval192,3 haval224,3 haval256,3 haval128,4 haval160,4 haval192,4 haval224,4 haval256,4 haval128,5 haval160,5 haval192,5 haval224,5 haval256,5

iconv

iconv support enabled
iconv implementation glibc
iconv library version 2.17

DirectiveLocal ValueMaster Value
iconv.input_encodingISO-8859-1ISO-8859-1
iconv.internal_encodingISO-8859-1ISO-8859-1
iconv.output_encodingISO-8859-1ISO-8859-1

intl

Internationalization supportenabled
version 1.1.0
ICU version 50.2
ICU Data version 50.2

DirectiveLocal ValueMaster Value
intl.default_localeno valueno value
intl.error_level00

json

json support enabled
json version 1.2.1

ldap

LDAP Support enabled
RCS Version $Id$
Total Links 0/unlimited
API Version 3001
Vendor Name OpenLDAP
Vendor Version 20444
SASL Support Enabled

DirectiveLocal ValueMaster Value
ldap.max_linksUnlimitedUnlimited

libxml

libXML support active
libXML Compiled Version 2.9.1
libXML Loaded Version 20901
libXML streams enabled

mbstring

Multibyte Support enabled
Multibyte string engine libmbfl
HTTP input encoding translation disabled
libmbfl version 1.3.2

mbstring extension makes use of "streamable kanji code filter and converter", which is distributed under the GNU Lesser General Public License version 2.1.

Multibyte (japanese) regex support enabled
Multibyte regex (oniguruma) backtrack check On
Multibyte regex (oniguruma) version 4.7.1

DirectiveLocal ValueMaster Value
mbstring.detect_orderno valueno value
mbstring.encoding_translationOffOff
mbstring.func_overload00
mbstring.http_inputpasspass
mbstring.http_outputpasspass
mbstring.http_output_conv_mimetypes^(text/|application/xhtml\+xml)^(text/|application/xhtml\+xml)
mbstring.internal_encodingno valueno value
mbstring.languageneutralneutral
mbstring.strict_detectionOffOff
mbstring.substitute_characterno valueno value

mhash

MHASH support Enabled
MHASH API Version Emulated Support

mysql

MySQL Supportenabled
Active Persistent Links 0
Active Links 0
Client API version 5.5.68-MariaDB
MYSQL_MODULE_TYPE external
MYSQL_SOCKET /var/lib/mysql/mysql.sock
MYSQL_INCLUDE -I/usr/include/mysql
MYSQL_LIBS -L/usr/lib64/mysql -lmysqlclient

DirectiveLocal ValueMaster Value
mysql.allow_local_infileOnOn
mysql.allow_persistentOnOn
mysql.connect_timeout6060
mysql.default_hostno valueno value
mysql.default_passwordno valueno value
mysql.default_portno valueno value
mysql.default_socket/var/lib/mysql/mysql.sock/var/lib/mysql/mysql.sock
mysql.default_userno valueno value
mysql.max_linksUnlimitedUnlimited
mysql.max_persistentUnlimitedUnlimited
mysql.trace_modeOffOff

mysqli

MysqlI Supportenabled
Client API library version 5.5.68-MariaDB
Active Persistent Links 0
Inactive Persistent Links 0
Active Links 0
Client API header version 5.5.64-MariaDB
MYSQLI_SOCKET /var/lib/mysql/mysql.sock

DirectiveLocal ValueMaster Value
mysqli.allow_local_infileOnOn
mysqli.allow_persistentOnOn
mysqli.default_hostno valueno value
mysqli.default_port33063306
mysqli.default_pwno valueno value
mysqli.default_socketno valueno value
mysqli.default_userno valueno value
mysqli.max_linksUnlimitedUnlimited
mysqli.max_persistentUnlimitedUnlimited
mysqli.reconnectOffOff

openssl

OpenSSL support enabled
OpenSSL Library Version OpenSSL 1.0.2k-fips 26 Jan 2017
OpenSSL Header Version OpenSSL 1.0.2k-fips 26 Jan 2017

pcntl

pcntl supportenabled

pcre

PCRE (Perl Compatible Regular Expressions) Support enabled
PCRE Library Version 8.32 2012-11-30

DirectiveLocal ValueMaster Value
pcre.backtrack_limit10000001000000
pcre.recursion_limit100000100000

PDO

PDO supportenabled
PDO drivers mysql, sqlite

pdo_mysql

PDO Driver for MySQLenabled
Client API version 5.5.68-MariaDB

DirectiveLocal ValueMaster Value
pdo_mysql.default_socket/var/lib/mysql/mysql.sock/var/lib/mysql/mysql.sock

pdo_sqlite

PDO Driver for SQLite 3.xenabled
SQLite Library 3.7.17

Phar

Phar: PHP Archive supportenabled
Phar EXT version 2.0.1
Phar API version 1.1.1
SVN revision $Id: c5042cc34acebcc0926625b57dff03deebbe6472 $
Phar-based phar archives enabled
Tar-based phar archives enabled
ZIP-based phar archives enabled
gzip compression enabled
bzip2 compression enabled
Native OpenSSL support enabled

Phar based on pear/PHP_Archive, original concept by Davey Shafik.
Phar fully realized by Gregory Beaver and Marcus Boerger.
Portions of tar implementation Copyright (c) 2003-2009 Tim Kientzle.

DirectiveLocal ValueMaster Value
phar.cache_listno valueno value
phar.readonlyOnOn
phar.require_hashOnOn

posix

Revision $Id: 32db6705f5b617967a546be3114e178a4138c1ca $

pspell

PSpell Support enabled

readline

Readline Supportenabled
Readline library EditLine wrapper

DirectiveLocal ValueMaster Value
cli.pagerno valueno value
cli.prompt\b \> \b \> 

Reflection

Reflectionenabled
Version $Id: 6c4d8062369898a397e4b128348042f5c01b4427 $

session

Session Support enabled
Registered save handlers files user
Registered serializer handlers php php_binary wddx

DirectiveLocal ValueMaster Value
session.auto_startOffOff
session.cache_expire180180
session.cache_limiternocachenocache
session.cookie_domainno valueno value
session.cookie_httponlyOffOff
session.cookie_lifetime00
session.cookie_path//
session.cookie_secureOffOff
session.entropy_file/dev/urandom/dev/urandom
session.entropy_length3232
session.gc_divisor10001000
session.gc_maxlifetime14401440
session.gc_probability11
session.hash_bits_per_character55
session.hash_function00
session.namePHPSESSIDPHPSESSID
session.referer_checkno valueno value
session.save_handlerfilesfiles
session.save_path/var/www/bono/data/bin-tmp//var/www/bono/data/bin-tmp/
session.serialize_handlerphpphp
session.upload_progress.cleanupOnOn
session.upload_progress.enabledOnOn
session.upload_progress.freq1%1%
session.upload_progress.min_freq11
session.upload_progress.namePHP_SESSION_UPLOAD_PROGRESSPHP_SESSION_UPLOAD_PROGRESS
session.upload_progress.prefixupload_progress_upload_progress_
session.use_cookiesOnOn
session.use_only_cookiesOnOn
session.use_trans_sid00

shmop

shmop support enabled

SimpleXML

Simplexml supportenabled
Revision $Id: 692516840b2d7d6e7aedb0bedded1f53b764a99f $
Schema support enabled

sockets

Sockets Support enabled

SPL

SPL supportenabled
Interfaces Countable, OuterIterator, RecursiveIterator, SeekableIterator, SplObserver, SplSubject
Classes AppendIterator, ArrayIterator, ArrayObject, BadFunctionCallException, BadMethodCallException, CachingIterator, CallbackFilterIterator, DirectoryIterator, DomainException, EmptyIterator, FilesystemIterator, FilterIterator, GlobIterator, InfiniteIterator, InvalidArgumentException, IteratorIterator, LengthException, LimitIterator, LogicException, MultipleIterator, NoRewindIterator, OutOfBoundsException, OutOfRangeException, OverflowException, ParentIterator, RangeException, RecursiveArrayIterator, RecursiveCachingIterator, RecursiveCallbackFilterIterator, RecursiveDirectoryIterator, RecursiveFilterIterator, RecursiveIteratorIterator, RecursiveRegexIterator, RecursiveTreeIterator, RegexIterator, RuntimeException, SplDoublyLinkedList, SplFileInfo, SplFileObject, SplFixedArray, SplHeap, SplMinHeap, SplMaxHeap, SplObjectStorage, SplPriorityQueue, SplQueue, SplStack, SplTempFileObject, UnderflowException, UnexpectedValueException

sqlite3

SQLite3 supportenabled
SQLite3 module version 0.7
SQLite Library 3.7.17

DirectiveLocal ValueMaster Value
sqlite3.extension_dirno valueno value

standard

Dynamic Library Support enabled
Path to sendmail /usr/sbin/sendmail -t -i -f [email protected]

DirectiveLocal ValueMaster Value
assert.active11
assert.bail00
assert.callbackno valueno value
assert.quiet_eval00
assert.warning11
auto_detect_line_endings00
default_socket_timeout6060
fromno valueno value
url_rewriter.tagsa=href,area=href,frame=src,input=src,form=fakeentrya=href,area=href,frame=src,input=src,form=fakeentry
user_agentno valueno value

sysvmsg

sysvmsg support enabled
Revision $Id: e268047b695fe9a43cdf415c429729252347becd $

tidy

Tidy supportenabled
libTidy Release 25 March 2009
Extension Version 2.0 ($Id$)

DirectiveLocal ValueMaster Value
tidy.clean_outputno valueno value
tidy.default_configno valueno value

tokenizer

Tokenizer Support enabled

wddx

WDDX Supportenabled
WDDX Session Serializer enabled

xml

XML Support active
XML Namespace Support active
libxml2 Version 2.9.1

xmlreader

XMLReader enabled

xmlwriter

XMLWriter enabled

xsl

XSL enabled
libxslt Version 1.1.28
libxslt compiled against libxml Version 2.9.1
EXSLT enabled
libexslt Version 1.1.28

zip

Zip enabled
Extension Version $Id: 0c033d4e4613d577409950ed7bf8da4b68286d15 $
Zip version 1.11.0
Compiled against libzip version 0.10.1

zlib

ZLib Supportenabled
Stream Wrapper compress.zlib://
Stream Filter zlib.inflate, zlib.deflate
Compiled Version 1.2.7
Linked Version 1.2.7

DirectiveLocal ValueMaster Value
zlib.output_compressionOffOff
zlib.output_compression_level-1-1
zlib.output_handlerno valueno value

Additional Modules

Module Name
sysvsem
sysvshm

Environment

VariableValue
PATH /usr/local/bin:/usr/bin:/bin

PHP Variables

VariableValue
_SERVER["PATH"]/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin
_SERVER["SCRIPT_NAME"]/articles/fastcgi-php-iis-7.php
_SERVER["REQUEST_URI"]/articles/fastcgi-php-iis-7.php
_SERVER["QUERY_STRING"]no value
_SERVER["REQUEST_METHOD"]GET
_SERVER["SERVER_PROTOCOL"]HTTP/1.0
_SERVER["GATEWAY_INTERFACE"]CGI/1.1
_SERVER["REMOTE_PORT"]45758
_SERVER["SCRIPT_FILENAME"]/var/www/bono/data/www/jak.bono.odessa.ua/articles/fastcgi-php-iis-7.php
_SERVER["SERVER_ADMIN"][email protected]
_SERVER["CONTEXT_DOCUMENT_ROOT"]/var/www/bono/data/www/jak.bono.odessa.ua
_SERVER["CONTEXT_PREFIX"]no value
_SERVER["REQUEST_SCHEME"]http
_SERVER["DOCUMENT_ROOT"]/var/www/bono/data/www/jak.bono.odessa.ua
_SERVER["REMOTE_ADDR"]172.71.254.224
_SERVER["SERVER_PORT"]80
_SERVER["SERVER_ADDR"]127.0.0.1
_SERVER["SERVER_NAME"]jak.bono.odessa.ua
_SERVER["SERVER_SOFTWARE"]Apache/2.4.6 (CentOS) OpenSSL/1.0.2k-fips mod_fcgid/2.3.9 PHP/5.4.16
_SERVER["SERVER_SIGNATURE"]no value
_SERVER["HTTP_CF_IPCOUNTRY"]US
_SERVER["HTTP_CDN_LOOP"]cloudflare
_SERVER["HTTP_CF_CONNECTING_IP"]3.129.69.128
_SERVER["HTTP_REFERER"]http://jak.bono.odessa.ua/articles/fastcgi-php-iis-7.php
_SERVER["HTTP_USER_AGENT"]Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; ClaudeBot/1.0; [email protected])
_SERVER["HTTP_ACCEPT"]*/*
_SERVER["HTTP_CF_VISITOR"]{"scheme":"https"}
_SERVER["HTTP_CF_RAY"]884550e94f642258-ORD
_SERVER["HTTP_ACCEPT_ENCODING"]gzip, br
_SERVER["HTTP_CONNECTION"]close
_SERVER["HTTP_X_FORWARDED_PORT"]80
_SERVER["HTTP_X_FORWARDED_PROTO"]http
_SERVER["HTTP_X_FORWARDED_FOR"]3.129.69.128
_SERVER["HTTP_HOST"]jak.bono.odessa.ua
_SERVER["PERL5LIB"]/usr/share/awstats/lib:/usr/share/awstats/plugins
_SERVER["UNIQUE_ID"]ZkUEC96okvZH03R14eX0tAAAAAo
_SERVER["FCGI_ROLE"]RESPONDER
_SERVER["PHP_SELF"]/articles/fastcgi-php-iis-7.php
_SERVER["REQUEST_TIME_FLOAT"]1715799051.8131
_SERVER["REQUEST_TIME"]1715799051

PHP License

This program is free software; you can redistribute it and/or modify it under the terms of the PHP License as published by the PHP Group and included in the distribution in the file: LICENSE

This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

If you did not receive a copy of the PHP license, or have any questions about PHP licensing, please contact [email protected].


Fastcgi - - - php - - - iis 7

Також, в цьому ж файлі, переконайтеся в тому, що модуль FastCGI доданий в секцію :

Використовуючи командний рядок

Альтернативою попереднім крокам може служити використання команди appcmd.

Для створення пулу додатків FastCGI виконайте наступну команду:

C: \>% windir% \ system32 \ inetsrv \ appcmd set config /section:system.webServer/fastCGI /+[fullPath='c:\\php-cgi.exe ']

Після цього створіть прив'язку заголовків:

C: \>% windir% \ system32 \ inetsrv \ appcmd set config /section:system.webServer/handlers /+[name='PHP_via_FastCGI',path='*.php',verb='*',modules='FastCgiModule ', scriptProcessor =' c: \\ php-cgi.exe ', resourceType =' Unspecified ']

Примітка: Якщо ви використовуєте PHP версій 4.X, то замість php-cgi.exe необхідно використовувати php.exe.

Рекомендовані керівництва по конфігурірованіюFastCGIіPHP

Більш докладно про безпечну ізоляції в оточенні загального хостингу написано в документації «Ізоляція сайтів з пулами додатків»

режим реціркуляцііPHPпроцессов

Переконайтеся в тому, що FastCGI завжди рециркулює (перезавантажує - прім.перевод) процеси php-cgi.exe, перш ніж завершується робота основного PHP процесу. Режим рециркуляції процесів FastCGI контролюється параметром конфігурації, який називається instanceMaxRequests (максимальна к-ть запитів на екземпляр програми - прім.перевод). Дане значення визначає, яке кількість запитів виконає FastCGI, перш ніж відбудеться рециркуляція. У PHP так само існує функція рециркуляції, яка контролюється параметром PHP_FCGI_MAX_REQUESTS. Установка найменшого значення для instanceMaxRequests або подібного параметра PHP_FCGI_MAX_REQUESTS. гарантує, що основний PHP процес не буде закінчено передчасно.

Властивості для FastCGI можуть бути змінені за допомогою IIS Manager або командного рядка, використовуючи додаток appcmd.

Для настройки процесу рециркуляції FastCGI, використовуючи IIS Manager, вам необхідно встановити Адміністративний пакет для IIS 7.0 і вибрати на рівні півночі меню FastCGI settings (параметри FastCGI):

Fastcgi - - - php - - - iis 7

Далі необхідно вибрати додаток FastCGI, яке ви хочете налаштувати і натиснути "Edit." В панелі Actions:

Fastcgi - - - php - - - iis 7

У вікні "Edit FastCGI application" встановіть для параметра instanceMaxRequest значення 10000 нажмать кнопку огляду в меню EnvironmentVariables.

Fastcgi - - - php - - - iis 7

Додайте змінну PHP_FCGI_MAX_REQUESTS, встановивши для неї значення в 10000:

Fastcgi - - - php - - - iis 7

Прімеченіе: Якщо ви не встановите дані значення, то за замовчуванням вони будуть наступними: instanceMaxRequests = 200, PHP_FCGI_MAX_REQUESTS = 500 (для більшості збірок PHP).

Використання командного рядка:

Для конфігурації процесів рециркуляції FastCGI і PHP за допомогою appcmd. використовуйте наступні команди:

C: \>% windir% \ system32 \ inetsrv \ appcmd set config -section: system.webServer / fastCgi /[fullPath='c:\\php-cgi.exe'].instanceMaxRequests:10000
C: \>% windir% \ system32 \ inetsrv \ appcmd.exe set config -section: system.webServer / fastCgi /+"[fullPath='C:\\php-cgi.exe'].environmentVariables.[name= ' PHP_FCGI_MAX_REQUESTS ', value =' 10000 '] "

Більшість PHP додатків можуть залежати від функцій або розширень доступних тільки в певній версії PHP. Якщо такі додатки повинні бути розміщені на одному сервері хостингу, то необхідно щоб на даному сервері одночасно підтримувалися і працювали різні версії PHP. Оброблювач FastCGI в IIS 7.0 повноцінно підтримує одночасну роботу різних версій PHP на одному сервері.

Наприклад, припустимо що на своєму Web сервері ви плануєте підтримувати такі збірки: PHP 4.4.8, PHP 5.2.1 і PHP 5.2.5 non-thread safe. Для включення даної можливості ви повинні покласти відповідні виконувані файли PHP в різні папки на файлову систему (наприклад C: \ php448 \, C: \ php521 \ і C: \ php525nts) і створити відповідні пули додатків для кожної версії:

C: \>% windir% \ system32 \ inetsrv \ appcmd set config /section:system.webServer/fastCGI /+[fullPath='c:\php448\php.exe ']
C: \>% windir% \ system32 \ inetsrv \ appcmd set config /section:system.webServer/fastCGI /+[fullPath='c:\php521\php-cgi.exe ']
C: \>% windir% \ system32 \ inetsrv \ appcmd set config /section:system.webServer/fastCGI /+[fullPath='c:\php525nts\php-cgi.exe ']

Так, якщо у вас є 3 Web сайту (site1, site2, site3), кожен з яких повинен використовувати різні версії PHP, ви можете задати відповідність заголовків для кожного з сайтів, створивши відповідний пул додатків FastCGI.

Примітка: Кожен пул додатків процесів FastCGI буде ідентифікується унікально - комбінацією повного шляху і властивостями аргументів.

C: \>% windir% \ system32 \ inetsrv \ appcmd set config site1 -section: system.webServer / handlers /+"..[name='PHP448_via_FastCGI',path='*.php',verb='* ', modules = 'FastCgiModule', scriptProcessor = 'c: \ php448 \ php.exe', resourceType = 'Either']
C: \>% windir% \ system32 \ inetsrv \ appcmd set config site2 -section: system.webServer / handlers /+"..[name='PHP521_via_FastCGI',path='*.php',verb='* ', modules = 'FastCgiModule', scriptProcessor = 'c: \ php521 \ php-cgi.exe', resourceType = 'Either']
C: \>% windir% \ system32 \ inetsrv \ appcmd set config site3 -section: system.webServer / handlers /+"..[name='PHP525nts_via_FastCGI',path='*.php',verb='* ', modules = 'FastCgiModule', scriptProcessor = 'c: \ php525nts \ php-cgi.exe', resourceType = 'Either']

Рекомендації по безопасностіPHP

Наступні настройки можуть бути використані для поліпшення безпеки встановленого PHP. Слідуючи рекомендаціям знайдіть і змініть в файлі php.ini наступні значення:

Конфігурація PHP на рівні сайтів

Пули процессовPHPна рівні сайтів

Коли кожен Web сайт має власний пул додатків (це є рекомендованою практикою для IIS 7.0), з'являється можливість асоціювати виділений пул процесів FastCGI з кожним Web сайтом. Пул додатків процесів FastCGI ідентифікується унікально - комбінацією повного шляху і атрибутами аргументів. Отже, якщо необхідно створити кілька процесорних пулів FastCGI для деякого виконується процесу, такого як php-cgi.exe, то атрибути аргументів можуть використовуватися для розмежування процесорних пулів. У доповненні процеси php-cgi.exe із застосуванням ключа командного рядка «-d», можуть використовуватися для визначення INI записи в процесі PHP. Даний ключ може бути використаний для установки різних значень PHP, які дозволяють задавати унікальність аргументів для кожного пулу.

Наприклад, якщо двом Web сайтам "website1" і "website2" необхідно використовувати власні настройки PHP, то потрібно змінити пул процесів FastCGI наступним чином:




В даному прикладі налаштування PHP, зокрема директива open_basedir, використовуються для розмежування процесорних пулів. У доповненні це змушує PHP процес виконуватися для кожного пулу процесів тільки в тій директорії, в якій розташований кореневий Web сайт.

Тоді website1 може мати зіставлення PHP заголовків, як показано нижче:





і website2 може мати наступне зіставлення PHP заголовків:





Визначення місця розташування файлаphp.ini

Під час запуску процес PHP визначає місце розташування файлу конфігурації php.ini використовуючи різні настройки. В офіційній документації PHP детально описаний процес ініціалізації (початкового запуску) процесу PHP. Так, одним з місць пошуку процесом PHP свого файлу конфігурації (php.ini) може бути директива PHPRC (PHPRC - це змінна середовища ОС, як TMP або Temp - прім.перевод). Якщо процес PHP знаходить файл конфігурації, певний в вищеописаної директиві, то він починає використовувати даний файл конфігурації, ігноруючи шлях заданий за замовчуванням в файлі php.ini. Дана директива корисна для користувачів хостингу, вони можуть застосовувати свої власні настройки php.ini на рівні своїх сайтів.

Наприклад, існує два Web сайту: website1 і website2; розташованих за наступними шляхами C: \ WebSites \ website1 і C: \ WebSites \ website2, тоді пул процесів php-cgi.exe в секції файлу applicationHost.config повинен мати наступний вигляд:












В даному випадку WebSite1 має свої налаштування php.ini файлу, який розташований в директорії C: \ WebSites \ website1, тоді як WebSite2 має свої налаштування файлу php.ini, який розташований в директорії C: \ WebSites \ website2. Дана конфігурація так само передбачає що значення PHPRC не задано, інакше зробити унікальні установки файлу php.ini на рівні сайтів не представляється можливим.

Схожі статті