PHPerKaigi 2024

PHP em Linha de Comando no Microsoft Windows

Esta seção contém notas e dicas específicas para que o PHP seja executado da linha de comando do Windows.

Nota:

Deve-se ler os passos do manual de instalação primeiro!

Configurar o PHP para ser executado da linha de comando pode ser feito sem nenhuma mudança no Windows.

C:\php\php.exe -f "C:\PHP Scripts\script.php" -- -arg1 -arg2 -arg3

Porém há alguns passos fáceis que podem ser seguidos para tornar o processo mais simples. Alguns desses passos podem já ter sido executados, mas estão repetidos aqui para fornecer uma sequência completa, passo a passo.

    Nota:

    PATH e PATHEXT são importantes variáveis de sistemas pré-existentes no Windows, e deve-se tomar cuidado para não sobrescrever nenhuma das duas, apenas concatenar valores.

  • Concatene a localização do executável do PHP (php.exe, php-win.exe ou php-cli.exe dependendo da versão do PHP e preferências de visualização) à variável de ambiente PATH. Leia mais sobre como adicionar a pasta do PHP à variável PATH na entrada FAQ correspondente.

  • Adicione a extensão .PHP à variável de ambiente PATHEXT. Isto pode ser feito ao mesmo tempo que se adiciona à variável PATH. Siga os mesmos passos descritos no FAQ mas adicione à variável PATHEXT no lugar da variável PATH.

    Nota:

    A posição em que você inserir a extensão .PHP irá determinar qual script ou programa será executado quando o nome do arquivo for especificado. Por exemplo, inserir .PHP antes de .BAT irá fazer com que seu script seja executado, em vez do arquivo de lote, se existir um arquivo de lote com o mesmo nome.

  • Associe a extensão .PHP com o tipo de arquivo. Isto pode ser feito executando o seguinte comando:

    assoc .php=phpfile
    

  • Associe o tipo de arquivo phpfile com o executável PHP apropriado. Isto pode ser feito executando o seguinte comando:

    ftype phpfile="C:\php\php.exe" -f "%1" -- %~2
    

Seguir estes passos irá permitir que os scripts PHP sejam executados de qualquer pasta sem a necessidade de digitar o executável PHP ou a extensão .PHP e todos os parâmetros serão fornecidos ao script para processamento.

O exemplo abaixo detalha algumas das alterações de registro que podem ser realizadas manualmente.

Exemplo #1 Alterações de Registro

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"

Com estas alterações o mesmo comando pode ser escrito como:

"C:\PHP Scripts\script" -arg1 -arg2 -arg3
ou, se o caminho "C:\PHP Scripts" estiver na variável de ambiente PATH:
script -arg1 -arg2 -arg3

Nota:

Existe um pequeno problema se a intenção for usar esta técnica e usar os scripts PHP como um filtro de linha de comando, como o exemplo abaixo:

dir | "C:\PHP Scripts\script" -arg1 -arg2 -arg3
ou
dir | script -arg1 -arg2 -arg3
Neste caso, o script poderá simplesmente travar e não produzir nenhuma saída. Para tornar esta opção operacional, deve-se fazer uma outra alteração no registro.
Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\policies\Explorer]
"InheritConsoleHandles"=dword:00000001
Mais informações sobre este problema pode ser encontrado neste artigo » Microsoft Knowledgebase Article : 321788. A partir do Windows 10, esta configuração foi invertida, fazendo com que a instalação padrão do Windows 10 suporte automaticamente esta opção. Esta postagem do »  Microsoft Forum fornece a explicação.

add a note

User Contributed Notes 4 notes

up
4
vechenjivot at gmail dot com
8 years ago
On Windows 10, the above registry entries didn't work for me. In order for them to work, you need to write to
HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\FileExts\.php\UserChoice
for which you don't have access, even if you run regedit as admin (probably because of the Hash key).
The solution is actually much easier - right-click a PHP file in Explorer and associate it to always open with php.exe.
And then you need to modify the PATH variable:
setx PATH "%PATH%;c:\path\to\php" /M
if you want to execute files with commands like
php file.php
up
4
pimroes at gmail dot com
13 years ago
Make sure your run CMD.exe as an administrator, otherwise you'll get an "access denied" when you run the commands.
up
1
rudigerw at hotmail dot com
8 years ago
On Windows 10 starting php by only typing the script name in an elevated command prompt pops up a dialog to choose an app.
It turns out Windows does that when the program associated with phpfiles through ftype cannot be executed. In this case this happens because it is trying to run php.exe in non-admin mode, even when launched from an elevated command prompt. To fix this, locate your php.exe, right-click, "Properties", "Compatibility", under Settings check "Run this program as an administrator; then also click "Change settings for all users".
up
0
elhadjouattara at gmail dot thrcom
8 years ago
On Windows 8, with php 5.6.8 win32 VC11 in command line, need to indicate path with / rather than backslash \
Hence C:\Users\toshiba\Documents\php\test.php shall be C:/Users/toshiba/Documents/php/test.php
To Top