На главную страницу
Форум txt.version   




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

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

Файл конфигурации 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 и по большей части использует те же коды.

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

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

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

  • а — строка, дополняемая нулевым символом (\0);
  • А — строка, дополняемая пробелом;
  • h — строка шестнадцатеричных цифр (младший полубайт первый);
    packC'h*"."0123456789abcDEF")
    == «\xlO\x32\x54\x76\x98\xBA\xDC\xFE»
  • H — строка шестнадцатеричных цифр (старший полубайт первый);
    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, имеющими установленный третий параметр. 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 и освобождает память.

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

страницы в данном разделе 
 Управляющие функции   


Разделы
Околокомпьютерная литература (375)
Программирование (102)
Программы (75)
ОС и Сети (49)
Интернет (29)
Аппаратное обеспечение (16)
Базы данных (6)

Содержание сайта (выборка)
Apache
Протоколы TCP/IP (принципы, протоколы и архитектура)

PHP, PELR, JSP
PHP
JavaServer Pages (JSP)

Базы данных
Основы mysql
СУБД INFORMIX
СУБД POSTGRES
Основы проектирования реляционных баз данных

HTML, javascript
Спецификация HTML 4.01
Каскадные Таблицы Стилей, Уровень 2
Клиентский JavaScript. Справочник.
JavaScript руководство пользователя
Серверный JavaScript 1.4. Руководство по Использованию.

Паскаль, C, C++, C#
GCC (примеры)
FAQ Валентинa Озеровa DELPHI
C





 
©  programming-lang.com  справочник программиста