1
0
mirror of https://github.com/php/doc-es.git synced 2026-04-25 08:08:27 +02:00
Files
2025-05-03 21:11:42 +02:00

210 lines
6.4 KiB
XML

<?xml version="1.0" encoding="utf-8"?>
<!-- EN-Revision: 2dbf3d9064d4cb07f0a2f7d06641c877a2e5ed24 Maintainer: PhilDaiguille Status: ready -->
<!-- Reviewed: yes -->
<sect1 xml:id="install.windows.commandline" xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink">
<title>Ejecución de PHP en línea de comandos en sistemas Windows</title>
<para>
Esta sección contiene notas y consejos específicos para la ejecución de PHP
en línea de comandos en Windows.
</para>
<note>
<para>
¡Leer primero los <link linkend="install.windows.manual">pasos
de instalación manual</link>!
</para>
</note>
<para>
Tener PHP ejecutándose desde la línea de comandos puede realizarse sin
hacer modificaciones en Windows.
<screen>
<![CDATA[
C:\php\php.exe -f "C:\PHP Scripts\script.php" -- -arg1 -arg2 -arg3
]]>
</screen>
</para>
<para>
Pero hay algunos pasos fáciles de seguir para simplificar esto.
Algunos de estos pasos ya deberían haberse tomado, pero se repiten aquí
para proporcionar una secuencia completa paso a paso.
<itemizedlist>
<note>
<para>
Las dos variables de sistema preexistentes <envar>PATH</envar> y <envar>PATHEXT</envar> son
importantes en Windows,
y se debe tener cuidado de no sobrescribirlas,
solo añadirlas.
</para>
</note>
<listitem>
<para>
Añadir la ubicación del ejecutable PHP (<filename>php.exe</filename>,
<filename>php-win.exe</filename> o <filename>php-cli.exe</filename>
según la versión de PHP y las preferencias de visualización) a la variable
de entorno <envar>PATH</envar>. Leer más sobre cómo añadir el
directorio PHP apropiado a la variable de entorno <envar>PATH</envar> en la
<link linkend="faq.installation.addtopath">entrada FAQ correspondiente</link>.
</para>
</listitem>
<listitem>
<para>
Añadir la extensión <literal>.PHP</literal>
a la variable de entorno <varname>PATHEXT</varname>. Esto puede hacerse
al mismo tiempo que se añade la variable de entorno <envar>PATH</envar>.
Siga los mismos pasos descritos en la <link
linkend="faq.installation.addtopath">FAQ</link> pero modifique la variable
de entorno <varname>PATHEXT</varname> en lugar de la variable
de entorno <envar>PATH</envar>.
<note>
<para>
La posición en la que se coloca <literal>.PHP</literal> determinará
qué script o programa se ejecuta cuando hay nombres de ficheros
correspondientes. Por ejemplo, colocar <literal>.PHP</literal> antes
de <literal>.BAT</literal> hará que se ejecute el script, en lugar del
fichero batch, si hay un fichero batch con el mismo nombre.
</para>
</note>
</para>
</listitem>
<listitem>
<para>
Asociar la extensión <literal>.PHP</literal> con un tipo de fichero. Esto
se hace ejecutando el siguiente comando:
<screen>
<![CDATA[
assoc .php=phpfile
]]>
</screen>
</para>
</listitem>
<listitem>
<para>
Asociar el tipo de fichero <literal>phpfile</literal> con el ejecutable PHP
apropiado. Esto se hace ejecutando el siguiente comando:
<screen>
<![CDATA[
ftype phpfile="C:\php\php.exe" -f "%1" -- %~2
]]>
</screen>
</para>
</listitem>
</itemizedlist>
</para>
<para>
Siguiendo estos pasos, los scripts PHP podrán ser ejecutados desde cualquier
directorio sin necesidad de escribir el ejecutable PHP o la extensión
<literal>.PHP</literal> y todos los argumentos serán proporcionados al script para su procesamiento.
</para>
<para>
El ejemplo a continuación detalla algunos de los cambios de registro que pueden hacerse manualmente.
<example>
<title>Cambios de registro</title>
<screen>
<![CDATA[
Windows Registry Editor Version 5.00
[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\.php]
@="phpfile"
"Content Type"="application/php"
[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\phpfile]
@="PHP Script"
"EditFlags"=dword:00000000
"BrowserFlags"=dword:00000008
"AlwaysShowExt"=""
[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\phpfile\DefaultIcon]
@="C:\\php\\php-win.exe,0"
[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\phpfile\shell]
@="Open"
[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\phpfile\shell\Open]
@="&Open"
[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\phpfile\shell\Open\command]
@="\"C:\\php\\php.exe\" -f \"%1\" -- %~2"
]]>
</screen>
</example>
</para>
<para>
Con estos cambios, el mismo comando puede escribirse como sigue:
<screen>
<![CDATA[
"C:\PHP Scripts\script" -arg1 -arg2 -arg3
]]>
</screen>
o, si la ruta <literal>"C:\PHP Scripts"</literal> está en la
variable de entorno <envar>PATH</envar>:
<screen>
<![CDATA[
script -arg1 -arg2 -arg3
]]>
</screen>
</para>
<note>
<para>
Hay un pequeño problema si la intención es utilizar esta técnica y
utilizar los scripts PHP como filtro en línea de comandos, como en el ejemplo a continuación:
<screen>
<![CDATA[
dir | "C:\PHP Scripts\script" -arg1 -arg2 -arg3
]]>
</screen>
o
<screen>
<![CDATA[
dir | script -arg1 -arg2 -arg3
]]>
</screen>
El script puede simplemente bloquearse y no mostrar nada.
Para que esto funcione, se debe realizar otro cambio de registro:
<screen>
<![CDATA[
Windows Registry Editor Version 5.00
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\policies\Explorer]
"InheritConsoleHandles"=dword:00000001
]]>
</screen>
Más información sobre este problema puede encontrarse en este <link
xlink:href="http://support.microsoft.com/default.aspx?scid=kb;en-us;321788">artículo de la base de conocimientos de Microsoft: 321788</link>.
A partir de Windows 10, este ajuste parece estar invertido, haciendo que la instalación por defecto de
Windows 10 soporte automáticamente los manejadores de consola heredados. Este <link
xlink:href="https://social.msdn.microsoft.com/Forums/en-US/f19d740d-21c8-4dc2-a9ab-d5c0527e932b/nasty-file-association-regression-bug-in-windows-10-console?forum=windowssdk">
post del foro de Microsoft</link> proporciona la explicación.
</para>
</note>
</sect1>
<!-- 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
-->