1
0
mirror of https://github.com/php/doc-es.git synced 2026-03-24 07:22:16 +01:00
Files
2025-06-30 23:37:00 +02:00

178 lines
5.6 KiB
XML

<?xml version="1.0" encoding="utf-8"?>
<!-- $Revision$ -->
<!-- EN-Revision: a89c6d71c7b65e3de84f26230fbf72c9b8948adf Maintainer: PhilDaiguille Status: ready -->
<!-- Reviewed: yes -->
<refentry xml:id="function.dl" xmlns="http://docbook.org/ns/docbook">
<refnamediv>
<refname>dl</refname>
<refpurpose>Carga una extensión PHP dinámicamente</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>
Carga la extensión PHP <parameter>extension_filename</parameter>
dinámicamente.
</para>
<para>
Utilice la función <function>extension_loaded</function> para verificar
si una extensión está cargada o no. Esta función funciona tanto con
extensiones nativas como con extensiones cargadas dinámicamente
(vía el &php.ini; o <function>dl</function>).
</para>
<warning>
<simpara>
Esta función solo está disponible para los <acronym>SAPI</acronym> <acronym>CLI</acronym> e integrados,
y el <acronym>SAPI</acronym> <acronym>CGI</acronym> cuando se ejecuta desde la línea de comandos.
</simpara>
</warning>
</refsect1>
<refsect1 role="parameters">
&reftitle.parameters;
<para>
<variablelist>
<varlistentry>
<term><parameter>extension_filename</parameter></term>
<listitem>
<para>
Este parámetro es <emphasis>solo</emphasis> el nombre de archivo
de la extensión, que depende de la plataforma. Por ejemplo la extensión
<link linkend="ref.sockets">sockets</link> (si compilada como módulo compartido,
y no por defecto), se llamará <filename>sockets.so</filename>
bajo Unix, y <filename>php_sockets.dll</filename> bajo Windows.
</para>
<para>
La carpeta desde la cual se cargan las extensiones depende de la
plataforma:
</para>
<para>
Windows - Si no se indica explícitamente en el archivo &php.ini;,
la extensión se carga desde <filename>C:\php5\</filename> por defecto.
</para>
<para>
Unix - Si no se indica explícitamente en el archivo &php.ini;,
la carpeta de extensiones depende de
<itemizedlist>
<listitem>
<simpara>
Si PHP fue compilado con la opción <literal>--enable-debug</literal>
o no
</simpara>
</listitem>
<listitem>
<simpara>
Si PHP fue compilado con soporte para ZTS
(<literal>Zend Thread Safety</literal>) o no
</simpara>
</listitem>
<listitem>
<simpara>
de la constante interna <literal>ZEND_MODULE_API_NO</literal>
(versión interna de API de módulo Zend, que en realidad es la fecha
en que se realizó una modificación importante de la API, por ejemplo
<literal>20010901</literal>)
</simpara>
</listitem>
</itemizedlist>
Considerando estos parámetros, la carpeta de extensiones será entonces
<literal>&lt;install-dir&gt;/lib/php/extensions/ &lt;debug-or-not&gt;-&lt;zts-or-not&gt;-ZEND_MODULE_API_NO</literal>,
por ejemplo
<filename>/usr/local/php/lib/php/extensions/debug-non-zts-20010901</filename>
o
<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; Si la funcionalidad de carga de módulos no está
disponible, o ha sido desactivada (desactivando la directiva
<link linkend="ini.enable-dl">enable_dl</link>
en el &php.ini;) se emitirá un <constant>E_ERROR</constant> y
la ejecución del script será detenida. Si la función
<function>dl</function> falla porque la biblioteca no pudo ser encontrada,
<function>dl</function> retornará &false; y emitirá un mensaje de advertencia
<constant>E_WARNING</constant>.
</para>
</refsect1>
<refsect1 role="examples">
&reftitle.examples;
<para>
<example>
<title>Ejemplos con <function>dl</function></title>
<programlisting role="php">
<![CDATA[
<?php
// Carga para todas las plataformas
if (!extension_loaded('sqlite')) {
if (strtoupper(substr(PHP_OS, 0, 3)) === 'WIN') {
dl('php_sqlite.dll');
} else {
dl('sqlite.so');
}
}
// O usar la constante 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> es sensible a mayúsculas/minúsculas en plataformas Unix.
</para>
</note>
</refsect1>
<refsect1 role="seealso">
&reftitle.seealso;
<para>
<simplelist>
<member><link linkend="ini.extension">Directivas de carga de extensiones</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
-->