php-doc-en/reference/info/functions/dl.xml
Damien Seguy 7af28d347a use of safemode entity
git-svn-id: https://svn.php.net/repository/phpdoc/en/trunk@116945 c90b9560-bf6c-de11-be94-00142212c4b1
2003-02-18 16:24:56 +00:00

133 lines
4.6 KiB
XML

<?xml version="1.0" encoding="iso-8859-1"?>
<!-- $Revision: 1.11 $ -->
<!-- splitted from ./en/functions/info.xml, last change in rev 1.29 -->
<refentry id="function.dl">
<refnamediv>
<refname>dl</refname>
<refpurpose>Loads a PHP extension at runtime</refpurpose>
</refnamediv>
<refsect1>
<title>Description</title>
<methodsynopsis>
<type>int</type><methodname>dl</methodname>
<methodparam><type>string</type><parameter>library</parameter></methodparam>
</methodsynopsis>
<para>
Loads the PHP extension given by the parameter
<parameter>library</parameter>. The <parameter>library</parameter>
parameter is <emphasis>only</emphasis> the filename of the extension to
load which also depends on your platform. For example, the <link
linkend="ref.sockets">sockets</link> extension (if compiled as a shared
module, not the default!) would be called <filename>sockets.so</filename>
on unix platforms whereas it is called
<filename>php_sockets.dll</filename> on the windows platform.
</para>
<para>
&return.success; If the functionality of loading modules is not available
(see Note) or has been disabled (either by turning it off
<literal>enable_dl</literal> or by enabling &safemode;
in &php.ini;) an <constant>E_ERROR</constant> is emitted
and execution is stopped. If <function>dl</function> fails because the
specified library couldn't be loaded, in addition to &false; an
<constant>E_WARNING</constant> message is emitted.
</para>
<para>
Use <function>extension_loaded</function> to test whether a given
extension is already available or not. This works on both built-in
extensions and dynamically loaded ones (either through &php.ini;
or <function>dl</function>).
</para>
<example>
<title><function>dl</function> example</title>
<programlisting role="php">
<![CDATA[
if (!extension_loaded('gd')) {
if (!dl('gd.so')) {
exit;
}
}
]]>
</programlisting>
</example>
<para>
The directory where the extension is loaded from depends on your
platform:
</para>
<para>
Windows - If not explicitly set in the &php.ini;, the extension is
loaded from <filename>c:\php4\extensions\</filename> by default.
</para>
<para>
Unix - If not explicitly set in the &php.ini;, the default extension
directory depends on
<itemizedlist>
<listitem>
<simpara>
whether PHP has been built with <literal>--enable-debug</literal> or
not
</simpara>
</listitem>
<listitem>
<simpara>
whether PHP has been built with (experimental) ZTS (Zend Thread Safety)
support or not
</simpara>
</listitem>
<listitem>
<simpara>
the current internal <literal>ZEND_MODULE_API_NO</literal> (Zend
internal module API number, which is basically the date on which a
major module API change happened, e.g. <literal>20010901</literal>)
</simpara>
</listitem>
</itemizedlist>
Taking into account the above, the directory then defaults to
<literal>&lt;php-install-directory&gt;/lib/php/extension/&lt;debug-or-not&gt;-&lt;zts-or-not&gt;-ZEND_MODULE_API_NO</literal>,
e.g.
<filename>/usr/local/php/lib/php/extensions/debug-non-zts-20010901</filename>
or
<filename>/usr/local/php/lib/php/extensions/no-debug-zts-20010901</filename>.
</para>
<note>
<para>
<function>dl</function> is <emphasis>not</emphasis> supported in
multithreaded Web servers. Use the <literal>extensions</literal>
statement in your &php.ini; when operating under such
an environment. However, the <literal>CGI</literal> and
<literal>CLI</literal> build are <emphasis role="strong">not</emphasis>
affected !
</para>
</note>
<note>
<para>
<function>dl</function> is case sensitive on unix platforms.
</para>
</note>
<para>
See also
<link linkend="ini.extension">Extension Loading Directives</link>
and <function>extension_loaded</function>.
</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:"../../../../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
-->