mirror of
https://github.com/php/doc-ru.git
synced 2026-03-28 09:42:18 +01:00
171 lines
6.5 KiB
XML
171 lines
6.5 KiB
XML
<?xml version="1.0" encoding="utf-8"?>
|
||
<!-- EN-Revision: a89c6d71c7b65e3de84f26230fbf72c9b8948adf Maintainer: rjhdby Status: ready -->
|
||
<!-- Reviewed: no -->
|
||
<refentry xml:id="function.dl" xmlns="http://docbook.org/ns/docbook">
|
||
<refnamediv>
|
||
<refname>dl</refname>
|
||
<refpurpose>Загружает модуль PHP во время выполнения</refpurpose>
|
||
</refnamediv>
|
||
|
||
<refsect1 role="description">
|
||
&reftitle.description;
|
||
<methodsynopsis>
|
||
<type>bool</type><methodname>dl</methodname>
|
||
<methodparam><type>string</type><parameter>extension_filename</parameter></methodparam>
|
||
</methodsynopsis>
|
||
<para>
|
||
Загружает модуль PHP, заданный аргументом <parameter>extension_filename</parameter>.
|
||
</para>
|
||
<para>
|
||
Чтобы проверить, что заданный модуль уже загружен, используйте функцию
|
||
<function>extension_loaded</function>. Функция работает как для встроенных
|
||
модулей, так и для динамически загруженных (т.е. загруженных как через
|
||
&php.ini;, так и через <function>dl</function>).
|
||
</para>
|
||
<warning>
|
||
<simpara>
|
||
Функция доступна только для <acronym>CLI</acronym> и встроенного <acronym>SAPI</acronym>,
|
||
а также для <acronym>CGI</acronym> <acronym>SAPI</acronym> при запуске из командной строки.
|
||
</simpara>
|
||
</warning>
|
||
</refsect1>
|
||
|
||
<refsect1 role="parameters">
|
||
&reftitle.parameters;
|
||
<para>
|
||
<variablelist>
|
||
<varlistentry>
|
||
<term><parameter>extension_filename</parameter></term>
|
||
<listitem>
|
||
<para>
|
||
Аргумент содержит <emphasis>только</emphasis> имя файла модуля,
|
||
который требуется загрузить. Это имя зависит от платформы. Например,
|
||
модуль <link linkend="ref.sockets">sockets</link> (если скомпилирован,
|
||
как загружаемый модуль, а не модуль по умолчанию!) будет называться
|
||
<filename>sockets.so</filename> на Unix-платформах, и
|
||
<filename>php_sockets.dll</filename> в среде Windows.
|
||
</para>
|
||
<para>
|
||
Директория, из которой модуль должен быть загружен, также зависит от
|
||
платформы:
|
||
</para>
|
||
<para>
|
||
Windows - Если явно не задано в &php.ini;, модуль будет грузиться из
|
||
<filename>C:\php5\</filename> по умолчанию.
|
||
</para>
|
||
<para>
|
||
Unix - Если явно не задано в &php.ini;, директория по умолчанию зависит от
|
||
<itemizedlist>
|
||
<listitem>
|
||
<simpara>
|
||
PHP собран с настройкой <literal>--enable-debug</literal> или без неё
|
||
</simpara>
|
||
</listitem>
|
||
<listitem>
|
||
<simpara>
|
||
PHP собран с поддержкой ZTS (Zend Thread Safety) или нет
|
||
</simpara>
|
||
</listitem>
|
||
<listitem>
|
||
<simpara>
|
||
текущий внутренний номер <literal>ZEND_MODULE_API_NO</literal>
|
||
(номер внутреннего модуля Zend API, который, как правило, является датой
|
||
основного изменения API модуля, например <literal>20010901</literal>)
|
||
</simpara>
|
||
</listitem>
|
||
</itemizedlist>
|
||
Принимая во внимание вышесказанное, получаем следующие значения по умолчанию для
|
||
директории модуля
|
||
<literal><install-dir>/lib/php/extensions/ <debug-or-not>-<zts-or-not>-ZEND_MODULE_API_NO</literal>,
|
||
например,
|
||
<filename>/usr/local/php/lib/php/extensions/debug-non-zts-20010901</filename>
|
||
или
|
||
<filename>/usr/local/php/lib/php/extensions/no-debug-zts-20010901</filename>.
|
||
</para>
|
||
</listitem>
|
||
</varlistentry>
|
||
</variablelist>
|
||
</para>
|
||
</refsect1>
|
||
|
||
<refsect1 role="returnvalues">
|
||
&reftitle.returnvalues;
|
||
<para>
|
||
&return.success; Если механизм загрузки модулей недоступен или отключён
|
||
(значение off настройки <link linkend="ini.enable-dl">enable_dl</link> в &php.ini;), будет выдана ошибка
|
||
<constant>E_ERROR</constant> и выполнение прекращается. Если
|
||
<function>dl</function> не сможет загрузить заданную библиотеку, то в дополнение
|
||
к &false; будет выдано сообщение <constant>E_WARNING</constant>.
|
||
</para>
|
||
</refsect1>
|
||
|
||
<refsect1 role="examples">
|
||
&reftitle.examples;
|
||
<para>
|
||
<example>
|
||
<title>Примеры использования <function>dl</function></title>
|
||
<programlisting role="php">
|
||
<![CDATA[
|
||
<?php
|
||
// Пример загрузки модуля, основываясь на ОС
|
||
if (!extension_loaded('sqlite')) {
|
||
if (strtoupper(substr(PHP_OS, 0, 3)) === 'WIN') {
|
||
dl('php_sqlite.dll');
|
||
} else {
|
||
dl('sqlite.so');
|
||
}
|
||
}
|
||
|
||
// Или на константе PHP_SHLIB_SUFFIX
|
||
if (!extension_loaded('sqlite')) {
|
||
$prefix = (PHP_SHLIB_SUFFIX === 'dll') ? 'php_' : '';
|
||
dl($prefix . 'sqlite.' . PHP_SHLIB_SUFFIX);
|
||
}
|
||
?>
|
||
]]>
|
||
</programlisting>
|
||
</example>
|
||
</para>
|
||
</refsect1>
|
||
|
||
<refsect1 role="notes">
|
||
&reftitle.notes;
|
||
<note>
|
||
<para>
|
||
<function>dl</function> чувствительна к регистру на Unix-платформах.
|
||
</para>
|
||
</note>
|
||
</refsect1>
|
||
|
||
<refsect1 role="seealso">
|
||
&reftitle.seealso;
|
||
<para>
|
||
<simplelist>
|
||
<member><link linkend="ini.extension">Директивы загрузки модулей</link></member>
|
||
<member><function>extension_loaded</function></member>
|
||
</simplelist>
|
||
</para>
|
||
</refsect1>
|
||
|
||
</refentry>
|
||
<!-- Keep this comment at the end of the file
|
||
Local variables:
|
||
mode: sgml
|
||
sgml-omittag:t
|
||
sgml-shorttag:t
|
||
sgml-minimize-attributes:nil
|
||
sgml-always-quote-attributes:t
|
||
sgml-indent-step:1
|
||
sgml-indent-data:t
|
||
indent-tabs-mode:nil
|
||
sgml-parent-document:nil
|
||
sgml-default-dtd-file:"~/.phpdoc/manual.ced"
|
||
sgml-exposed-tags:nil
|
||
sgml-local-catalogs:nil
|
||
sgml-local-ecat-files:nil
|
||
End:
|
||
vim600: syn=xml fen fdm=syntax fdl=2 si
|
||
vim: et tw=78 syn=sgml
|
||
vi: ts=1 sw=1
|
||
-->
|