Іспользованіе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:
Windows Vista SP1
Додайте розширення CGI, використовуючи Control Panel -> Programs and Features -> Turn Windows features on or off. Цим ми включимо підтримку двох сервісів CGI і FastCGI:
Важливо: Установка оновлень для модуля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" на рівні управління сервером:
Запустіть "Add Module Mapping" для конфігурації, представленої на малюнку нижче:
- Запитуваний шлях: * .php
- Модуль: FastCgiModule
- Додаток обробник: "C: \ [шлях установкіPHP] \ php-cgi.exe"
- Ім'я: PHP via FastCGI
Натисніть OK. На запит про створення додатка FastCGI натисніть Yes.
Протестуйте коректну прив'язку заголовків, створенням файлу phpinfo.php в папці C: \ inetpub \ wwwroot, використовуючи наступний код:
phpinfo()
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 Streams | https, ftps, compress.zlib, compress.bzip2, php, file, glob, data, http, ftp, phar, zip |
Registered Stream Socket Transports | tcp, udp, unix, udg, ssl, sslv3, tls |
Registered Stream Filters | zlib.*, bzip2.*, convert.iconv.*, string.rot13, string.toupper, string.tolower, string.strip_tags, convert.*, consumed, dechunk |
This program makes use of the Zend Scripting Language Engine: Zend Engine v2.4.0, Copyright (c) 1998-2013 Zend Technologies
|
Configuration
Directive | Local Value | Master Value |
bcmath.scale | 0 | 0 |
BZip2 Support | Enabled |
Stream Wrapper support | compress.bzip2:// |
Stream Filter support | bzip2.decompress, bzip2.compress |
BZip2 Version | 1.0.6, 6-Sept-2010 |
Directive | Local Value | Master Value |
cgi.check_shebang_line | 1 | 1 |
cgi.discard_path | 0 | 0 |
cgi.fix_pathinfo | 1 | 1 |
cgi.force_redirect | 1 | 1 |
cgi.nph | 0 | 0 |
cgi.redirect_status_env | no value | no value |
cgi.rfc2616_headers | 0 | 0 |
fastcgi.logging | 1 | 1 |
Directive | Local Value | Master Value |
allow_url_fopen | On | On |
allow_url_include | Off | Off |
always_populate_raw_post_data | Off | Off |
arg_separator.input | & | & |
arg_separator.output | & | & |
asp_tags | Off | Off |
auto_append_file | no value | no value |
auto_globals_jit | On | On |
auto_prepend_file | no value | no value |
browscap | no value | no value |
default_charset | no value | no value |
default_mimetype | text/html | text/html |
disable_classes | no value | no value |
disable_functions | no value | no value |
display_errors | Off | Off |
display_startup_errors | Off | Off |
doc_root | no value | no value |
docref_ext | no value | no value |
docref_root | no value | no value |
enable_dl | Off | Off |
enable_post_data_reading | On | On |
error_append_string | no value | no value |
error_log | no value | no value |
error_prepend_string | no value | no value |
error_reporting | 22527 | 22527 |
exit_on_timeout | Off | Off |
expose_php | On | On |
extension_dir | /usr/lib64/php/modules | /usr/lib64/php/modules |
file_uploads | On | On |
highlight.comment | #FF8000 | #FF8000 |
highlight.default | #0000BB | #0000BB |
highlight.html | #000000 | #000000 |
highlight.keyword | #007700 | #007700 |
highlight.string | #DD0000 | #DD0000 |
html_errors | On | On |
ignore_repeated_errors | Off | Off |
ignore_repeated_source | Off | Off |
ignore_user_abort | Off | Off |
implicit_flush | Off | Off |
include_path | .:/usr/share/pear:/usr/share/php | .:/usr/share/pear:/usr/share/php |
log_errors | On | On |
log_errors_max_len | 1024 | 1024 |
mail.add_x_header | On | On |
mail.force_extra_parameters | no value | no value |
mail.log | no value | no value |
max_execution_time | 300 | 300 |
max_file_uploads | 20 | 20 |
max_input_nesting_level | 64 | 64 |
max_input_time | 60 | 60 |
max_input_vars | 1000 | 1000 |
memory_limit | 512M | 512M |
open_basedir | no value | no value |
output_buffering | 4096 | 4096 |
output_handler | no value | no value |
post_max_size | 512M | 512M |
precision | 14 | 14 |
realpath_cache_size | 16K | 16K |
realpath_cache_ttl | 120 | 120 |
register_argc_argv | Off | Off |
report_memleaks | On | On |
report_zend_debug | On | On |
request_order | GP | GP |
sendmail_from | no value | no value |
sendmail_path | /usr/sbin/sendmail -t -i -f [email protected] | /usr/sbin/sendmail -t -i -f [email protected] |
serialize_precision | 17 | 17 |
short_open_tag | On | On |
SMTP | localhost | localhost |
smtp_port | 25 | 25 |
sql.safe_mode | Off | Off |
track_errors | Off | Off |
unserialize_callback_func | no value | no value |
upload_max_filesize | 512M | 512M |
upload_tmp_dir | /var/www/bono/data/bin-tmp/ | /var/www/bono/data/bin-tmp/ |
user_dir | no value | no value |
user_ini.cache_ttl | 300 | 300 |
user_ini.filename | .user.ini | .user.ini |
variables_order | GPCS | GPCS |
xmlrpc_error_number | 0 | 0 |
xmlrpc_errors | Off | Off |
zend.detect_unicode | On | On |
zend.enable_gc | On | On |
zend.multibyte | Off | Off |
zend.script_encoding | no value | no value |
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/time support | enabled |
"Olson" Timezone Database Version | 0.system |
Timezone Database | internal |
Default timezone | America/New_York |
Directive | Local Value | Master Value |
date.default_latitude | 31.7667 | 31.7667 |
date.default_longitude | 35.2333 | 35.2333 |
date.sunrise_zenith | 90.583333 | 90.583333 |
date.sunset_zenith | 90.583333 | 90.583333 |
date.timezone | America/New_York | America/New_York |
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 |
Regex Library | Bundled library enabled |
EXIF Support | enabled |
EXIF Version | 1.4 $Id$ |
Supported EXIF Version | 0220 |
Supported filetypes | JPEG,TIFF |
Directive | Local Value | Master Value |
exif.decode_jis_intel | JIS | JIS |
exif.decode_jis_motorola | JIS | JIS |
exif.decode_unicode_intel | UCS-2LE | UCS-2LE |
exif.decode_unicode_motorola | UCS-2BE | UCS-2BE |
exif.encode_jis | no value | no value |
exif.encode_unicode | ISO-8859-15 | ISO-8859-15 |
fileinfo support | enabled |
version | 1.0.5 |
Input Validation and Filtering | enabled |
Revision | $Id: 2aa8dd57d9c0c655cd45e6e5872bb95fa5ad76cf $ |
Directive | Local Value | Master Value |
filter.default | unsafe_raw | unsafe_raw |
filter.default_flags | no value | no value |
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 |
Directive | Local Value | Master Value |
gd.jpeg_ignore_warning | 0 | 0 |
gmp support | enabled |
GMP version | 6.0.0 |
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 support | enabled |
iconv implementation | glibc |
iconv library version | 2.17 |
Directive | Local Value | Master Value |
iconv.input_encoding | ISO-8859-1 | ISO-8859-1 |
iconv.internal_encoding | ISO-8859-1 | ISO-8859-1 |
iconv.output_encoding | ISO-8859-1 | ISO-8859-1 |
Internationalization support | enabled |
version | 1.1.0 |
ICU version | 50.2 |
ICU Data version | 50.2 |
Directive | Local Value | Master Value |
intl.default_locale | no value | no value |
intl.error_level | 0 | 0 |
json support | enabled |
json version | 1.2.1 |
LDAP Support | enabled |
RCS Version | $Id$ |
Total Links | 0/unlimited |
API Version | 3001 |
Vendor Name | OpenLDAP |
Vendor Version | 20444 |
SASL Support | Enabled |
Directive | Local Value | Master Value |
ldap.max_links | Unlimited | Unlimited |
libXML support | active |
libXML Compiled Version | 2.9.1 |
libXML Loaded Version | 20901 |
libXML streams | enabled |
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 |
Directive | Local Value | Master Value |
mbstring.detect_order | no value | no value |
mbstring.encoding_translation | Off | Off |
mbstring.func_overload | 0 | 0 |
mbstring.http_input | pass | pass |
mbstring.http_output | pass | pass |
mbstring.http_output_conv_mimetypes | ^(text/|application/xhtml\+xml) | ^(text/|application/xhtml\+xml) |
mbstring.internal_encoding | no value | no value |
mbstring.language | neutral | neutral |
mbstring.strict_detection | Off | Off |
mbstring.substitute_character | no value | no value |
MHASH support | Enabled |
MHASH API Version | Emulated Support |
MySQL Support | enabled |
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 |
Directive | Local Value | Master Value |
mysql.allow_local_infile | On | On |
mysql.allow_persistent | On | On |
mysql.connect_timeout | 60 | 60 |
mysql.default_host | no value | no value |
mysql.default_password | no value | no value |
mysql.default_port | no value | no value |
mysql.default_socket | /var/lib/mysql/mysql.sock | /var/lib/mysql/mysql.sock |
mysql.default_user | no value | no value |
mysql.max_links | Unlimited | Unlimited |
mysql.max_persistent | Unlimited | Unlimited |
mysql.trace_mode | Off | Off |
MysqlI Support | enabled |
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 |
Directive | Local Value | Master Value |
mysqli.allow_local_infile | On | On |
mysqli.allow_persistent | On | On |
mysqli.default_host | no value | no value |
mysqli.default_port | 3306 | 3306 |
mysqli.default_pw | no value | no value |
mysqli.default_socket | no value | no value |
mysqli.default_user | no value | no value |
mysqli.max_links | Unlimited | Unlimited |
mysqli.max_persistent | Unlimited | Unlimited |
mysqli.reconnect | Off | Off |
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 |
PCRE (Perl Compatible Regular Expressions) Support | enabled |
PCRE Library Version | 8.32 2012-11-30 |
Directive | Local Value | Master Value |
pcre.backtrack_limit | 1000000 | 1000000 |
pcre.recursion_limit | 100000 | 100000 |
PDO support | enabled |
PDO drivers | mysql, sqlite |
PDO Driver for MySQL | enabled |
Client API version | 5.5.68-MariaDB |
Directive | Local Value | Master Value |
pdo_mysql.default_socket | /var/lib/mysql/mysql.sock | /var/lib/mysql/mysql.sock |
PDO Driver for SQLite 3.x | enabled |
SQLite Library | 3.7.17 |
Phar: PHP Archive support | enabled |
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. |
Directive | Local Value | Master Value |
phar.cache_list | no value | no value |
phar.readonly | On | On |
phar.require_hash | On | On |
Revision | $Id: 32db6705f5b617967a546be3114e178a4138c1ca $ |
Readline Support | enabled |
Readline library | EditLine wrapper |
Directive | Local Value | Master Value |
cli.pager | no value | no value |
cli.prompt | \b \> | \b \> |
Reflection | enabled |
Version | $Id: 6c4d8062369898a397e4b128348042f5c01b4427 $ |
Session Support | enabled |
Registered save handlers | files user |
Registered serializer handlers | php php_binary wddx |
Directive | Local Value | Master Value |
session.auto_start | Off | Off |
session.cache_expire | 180 | 180 |
session.cache_limiter | nocache | nocache |
session.cookie_domain | no value | no value |
session.cookie_httponly | Off | Off |
session.cookie_lifetime | 0 | 0 |
session.cookie_path | / | / |
session.cookie_secure | Off | Off |
session.entropy_file | /dev/urandom | /dev/urandom |
session.entropy_length | 32 | 32 |
session.gc_divisor | 1000 | 1000 |
session.gc_maxlifetime | 1440 | 1440 |
session.gc_probability | 1 | 1 |
session.hash_bits_per_character | 5 | 5 |
session.hash_function | 0 | 0 |
session.name | PHPSESSID | PHPSESSID |
session.referer_check | no value | no value |
session.save_handler | files | files |
session.save_path | /var/www/bono/data/bin-tmp/ | /var/www/bono/data/bin-tmp/ |
session.serialize_handler | php | php |
session.upload_progress.cleanup | On | On |
session.upload_progress.enabled | On | On |
session.upload_progress.freq | 1% | 1% |
session.upload_progress.min_freq | 1 | 1 |
session.upload_progress.name | PHP_SESSION_UPLOAD_PROGRESS | PHP_SESSION_UPLOAD_PROGRESS |
session.upload_progress.prefix | upload_progress_ | upload_progress_ |
session.use_cookies | On | On |
session.use_only_cookies | On | On |
session.use_trans_sid | 0 | 0 |
Simplexml support | enabled |
Revision | $Id: 692516840b2d7d6e7aedb0bedded1f53b764a99f $ |
Schema support | enabled |
SPL support | enabled |
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 support | enabled |
SQLite3 module version | 0.7 |
SQLite Library | 3.7.17 |
Directive | Local Value | Master Value |
sqlite3.extension_dir | no value | no value |
Dynamic Library Support | enabled |
Path to sendmail | /usr/sbin/sendmail -t -i -f [email protected] |
Directive | Local Value | Master Value |
assert.active | 1 | 1 |
assert.bail | 0 | 0 |
assert.callback | no value | no value |
assert.quiet_eval | 0 | 0 |
assert.warning | 1 | 1 |
auto_detect_line_endings | 0 | 0 |
default_socket_timeout | 60 | 60 |
from | no value | no value |
url_rewriter.tags | a=href,area=href,frame=src,input=src,form=fakeentry | a=href,area=href,frame=src,input=src,form=fakeentry |
user_agent | no value | no value |
sysvmsg support | enabled |
Revision | $Id: e268047b695fe9a43cdf415c429729252347becd $ |
Tidy support | enabled |
libTidy Release | 25 March 2009 |
Extension Version | 2.0 ($Id$) |
Directive | Local Value | Master Value |
tidy.clean_output | no value | no value |
tidy.default_config | no value | no value |
Tokenizer Support | enabled |
WDDX Support | enabled |
WDDX Session Serializer | enabled |
XML Support | active |
XML Namespace Support | active |
libxml2 Version | 2.9.1 |
XSL | enabled |
libxslt Version | 1.1.28 |
libxslt compiled against libxml Version | 2.9.1 |
EXSLT | enabled |
libexslt Version | 1.1.28 |
Zip | enabled |
Extension Version | $Id: 0c033d4e4613d577409950ed7bf8da4b68286d15 $ |
Zip version | 1.11.0 |
Compiled against libzip version | 0.10.1 |
ZLib Support | enabled |
Stream Wrapper | compress.zlib:// |
Stream Filter | zlib.inflate, zlib.deflate |
Compiled Version | 1.2.7 |
Linked Version | 1.2.7 |
Directive | Local Value | Master Value |
zlib.output_compression | Off | Off |
zlib.output_compression_level | -1 | -1 |
zlib.output_handler | no value | no value |
Additional Modules
Module Name |
sysvsem |
sysvshm |
Environment
Variable | Value |
PATH | /usr/local/bin:/usr/bin:/bin |
PHP Variables
Variable | Value |
_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 доданий в секцію :
Використовуючи командний рядок
Альтернативою попереднім крокам може служити використання команди 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, яке ви хочете налаштувати і натиснути "Edit." В панелі Actions:
У вікні "Edit FastCGI application" встановіть для параметра instanceMaxRequest значення 10000 нажмать кнопку огляду в меню EnvironmentVariables.
Додайте змінну PHP_FCGI_MAX_REQUESTS, встановивши для неї значення в 10000:
Прімеченіе: Якщо ви не встановите дані значення, то за замовчуванням вони будуть наступними: 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 на рівні сайтів не представляється можливим.
Схожі статті