Управляющие функции

Файл конфигурации php.ini

В комплекте поставки данный файл именуется php.ini-dist, при ручной установке его нужно переименовать в php.ini и поместить в каталоге но умолчанию. Традиционно РНР ищет данный файл в нынешнем каталоге (скажем, там, где находится сам интерпретатор). Также данный файл может распо.чагаться в системном каталоге (это характерно Windows). При запуске интерпретатора из командной строки с параметром -с дозволено указать другой путь. Помимо того, путь дозволено задать и переменной окружения PHPRC.

Файл конфигурации PHP ISAPI модуля загружается некогда, при запуске web-сервера; а для CGI-верспи — при всем запуске. Исходные параметры конфигурации php.ini-dist соответствуют параметрам компиляции по умолчанию. Для сервера Apache некоторые параметры РНР дозволено также указать в файлах конфигурации web-сервера и файлах .htaccess (в виде php_value name value, где name — наименование параметра РНР, a value — ее значение).

Параметры для загружаемых модулей помечаются их наименованиями, коюрые заключены в квадратные скобки. Эти наименования в скобках (пока) игнорируются. Позже символа «точка с занятой» указываются комментарии.

Значения параметров указываются в виде: директива = значение. Регистр учитывается. Значением может быть:

  • строка;
  • число:
  • РНР константа (скажем: E_ALL, М_Р!);
  • одна из INI констант (On, Off, True, False Yes, No, None);
  • выражение (скажем: E_ALL & -E_NOTICE);
  • строка в кавычках (скажем: "Строка").

В выражениях дозволено указывать группирующие круглые скобки, битовые операторы: | (ЛИБО), & (И), - (НЕ) и логичный оператор: ! (НЕ). Если требуется применять константы РНР, определяемые

загружаемыми библиотеками, то их дозволено применять только позже строки, загружающей соответствующий модуль. Для установки логических параметров дозволено применять значения 1, On, True, Yes; а для их сброса — 0, Off. False, No. Пустая строка может быть обозначена простым неуказанием значения позже знака равенства либо значением None. Узнать нынешние параметры конфигурации дозволено функциями phpinfoO, get cfg var() и т. п.

Всеобщие параметры

anow_call_time_pass_reference = On

Разрешает передачу доводов по ссылке при вызове функций. Данный параметр устарел и в грядущем не будет поддерживаться. Рекомендуется указывать возможность передачи значений в функцию по ссылке в объявлении функций, а данный параметр отключить.

;arg_separator.output = "&агар;"

Разграничитель доводов, применяемый в URL, генерируемых РНР. По умолчанию: «&>> в представлении HTML (параметр добавлен в РНР 4.0.5).

;arg_separator.input = ";&"

Перечисляет разделители, используемые РНР для распределения доводов в строке URL и дальнейшего занесения в переменные. Весь символ указанной строки считается разделителем (параметр добавлен в РПР 4.0.5).

aTlow_url_fopen = On

Разрешает указание адресов URL в функциях открытия файлов (потоков). По умолчанию допустимо применение удаленных файлов ftp и http; некоторые добавочные модули могут расширять возможности, скажем, модуль zlib дозволяет открывать сжатые файлы.

asp_tags = Off

Разрешает применение ASP-сходственных тегов <% и %> в дополнение к основным <?рпр и ?>. Это также дозволяет выводить значение переменных способом ASP: <%- %value %>.

auto_append_filе = string

Указывается имя файла, текст которого механически добавляется перед началом всего интерпретируемого файла (как если бы его подключали директивой include(); путь include_path также применяется). Может применяться для отслеживания посещений, инициализации переменных основного сценария либо простого добавления «верхушек» страниц. Но если сценарий завершается функцией exit(), добавление не производится.

auto_arepend_file = string

Указывается имя файла, текст которого механически добавляется позже конца всего интерпретируемого файла, аналогично параметру auto_append_fiIe.

cgi_ext = string

Параметр пока не определен, defaultjnimetype = "text/html" ;default_charset = "iso-8859-1"

Строки mimetype и charset, посылаемые в http заголовке всякой страницы, генерируемой РНР. Дозволено очевидно проверить, какой заголовок выводится РНР, запустив сценарий из командной строки, не указывая параметр -q. Пригодно для указания charset-a кириллицы (скажем: «windows-1251»).

display_errors = On

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

display_startup_errors = Off

Даже когда все сообщения об ошибках разрешены, ошибки времени инициализации РНР не отображаются. Параметр разрешает итог сообщений об этих ошибках как обыкновенный текст. Рекомендуется отключить данный параметр позже отладки, потому что это может применяться преступниками для приобретения конфиденциальной информации.

;doc_root = string

Указывает корневой каталог РНР на сервере. При указании с параметром safejnode = On сценарии в иных каталогах не запускают ся.

engine = On

Параметр пригоден только для PHP-модуля сервера Apache. Он разрешает позволить (либо запретить) интерпретацию сценариев РНР в определенных web-каталогах либо на отдельных виртуальных web-серверах. Обыкновенно эта директива указывается в соответствующем разделе файла httpd.conf.

;error_log = string

Имя файла, в тот, что заносятся сообщения об ошибках. При указании особого значения syslog сообщения направляются в журнал системных событий (в UNIX это syslog(3), а в Windows NT это Event Log; Windows 95 параметр не поддерживает).

error_reporting = E_ALL &-E_NOTICE

Устанавливает битовую маску ошибок, о которых сообщается во время исполнения. По умолчанию выдаются все сообщения, помимо примитивных. Допустимы многообразные комбинации. Константы и значения приводятся в главе «Обработка ошибок».

;error_prepend_string = "<font color=ffOOOO>"

Добавляет указанную строку в начале сообщения, выводимого при ошибке.

;error_append_string = "</font>"

Добавляет указанную строку в конце сообщения, выводимого при ошибке.

expose_php = On

Разрешает включать в http-заголовки припоминание о том, что РНР установлен на сервере.

file_uploade = On

Разрешает пли воспрещает поддержку HТТР-загрузки файлов на сервер.

gpc_order = "GPS"

Параметр устарел и заменен параметром variabдes_order.

ignore_user_abort = On

Воспрещает завершать сценарий при обрыве подключения.

См. функцию ignore_user_abort().

inplicit_flush = Off

Эквивалент вызова функции ob_implicit_f"lush(). Установка этого параметра крепко снижает быстродействие и применяется в основном при отладке.

include_path = string

Указывает перечисление каталогов, в которых ищутся файлы, подключаемые с подмогой requireO, include() и fopen_with_path(). Формат аналогичен используемому в системной переменной окружения PATH: для UNIX разграничитель — это двоеточие, для Windows — точка с запятой.

В UNIX: include j33th=.:/home/httpd/php-lib.

В Windows: include_path=".; c:\www\phplib".

Значение по умолчанию — только нынешний каталог.

isapi_ext = string

Параметр пока не определен.

log_errors = Off

Определяет, помещать ли сообщения об ошибках в журнал событий web-сервера. Зависит от вида сервера.

magic_quotes_gpc = On

Разрешает при регистрации глобальных переменных из внешних значений (Get/Post/Cookie) модифицировать получаемые строки, а именно добавлять обратный слеш перед всяким символом: одинарной либо двойственный кавычки, обратного слеша «\» и нулевого символа \0. Если также разрешен параметр magic_quotes_sybase, то одинарные кавычки удваиваются взамен предварения слешем.

magic_quotes_runtime = Off

Разрешает либо воспрещает реформирование строковых данных, возвращаемых множеством функций из внешних источников (текстовых файлов, баз данных), по тезису параметра magic_quotes_ gpc. Предпочтительно делать это вручную.

magic_quotes_sybase = Off

Если данный параметр разрешен коллективно с magic_quotes_gpc (либо magic_quotes_runtime), то одинарные кавычки удваиваются взамен предварения слешем.

max_execution_time = 30

Устанавливает максимально возможное время исполнения сценария (тайм-аут) в секундах. При превышении этого времени сценарий будет прекращен.

memory_limit = 8М

Устанавливает наивысший объем памяти, тот, что может быть выделен одному сценарию (8 Мбайт). Это предотвращает поглощение большого объема памяти сервера неоптимизированными сценариями.

nsapi_ext = string

Параметр пока не определен.

open_basedir = string

Указывает перечисление тех каталогов, в которых может быть открыт файл. Если указывается непустая строка, при открытии

файла (скажем, функциями fopen() либо gzopen()) местоположение файла проверяется и он открывается, только если обнаруживается в каталоге из указанного списка. Особое значение «точка» обозначает нынешний каталог, в котором находится сценарий.

В Windows разделителем списка каталогов служит точка с запятой, в иных системах — двоеточие. При запуске РНР как модуля Apache пути наследуются от корневого web-каталога.

output_buffering = Off

Разрешает либо воспрещает буферизацию выводимого текста. Разрешение этого параметра дозволяет посылать HTTP-заголовки (либо cookie) из всякого места сценария, но снижает быстродействие. Допустимо разрешение буферизации во время исполнения.

output_handler = string

Определяет функцию, которая будет применяться для итога. Таким образом дозволено, скажем, перенаправлять каждый выводимый текст в log-файл. При указании в качестве такой функции "ob_gzhandler" каждый выводимый текст будет неявно сжиматься перед посылкой браузеру способом gzip либо deflate (обыкновенно браузеры способны механически декомпрессировать такие данные). Установка этого параметра механически разрешает параметр output_ buffering.

precision = 14

Число значащих цифр, выводимое в дробных числах.

register_globals = On

Разрешает регистрировать внешние переменные (в порядке, указанном параметром variables_order) в качестве глобальных переменных сценария. Рекомендуется, по соображениям безопасности, отключить данный параметр и осуществлять доступ к внешним переменным (для этого должен быть разрешен параметр track_vars) через соответствующие ассоциативные массивы: SHTTP_ENV_VARS, $HTTP_GET_VARS, $HTTP_POST_VARS, SHTTP_COOKIE_VARS, $HTTP_SERVER_VARS.

post_max_size = 8M

Устанавливает наивысший объем файла (8 Мбайт), тот, что может быть передан на сервер способом POST.

register_argc_argv = On

Разрешает регистрацию переменных argv и агдс, содержащих параметры запуска из командной строки либо параметры строки запроса способом GET. Если эти переменные не применяются, отключите параметр для возрастания быстродействия.

short_open_tag = On

Разрешает применять короткую форму записи тегов-ограничителей РНР: <? и ?>. Если нужна дальнейшая совместимость РНР с XML, данный параметр следует заблокировать, и тогда будет разрешено применять только теги <?php и ?>.

track_errors = Off

Сберегает последнее сообщение об ошибке в переменной $php_ errormsg.

track_vars = On

Разрешает сберегать внешние переменные (Environment, GET, POST, Cookie, Server) в ассоциативных массивах: $HTTP_ENV_ VARS, $HTTP_GET_VARS, $HTTP_POST_VARS, $HTTP_ COOKIE_ VARS и $HTTP_SERVER_VARS.

В РНР 4.0.3 данный параметр разрешен неизменно.

;upload_tmp_dir = string [

Устанавливает каталог временных файлов, загружаемых на сервер способом HTTP upload. Данный каталог должен быть доступен для записи как открытый (public). По умолчанию применяется системный: TEMP либо ТМР.

upload_max_filesize = 2М

Устанавливает максимально возможный размер файлов, загружаемых на сервер способом HTTP upload.

user_dir = string

Устанавливает имя корневого каталога пользователей, в котором РНР открывает файлы формата user-name, скажем: publicjitml.

variables_order = "EGPCS"; изредка указывается "GPC"

Указывает порядок инициализации переменных сценария РНР. Порядок указывается заглавными символами, являющимися сокращениями для соответственно переменных окружения (Environment), переменных, полученных способами GET и POST, после этого Cookie, и собственно внутренних переменных РНР (Server Built-in). Инициализация происходит в порядке слева направо, и ветхие значения заменяются одноименными новыми. Ранее имя этого параметра было gpc_order.

warn_plus_overloading = Off

Выводит предупреждение, если оператор плюс (+) применяется в качестве оператора конкатенации строк (взамен оператора «точка»). Пригодно для отладки.

y2k_compliance = Off

Разрешает либо воспрещает поддержку совместимости с браузерами, не способными позволить задачу 2000 года.

zlib.output_compression = Off

Неявно сжимает каждый выводимый текст, посылаемый браузеру, применяя библиотеку zlib. Возможные значения: off, on либо размер буфера, применяемый для сжатия (по умолчанию 4 Кбайт)

Цветовыделение

Следующие параметры определяют цвета, которыми выдается синтаксис РНР при применении функции highlight_file() и сходственных ей. Возможны всякие значения цвета, распознаваемые в теге <font color=???>.

highlight.string = #DDOOOO для строк (алый)
highlight.comment = #FF8000 для комментариев (оранжевый)
highlight.keyword = #007700 для зарезервированных слов (зеленый)
highlight.bg = #FFFFFF цвет фона (белый)
highlight.default = #ООООВВ для обыкновенного кода РНР (синий)
highlight.html = #000000 для обыкновенного текста, не кода (черный)

Безвредный режим

safejnode = Off

Разрешает безвредный режим РНР.

safejnode_exec_dir = string

При исполнении РНР в безвредном режиме функции, запускающие внешние приложения (скажем: systemO), будут запускать только те из них, которые помещены в указанном каталоге.

safe-mOde_allowed_env_vars = РНР_

Механическая установка значений неременных может быть небезопасна, следственно в данном параметре дозволено через запятую перечислить те префиксы имен переменных, которые дозволено механически инициализировать в неопасном режиме. При пустой строке это лимитация снимается.

safe_mode protected env vars = LD LIBRARY PATH

В этой строке через запятую перечисляются имена тех переменных среды окружения, которые пользователю запрещено изменять, применяя функцию putenv().

disable_functions = string

Блокирует запуск перечисленных через запятую функций. Не зависит от разрешения безвредного режима.

sql. safejnode = Off

Включает неопасный режим для выполнения команд работы с базами данных.

Mail

[mail function]

SMTP = local host/

Только для Windows: путь DNS либо IP-адрес сервера SMTP, используемого PHP для отправки почты функцией mail ().

sendmail_from = me@localhost.com

Только для Windows: обратный адрес отправителя почты (поле From:) по умолчанию.

;sendmail_path = 'sendmail -t

Только для Unix. Почтовая программа, применяемая для отсылки писем. В этой строке дозволено указать полный путь, а также параметры запуска. Обыкновенные варианты в Unix: usr/sbin/sendmail, /usr/1ib/sendmail, /var/qmai1/bin/sendmail.

Отладчик

[Syslog]

define_syslog_variables = Off

Определяет переменные syslog (скажем, $LOG_PID, $LOG_CRON и т. д.). Обыкновенно параметр блокируется для возрастания быстродействия. Во время исполнения дозволено воспользоваться функцией define_ syslog_variables().

[Logging]

:logging.method = db

;logging.directory = /path/to/log/directory

Параметры в стадии разработки.

[Debugger]

debugger.host = local host

Строка DNS либо IP-адрес хоста отладчика,

debugger.port = 7869

Порт, применяемый хостом отладчика,

debugger.enabled = False

Разрешает либо воспрещает отладку.

[Assertion]

:assert.active = On

Разрешает применение Assert(expr).

;assert.warning = On

Разрешает либо воспрещает выдачу предупреждения PHP для каждои ошибки в assert().

;assert.bail = Off

Устанавливает, считать ли значение False в assert() оплошностью.

;assert.call back = О

Вызывает указанную функцию для отладки.

:assert.quiet_eval = 0

Обрабатывает ошибки, содержащиеся в eval(), согласно установкам в error_reporting(). Установка значения этого параметра TRUE и дальнейший вызов error_reporting(0) будут игнорировать эти ошибки.

Прочие настройки модулей

[bcmath]

bcmath.scale = О

Число десятичных цифр для функций bcmath. [browscap]

;browscap = extra/browscap.ini

Имя файла browscap.ini (browser capabilities).

См. также get browser(). [Java]

;Java.class.path = .\php Java.jar ;

Java.home = c:\jdk

;Java.library = c:\jdk\jre\bin\hotspot\jvm.dll

java.library.path

[Verisign Payflow Pro]

pfpro.defaulthost = "test.signio.com"

Сервер Signio по умолчанию

, pfpro.defaultport = 443

Номер порта подключения к серверу

pfpro.defauHtimeout = 30

Наивысшее время ожидания результата в секундах,

ipfpro.proxyaddress =

IP-адрес прокси сервера, если требуется.

;pfpro.proxyport =

Номер порта прокси-сервера.

;pfpro.proxy!ogon =

. Логин прокси-сервера, по умолчанию.

;pfpro.proxypassword =

Пароль-прокси сервера, по умолчанию.

[Sockets]

sockets.use_system_read = On

Разрешает применять системную функцию чтения read() взамен функции PHP php_read().

[com]

: com. type! ib_file =

Путь к файлу, содержащему значения GUID, IID, либо файлу типа Type Lib. ;com.aTlow_dcom = TRUE

Разрешает вызовы «распределенного» COM (DCOM).

Настройки модулей баз данных

[ODBC]

uodbc.default_db = string

Источник данных ODBC по умолчанию для функций odbc_connect() и odbc_pconnect(). Параметр еще не реализован.

uodbc.default_user = string

Имя пользователя по умолчанию для функций odbc_connect() и odbc_pconnect(). Параметр еще не реализован.

uodbc.default_pw = string

Пароль пользователя по умолчанию для функций odbc_connect() и odbc_pconnect(). Параметр еще не реализован.

odbc.allow_persistent = On

Допускает либо воспрещает устойчивые ODBC-подключения.

odbc.check_persistent = On

Проверяет либо не проверяет сохранность устойчивых подключений до их применения.

uodbc.max_persistent = -1

Наивысшее число устойчивых подключений ODBC на один процесс (значение -1 обозначает неимение ограничений).

uodbc.maxjinks = -1

Наивысшее число подключений ODBC на один процесс, включая устойчивые (значение -1 обозначает неимение ограничений).

I odbc.defaultlrl = 4096

Обработка полей типа LONG (возвращает число байтов в переменных). О обозначает способ passthra. См. функцию odbcJongreadlen().

odbc.defaultbinmode = 1

Метод обработки двоичных данных. О обозначает способ passthru, 1 — «как есть», 2 — реформирование в текстовые символы.

См. функцию odbc_binmode().

[MySQL]

параметры defaultjiost, default_user, default_password блокируются ; в неопасном режиме, и вообще их не рекомендуется указывать здесь

mysql.defaultjiost = string

Имя хоста по умолчанию, где должен размещаться сервер MySQL

mysql.default_user = string

Имя пользователя по умолчанию для функций подключения

mysql.default_password = string

Пароль пользователя по умолчанию для функций подключения

mysql.default_socket =

Имя сокета для локальных подключений к MySQL

mysql.default_port =

Номер порта по умолчанию. Если параметр не установлен, то применяется (по порядку) значение из переменной $MYSQL_TCP_PORT, либо из файла /etc/services, либо из константы компиляции MYSQL_ PORT (в Win32 только из MYSQL_PORT).

mysql.allow_persistent = On

Допускает либо не допускает устойчивые подключения к MySQL

mysql.max_persistent = -1

Наивысшее число устойчивых подключений к MySQL на один процесс (значение -1 обозначает неимение ограничений).

mysql.maxjlinks = -1

Наивысшее число подключений к MySQL на один процесс, включая устойчивые (значение -1 обозначает неимение ограничений).

[mSQL]

msql.al 1ow_persi stent = On

Допускает либо не допускает устойчивые подключения к mSQL.

I msql .max_persistent = -1

Наивысшее число устойчивых подключений к mSQL на один \ процесс (значение -1 обозначает неимение ограничений).

msql.maxjlinks = -1

Наивысшее число подключений к mSQL на один процесс, включая устойчивые (значение -1 обозначает неимение ограничений).

[PostgresSQL]

pgsql.allow_persistent = On

Допускает либо не допускает устойчивые подключения к Postgres.

pgsql.max_persistent = -1

Наивысшее число устойчивых подключений к Postgres на один процесс (значение -1 обозначает неимение ограничений).

pgsql .maxjinks = -1

Наивысшее число подключений к Postgres на один процесс, включая устойчивые (значение -1 обозначает неимение ограничений).

[SESAM]

sesam_oml = string

Имя библиотеки BS2000 PLAM, содержащей загружаемые драйверы SESAM. Требуется для применения функций SESAM. Библиотека BS2000 PLAM должна быть сконфигурирована как ACCESS=READ,SHARE=YES.

sesam_configfile = string

Файл конфигурации приложений SESAM. Нужен для применения функций SESAM. Он должен быть доступен для чтения.

Традиционно данный файл содержит следующие параметры:

CNF=B NAM=K NOTYPE sesamjnessagecatalog = string

Имя файла сообщений SESAM. Традиционно не требуется. [Sybase]

Sybase.allow_persistent = On

Допускает либо не допускает устойчивые подключения к Sybase.

Sybase.max_persistent = -1

i Наивысшее число устойчивых подключений к Sybase на один \ процесс (значение -1 обозначает неимение ограничений).

Sybase.max_links = -1

Наивысшее число подключений к Sybase на один процесс, включая устойчивые (значение -1 обозначает неимение ограничений).

;Sybase.interface_file = "/usr/sybase/interfaces"

Sybase.min_error_severity = 10

Пороговый ярус отображаемых ошибок.

Sybase.compatabilityjnode = Off

Разрешает либо не разрешает совместимость с версиями РНР 3.0. Если совместимость разрешена, РНР механически назначает типы итогов согласно типологии Sybase взамен того, дабы рассматривать их все как строки. Рекомендуется отключать данный параметр.

[Sybase-CT] sybct.allow_persistent = On

Допускает либо не допускает устойчивые подключения к Sybase-CT. sybct.maxjersistent = -1

Наивысшее число устойчивых подключений к Sybase-CT на один процесс (значение -1 обозначает неимение ограничений).

sybct.max_links = -1

Наивысшее число подключений к Sybase-CT на один процесс, включая устойчивые (значение -1 обозначает неимение ограничений).

sybct.min_server_severity = 10

Отображает как предупреждения сообщения об ошибках с ярусом, равным либо огромным чем указанный.

См. функцию sybase_min_server_severity(). sybct.min_client_severity = 10

Отображает как предупреждения сообщения об ошибках клиентской библиотеки с ярусом, равным либо огромным чем указанный.

См. функцию sybase_min_client_severity().

Значение 10 традиционно блокирует итог предупреждений.

sybct.login_timeout = 60

Наивысшее время ожидания подключения в секундах (не забывайте также про параметр max_execution_time).

sybct.timeout =

Наивысшее время ожидания исполнения операции базы данных подключения в секундах, по умолчанию не ограничено (не i забывайте также про параметр max_execution_time).

sybct.hostname = string

Имя хоста, с которого производится подключение.

См функцию sp_who().

[Informix] ifx.defaultjiost = string

Имя хоста по умолчанию, где должен размещаться сервер Informix (блокируется в безвредном режиме).

ifx.default_user = string

Имя пользователя но умолчанию для функций подключения (блокируется в неопасном режиме).

ifx.default_password = string

Пароль пользователя по умолчанию для функций подключения (блокируется в безвредном режиме).

ifx.allow_persistent = On

Допускает либо не допускает устойчивые подключения к Informix.

ifx.max_persistent = -1

Наивысшее число устойчивых подключений к Informix на один процесс (значение -1 обозначает неимение ограничений).

ifx.maxjinks = -1

Наивысшее число подключений к Informix на один процесс, включая устойчивые (значение -1 обозначает неимение ограничений).

ifx.textasvarchar = О

Возвращает либо не возвращает поля TEXT (blob) как типичные строки (при значении TRUE) в запросах SELECT. Напротив (по умолчанию) нужно применять для доступа blob id.

См. также ifx_textasvarchar().

ifx.byteasvarchar = 0

Возвращает либо не возвращает поля BYTE (blob) как типичные строки (при значении TRUE) в запросах SELECT. Напротив (по умолчанию) нужно применять для доступа blob id.

См. также ifx_textasvarchar().

ifx.charasvarchar = О

S1 Удаляет либо не удаляет пробелы в конце строк нулей CHAR (fixed-length).

ifx.blobinfile = О

Реально установка этого параметра (TRUE) принуждает сберегать значения не в памяти, а в файле.

См. также ifx_blobinfile_mode().

ifx.null format = 0

Возвращает поля NULL как строку "NULL" (при значении TRUE) либо же как пустую строку "" (по умолчанию).

См. также ifx_nuTl format().

[MSSQL] mssql.allow_persistent = On

Допускает либо не допускает устойчивые подключения к MSSQL.

mssql.max_persistent = -1

Наивысшее число устойчивых подключений к MSSQL на один процесс (значение -1 обозначает неимение ограничений).

mssql. maxj inks = -1

Наивысшее число подключений к MSSQL на один процесс, включая устойчивые (значение -1 обозначает неимение ограничений).

mssql.min_error_severity = 10

Наименьший ярус отображаемых сообщений об ошибках.

mssql .nrin_message_severity = 10

Наименьший ярус отображаемых сообщений, mssql.compatabilityjnode = Off

Разрешение совместимости с PHP 3.0.

;mssql.textlimit = 4096

Лимитация длины текстовых строк. Возможные значения: 0- 2 147 483 647.

;mssql.textsize = 4096

Длина текстовых строк по умолчанию. Возможные значения: от О до 2 147 483 647.

;mssql.batchsize = 0

Размер порций (число записей), возвращаемых запросом. О — все записи запроса возвращаются одновременно.

[Ingres II]

Ingres.allow_persistent = On

Допускает либо не допускает устойчивые подключения к Ingres II.

Ingres.max_persistent = -1

Наивысшее число устойчивых подключений к Ingres II на один процесс (значение -1 обозначает неимение ограничений).

ingres.maxjinks = -1

Наивысшее число подключений к Ingres II на один процесс, включая устойчивые (значение -1 обозначает неимение ограничений).

Ingres.default_database =

Устанавливает базу данных по умолчанию. Указывается в строке формата: [nodejid: ]dbname[/srv_c"lass].

ingres. defauU_user =

Устанавливает имя пользователя но умолчанию,

ingres.default_password =

Устанавливает пароль пользователя по умолчанию.

Параметры сессий

[Session] session.auto_start = 0

Механически инициализирует сессию при запуске сценария ('если не O)

session, savejiandler = files

Функция-обработчик для сохранения/восстановления данных. По умолчанию данные сессии сохраняются в файлах.

session.save_path = /tmp

Довод, передаваемый в функцию save_handler. Для файлов, в которых сохраняются данные сессий, это каталог их размещения.

session.use_cookies = 1

Разрешает применять cookie

session.name = PHPSESSID

Имя сессии (применяется как имя основного cookie, содержащего идентификатор сессии). В имени могут применяться только алфавитно-цифровые символы.

session.cookie_lifetime = 0

Время жизни cookie в секундах, при 0 — пока работает браузер

session.cookie_path =

Путь в URL, для которого действителен cookie сессии.

session.cookie_domain =

Домен, для которого действителен cookie.

session.serialize_handler = php

Обработчик сериализации данных, php — типовой обработчик PHP. Также дозволено указать wddx.

session.gc_probability = 1

Процентная вероятность того, что при всей инициализации сессии будет запускаться процедура «сбора мусора».

session.gcjnaxlifetime = 1440

Число секунд, по прошествии которых сохраненные данные сессии будут считаться «мусором» и могут быть удалены процессом «сбора мусора».

session.referer_check =

Проверяет либо не проверяет значение HTTP Referer (адрес страницы, с которой был осуществлен переход на нынешнюю). Традиционно применяется для проверки морально хранимых URL, содержащих идентификаторы.

session.entropy_length = 0

Число читаемых из файла байтов.

;session.entropy_file = /dev/urandom

Программа, применяющаяся для генерации идентификаторов сессии. Для Unix возможно применять /dev/random либо /dev/urandom.

;session.entropy_length = 16

Размер в бантах идентификатора сессий

session.cachejlimiter = nocache

Установка системы кэширования HTTP. Допустимые значения: nocache, private, public. Если указывается пустое значение, то заказчик использует собственную систему кэширования, заданную в его системе по умолчанию.

session.cache expire = 180

Время устаревания кэшированных страниц в минутах.

session.use_trans_sid = 1

Применять механическое добавление в ссылки идентификаторов сессии. Для этого РНР должен быть скомпилирован с параметром --enable-trans-sid.

ur"l_rewriter.tags =

"a=href,area=href,frame=src,i nput=src,form=fakeentry"

Загрузка модулей Extension

enable_dl = On

Эта директива исключительно пригодна для модуля РНР сервера Apache. С ее подмогой дозволено позволить загрузку дополнительных модулей для одних виртуальных серверов (либо каталогов) и запретить для других. Для модуля РНР сервера IIS данный параметр также механически блокируется.

Основная повод блокирования этого параметра — безопасность, потому что при разрешении динамической загрузки ограничения safe_ mode и open_basedir исчезают. В неопасном режиме данный параметр механически блокируется.

extension_dir =

Каталог, в котором размещаются загружаемые модули РНР. Обыкновенно каталог именуется extensions.

extension = extensionfilename

Указание модуля, тот, что должен быть загружен при старте РНР. Рекомендуется указывать имя файла без пути. Скажем, для Windows: extension=msql.cm, а для UNIX: extension=msql.so.

Загружаемые модули PHP (extensions)

Изложение загружаемых модулей приводится для системы Windows. В комплекте РНР, поставляемом для Windows, следующие модули являются теснее встроенными (built-in):

  • standard
  • bcmath
  • Calendar
  • com
  • ftp
  • mysql
  • odbc
  • pcre
  • session
  • xml
  • wddx

Следующие модули дозволено загрузить функцией dl() во время исполнения либо раскомментировав соответствующие строки в файле конфигурации (* — файл не входит в комплект поставки РНР). Некоторым модулям требуются добавочные библиотеки, некоторые из которых входят в комплект поставки и размещаются в каталоге dll (не позабудьте переместить их в доступный для системы каталог либо указать путь к ним в переменной окружения PATH).

php_bz2.dll php_ctype.dll

php_cpdf.dll php_curl.dll (требует msvcr70.dll*,

sslleay32.dll)

php_cybercash.dll php_db.dll

php_dba.dll php_dbase.dll

php_domxml.dll (требует Iibxml2.dll) php_dotnet.dll

php_exif.dll php_fdf.dll (требует FdfTk.dll)

php_filepro.dll php_gd.dll

php_gettext.dll (требует php_hyperwave.dll

gnu_gettext.dll)

php_iconv.dll php_ifx.dll (требует isqlt09a.dll*)

php_iisfunc.dll php_imap.dll

php_ingres.dll (требует oiapi.dll*) phpjnterbase.dll (требует gds32.dll)

phpjava.dll php_ldap.dll (требует libsasl.dll)

php_mcrypt.dll (требует mcrypL.dll*) php_mhash.dll

php_ming.dll php_mssql.dll (требует

Ntwdblib.dll)

php_oci8.dll (требует oci.dll) php_openssl.dll (требует

msvcr70.dll*, Iibleay32.dll)

php_oracle.dll (требует ociw32.dll*) php_pdf.dll php_pgsql.dll php_printcr.dll

php_sablot.dll (требует sablot.dll) php_snmp.dll

djustright php_sybase_ct.dll php_yaz.dll

(требует libct.dll*)

php_zlib.dll |

Функции модулей

dl

Загрузка библиотеки растяжения РНР во время исполнения

int dl (string library)

dl ("extensions/php_db.dll"),

См. также параметр конфигурации extension_dir.

get_loaded_extensions

Определение перечня загруженных модулей

array get_loaded_extensions (void)

Возвращает массив, содержащий список имен модулей РНР, которые были прикомандированы, загружены при старте РНР и загружены во время исполнения функцией dl().

рrint_r (get_loaded_extensions());

Выводит информацию, сходственную дальнейшей:

Array [0] => xml
[1] => wddx
[2] => standard
[3] => session
[4] => posix
[5] => pgsql
[6] => рсге
[7] => gd [8] => ftp [9] =?
db [10] => Calendar
[11] => bcmath )

См. также get_extension_funcs().

extension_loaded

Проверка загрузки модуля

boo! extension^oaded (string name)

Возвращает TRUE, если указанный модуль name теснее был загружен. Обратите внимание на то, как пишется имя модуля, и на регистр символов.

См. также phpinfo().

get_extension_funcs

Определение функций модуля

array get_extension_funcs (string modulejiame)

Возвращает массив, содержащий перечисление имен функции, содержащихся в модуле module_name. Данный модуль должен быть заблаговременно загружен.

pnnt_r (get_extension_funcs ("xml")):

Если нужно получить перечисление всех доступных функций, используйте функцию get_defined_functions().

См. также get_loaded_extensions().

Параметры и информация РНР

phpinfo

Итог каждой информации РНР в формате HTML int phpinfo ([int what])

Выводимая информация включает: параметры компиляции РНР и его переменные, добавочные модули, версии, информацию сервера и системы, пути значения конфигурации, параметры вызова сценария, лицензию РНР.

Для сокращения объема выводимой информации дозволено указать один из следующих разделов what (если он не указывается, то подразумевается INFO_ALL):

  • INFO_GENERAL;
  • INFO_CREDITS;
  • INFO_CONFIGURATION;
  • INFO_MODULES;
  • INFOJNVIRONMENT;
  • INFO_VARIABLES;
  • INFO_LICENSE;
  • INFO_ALL

См. также: phpversion(), phpcredits(), php_logo_guid().

phpversion

Приобретение версии PHP string phpversion (void)

Возвращает строку, содержащую наименование версии интерпретатора РНР.

// выводит скажем. 4.0
5rel-dev' echo phpversion():

См. также: phpinfo(), phpcredits(), php_logo_guid().

phpcredits

HTML-распечатка разработчиков РНР

void phpcredits (int flag)

Выводит информацию о создателях и их взносе в разработку пакета РНР.

phpcredits(CREDITS_GENERAL):

Флаги дозволено комбинировать дальнейшим образом:

phpcredits(CREDITS_GROUP + CREOITS_DOCS +
CREDITSJULLPAGE).

  • CREDITS_ALL — полный HTML-листинг;
  • CREDITS_DOCS — список разработчиков документации;
  • CREDITS_FULLPAGE — обыкновенно применяется в комбинации с другими флагами. Выбирает вариант, подготовленный для распечатки;
  • CREDITSJ3ENERAL - всеобщая разработка языка РНР 4.0 и SAPI;
  • CREDITS_GROUP — список разработчиков ядра;
  • REDITS_MODULES — список модулей растяжения и их авторов;
  • CREDITS SAPI — список разработчиков РНР модуля API сервера.

См. также: phpinfo(), phpversion(), php_logo_guid().

php_sapi_name

Приобретение типа интерфейса между web-сервером и РНР

string php_sapi_name(void);

Возвращает строку, содержащую строчными буквами тип интерфейса. Для CGI РНР, это будет строка "cgi", для mod_php под Apache -"apache" и т. п.

$sapi_type - php_sapi_name().
if ($sapi_type == "cgi")
print "Это CGI PHP\n". else
print "Это не CGI PHP\n":

php_uname

Определение операционной системы string php_uname(void):

Возвращает строку, содержащую наименование операционной системы, скажем «Windows NT 5.0 build 2195».

if (substr(php_uname(). 0. 7)
!= "Windows") {
die("3TOT сценарий должен выполняться
в Windows.\n"); }

ini_set

Метаморфоза параметра конфигурации

string ini_set (string varname, string newvalue)

Устанавливает для указанного параметра varname значение newvalue. При фуроре возвращает бывшее значение; при ошибке - FALSE.

См. также: ini_alter(), ini_get(), ini_restore().

ini_alter

Синоним функции ini_set

string ini_alter (string varname, string newvalue).

ini_get

Приобретение значения параметра конфигурации string ini_get (string varname)

Возвращает нынешнее значение параметра с именем varname. Эта функция дозволяет получить все доступные РНР параметры. При ошибке возвращает FALSE.

См. также: ini_alter(), ini_restore(), ini_set().

ini_restore

Поправление значения параметра конфигурации

stnng ini_restore (string varname)

Устанавливает значение параметра varname в изначальное.

echo ini_set("precision". 20).
im_get("precision"), тm_restore("precision"),
im_get("precision");
// Традиционно выводит 14 20 14


См. также: ini_alter(), ini_get(), ini_set().

get_cfg_var

Определение значения параметра из файла php.ini

string get_cfg_var (string varname)

Подметьте, в различие от функции ini_get() возвращается не нынешнее значение параметра, а то, которое содержится в файле конфигурации. Эта функция также не возвращает прочие параметры (скажем, из конфигурации самого сервера).

При ошибке возвращает FALSE.

getenv

Приобретение значения переменной окружения

string getenv (string varname)

При ошибке возвращает FALSE.

$тр = getenv ("REM01E_ADDR");
// ip адрес пользователя

Список переменных окружения выдается функцией phpinfo(). Список этих переменных также определяется спецификацией CGI (http:// hoohoo.ncsa.uiuc.edu/cgi/). Функция не работает в модуле PHP ISAPI.

putenv

Установка переменной окружения

void putenv (string setting)

putenv ("UNIQID=$umqid").

get_magic_quotes_gpc

Приобретение нынешнего значения параметра magic_quotes_gpc.

long getjnagic_quotes_gpc (void)

Возвращается: 0 для Off, 1 для On. См. главу «Файл конфигурации».

См. также: get_magic_quotes_runtime(), set_magic_quotes_runtime().

getjnagic_quotes runtime

Приобретение нынешнего значения параметра magic_quotes_runtime

long get_magic_quotes_runtime (void)

Возвращается: 0 для Off, 1 для On. См. главу «Файл конфигурации».

См. также: getjnagic_quotes_gpc(), setjnagic_quotes_runtime().

set_magic_quotes_runtime

Установка нынешнего значения параметра magic quotes runtime long set_magic_quotes_runtime (int new_setting)

В доводе new_setting указывается: О для Off, 1 для On. См. главу «Файл конфигурации».

См. также: get_magic_quotes_gpc(), getjnagic_quotes_runtime().

phpjogo_guid

Приобретение GUID логотипа PHP

string php_logo_guid (void)

Возвращает, скажем, PHPE9568F34-D428-lld2-A769-OOAA001ACF42.

См. также: phpinfo(), phpversion(), phpcredits()

zend_logo_guid

Приобретение GUID логотипа Zend string zend_logo_guid (void)

Информация сценария PHP

define

Определение именованной константы

int define (string name, mixed value [, int case_insensitive])

Определение именованной константы сходно с определением переменной, но:

  • константы не имеют знака $ перед своим именем;
  • значения констант доступны в любом месте сценария;
  • константы нереально переопределить либо удалить;
  • константам дозволено присваивать только скалярные значения.

Имя определяемой константы указывается в доводе name, а значение — в value.

При указании третьего довода со значением 1 имя константы становится бесчувственным к регистру. В другом случае регистр учитывается, то есть: константы CONSTANT и Constant будут представлять разные значения.

<?php
define ("CONSTANT".
"Hello world ").
echo CONSTANT:
// outputs "Hello world."
?>

Возвращается TRUE либо FALSE при ошибке (скажем, если константа теснее была определена).

См. также: definedO и раздел «Константы».

defined

Проверка существования константы

int defined (string name)

Возвращает TRUE, если константа с именем, указанным name, была определена; напротив FALSE. /

<?php if (defined("CONSTANT"))
{ // Note that it should be quoted
echo CONSTANT; //
} ?>

См. также: defineO и раздел «Константы».

get_required_files

Определение списка файлов, подключенных директивами require_once()

array get_required_files (void)

Возвращает ассоциативный массив имен файлов. Индексами будут доводы, указанные в директивах require_once(), без растяжения .рhр.

<?php require_once
("local.php"), require_once
(". /inc/global.php"):
for ($1=1; $1<4; $1++)
include "util".$i "php".
echo "Файлы Required_once ";
print_r (get required_files());
echo "Файлы Included_once:
"; pnnt_r (get_included_tiles()): ?>

Приведенный пример должен вывести (подразумевается существование файлов):

Файлы Reqirreconce: Array
( [Lосаl] =-- local chn
. ./inc/vi. bal] -=>
/full/path/to/inc/giobal.php
ч Файлы Included once- Array
( Cut-ill] => ut' i1 php
CutiVI => uti V php
[ut <!,<] =' ut'13 php )

См. также: require_once(), include_once(), getjncluded_files().

get_included_files

Определение списка файлов, подключенных директивами include_once()

array get included_flies (void)

Функция действует подобно get_required_files ().

См. также: require_once(), inc1ude_once(), get_required_files().

getrusage

Определение расходования источников

array getrusage ([int who])

Это интерфейс одноименной системной команды. Возвращается ассоциативный массив (см. системную документацию). Если указывается довод со значением 1, то происходит вызов типа RUSAGE_ CHILDREN (источники, потребляемые дочерними процессами). В некоторых системах (скажем, Windows) функция может не трудиться.

$dat = jetftibdye() .
echo $dat["ru_ns.vap"J:
# number of swaps
echo $datL"ru_najTlt"]:
# number of page faults echo
$ddt["r''.'.'ti!re U'_ser"|;
# user time used (seconds)
echo Idat["ru_utirrie U_usec"]:
# user time used (microseconds)

get_current_user

Определение имени обладателя нынешнего сценария PHP

string get_current_user (void)

Традиционно это имя того пользователя, тот, что запускает сценарий, для серверного модуля — того, кто запускает сервер.

См. также: getmyuid(), getmypid(), getmyinode() и getlastmod().

getmyuid

Определение DID обладателя сценария PHP

Int getmyuid (void)

Возвращает номер-идентификатор пользователя либо FALSE при ошибке.

См. также: getmypid(), get_current_user(), getmyinode() и getlastmod().

getmyinode

Определение номера inode нынешнего сценария PHP

int getmyinode (void)

Функция не работает в Windows.

При ошибке возвращает FALSE.

См. также: getmyuid(), get_current_user(), getmypid() и getlastmod().

getmypid

Определение дескриптора процесса PHP

int getmypid (void)

Возвращает системный номер либо FALSE при ошибке.

См. также: getmyuid(), get_current_user(), getmyinode() и getlastmod().

getlastmod

Определение времени последней модификации страницы

int getlastmod (void)

Возвращает время последней модификации нынешней страницы (либо FALSE при ошибке) в формате «Unix timestamp», которое после этого может быть передано в функцию date().

// выводит, скажем:
'Last modified: March 04 1998 20:43:59.'
echo "Last modified: ".date ("F d Y H:i:s ".
getlastmod()).

См. также: date(), getmyuid(), get_current_user(), getmyinode() и getmypid().

Управление исполнением сценария PHP

set_time_limit

Установка предельного времени исполнения сценария ,

void set_time_limit (int seconds)

При запуске сценария PHP запускает системный таймер, и если время (выделенное сценарию для выполнения) истекает, а сценарий еще не завершился, РНР принудительно завершает сценарий (генерируя неизбежную ошибку исполнения). Это не допускает собрания большого числа сценариев, расходующих источники сервера, но, вероятно, «зависших» (скажем, если в них обнаружился безграничный цикл либо они пытаются дождаться подключения к не отвечающему серверу).

По умолчанию возможное время исполнения сценария устанавливается в файле конфигурации1 параметром max_execution_time (традиционно оно равно 30 с). Но для нынешнего сценария это значение дозволено изменить вызовом данной функции, указав время в секундах в ее доводе. Если указывается значение 0, то тогда временное лимитация снимается.

Отсчет времени начинается от момента вызова функции. Скажем, если сценарий теснее выполнялся в течение 15 секунд, а после этого вызывается функция set_time_limit(20), то всеобщее наивысшее время исполнения сценария становится равным 35 секундам.

Если сценарий выполняется в неопасном режиме (с установленным параметром safe mode), то тогда вызов этой функции игнорируется и применяется значение из файла конфигурации.

sleep

Приостановление выполнения (на секунды)

void sleep (int seconds)

Выполнение сценария приостанавливается на указанное число секунд seconds.

См. также usleep().

usleep

Приостановление выполнения (на микросекунды)

void usleep (int micro_seconds)

Выполнение сценария приостанавливается на указанное число микросекунд.

Эта функция не работает в Windows.

См. также sleep().

die

Итог сообщения и заключение нынешнего сценария

void die (string message)

Это языковая конструкция, ничего не возвращающая.

<?php $filename =
'/path/to/data-file';
Sfile = fopen (Sfllename. 'r')
or dieC'unable to open file
(Sfilename)"); ?>

См. также exit().

exit

Заключение нынешнего сценария

void exit(void);

Языковая конструкция, ничего не возвращающая.

См. также die().

assert

Проверка истинности значения

int assert (string]boo! assertion)

В качестве довода функции может быть указано значение либо строка, содержащая код РНР (как в функции evaK)). Функция проверяет, является ли значение (либо выражение) равным FALSE, и, если это так, исполняет определенные действия.

Поведение функции определяется установками в файле конфигурации либо при вызове функции assert_options().

Обыкновенно эта функция применяется экстраординарно в целях отладки, для проверки тех значений, которые неизменно обязаны быть правдивы (скажем: подключение модуля, свободное пространство на диске и т. д.).

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

function handler(){
echo "\n* Failed * \n"; }
assert("\$a='l';");
echo "a: $a \n";
assert(0);
echo assert_options(ASSERT_BAIL,l);
// завершать сценарий
assert_options(ASSERT_CALLBACK."handler");
// вызвать обработчик
@assert(--$a);
// не выдавать сообщений РНР
Echo "\n ... \n";
// эта строка не будет исполнена

Приведенный пример выведет:

а: 1 Warning: Assertion
failed in file.php
on line 20 0 * Failed *

assert_ options

Определение параметров assert

mixed assert_options (int parameter [, mixed value])

Функция дозволяет определить поведение конструкции assert(). Возвращается предыдущее значение параметра (либо значение FALSE при ошибке), указанного в первом доводе одной из следующих констант:

Параметр

ini-параметр

Умолчание

Описание

ASSERT_ACTIVE

asscrt.active.

1

Разрешить указание кода в assertQ

ASSERT_WARNING

assert, warning

1

Выдавать предупреждение РПР

ASSERTJ3AIL

assert.bail

0

Завершать выполнение, если «неистинно»

ASSERT_QUIET_EVAL

assert.quiet_eval

0

Не выдавать сообщений

ASSERT_CALLBACK

assert_callback

(null)

Установить функцию в качестве обработчика «неистинных» assert()

       

Если значение нужно переопределить, его указывают во втором доводе.

eval

Истолковывание строки как кода РНР

mixed eval (string code_str)

Исполняет указанный в строке code_str код как обыкновенный код РНР. Помимо каждого прочего, это может быть благотворно для сохранения кода в текстовом поле базы данных с целью дальнейшего исполнения.

H'le забывайте, что указанный в строке код должен быть синтаксиче-снки верным (скажем, обязаны присутствовать точки с запятой позже всякой команды и т. п.), в отвратном случае сценарий будет заавершен в этой строке с оплошностью. Рассматривайте также, что те значе-н«ня переменных, которые будут установлены в данной строке, будут ивспользоваться в оставшейся части сценария.

Если в строке указан оператор return, то тогда выполнение указан-нного кода будет досрочно закончено и возвращенное значение мож-нно получить как значение, возвращаемое самой функции.

<"-?php Ssstnng = 'сундук' .
$>.name = 'кирпич':
$>str = 'Это Sstnng. а внутри
$name.<br>\n';
e;cho $str.
eeval (" \$str = \"$str\". ");
«val (" echo \$str '):
eecho eval ("return 999: ");
?>

Приведенный выше сценарий выведет:

Это Sstnng, а внутри
Spame.<br>\n3ro сундук,
а внутри кирпич.<br> 9399

Ранг подключений

Морально РНР имеет три ранга подключения:

  • 0 — NORMAL;
  • 1 — ABORTED (прекращено пользователем);
  • 2 — TIMEOUT (истекло время ожидания результата).

При типичном выполнении сценария энергично состояние NORMAL. Если во время загрузки страницы пользователь нажимает кнопку STOP, энергичным становится состояние ABORTED. Если сценарий выполняется дольше отведенного ему времени (см. функцию set_tirae_ liraitO), устанавливается флаг состояния TIMEOUT. Допустимо определить, как должен вести себя сценарий в зависимости от этих условий.

Если требуется, дабы сценарий продолжал свое выполнение при обрыве соединения пользователем, необходимо установить в файле конфигурации значение параметра ignore_user_abort = 1 (это также дозволено сделать в файлах конфигурации Apache). Дозволено также воспользоваться функцией ignore_user_abort(). В отвратном случае, но умолчанию, если браузер отказывается от приема данных сценария, сценарий завершается.

Дабы игнорировать заключение сценария таймером, нужно применять функцию set_time_limit().

Если функцией register_shutdown_function() была установлена функция «запускаемая при заключении сценария», то, вне зависимости от ранга подключения, она будет выполнена перед тем, как сценарии завершится. И в «завершающей» функции дозволено будет узнать (с подмогой функций: connection_aborted() ,connection_timeout() и connecti on_ status()), был ли сценарий закончен типично либо досрочно.

connection_aborted

Определение обрыва подключения пользователем

int connection_aborted (void )

Возвращает TRUE, если подключение было разорвано пользователем.

connection_status

Определение ранга подключения

Int connection_status (void )

Возвращает значение битового поля (см. выше), разрешающее узнать в «завершающей» функции, был ли сценарий закончен досрочно и причину этого. Скажем, если возвращается 3 (ABORTED | TIMEOUT), то это обозначает, что время исполнения истекло, а также то, что пользователь отказался от загрузки страницы.

Если возвращается 0 (то есть значение NORMAL), то это обозначает, что выполнение сценария не было прекращено.

connection_tameout

Определение наступления тайм-аута

int connectionjtimeout (void )

Возвращает TRUE, если время исполнения сценария истекло.

ignore_user_abort

Прерывание сценария при обрыве подключения

int ignore_user_abort ([int setting])

Доводом setting дозволено указать, нужно ли досрочно завершать выполнение сценария, если связь с заказчиком утрачена. Если довод не указан, то возвращается нынешняя установка.

register_shutdown_function

Регистрация функции в качестве завершающей

int register_shutdown_function (string func)

Регистрирует функцию с именем func в качестве функции, запускаемой позже заключения сценария.

Подметьте: потому что позже заключения функции никакие средства итога недостижимы, это делает для функции, зарегистрированной в качестве «завершающей», недостижимыми обыкновенные средства отладки, такие как команды print либо echo.

Добавочные функции

get_browser

Определение возможностей браузера

object get_browser ([string user_agent])

Возвращаемая информация извлекается из файла browscap.ini. Для определения браузера применяется значение переменной $HTTP_USER_ AGENT либо значение, содержащееся в доводе user_agent.

Информация возвращается в виде свойств объекта и отражает возможности клиентского браузера (скажем, версию, поддерживает ли он javascript либо cookies).

<?php function list_array
($array) { while (list (Jkey. Svalue)
= each (Sarray)) { $str =
"<t»$key:</b> $value<br>\n"; }
return $str }
echo "$HTTP_USER_AGENT<hi">\n";
$browser = get_browser();
echo list_array ((array) Sbrowser). ?>

Содержимое допустимого итога:

Mozilla/4.5 ten] (Xll; U. Linux 2.2.9 1586)
<hr> <lpbrowser_name_pattern:</b>
Mozilla/4\.5.*<br> <b>parent:</b>
Netscape 4.0<bn> <b>platform:</b>
Unknown<br> <b>majorven:</b>
4<br> <b>mnorver:</b> 5<bn>
<b>browser:</b> Netscape<br>
<b>version </b> 4<br> <b>frames:</b>
l<bn> <b>tables:</b> l<bn>
<b>cookiev</b> l<br>
<b>backgroundsounds:</b>
<br> <b>vbscnpt:</b>
<br> <b>javascnpt:</b>
<br> <b>javaapplet: </b>
<br> <b>activexcontrols-</b>
<br> 'b>beta:<:/b> <br> <b>crawler
:</b> <br> <b>authenticodeupdate:
</b> <br> <b>msn:</b> <br>

Для того дабы функция могла работать, следует верно указать месторасположение файла browscap.ini в файле конфигурации.

highlight_file

Итог содержимого файла с цветовой разметкой boolean highlight_file (string filename)

Имя (либо путь) файла указывается'в доводе. Цвета выделения синтаксиса определяются в файле конфигурации РНР. Возвращает TRUE либо FALSE при ошибке.

Скажем, дабы принудить сервер Apache при приобретении запроса с URL, содержащего значение вида «пир://имя.сервера/5оигсе/путь/ к/файлу.php», выводить листинг файла «1тЬ1р://имя.сервера/путь/к/ файлу, рпр», сделайте следующее.

Добавьте в файл httpd.conf дальнейший фрагмент:

# Используем директиву "ForceType"
дабы указать, что значение source в URL
- не каталог, а имя сценария РНР
<Location /source>
ForceType appHcation/x-httpd-php
</Location>

Сделайте в корневом web-каталоге дальнейший файл с именем source:

<HTML><HEAD>
<TITLE'--Source Dibplay</TITLE>
</HEAD><BODY BGCOLOR=#FFEEDD>
<?php Sscnpt = getenv
("PATM_TRANSLATEn"
V if(!$script) { echo "
<BR><B>ERROR: Укажите имя
Сценария</В><ВК>"; lelse {
if (eieg("{\.php|\ inc)$".$scnptl)
{ echo "<Ш>Листинг файла.
$РАТН INFO</Hl>\n<HR>\n";
if(!ehighlight_file($scr1pt))
echo "Оплошность итога файла":
} else { echo "<H1>ERROR:
Показываются" ." только
листинги PHP файлов </Н1>"; } }
echo "<нр>Распечатано: "
.date("Y/M/d Н:т :s" .timeO): ?>
</BODY>
</HTML>

См. также: rnghlight_string(), show_source().

highlight_string

Выделение строки цветом

void highlight_string (string str)

Функция действует аналогично highlight_file(), но использует не содержимое файла, а указанной строки.

См. также: rngh1ight_file(), show_source().

show_source

Синоним функции highlightjile

boolean show_source (string filename)

См. также: highlight_string(), highlight_file().

leak

Имитация утраты памяти

void leak (int bytes)

Функция применяется для отладки администратора памяти, его проверки на способность ликвидировать неосвобожденные блоки памяти позже заключения сценария. Размер блока памяти указывается в байтах доводом bytes.

uniqid

Генерация неповторимого идентификатора

int uniqid (string prefix [, boolean leg])

Возвращает идентификатор, сгенерированный на основе значения нынешнего времени в микросекундах и имеющий префикс prefix.

Если указывается добровольный довод leg со значением TRUE, к концу идентификатора будет добавляться «составной хеш энтропии LCG», делающий его значение больше уникальным.

Префикс применяется для приобретения уникальных идентификаторов, генерируемых единовременно на различных машинах (когда время идентичное). Его длина может добиваться 114 символов. Если в качестве его значения передается пустая строка, то длина сгенерированного идентификатора будет 13 символов (при lcg=TRUE — 23 символа).

Принято также дообрабатывать полученное значение криптографическими способами (скажем, это зачастую делается в идентификаторах сессий).

$token = md5 (uniqid ("")):
// без случайной части
$better_token = md5 (uniqid (randO));
// потруднее

Эти строки генерируют 32 байта (128-битное шестнадцатеричное число): они владеют максимальной уникальностью, которая только может понадобиться.

pack

Пакетирование данных в двоичную строку

string pack (string format [, mixed args ...])

В первом доводе format указывается строка формата, а в последующих — элементы данных, вносимых в результирующую строку. Алгорифм функции заимствован из Perl и по большей части использует те же коды.

Строка формата состоит из кодов 2-х видов: кода типа элементов данных и числителя (длины данных либо числа элементов данных данного типа), указанного позже кода типа. Числитель может быть числом либо значением «*» (тогда длина определяется механически). Если числитель не указывается, он считается равным 1. Для кодов a, A, h, H числитель указывает число символов, вносимых в строку данных; а для кода 0 — безусловную позицию в строке итога, начиная с которой вносятся символы дальнейшего элемента данных.

echo pack("А"."Abe"),"
",pack("A6"."Abe")."|"
,pack("A*"."Abe")."|":
//выводит: A|Abc |Abe|

Возможны следующие коды типов данных:

  • а — строка, дополняемая нулевым символом (\0);
  • А — строка, дополняемая пробелом;
  • h — строка шестнадцатеричных цифр (младший полубайт 1-й);
    packC'h*"."0123456789abcDEF")
    == «\xlO\x32\x54\x76\x98\xBA\xDC\xFE»
  • H — строка шестнадцатеричных цифр (старший полубайт 1-й);
    pack("H16"."0123456789abcDEF")
    == «\x01\x23\x45\x67\x89\xAB\xCD\xEF»
  • с — байт со знаком;
    pack("c*"."X".-1.255.256) == «\0\xFF\xFF\0» unpackC'c*". pack("c*"."X".-1.255.256» — (O.-l.-l.O)
  • С — байт без знака;
    pack("C*"."X".-l 255.256) =
    = «\0\xFF\xFF\0» unpackC'C*"
    . Dack("C*","X".-1.255.256)) == (0.255.255.0)
  • s — знаковое короткое число (2 байта, порядок байтов системы);
  • S — беззнаковое короткое число (2 байта, порядок байтов системы);
  • n — беззнаковое короткое число (2 байта, старший байт сначала);
    pack("n*".OxF951.Oxlllllllll) == «\xF9\x51\xFF\xFF»
  • v — беззнаковое короткое число (2 байта, младший байт сначала);
    pack("v",OxF951) == «\x51\xF9»
  • i — знаковое длинное число (4 байта, порядок байтов системы);
  • L — беззнаковое длинное число (4 байта, порядок байтов системы);
  • N — беззнаковое длинное число (4 байта, старший байт сначала);
  • V — беззнаковое длинное число (4 байта, младший байт сначала); j
  • i — знаковое целое число (зависит от системы);
  • I — беззнаковое целое число (зависит от системы);
  • f — дробное float (зависит от системы и представления);
  • d — дробное double (зависит от системы и представления);
  • х — байт \0;
  • X — удалить предшествующий байт; pack("x2A*X2A."Abc".'V) == «\0\ОАя»
  • @ — заполнять символами \0 от нынешнего места и до указанной позиции.
    pack("A*(a4A*"."Ab"."ZZ") =
    = «Ab\0\OZZ» pack("A*(aiA*"."Abccccc"."ZZ")
    == «AZZ»

Подметьте, что указание на наличие знака в числе реально применяется только при распаковке. Не забывайте также, что РНР хранит числа в формате знаковых, системного размера. И проверяйте, умещается ли огромное число (РНР может спрятано преобразовать его в дробное) в отведенный для него размер (напротив оно будет урезано без вашего ведома).

unpack

Распаковка двоичной строки

array unpack (string format, string data)

Возвращает в ассоциативном массиве элементы данных, извлеченных из строки data, согласно формату format. В строке формата указываются последовательности «код_формата [числитель] имя_элемента» без пробелов, поделенные слешем <</>>. Изложение кодов формата и комментарии см. в функции pack().

Sdata - unpack ("ccn". -1.128.0xFC9a):
// Sdata == "\xFF\x80\xFC\x9a"
Sarray = unpack ("c2char/mnt". $data):
// в массиве возвращаются:
// $array["charl"] = -1
// $array["char2"] =
-128 - переполнение разрядов
// $array["int"] = OxFC9A

iptcparse

Истолковывание двоичного блока 1РТС

array iptcparse (string iptcblock)

Функция извлекает данные из маркеров АРР (обыкновенно они содсржатся в файлах Интернет-графики) и возвращает полученную информацию в массиве.

См. пример в функции GetlmageSize(), а также информацию по адресу: http://www.iptc.org/.

Отслеживание и обработка ошибок

РНР имеет следующие типы ошибок и предупреждений:

Значение

Константа

Описание

1

E_ERROR

Фатальная оплошность времени исполнения

2

E_WARNING

Предупреждение времени исполнения

4

E_PARSE

Сообщение интерпретации времени исполнения

8

E_NOTICE

Простое сообщение времени исполнения

16

E_CORE_ERROR

Фатальная оплошность при инициализации РНР

32

E_CORE_WARNING

Предупреждение инициализации

64

E_COMPILE_ERROR

Фатальная оплошность компиляции

128 E_COMPILE_ WARNING Предупреждения компиляции
256 E_USER_ERROR Ошибки, определяемые пользователем
512 E_USER_WARNING Предупреждения, определяемые пользователем
1024 E_USER_NOT1CE Сообщения, определяемые пользователем
2047 E_ALL Все перечисленные сообщения

Указанные значения в виде чисел либо консгант дозволено комбинировать, формируя битовую маску ошибок, о которых нужно уведомлять в ходе исполнения сценария. Для комбинирования применяются битовые операторы, но в конфигурационном файле php.ini ' распознаются только «|», «-», «!» и <<&>>.

В PHP 4 по умолчанию разрешены сообщения вида E_ALL & -EJJOTICE, то ость сообщаться должно все, помимо обыкновенных сообщений. Дозволено переопределить эту установку параметром файла конфигурации еггог_ reporting (ее также дозволено указывать в файлах конфигурации сервера Apache); а во время исполнения — функцией error_reporting().

Если при вызове функции перед ее именем указать символ «@», то в случае появления ошибки в этой функции сообщение о нем выдаваться не будет.

В текущее время оператор пренебрежения ошибок блокирует даже выдачу сообщений о скептических ошибках, при происхождении которых сценарий досрочно завершается.

Если разрешен параметр конфигурации track_errors, то сообщение об ошибке сохраняется в всеобщей переменной $php_errormsg.

«?php // определенный
пользователем обработчик ошибок
function userErrorHandler (Serrno. Serrmsg.
Sfilenamp Slirenum. Svarb) { $dt = date
("Y-m-d H i:s (Т)"). // время появления
ошибки Serrortype = array
( 1 => "Error". 2 => "Warning".
4 => "Parsing Error". 8 => "Notice".
16 => "Core Error". 32 =>
"Core Warning". 64 => "Compile Error".
128 => "Compile Warning". 256 =>
"User Error". 512 => "User Warning".
1024=> "User Notice" );
$err .= "время ($dt). номер ошибки
($errno). ": $err .= "тип ошибки
C'.$errortype[$errno]."): ":
$err = "\"$errmsg\", файл
\"$filename\". строка (".
$err .= $linenum.")\n";
I $user_errors - array
(E_USER_ERROR. E_USER_WARNING.
E_USER_NOTICE): if (in_array($errno.
$user_errors))
echo $err;
// выдать сообщения для ошибок
пользователя // сберечь событие
ошибки в системном журнале
error_log($err. 3.
"/usr/local/php4/error.log"): }
// установить ярус контроля
ошибок и обработчик error_reporting(0)
: // не выводить сообщения РНР
$old_error_handler = set_error_handler
("userErrorHandler");
// неопределенная константа вызывает
предупреждение
$t = _NOT_DEFINED_CONSTANT.
tngger_error("Mos ошибка". E_USER_ERROR);
tngger_error
("Moe предупреждение".
E_USER_WARNING): ?>

Функции обработки ошибок

errorjog

Посылка сообщения об ошибке

int error_log (string message, int message_type [, string destination [, string extra_headers]])

Сообщение, посылаемое этой функцией, может быть направлено в журнал системных сообщений web-сервера, порт TCP либо в файл.

В первом доводе, message, указывается само оглавление сообщения; во втором, messagejtype — куда оно должно быть направлено. Предназначение обозначается следующими значениями:

  • 0 — сообщение заносится в системный журнал событий (файл) согласно установке параметра конфигурации error_log;
  • 1 — сообщение отправляется по электронной почте, по адресу, указанному в доводе destination. Это исключительный тип сообщения, использующий четвертый параметр, extrajieaders, в котором дозволено указать добавочные заголовки (как в функции Mail());
  • 2 — сообщение посылается через подключение отладки. Это допустимо только в случае, если параметр удаленной отладки был разрешен в файле конфигурации. Для этого также должен быть определен адрес хоста (имя либо его адрес IP) и порт сокета, тот, что будет принимать сообщения отладки; это дозволено указать в доводе destination либо параметрах конфигурации;
  • 3 — message добавляется в конец файла destination.

Возможные варианты использования функции:

if (!0ra_l_ogon (Susername. Spassword))
{ erroMog ("Сервер Oracle недостижим!".
О). } if (!($foo = allocate_new_foo())
{ rroMog ("Невозможно выделить FOO!".
1. "operator@mydomain.com").
} // other ways of calling error_log():
errorjog ГУ нас оплошность!".
2. "127.0.0 1.7000"); rrorjog
("У нас ошибка1". 2. "loghost");
eri~or_loq ("У нас оплошность!".
3. "/var/tmp/my-errors.log"):

error_reporting

Установка видов уведомляемых ошибок

int errorj-eporting ([int level])

Возвращает предыдущую установку типа уведомляемых ошибок; если указан довод, то снова переопределяет ее. В доводе дозволено указывать константу, число либо битовую маску. Усердствуйте применять константы взамен численных значений, дабы сберечь совместимость с грядущими версиями РНР.

errorj-eporting (2039).
// в РНР 4 эквивалент E_ALL " EJIOTICE
error_reporting (E_ALL * E_NOTICE);
// установка по умолчанию
error_reporting(0):
// отключить сообщения об ошибках
errorj-eporting (EJRROR E_WARNING
| E_PARSE):
/* Всеобщие ошибки выполнения */
error j-eporting (EJRROR | E_WARNING
| E_PARSE | EJIOTICE);
/* также информировать о неведомых переменных */
error_reporting (E_ALL).
/* уведомлять все ошибки */

set_error_handler

Установка пользовательского обработчика ошибок

string set_error_hand1er (string error_handler)

Функция возвращает имя функции, ранее определенной в качестве обработчика ошибок (либо FALSE при ошибке), и устанавливает, в качестве нового обработчика, функцию с указанным в доводе еггог_ handler именем.

Обыкновенно пользовательский обработчик ошибок работает в паре с функцией tngger_error(), генерирующей ошибку; это может быть использовано (аналогично аналогичной конструкции работы с исключениями в С) для освобождения выделенных источников (скажем, удаления сделанных файлов), если сценарий не может типично кончаться.

Функция, устанавливаемая в качестве обработчика ошибок, должна принимать пять параметров (три последних являются дополнительными и могут не обрабатываться):

  • код ошибки;
  • строку, описывающую ошибку;
  • имя сценария, в котором случилась оплошность;
  • номер строки сценария, содержащей ошибку;
  • контекст (массив, содержащий значения переменных, в момент-происхождения ошибки).

<?php // определить константы
пользовательских ошибок define
(FATAL.E_USER_ERROR);
define (ERROR.E_USER_WARNING).
define (WARNING.E_USER_NOTICE).
// установить, какие ошибки обязаны
обрабатываться в сценарии
errorj-eporting (FATAL | ERROR | WARNING);
// пользовательский обработчик ошибок
function myErrorHandler ($errno. Serrstr.
ierrfile. Serrlme) { switch (Serrno)
{ case FATAL:
echo "<b>Скептическая ошибка</b>
[Serrno] $errstr<br>\n";
echo " в строке: Serrline. файла:
".Serrhle:
echo ", PHP ".PHP_VERSION."
(".PHP_OS.")<br>\n":
echo "Aborting...<br>\n":
exit -1:
break case ERROR:
echo "<b>Ошибка</b> [Serrno] $errstr
<br>\n":
break: case WARNING:
echo "<b>Предупреждение</b>
[Serrno] Serrstr<br>\n";
break:
default:
echo "Незнакомый тип ошибки:
[Serrno] $errstr<br>\n";
break; } } // функция для проверки
обработки ошибок (масштабирование
массива) function scale_by_log
(Svect. Sscale) { if ( hs_numenc
(Sscale) || Sscale <= 0 )
trigger_error("вычислить log(x).
для x <= 0 невозможно. ". "(x = Sscale)".
FATAL), if (hs_array(Svect))
{ trigger error("Требуется массив
". ERROR); return null: }
for ($1=0; $i<count(Svect): Si++)
{ if (!is_numenc($vect[$i]))
thgger_error( "Элемент (SI)
не число, и его значением".
" считается О". WARNING);
$temp[Si] = log(Sscale) *
$vect[Si]: } return Stemp: }
// установить пользовательский
обработчик ошибок
Sold_error_handler
= set_error_handler
("myErrorHandler");
Sa = array(2.3."foo".5.5.43.3.21 11);
pnnt_r(Sa).
Sb = scale_by_log(Sa. M_PI);
// тут выдается предупреждение
echo "Массив, масштабированный
на логарифм(Пи): "; pnnt_r($b):
$с = scale_by_log("not array".2 3);
// тут оплошность var_dump($c).
$d = scale_by_log($a. -25)
.// тут скептическая оплошность
echo "Продолжение сценария .": ?>

При выполнении сценария итог будет дальнейшим:

Array ( )[0] => 2 [1] => 3
[2] => too [3] => 5 5 [4] => 43
3 [5] <=> 21 11 )
<b>Прелупреждение</b>
[1024] Элемент (2) не число.
v его значением считается 0<bг>
Массив, масштабированный на
логарифм(Пи) Атау (
[0] => 2.2894597716988
[1J => 3.4341896575482 [2]
»> О [3] => 6 2960143721717 [4
] => 49 566804057279 [5] =>
24 165247890281 )
•Ф>Ошибка</b> Г512]
Требуется массив <br>
NULL <b>Скептическая
ошибка</b> [256] вычислить
log(x) для х <= 0 невозможно,
(х --- -2 5)<br> в строке 37.
файла. Е-\ooo\php39.php3.
РНР 4.0.5 (WINNT)<br>
Aborting. . <br>

Не забывайте, что при установке пользовательского обработчика ошибок типовой обработчик РНР не исполняется. Установки еггог_ reporting() также не будут иметь результата, и пользовательский обработчик должен уметь обрабатывать все виды ошибок (значение еггог_ reporting() дозволено узнать и делать соответственно). Подметьте, что код ошибки будет равен 0, если оплошность появилась в функции, выоод ошибок для которой был блокирован оператором «@».

Также помните, что завершать сценарий в обработчике нужно t очевидно (скажем, с поддержкой функции сhе()), если, безусловно, в этом есть надобность. Если обработчик ошибок завершается с подмогой return, то выполнение сценария продолжается с того места, в котором появилась оплошность (то есть исполняются инструкции, которые следуют за той инструкцией, в которой появилась оплошность).

См. также: error_reporting(), restore_error_handier(), trigger_error(), user_error()

error_reporting

Установка видов уведомляемых ошибок

int errorj-eporting ([int level])

Возвращает предыдущую установку типа уведомляемых ошибок; если указан довод, то снова переопределяет ее. В доводе дозволено указывать константу, число либо битовую маску. Усердствуйте применять константы взамен численных значений, дабы сберечь совместимость с грядущими версиями РНР.

errorj-eporting (2039).
// в РНР 4 эквивалент E_ALL " EJIOTICE
error_reporting (E_ALL * E_NOTICE);
// установка по умолчанию
error_reporting(0):
// отключить сообщения об ошибках
errorj-eporting (EJRROR E_WARNING
| E_PARSE):
/* Всеобщие ошибки выполнения */
error j-eporting (EJRROR | E_WARNING
| E_PARSE | EJIOTICE);
/* также информировать о неведомых переменных */
error_reporting (E_ALL).
/* информировать все ошибки */

set_error_handler

Установка пользовательского обработчика ошибок

string set_error_handler (string error_handler)

Функция возвращает имя функции, ранее определенной в качестве обработчика ошибок (либо FALSE при ошибке), и устанавливает, в качестве нового обработчика, функцию с указанным в доводе еггог_ handler именем.

Обыкновенно пользовательский обработчик ошибок работает в паре с функцией tngger_error(), генерирующей ошибку; это может быть использовано (аналогично аналогичной конструкции работы с исключениями в С) для освобождения выделенных источников (скажем, удаления сделанных файлов), если сценарий не может типично кончаться.

Функция, устанавливаемая в качестве обработчика ошибок, должна принимать пять параметров (три последних являются дополнительными и могут не обрабатываться):

  • код ошибки;
  • строку, описывающую ошибку;
  • имя сценария, в котором случилась оплошность;
  • номер строки сценария, содержащей ошибку;
  • контекст (массив, содержащий значения переменных, в момент-происхождения ошибки).

<?php // определить константы
пользовательских ошибок define
(FATAL.E_USER_ERROR);
define (ERROR.E_USER_WARNING).
define (WARNING.E_USER_NOTICE).
// установить, какие ошибки обязаны
обрабатываться в сценарии
errorj-eporting (FATAL | ERROR | WARNING);
// пользовательский обработчик ошибок
function myErrorHandler ($errno. Serrstr.
ierrfile. Serrlme) { switch (Serrno)
{ case FATAL:
echo "<b>Скептическая ошибка</b>
[Serrno] $errstr<br>\n";
echo " в строке: Serrline. файла:
".Serrhle:
echo ", PHP ".PHP_VERSION."
(".PHP_OS.")<br>\n":
echo "Aborting...<br>\n":
exit -1:
break case ERROR:
echo "<b>Ошибка</b> [Serrno] $errstr
<br>\n":
break: case WARNING:
echo "<b>Предупреждение</b>
[Serrno] Serrstr<br>\n";
break:
default:
echo "Неведомый тип ошибки:
[Serrno] $errstr<br>\n";
break; } } // функция для проверки
обработки ошибок (масштабирование
массива) function scale_by_log
(Svect. Sscale) { if ( hs_numenc
(Sscale) || Sscale <= 0 )
trigger_error("вычислить log(x).
для x <= 0 невозможно. ". "(x = Sscale)".
FATAL), if (hs_array(Svect))
{ trigger error("Требуется массив
". ERROR); return null: }
for ($1=0; $i<count(Svect): Si++)
{ if (!is_numenc($vect[$i]))
thgger_error( "Элемент (SI)
не число, и его значением".
" считается О". WARNING);
$temp[Si] = log(Sscale) *
$vect[Si]: } return Stemp: }
// установить пользовательский
обработчик ошибок
Sold_error_handler
= set_error_handler
("myErrorHandler");
Sa = array(2.3."foo".5.5.43.3.21 11);
pnnt_r(Sa).
Sb = scale_by_log(Sa. M_PI);
// тут выдается предупреждение
echo "Массив, масштабированный
на логарифм(Пи): "; pnnt_r($b):
$с = scale_by_log("not array".2 3);
// тут оплошность var_dump($c).
$d = scale_by_log($a. -25)
.// тут скептическая оплошность
echo "Продолжение сценария .": ?>

При выполнении сценария итог будет дальнейшим:

Array ( )[0] => 2 [1] => 3
[2] => too [3] => 5 5 [4] => 43
3 [5] <=> 21 11 )
<b>Прелупреждение</b>
[1024] Элемент (2) не число.
v его значением считается 0<bг>
Массив, масштабированный на
логарифм(Пи) Атау (
[0] => 2.2894597716988
[1J => 3.4341896575482 [2]
»> О [3] => 6 2960143721717 [4
] => 49 566804057279 [5] =>
24 165247890281 )
•Ф>Ошибка</b> Г512]
Требуется массив <br>
NULL <b>Скептическая
ошибка</b> [256] вычислить
log(x) для х <= 0 невозможно,
(х --- -2 5)<br> в строке 37.
файла. Е-\ooo\php39.php3.
РНР 4.0.5 (WINNT)<br>
Aborting. . <br>

Не забывайте, что при установке пользовательского обработчика ошибок типовой обработчик РНР не исполняется. Установки еггог_ reportingO также не будут иметь результата, и пользовательский обработчик должен уметь обрабатывать все виды ошибок (значение еггог_ reportingO дозволено узнать и делать соответственно). Подметьте, что код ошибки будет равен 0, если оплошность появилась в функции, выоод ошибок для которой был блокирован оператором «@».

Также помните, что завершать сценарий в обработчике нужно t очевидно (скажем, с поддержкой функции сhе()), если, безусловно, в этом есть надобность. Если обработчик ошибок завершается с подмогой return, то выполнение сценария продолжается с того места, в котором появилась оплошность (то есть исполняются инструкции, которые следуют за той инструкцией, в которой появилась оплошность).

См. также: error_reporting(), restore_error_handier(), trigger_error(), user_error()

restore_error_handler

Поправление предыдущего обработчика ошибок

void restore_error_handler (void)

Устанавливает в качестве функции обработчика ошибок ту, котораябыла таковой до последнего вызова функции set_error_handler(). Предыдущим обработчиком может быть ранее установленный нользовательский обработчик либо встроенный обработчик PUP.

См. также: errorj-eporting(), set_error_handler(), trigger_error(), user_ error().

trigger_error

Генерация ошибки

void trigger_error (string errorjnsg [, int error_type])

Очевидно вызывает функцию, установленную для обработки ошибок, и обыкновенно применяется в паре с обработчиком ошибок (см.: set_ error_handler()). Функция способна генерировать только пользовательские типы ошибок (семейство констант EJJSER), и по умолчанию, если не указан тип ошибки error_type, он считается E_USER_NOTICE.

Допустимо конструировать трудные конструкции генерации и обработки ошибок и исключительных обстановок.

if (assert ($divisor == 0))
trigger_error ("Невозможно разделять на 0 ".
E_USER_FRROR)

См. также: error_reporting(), set_error_handler(), restore_error_handler(), user_error().

user_error

Синоним функции trigger_error()

void user_error (string error_msg [, int error_type])

Управление итогом

Данная группа функций дозволяет руководить тем, как РИР при выполнении сценария выводит информацию. Это может быть благотворно в разных обстановках, в особенности при посылке браузеру HTML-заголовков (headers) позже того, как сценарий начал выводить HTML-текст. (В обыкновенном случае немыслимо послать заголовок позже того, как был начат итог текста.) Эти функции не воздействуют на заголовки, посланные функциями header() либо setcookie(), а только па функции, сходственные echo() и HTML-тексту между блоками РНР-кода.

<?php ob_start():
echo "HelloXn"
\ I setcookie ("cookiename".
"cookiedata"):
end flush() : / >>

В примере выше итог командой echo() будет сохранен в буфере итога до вызова функции ob_end_flush(). В то же время вызов setcookie() удачно сберегает cookie, не вызывая ошибки.

См. также: header() и setcoukie().

ob_start

Включение буферизации итога

void ob_start ([string output_callback])

Позже вы-зова этой функции включается буферизация итога и, пока она энергична, никакие из выводящихся данных не будут посланы браузеру, а будут сохраняться во внутреннем буфере РНР.

Содержимое буфера может быть скопировано в строковую переменную функцией ob_get_contents(). Для итога содержимого из буфера применяется функция ob_end_f"lush(). Удалить содержимое буфера дозволяет функция ob_end_clean().

В доводе output_callback дозволено указать функцию, которая будет механически вызываться при итоге содержимого буфера. Обыкновенно это применяется для модификации содержимого буфера перед итогом (скажем, сжатия). Тогда при вызове функции ob_end_flush() в указанную функцию будет передаваться содержимое буфера, а то, что она возвратит, будет выведено (подметьте, сама функция не должна ничего выводить).

Буферизация может быть вложенной, и тогда она обрабатывается соответственно вложенности; и содержимое, выводимое из буфера нижнего яруса, будет включаться в буфер верхнего яруса. Не забывайте, что для итога каждого буферизированного содержимого нужно вызвать функцию ob_end_flush() сколько же раз, сколько была вызвана ob_start().

<'php function c($str)
{ // получает содержимое буфера
return n!2br($str):
// возвращает содержимое буфера )
function d($str) j
// получает содержимое буфера
return strtoupper($str);
// возвращает содержимое буфера ?>
<?php ob_start("c"). ?>
Здесь каждый текст...
<?php ob_start("d"):
/* преобразовывать текст дальше
в верхний регистр */ ?>
и еще много чего .
<?php ob_end_flush(): ?>
глядите сами ...
<?php ob_end_f)ush(): ?> ?>

См. также: ob_get_contents(), ob_end_f"lush(), ob_end_clean() и ob_implicit_ flush().

ob_get_contents

Приобретение содержимого буфера итога

string ob_get_contents(void);

Если буферизация неактивна, возвращается FALSE.

См. также: ob_start() и ob_get_length().

ob_get_length

Приобретение длины данных в буфере итога

string ob_get_length(vcrid);

Если буферизация неактивна, возвращается FALSE.

См. также: ob_start() и ob_get_contents().

ob_end_flush

Итог содержимого буфера

void ob_end_flush(void);

Позже итога буфер нынешнего яруса очищается, следственно вызывайте функцию ob_get_contents() предварительно, если нужно получить его содержимое.

См. также: ob_start(), ob_get_contents() и ob_end_clean().

flush

Итог каждого содержимого буфера

void flush(void)

Функция воздействует только на буферизацию РНР и не может контролировать схему буферизации wcb-сервера либо браузера.

, Некоторые серверы, в особенности под Win32, буферизируют выводящиеся сценарием данные до того, как сценарий завершится и данные будут отосланы браузеру.

Браузер, в свою очередь, также может буферизировать получаемые данные до их отображения. Netscape, скажем, буфсршируег текст до приобретения символа заключения строки либо открывающего тега, а для таблиц — до приобретения тега </table> таблицы верхнего яруса.

ob_end_clean

Чистка буфера

void ob_end_clean(void);

Вызов функции отключает буферизацию на нынешнем ярусе.

См. также: ob_start() и ob_end_flush().

ob_implicit_ flush

Установление режима буферизации

void objmplicit_flush (jjnt flag])

Если в доводе указано ненулевое значение либо оно не указано, то при осуществлении всякой операции итога будет неявно вызываться функция flush().

При вызове функции неявно вызывается ob_end_f"lush().

См. также: flush(), ob_start() и ob_end_flush().

Использование интерфейса HTTP

Эти функции разрешают отсылать данные браузеру заказчика непринужденно на ярусе протокола HTTP.

headers_sent

Проверка отсылки заголовков

boolean headers sent (void)

Возвращает TRUE, если заголовки HTTP теснее были отосланы; напротив — FALSE.

См. также header().

 

header

Посылка простого заголовка HTTP

int header (string string)

Функция применяется в начале сценария HTML (до итога прочего текста) для низкоуровневой посылки строк заголовков по протоколу HTTP. Спецификация заголовков HTTP 1.1 (http://www.w3.org/ Г Protocols/rfc2616/rfc2616) определяет их формат и предназначение.

Не забывайте, что итог может протекать также из вложенных файлов, если они были подключены директивой include() либо с поддержкой параметра auto_prepend.

Особенно всеобщие варианты применения заголовков представлены ниже.

Переадресация. Если браузер получает заюлонок Location, то он пытается загрузить страницу с нового указанного адреса (сервер Apache при этом также получает код ранга REDIRECT).

<?php
header
("Location: http://www.p.net/new.php");
echo "Эта страница была перенесена
в другое место. Обновите ссылки.": exit;>

Выполнение команды HTTP/ (регистр не главен).

header ("HTTP/1.0 404 Not Found").
// страница не обнаружена
header ("HTTP/1.0 403 Forbidden"):
// доступ к этому адресу запрещен

Управление кэшированием (на браузере либо прокси-сервере). Следующие четыре команды воспрещают кэширование разными методами.

header ("Expires: Mon. 26 Jul
1988 05:00:00 GMT").
// Теснее устаоело header
("Last-Modified- " . gmdateC'D. d M Y H:vs")
" GMT"):
// только что модифицировано
header ("Cache-Control: no-cache,
must-revalidate").
// HTTP/1.1 header ("Pragma: no-cache"):
// HTTP/1.0

См. также headers_sent().

HTTP-аутентификация в PHP

Осуществлять аутентификацию HTTP дозволено, только если PHP установлен как модуль web-сервера Apache. Для версии CGI и на других серверах (скажем, IIS) это нереально. Аутентификация происходит путем посылки (с подмогой функции Heatier()) заголовка Authentication Required, что принуждает браузер вывести окно для ввода имени пользователя и его пароля. Позже того как пользователь вводит эти данные, браузер снова запрашивает страницу, передавая серверу переменные $PHP_AUTH_USER, $PHP_AUTH_PW и $PHP_AUTH_TYPE, соответственно со значениями имени пользователя, его пароля и способа аутентификации. В текущее время поддерживается только аутентификация простого типа «Basic».

См. также функцию Header().

<?рhр if(hsset($PHP_
AUTH_USER)) { Header
C'WWW-Authenticate: Basic
rea)m=\"My RealmV"):
Header("HTTP/1.0 401
Unauthorized"): echo "Вы
отменили ввод
идентификационной информации.\n";
exit: } else { // тут обычно
".роверяется имя пользователя
и пароль echo "Привет
$PHP_AUTH_USER.<P>";
echo "Вы вели пароль:
$PHP_AUTH_PW.<P>"; } ?>

Cookies

PHP всецело поддерживает cookies. Cookies — это механизм HTTP для сохранения информации о пользователе на его клиентской машине. Они работают дальнейшим образом:

  • при загрузке страницы браузером в заголовках передаются cookies (это должно выполняться сценарием РНР);
  • браузер сберегает полученные cookies в определенном для них месте (традиционно в маленьких файлах);
  • при загрузке дальнейшей страницы (из того же домена и пути, что и страница, содержавшая cookies) браузер возвращает те cookies, которые у него имеются.

При приобретении cookies PHP преобразовывает их в переменные, как и переменные, полученные HTTP способами GET и POST (они также сохраняются в глобальном массиве $HTTP_COOKIE_VARS[]). Таким образом дозволено ассоциировать определенную информацию с определенным пользователем (а реально его браузером) и передавать данные между страницам» одного сайта.

Скажем, так дозволено сберегать настройки пользователя для сайта либо для электронных магазинов, информацию о том, что находится в «покупательской корзине» пользователя. В отвратном случае пришлось бы передавать всю эту информацию (зачастую довольно объемную) в строке адреса URL. Имеется также альтернативный и зачастую больше предпочтительный вариант — применение сессий (см. ниже).

Не забывайте, что cookies являются частью заголовков HTTP, и передавать их следует до того, как началась передача текста страницы (а также до того, как функцией header() будут посланы обыкновенные заголовки). Таковы правила HTTP. Стоит подметить, что для одной страницы не может быть установлено больше 20 cookies. А также, что значения cookies дозволено будет получить только при загрузке дальнейшей страницы удалять cookies необходимо с теми параметрами, с которыми они были сделаны.

setcookie

Посылка cookie /

int setcookie (string name [, string value [, int expire [, string path [, string domain [, int secure])

Функция посылает переменную cookie в заголовке HTTP. Все доводы, помимо имени name, необязательны (если какие-то указывать не требуется, то тогда их значением может быть пустая строка "" для строковых доводов и 0 для числовых). Если у браузера теснее имелся cookie с таким именем, он будет заменен новым.

В доводе value дозволено указать значение, которое нужно сберечь. Время, до которого браузер должен беречь у себя cookie, указывается в доводе expire (в формате Unix time, возвращаемом функциями time() либо mktirae()). Если в доводе secure указывается ненулевое значение, то cookie будет передаваться в зашифрованном виде через протокол HTTPS.

В доводах path и domain дозволено указать, страницам из каких каталогов какого домена нужно возвращать значения cookies.

Следующие примеры устанавливают cookies:

setcookie ("TestCookiel". "Test Value"):
setcookie ("TestCooHeZ1 , $value.fime()+3GOO);
/* устаревает через час */ setcookie
("TestCook'eS". $value.time()+3600.
"/-rasmus/". " utoronto.ca". 1):

Удалить cookies из примера выше дозволено дальнейшим образом:

setcookie ("TestCookiel"):
// set the expiration date to one hour ago
setcookie ("TestCookie2". "". timeO - 3600):
// время теснее прошло
setcookie ("TestCookleS". "". timeO - 3600.
"/-nasmus/". " utoronto.ca". 1);

Дозволено сберегать в одном cookie одномерный массив (но устанавливать значение всего элемента необходимо по отдельности):

setcookie ("cookie[three]".
"cookie_three").
setcookie ("cookie[two]".
"cookie_two"): , setcookie
("coohe[one]". "cookie_one").
// проверим приобретение на
дальнейшей странице ]
if (isset (Scookie)) { while
(list ($name. Svalue) = each ($cookie))
{ I echo "Sname == $vatue<br>\n": } }

Документацию Netscape, описывающую cookies, дозволено обнаружить по адресу: http://www.netscape.com/newsref/std/cookie_spec.html

Microsoft Internet Explorer 4 (c Service Pack 1) некорректно работает с cookies, имеющими установленный 3-й параметр. Netscape Communicator 4.05 и Microsoft Internet Explorer 3.x некорректно работают с cookies с не установленными третьим и четвертым параметрами.

Сессии

Сессии разрешают реализовать цельный механизм передачи данных между страницами сайта. Программная реализация имеется в библиотеке PHPLIB, но в РНР есть встроенная. Сессии работают по дальнейшей схеме.

  • Пользователю, впервой посетившему сайт, присваивается неповторимый идентификатор (идентификатор сессии). Данный идентификатор может быть сохранен в cookie (но не все браузеры их поддерживают) либо в строке URL (тогда нужно вносить значение идентификатора во все внутренние ссылки сайта, имеющиеся на всякой странице сайта).
  • После этого инициализируется массии, в котором будут храниться данные нынешней сессии. Традиционно данные сессии хранятся на сервере в файлах либо базе данных.
  • В сценарии применяются две основные функции: открытие сессии и внесение значения неременной в данные сессии.
  • При открытии сессии механически извлекаются ранее сохраненные переменные сессии.
  • При истреблении сессии (обыкновенно это делается механически, но прошествии времени устаревания) удаляются все се данные.

Внутренняя реализация сессий PIIP работает дальнейшим образом. Если параметр конфигурации session.auto_start установлен (равен 1), то при запуске сценария сессия инициализируется механически (неявно вызывается функция session_start()). При этом проверяется существование идентификатора сессии и надобность его создания.

Очевидно добавить переменную к данным сессии дозволяет функция session_register().

Сохранение и поправление переменных сессии определяется параметрами конфигурации track_vars (обыкновенно он разрешен неизменно) и register_globals.

Если параметр register_g"lobals разрешен, то переменные сессии механически преобразуются в всеобщии и обратно (также их значения доступны в массиве $HTTP_SESSION_VARS).

<?php session_register
("count"): $count++: >>

Если параметр register_globals запрещен, то тогда переменные сессии сохраняются только в глобальном ассоциативном массиве $НТТР_ SESSIONJARS.

<?php session_register
("count");
$HTTP_SESSION_VARS
["count"l++: ?>

PHP может механически вносить идентификаторы сессий (SID) в строки локальных гиперссылок, если при компиляции был разрешен параметр —enable-trans-sid. Это бывает благотворно, если браузер заказчика не поддерживает cookie; напротив придется добавлять идентификаторы сессий в ссылки вручную.

<php? # <?=SID^>
- дозволяет вывести идентификатор
сессии
# при интерпретации
заменяется на значение вида
# PHPSESSID=
-da07977e2f4cl52f973676c41d6bd9aa ?>

По умолчганию данные сессий сохраняются в файчах (в каталоге, указанном параметром конфигурации session.save path). Так приметно снижает быстродействие, дозволено применять собственную функцию сохранения данных сессий (скажем, в БД) установив в качестве таковой с поддержкой функции session set save hand().

session_start

Инициализация данных сессии

bool session_start(void)

Создает массив данных сессии либо сессии, переданный через cookie либо в строке запроса, дарующая сессия теснее существует) восстанавливает ранее сохраненные переменные сессии.

Функция неизменно возвращает TRUE.

session_destroy

Истребление данных сессии

bool session_destroy(void);

session_ name

Определение имени сессии

string sessionjiame ([string name])

Возвращает имя нынешней сессии, и если указан довод, то есть ее имя на указанное name.

Имя сессии является именем cookies, либо скажем в строке запросом URL. Оно должно содержать цифровые символы. По умолчанию имя устанавливается параметром session.name , файле конфигурации. Если требуется измнить его в сценарии, это должно быть сделано до открытия сессии (вызова функций session_start() либо session_register()).

<?php
Sprevious name = session_name
("WebsitelD"): echo "Ранее именем
сессии было $previous_name<p>"; ?>

session_module_name

Определение модуля работы с сессиями

string session_module_name ([string module])

Возвращает имя нынешнего модуля для работы с сессиями (традиционно это встроенный в РНР модуль). Дозволено указать имя собственного модуля module, тот, что должен применяться взамен встроенного.

session_save_path

Определение каталога сохранения данных сессии string session_save_path ([string path])

По умолчанию РНР сберегает данные сессий в файлах, в каталоге определенном конфигурацией. Функцией возвращается имя этого каталога, и если указан довод, то данный ранее каталог изменяется на указанный.

session_ id

Определение значения идентификатора сессии string session_id ([string id])

Возвращает значение идентификатора нынешней сессии; если указан довод, то заменяет его на указанное id (установить значение дозволено только до начала сессии).

Значение идентификатора также хранится в константе SID.

session_register

Добавление переменной сессии

bool session_register (mixed name [, mixed ...])

Допустимо указание разного числа доводов, содержащих имена переменных. Также дозволено указывать массив, содержащий имена переменных. Функция возвращает TRUE, если регистрация прошла удачно.

session_unregister

Удаление переменной сессии

bool session_unregister (string name)

Возвращается TRUE, если исключение переменной с именем name из данных сессии прошло удачно.

session_unset

Удаление всех переменных сессии

void session_unset(void);

Удаляет все данные нынешней сессии.

session_ is_ registered

Проверка принадлежности переменной к нынешней сессии

bool session_is_registered (string name)

Возвращает TRUE, если переменная с именем name принадлежит сессии.

session_get_cookie_params

Приобретение параметров cookie сессии

array session_get_cookie_pararas (void);

Возвращается массив, содержащий три элемента:

  • lifetime — время жизни cookie;
  • path — путь URL, для которого cookie действителен;
  • domain — домен, для которого cookie действителен.

session_ set_ cookie_ params

Установка параметров cookie сессии

void session_set_cookie_params (int lifetime [, string path [, string domain]]).

Параметры, которые устанавливаются этой функцией, будут делать только на время исполнения сценария, в остальных случаях будут применяться значения из параметров файла конфигурации php.ini.

session_decode

Декодирование данных сессии из строки

boo! session_decode (string data)

Эта функция применяется для извлечения данных сессии, если строка сериалпзированных переменных была сохранена вручную.

session_encode

Кодирование данных сессии в строку

string session_encode(void)

Возвращает строку, содержащую сериализированные данные нынешней сессии.

tession_set_save_handler

Установление пользовательских процедур работы с сессиями

void session_set_save_handler (string open, string close, string Aead, string write, string destroy, string gc)

Этой функцией дозволено установить функции, которые будут исполнять следующие действия: открытие сессии, закрытие, чтение и запись данных сессии, истребление устаревших данных, вычисление момента, когда следует удалять устаревшие данные. Имена соответствующих функций указываются в этом порядке, как доводы данной функции. Для того дабы дозволено было применять пользовательские функции, следует установить для параметра session.save_ handler в файле конфигурации значение user.

Дозволено реализовать механизм сохранения данных сессий в базе данных. Дальнейший пример, демонстрирующий сохранение данных в файлах (приблизительно таким образом действует РНР), может быть лег- / ко преобразован для хранения данных в БД.

<?Php
// инициализация сессии
function open ($save_path. $sesston_name)
{ global $sess_save_path. $sess_session_name:
// тут может выполняться подключение
к БД $sess_save_path = $save_path;
$sess_session_name •= $session_name: return(TRUE).
}
// закрытие сессии function close()
{ return(TRUE): }
// загрузка данных сессии function
read ($id) { global $sess_save_path.
$sess_session_name
$sess_file =
"$sess_save_path/sess_$id";
if ($fp = @fopen($sess_file. "r";)
{ $sess_data = fread
($fp. filesize($sess_file));
return($sess_data): } else {
returnC"'). }
// сохранение данных сессии
function write ($id. $sess_data) {
global $sess_save_path.
$sess_session_name:
$sess_file = "$sess_save_path/sess_$id":
if ($fp = @fopen($sess_file. "w"))
{ return (fwnte($fp, $sess_data));
} else { return(FALSE): }
} // разрушение устаревших данных
сессии function destroy (Sid) {
global $sess_save_path.
$sess_session_name:
$sess_file = "$sess_save_path/sess_$id";
' return(@unlink($sess_file)); }
// тут обязаны проверяться данные
сессии на истечение времени хранения
function gc (Smaxlifetime) {
return TRUE. }
session_set_save_handler
("open", "close", "read", "write",
"destroy", "gc"); session_start():
// дальше следует обыкновенная процедура
работы с сессиями ?>

session_cache_limiter

Определение ограничения кэширования

string session_cachejimiter ([string cachejimiter])

Когда посылаются заголовки HTTP, в них дозволено указать, разрешено ли кэширование полученных данных. В HTTP возможны следующие значения: nocache (по умолчанию), private (относительное лимитация кэширования) и public (неимение ограничений). При запуске сценария лимитация кэширования устанавливается согласно значению параметра конфигурации session.cache_limiter.

Функция возвращает нынешнее лимитация кэширования, и если указан довод cachejli miter, то устанавливает новое (это нужно делать до запуска сессии).

<?php
session_cache_himter( 'private');
session_start (): ?>

Загрузка файлов на сервер способом HTTP POST

PHP горазд осуществлять загрузку на сервер файлов, посланных браузерами, использующими эталон RFC1867 (таковыми являются Netscape Navigator 3 и старше, Microsoft Internet Explorer 3 с обновлением либо больше поздние браузеры Microsoft). Файлы могут быть как двоичными, так и текстовыми. При этом бывает благотворно г воспользоваться процедурой аутентификации и функциями файловой системы.

Также РНР поддерживает загрузку способом PUT, используемую программами Netscape Composer и Amaya (см. ниже).

Для загрузки файлов способом POST нужно передать браузеру следующую форму:

«FORM ENCTYPE="multipart/form-data"
ACTION="get.php" METHOD=POST>
<INPUT TYPE="hidden" name=
"MAX_FHE_SIZE" value="1000">
Отослать файл; <INPUT NAME=
"userfile" TYPE="file">
<INPUT TYPE="subirnt"
="Послать">
</FORM>

Взамен значения признака ACTION «get.php» нужно указать имя PHP-сценария, тот, что будет принимать файл. В спрятанном поле MAX_FILE_SIZE указывается наивысший размер файла (в байтах), тот, что может быть послан, но он не может быть огромнее, чем определено в параметре конфигурации upload_max_filesize. При отображении данной формы браузер механически добавляет кнопку «Обзор...», при нажатии на которую возникает стандартное окно выбора файлов.

Сценарий, тот, что получает файл, может применять всеобщий массив $HTTP_POST_FILES для приобретения информации о том, что за файл был загружен. Обыкновенно данный массив имеет следующую конструкцию:

Array (
[userfile] => Array ( [name] ->
jshtm.zip [type] =>
application/x-zip-compressed
[tmp_name] => E:/Tmp\phpAE.tmp
[size] => 21344 ) [userfnle?] =>
Array (
[name] => tsrm.txt
[type] => text/plain
[tmp_name] => E:/Tmp\phpAF.tmp
[size] => 5483 ) )

userfile — это имя поля формы, в которое вводилось имя передаваемого файла. (В форме может присутствовать несколько таких полей типа «file», если нужно передавать несколько файлов единовременно.) Соответственно массив будет содержать столько же подмассивов, сколько полей передачи файлов присутствовало в форме.

  • $HTTP_POST_FILES['userfne']['name'] — имя файла на клиентской машине (без пути к нему).
  • JHTTP_POST_FILES['userfile']['type'] - MIME тип файла, механически определяемый браузером.
  • $HTTP_POST_FILES['userfi1e']['size'] — размер файла и байтах.
  • $HTTP_POST_FILES['userfile']['tmp_name'] — имя временного файла, в котором был сохранен загруженный на сервер файл.

По умолчанию, если каталог не установлен параметром конфигурации upload_tmp_dir, загруженные файлы сохраняются в системном каталоге для временных файлов (определяется системной переменной окружения TMPDIR). Обыкновенно загруженные файлы перемещаются из временного каталога в какой-нибудь намеренно для этого предуготовленный, это может быть сделано с поддержкой функции move_ uploaded_file().

<?php
foreach ($HTTP_POST_FILES as $v) {
// тут традиционно проводится проверка
допустимости if(move_uploaded_file
($v['tmp_name'J.
"Е/Tmp/UpLoaded.Files/".$v['name']))
echo "Файл r$v[name]' (размером
$v[snze] байт)", был удачно загружен
<ВР>\n", } ?>

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

Если вы хотите загружать несколько файлов единовременно, используйте синтаксис массивов в нулях формы загрузки аналогично дальнейшему:

<input name="userfile[]" type="file">
<br>
<input name="userfile[]" type="file">
<br>
<input name="userfile[]" type-"file">
<br>

Тогда конструкция массива $HTTP_POST_FILES будет иметь иную форму:

Array (
[userfilo] => Array ( [name] =>
Array [0 - ...] [type] => Array
[0 - ..] [tmpjiame] => Array [0 - ... ]
[size] > Array [0 - . ] ))

В этом случае тип первого загруженного файла будет находиться в элементе $HTTP_POST_FILES["userfile"]["type"][0], а размер второго в $HnP_POST_FILES["userfile"]["size"][l].

Загрузка способом PUT

PHP также поддерживает загрузку HTTP PUT, используемую такими устаревшими приложениями, как Netscape Composer. Данный способ работает гораздо проще, в теле заголовка запроса HTTP передается строка:

PUT /path/filename html HTTP/1.1

Строка указывает, что сервер должен сберечь последующую часть запроса как файл под именем filename.html в каталоге web-сервера /path/. Едва ли такое решение является успешным — разрешать любому заказчику сберегать произвольные файлы на сервере. Следственно в конфигурации web-сервера следует указать, что запросы этого типа должен обрабатывать определенный сценарий. В сервере Apache для этого нужно добавить директиву Script в его файл конфигурации. Традиционно такая директива вносится в блок <Directory>, изредка — в блок <Virtualhost>. Скажем, в таком виде:

Script PUT /put.php

Эта директива указывает серверу, что все получаемые запросы типа PUT (соответствующие контексту, то есть адресованные определенному каталогу либо виртуальному хосту) обязаны передаваться сценарию put.php (расположенному в корневом каталоге web-сервера). Внутри файла put.php дозволено указать следующую строку:

<?php copy
($PHPjmjILFNAME.IDOCUMENT_ROOT.
$REQUEST_URI); ?>

Тогда все загружаемые файлы будут копироваться в указанную в запросе директорию. Нужно, безусловно, заблаговременно проводить ряд проверок на допустимость сходственной операции. Полученный файл сохраняется во временном файле, имя которого заносится в переменную SPHP_PUT_FILENAME. Адрес, по которому запрашивался файл, сохраняется в переменной $REQUEST_URI (для Apache). Так же как и для файлов POST, полученный файл удаляется по заключении, если он не был скопирован либо перемещен.

Запуск внешних приложений

escapeshellarg

i Добавление кавычек в строку доводов команды ОС

string escapeshellarg (string arg)

Возвращается строку arg, в которую добавляются одинарные кавычки (вокру! самой строки и вокруг всякой одинарной кавычки), что дозволяет передавать доводы запуска командам операционной системы, если нужно передать одиночный параметр, содержащий пробелы либо другие символы разделители. Это бывает благотворно для систем Unix при применении функций exec(), system().

system('ls " .EscapeShel lArg($dir))

См. также: ехес(), popen(), system() и «оператор запуска внешних программ».

escapeshellcmd

Цитирование метасимволов командной строки

string escapeshellcmd (string command)

Функция возвращает строку command, в которую добавлены цитирующие слеши, это может быть использовано при передаче доводов командам операционной системы. Также это может быть использовано как средство, предотвращающее запуск произвольных команд пользователем (если им вводятся доводы запуска).

$е - EscapeShellCmd($usennput).
systemC'echo $e"); // в $е допустимо
наличие пробелов
$f = EscapeShellCmd($filename):
systemt"touch \"/tmp/$f\": Is -1 \"/tmp/$f\""):

См. также: escapeshellarg(), exec(), popen(), system() и «оператор запуска внешних программ».

exec

Запуск внешней программы

string exec (string command [, string array [, int return_var]])

Функция спрятано от пользователя запускает команду операционной системы (оболочки) command. Она возвращает последнюю строку, которую вывела команда command. Если нужно распечатать все, что вывела команда, используйте функцию PassThru().

Если указан довод array, то в нем будет возвращена вся строка, которая была выведена командой. Если в этом массиве теснее присутствуют элементы, то строки будут добавляться в его конец (для чистки массива дозволено применять функцию unset ().

Если указан довод return_var, то в нем будет сохранен код заключения команды.

<? $se = "dir C:\\".
$sO = exec($se. $sa. $sr):
echo "При запуске команды '$se
последняя выведенная строка была:\n".
$sO. "\n Код возврата ($sr)
\nA это все что было выведено: ";
pnnt_r($sa); ?>

Если требуется запустить программу в фоновом режиме (на долгое время), то поток ее итога должен быть перенаправлен в файл (либо другой поток итога); напротив по истечении возможного времени исполнения сценария (ожидания заключения внешней программы) он будет принудительно закончен с оплошностью.

См. также: system(), PassThru(), popen(), EscapeShellCmd() и «оператор запуска внешних программ».

passthru

Запуск внешней программы с итогом

void passthru (string command [, int return_var])

Функция сходна с ЕхесО: она запускает команду операционной системы command и возвращает в переменной return_var код заключения соответствующей системной команды, но она также выводит все то, что выводится при запуске.

Эта команда может применяться и в тех случаях, когда внешняя программа выводит двоичные данные; скажем, с поддержкой утилиты

pbmplus дозволено непринужденно отослать браузеру рисунок (заблаговременно следует отослать заголовок «content-type: image/gif»).

В различие от функций ехес() и system() она не возвращает никакого значения.

См. также: ехес(), system(), popen(), EscapeShellCmd(), «оператор запуска внешних программ».

 

system

Запуск внешней программы с итогом

string system (string command [, int return_var])

Функция подобна PassThru(), но она возвращает последнюю строку, выведенную при запуске команды (либо FALSE при ошибке). Помимо того, позже этого запуска (если была включена буферизация итога) выводится содержимое буфера.

См. также: ехес(), PassThru(), popent), EscapeShellCmd() и «оператор запуска внешних программ».

Поддержка СОМ для Windows

Эти функции доступны только для Windows версий интерпретатора РНР1,

От того что спецтехнология СОМ предуготовлена для реализации объектного интерфейса, то для работы с компонентами СОМ предпочтительнее применение объектного интерфейса, имеющегося в РНР (взамен непосредственного использования функций).

СОМ объект дозволено сотворить, вызвав конструктор СОМ с оператором new.

$xcl = new COM("fxcel.sheet");

Если нужно сотворить удаленный компонент (DCOM), то во втором дополнительном доводе дозволено указать адрес сервера, на котором он должен создаваться (для этого должен быть разрешен параметр конфигурации com.al"low_dcom = TRUE). Доступ к свойствам и способам компонента дозволено осуществлять гак:

$xcl->Applicat"ion->Visible = 1;
// показать окно
echo $xcl->Application->Version,
// вывести номер версии
$xcl->Worksheets->Add:
// добавить лист
Sell = $xcl->Activesheet->Cells(3.2):
// предпочесть ячейку
$cll->Activate():
// выделить ее
$cll->Value * "АА",
// ввести значение
$cll->Font->Bold = True;
// выделить толстым шрифтом

com_ load

Создание новой ссылки на компонент СОМ

string com_load (string module name [, string server name])

Создает новейший компонент COM (если он не был сделан ранее) и возвращает ссылку на него. При ошибке возвращает FALSE.

com_invoke

Вызов способа объекта СОМ

mixed com_invoke (resource com_object, string functionjiame [, mixed function parameters. ...])

При необходимости параметры вызова способа functionjiame передаются в третьем и последующих доводах. Функция возвращает значение, возвращаемое способом, либо FALSE — в случае ошибки.

com_propget

Синоним функции comjjet

mixed com_propget (resource com_object, string property)

com_get

Приобретение значения свойства компонента COM

mixed com_get (resource com_object, string property)

Возвращает значение свойства property обьекта com_object либо FALSE — в случае ошибки.

com_propput

Синоним функции com_set

void com_propput (resource com_object, string property, mixed value)

com_propset

Синоним функции com_set

void com_propset (resource com_object, string property, mixed value)

com_set

Присвоение значения свойству компонента COM

void com_set (resource com_object, string property, mixed value)

Присваивает значение value свойству property объекта com_object. Возвращает TRUE, если операция прошла удачно, либо FALSE в случае ошибки.

Функции POSIX

Данная группа функций разрешает трудиться с реализацией интерфейса POSIX.1, соответствующей спецификации IEEE 1003.1. Потому что разработка этого модуля еще не закончена, документация по многим функциям находится в стадии разработки.

posix_kill

Посылка процессу сигнала заключения

boo! posixjdll (int pid, int sig)

Возвращает TRUE при удачной посылке сигнала sig процессу с идентификатором pid либо FALSE при ошибке.

См. также раздел kill(2) справочной системы man по системе POSIX касательно негативных значений идентификаторов процессов и особых значений pid 0. pjd -In номера сигнала 0.

posix_getpid

Приобретение идентификатора нынешнего процесса

int posix_getpid (void )

posix_getppid

Приобретение идентификатора родительского процесса

int posix_getppid (void )

posix_getuid

Приобретение ID реального пользователя нынешнего процесса int posix_getuid (void )

См. также posix_getpwuid().

 

posix_geteuid

Приобретение ID результативного пользователя нынешнего процесса

int posix_geteuid (void )

См. также posix_getpwuid().

posix_getgid

Приобретение ID группы реального пользователя нынешнего процесса int posix_getgid (void )

См. также posix_getgrgid().

posix_getegid

Приобретение ID группы результативного пользователя нынешнего процесса

int posix_getegid (void )

См. также posix_getgrgid().

posix_setuid

Установка ID реального пользователя нынешнего процесса

bool posix_setuid (int uid)

Для выполнения этой функции нужно иметь соответствующие привилегии (традиционно root). Возвращается TRUE либо FALSE — при ошибке.

См. также posix_setgid().

posix_setgid

Установка ID результативного пользователя нынешнего процесса bool posix_setgid (int gid)

Для выполнения этой функции нужно иметь соответствующие привилегии (обыкновенно root). Возвращается TRUE либо FALSE — при ошибке. Подметьте, традиционно сперва вызывается posix_setgid(), а после этого posTX_setuid().

posi_ getgroups

Приобретение комплекта группы нынешнего процесса array posix_getgroups (void )

Возвращает массив, оглавлении целочисленные групповые идентификаторы нынешнего процесса.

См. также posix_getgrgid().

posix_getlogin

Приобретение имени login

string posix_get"login (void )

Возвращает имя (login), от которого был запущен нынешний процесс.

См. также posix_getpwnam().

posix_getpgrp

Приобретение группового идентификатора нынешнего процесса

int posix_getpgrp (void )

См. также документацию POSIX.1 и раздел getpgrp(2) справочной системы man.

Posix_setsid

Предназначение нынешнего процесса лидером сессии

int posix_setsid (void )

Возвращает идентификатор сессии.

См. также документацию POSIX. 1 и раздел setsid(2) справочной сис-тшы man.

posix _setpgid

Установка идентификатора группы процесса int posix_setpgid (int pid, int pgid)

Присоединяет процесс pid к группе процессов pgid. При ошибке возвращает FALSE.

См. также документацию POSIX.1 и раздел sctsid(2) справочной системы man.

posix_getpgid

Приобретение идентификатора группы процесса

int posix_getpgid (int pid)

Это не функция POSIX, но она распространена в системах BSD и System V. Если она не поддерживается системой, то РНР неизменно будет возвращать FALSE.

posix_getsid

Получение идентификатора sid процесса

int posix_getsid (int pid)

Если pid равен 0, то возвращается идентификатор sid нынешнего процесса.

Это не функция POSIX, но она распространена в системах BSD и System V. Если она не поддерживается системой, то РНР неизменно будет возвращать FALSE.

posix_uname

Приобретение информации о системе

array posix_uname (void )

Возвращает массив, содержащий следующие элементы:

  • sysname — наименование операционной системы (скажем, Linux);
  • nodename — имя системы (скажем, valiant);
  • release — версию операционной системы (скажем, 2.2.10);
  • version — дату создания (скажем, #4 Tue Jul 20 17:01:36 MEST 1999);
  • machine — архитектуру системы (скажем, i586);
  • domainname — имя домена DNS (скажем, php.net);

domainname — это растяжение GNU, не являющееся частью POSIX.1, следственно данный элемент доступен только на системах GNU либо при применении библиотеки GNU libc. Posix предупреждает, что формат значений может гораздо различаться в различных системах.

posix_times

Приобретение времени процесса

array posix_times (void )

Возвращает ассоциативный массив строк, содержащих информацию

об применении источников CPU нынешним процессом:

  • ticks — число тиков часов, прошедших с момента загрузки;
  • titime — время, расходуемое пользовательской частью нынешнего процесса;
  • stime — время, расходуемое системной частью нынешнего процесса;
  • cutime — всеобщее время, расходуемое пользовательской частью нынешнего процесса и его дочерними процессами;
  • cstime — всеобщее время, расходуемое системной частью нынешнего процесса и его дочерними процессами.

posix_stermid

Приобретение имени терминала ;

string posix_ctermid (void )

posix_ ttyname

Определение устройства терминала string posix_ttyname (int fd)

posix_ isatty

Проверка, является ли дескриптор файла терминалом

bool posix_isatty (int fd)

posix_ getcwd

Выяснение пути нынешнего каталога string posix_getcwd (void )

posix_mkfifo

Создание особого файла fifo (named pipe)

bool posix_getcwd (string pathname, int mode)

posix_getgrnam

Приобретение информации о группе по имени

array posix_getgrnam (string name)

posix_getgrgid

Приобретение информации о группе по идентификатору

array posix_getgrgid (int gid)

posix_getpwnam

Приобретение информации о пользователе по имени

array posix_getpwnam (string username)

Возвращает ассоциативный массив, содержащий информацию о пользователе, имеющем строковое имя, указанное в доводе username.

Возвращаемый массив содержит следующие элементы:

  • name — имя пользователя username;
  • passwd — пароль пользователя в зашифрованном виде (изредка «*»);
  • uid — числовой идентификатор пользователя;
  • gid — числовой идентификатор группы пользователя. См. также posix_getgrgid();
  • gecos — устаревшее значение, но формализованное POSIX, содержащее информацию finger для систем Honeywell. Содержит перечисление через запятую (полное имя пользователя и, не неизменно, рабочий и домашний телефон);
  • dir — безусловный путь домашнего каталога пользователя;
  • shell — путь к программной оболочке пользователя по умолчанию.

posix_getpwuid

Приобретение информации о пользователе по идентификатору

array posix_getpwuid (int uid)

Возвращает ассоциативный массив, содержащий информацию о пользователе, числовой идентификатор, указанный в доводе uid.

Конструкция возвращаемого массива аналогична таковому в функции posix_getpwnam().

posix_getrlimit

Приобретение массива информации об ограничениях источников системы

array posix_getrlimit (void )

Функции сервера Apache

apache_lookup_uri

Запрос URI и приобретение о нем информации

class apache_lookup_uri (string filename)

Исполняет особый запрос URI, указанный в доводе filename. Функция разрешает узнать, как бы поступил сервер, получив соответствующий запрос. Возвращается объект, имеющий следующие свойства:

  • status — код ранга исполнения HTTP-запроса;
  • the_request — полный текст HTTP-запроса;
  • statusjline — строка, комментирующая ранг исполнения HTTP-запроса;
  • method — способ HTTP-запроса;
  • content_type — MIME-тип возвращаемого содержимого;
  • handler — обработчик запроса;
  • uri — транслированный путь;
  • filename — локальное имя файла, к которому выполнялся запрос;
  • path_info — относительный путь, по которому запрашивался файл;
  • args — добавочные доводы HTTP-запроса;
  • boundary — границы;
  • no_cache — было ли запрещено кэширование полученного содержимого;
  • no_loca!_copy_allowed — возможен ли запрос;
  • send_bodyct — было ли отослано содержимое результата;
  • bytes_sent — размер отосланного содержимого;
  • byterange — границы пересылаемого сегмента данных;
  • clength_unparsed uri — нстранслированный путь HTTP запроса;
  • mtime — время обработки запроса;
  • request_time — время приобретения запроса в формате Unix timestamp.

Функция работает, только если РНР установлен как модуль Apache.

<? var_dump(apache_lookup_un("/")); ?>

Выводит следующую информацию:

object(stdClass)(16) { ["status"]=>
int(200) ["the_request"]=>
stnng(23) "GET /ap/ap.php HTTP/1.1"
["method"]=> stnng(3) "GET"
["conter,t_type"]=> stnng(20)
"httpci/urn x-di rectory" ["un"]=>
stnng(l) "/" L"filename"]=>string(43)
"e:/apache/htdocs" ["path_info"]=>
stnng(l) "/" ["no_cache"]=>int(0)
["no_local_copy"]=> int(l)
["allowed"]=> int(O)
["sent_boclyct"]=> int(O)
["bytes_sent"]=> int(O) ["byterange"]=>
int(O) ["clength"]=> int(O)
["unparsed_uri"]=> stnng(l) "/"
["request_time"]=> int(990724810)
}

apgche_note

Определение примечания запроса

string apachejiote (string notejiame [, string note_value])

функция получаст и (если указан довод note_value) устанавливает JIOBOC значение из внутренней таблицы заметок Apache.

getgllheaders

Обработка заголовков запроса HTTP

аггаy getallheaders (void)

Возвращает заголовки, посланные совместно с нынешним запросом.

Подметьте: многие из переменных, которые дозволено получить данным методом, могут быть получены как типовые переменные окружения CG1.

См. также phpinfo(). var (jump(getallheaders ()): Вьведет приблизительно следующее:

аггау(б) {
["Accept"]=> stnng(3) "*/*"
["Accept-Encoding"]=>
stnng(13) "gzip. deflate"
["Accept-Language"]=> string(2) "ru"
["Connection"]=> stnngil())
"Keep-Alive"
["Host"]=> string()) "locaihost"
r"iJser-Agent">> stnng(51)
"Mozilla/4.0 (compatible: MSIE
5.01; Windows NT 5 0)" }

В текущее время функция работает, только если РНР установлен как модуль Apache.

virtual

Выполнение подзапроса Apache

int virtual (string filename)

Выпо.''"яет директиву SSI файлов <! -#include virtual ...-->, обрабатываемую модулем Apache modjndude. Это благотворно для включения в нынешний файл CGI сценариев либо файлов .shtml. Если нужно включить файл РНР, используйте директивы include() либо require().

ascii2ebcdic

Реформирование строки ASCII в EBCDIC

int ascin2ebcdic (string ascii_str)

Функция доступна только в системах, поддерживающих EBCDIC (OS/390, BS2000). Возвращает строку ascii_str, конвертированную в двоичный формат EBCDIC.

См. также обратную функцию ebcdic2ascii().

ebcdic2ascii

Реформирование строки EBCDIC в ASCII

int ebcdic2ascii (string ebcdic_str)

Функция доступна только в системах, поддерживающих EBCDIC (OS/390, BS2000).

См. также обратную функцию ascii2ebcdic().

Клиентский модуль Satellite CORBA

Данный модуль применяется для работы с удаленными объектами архитектуры CORBA. Добавьте в файл php.ini строку idl_directory=, в которой указан путь к файлам изложения интерфейсов IDL.

OrbitObject

Класс доступа к объекту CORBA

new OrbitObject (string ior)

В доводе ior указывается строка идентификатора удаленного объекта IOR (Interoperable Object Reference), обыкновенно включающая его имя и адрес.

# Примитивный файл изложения интерфейса
(IDL) объекта interface Mylnterface {
voTd Setlnfo (scnng info):
string Getlnfo():
attribute int value: }
<?php
$obj = new CrDitObject ($ior).
$obj->Set!nfo ("A 2GooD object"):
echo $obj->GetInto():
$obj->value = 42.
echo $obj->value: ?>

OrbitEnum

Класс перечисления CORBA

new OrbitEnum (string id)

В доводе id указывается строка имени «перечисления», которая может представлять примитивное его имя (скажем, "МуЕпит") пли быть полным идентификатором депозитария (скажем, "IDL:MyEnum:1.0").

# Легкой файл изложения интерфейса
(IDL) перечислителя enum MyEnum {
a.b.c.d.e -N ) \ !*л <?
! Senum = new OrbitEnum ("MyEnum");
echo $enum->a./* выводит О */
echo $enurn->c;/* выводит 2 */
echo $enum->e;/* выводит 4 */ ?>

OrbitStruct

Класс конструкции CORBA

new OrbitStruct (string id)

В доводе id указывается строка имени конструкции, которая может представлять примитивное ее имя (скажем, "MyStnict") либо быть полным идентификатором депозитария (скажем, "IDL:MyStruct:1.0").

# Легкой файл изложения интерфейса
(IDL) конструкции struct MyStruct (
short shortvalue: string stnngvalue. }:
interface Somelnterface {
void SetValues (MyStruct values);
MyStruct GetValuesO:
} <?php
$obj - new OrbitObject ($ior);
$inmal_values = new OrbitStruct
("IDL:MyStruct:1.0");
$imtial_values->shortvalue = 42.
$1n!t1al va1ues->str1ngvalue =
"HGTTG".
$obj->SetValues ($imtnal_values);
Svalues =• $obj->GetValues();
echo $values->shortvalue:
echo $values->stnngvalue: ?>

satellite_caught_exception

Проверка исключения прошлой функции bool satellite_caught_exception ()

Возвращает TRUE, если при выполнении предыдущей функции в никло исключение.

# Легкой файл изложения интерфейса
(IOL) exception OutOfCheeseError {
int parameter; }
interface Anotherlnterface {
void AskWhyO raises
(OutOfCheeseError): }
<?php $obj = new
OrbntObject ($тог);
$obj->Askwhy().
if (satellnte_caught_exception())
{ if ("IDL-.OutOfCheeseError
10" == satellite_exceptionjd())
{ Sexception =
satellite_exception_value();
echo $exception->parameter; )
} ?>

satellite_exception_id

Приобретение идентификатора депозитария последнего исключения

string satellite_exception_id ()

Возвращает строку идентификатора (скажем, "IDL:MyException:1.0".)

См. также sateTlite_caught exception().

satellite_exception_value

Приобретение конструкции последнего исключения

OrbitStruct satellite_exception_value()

См. также sateTlite_cauglit_exception().

Разделяемая память

Данный комплект функций разрешает РНР создавать, удалять, читать и записывать данные в разделяемые блоки памяти UNIX. С подмогой разделяемой памяти дозволено осуществлять всеобщий обмен данными между приложениями. В системах Windows эти функции не работают, потому что там не поддерживается разделяемая память1. Для применения этих функций нужно скомпилировать РНР с параметром — enable-shmop. В версиях РПР 4.0.3 и ниже эти функции имели префикс shm_.

<?php
' Sshmjd = shmop_open
(0xff3. "с". 0644. 100) if('$shmjd
) { echo "Couldn't create shared
memory segment\n": }
$shm_size = bhmop_size($shmjd):
echo "Был сделан SHM Block
размером: ",$shm_size. "\n".
$shm_bytes_wntten = shmop_write
($shffl_i(J. "my shared memory block", 0);
if($shm_bytes_wntten =
strlenC'my shared memory block"))
{ echo "Немыслимо записать
все данные\n". } $my_stnng =
shmop_read($shmjid. 0. $shm_size):
if(!$my_stnng) { echo "Нереально
прочитать даннь:е\n". }
echo "Данные в блоке: ".
$my_stnng. "\n":
if(!shmop_delete(Ishm_1d))
{ echo "Невозможно
удалить блок памяти". }
shmop_close($shin_id): ?>

shmop_open

Создание либо открытие блока разделяемой памяти

int shmop_open (int key, string flags, int mode, int size)

В доводе key указывается системный идентификатор блока; во втором доводе, flags, указывается вид операции:

  • "а" — открыть доступ к теснее присутствующему блоку (IPC_EXCL);
  • "с" — сделать новейший блок (IPC_CREATE).

Если блок создастся, то в третьем и четвертом доводах передаются соответственно: права доступа к нему (традиционно в восьмеричном представлении) и размер в байтах. Если же блок открывается, то в третьем и четвертом доводах следует передавать значение 0.

В случае фурора функция возвращает дескриптор блока, используе- | мый в последующих операциях с ним.

shmop_size

Приобретение размера блока разделяемой памяти

int shmop_size (int shmid)

Возвращает размер блока, указанного дескриптором shmid.

shmop_read

Чтение данных из блока разделяемой памяти

string shmop_read (int shmid, int start, nnt count)

Возвращает прочитанную строку данных размером count байтов, начиная со смещения start, из блока, указанного дескриптором shmid.

shmop_write

Запись данных в блок разделяемой памяти

int shmop_write (int shmid, string data, int offset)

Записывает строку данных data в блок, указанный дескриптором shmid, по относительному адресу (смещению от начала блока) offset.

shmop_delete

Удаление блока разделяемой памяти

int shmop_delete (int shmid)

В доводе shmid указывается дескриптор блока.

В случае триумфа возвращает 1, а при ошибке — 0.

shmop_close

Закрытие блока разделяемой памяти

int shmop_close (int shmid)

В доводе shrald указывается дескриптор блока.

Семафоры

Данная группа функций разрешает применять семафоры и разделяемую память (System V). Семафоры могут применяться для реализации доступа к системным источникам в эксклюзивном режиме (либо ограничивать число процессов, единовременно использующих один источник). Сами по себе семафоры не охраняют от одновременного применения источника, а применяются для синхронизации.

Операционные системы Unix имеют следующие ограничения:

  • SHMMAX — наивысший размер блока разделяемой памяти, обыкновенно 131 072 байта;
  • SHMMIN — наименьший размер блока разделяемой памяти, обыкновенно 1 байт;
  • SHMMNI — наивысшее число блоков разделяемой памяти в системе, традиционно 100;
  • SHMSEG — наивысшее число блоков разделяемой памяти для одного процесса, обыкновенно 6.

Эти функции не работают в Windows.

sem_get

Приобретение дескриптора семафора

int sem_get (int key [, int max_acquire [, int perm]])

Возвращает дескриптор семафора с идентификатором key либо FALSE — при ошибке.

При отсутствии такого семафора он создается, и в доводах тах_ acquire и perm дозволено задать: число процессов, которые могут заблокировать данный семафор (по умолчанию 1 — «никакой процесс, помимо данного»), и нрава доступа к нему (по умолчанию 0666).

См. также: sem_acquire() и sem_release().

sem_acquire

Блокировка семафора

int sem_acquire (int senMdentifier)

Возвращает TRUE либо FALSE — при ошибке. Число процессов, которые единовременно могут заблокировать семафор, указывается при его создании (доводом max_acquire), и если оно теснее достигнуто, попытки блокировки отвергаются. Позже заключения процесса, если он не освобождает семафор, выдается предупреждение.

См. также: sera_get() и sem_release().

sem_release

Освобождение семафора

int sem_release (int sem_identifier)

Освобождает семафор, заблокированный ранее данным процессом. Возвращает TRUE либо FALSE — при ошибке (с выдачей предупреждения). Позже освобождения семафора его вновь дозволено заблокировать функцией sem_acqihre().

См. также: sera get() и sero_acquire().

shm_attach

Создание либо открытие блока разделяемой памяти

int shm_attach (int key [, int memsize [, int perm]])

В доводе key указывается системный идентификатор блока. В случае фурора функция возвращает дескриптор блока разделяемой памяти System V, применяемый в последующих операциях с ним. Если такого блока не существует, то он создается, и тогда в доводе memsize дозволено указать его размер в байтах. (Если значение не указывается, то создается блок размером 10 000 байт, размер по умолча-' нию дозволено также задать, добавив в файл конфигурации параметр sysvshm.initjnem=.) В доводе perm дозволено указать права доступа (по умолчанию 0666).

Повторный вызов функции с тем же значением key сделает новейший дескриптор на тот же блок (доводы memsize и perm будут игнорироваться).

shm_detach

Закрытие блока разделяемой памяти

int shm_detach (int shm_identifier)

Данные блока shmjdentifier при закрытии сохраняются.

shm_remove

Удаление блока разделяемой памяти

int shm_remove (int shmjiclentifier)

Все данные блока shm_identifier уничтожаются.

shm_put_var

Добавление либо обновление переменной в разделяемой памяти

int shm_put_var (int shm_identifier, int variable_key, mixed variable)

Присваивает значение PHP-переменной variable переменной в блоке разделяемой памяти (с дескриптором shm_identifier), имеющей идентификатор variable_key. Поддерживаются все типы переменных (double, int, string, array).

shm_get_var

Приобретение переменной из разделяемой памяти

mixed shm_get_var (int id, int variable_key)

Возвращает значение переменной variable_key.

shm_remove_var

Удаление переменной из разделяемой памяти int shm_remove_var (int id, int variable_key) Удаляет переменную variable_key и освобождает память.