Menu

Como executar arquivo PHP: linha de comando e php -S

Execute um arquivo PHP no terminal com php index.php, ou sirva uma pasta no navegador com o servidor embutido do PHP: php -S localhost:8000. Nenhum dos dois precisa de Apache ou XAMPP.

Esta página tem editores executáveis - edite, execute e veja a saída na hora.

Para executar um arquivo PHP, abra um terminal na pasta dele e digite php index.php. O PHP executa o arquivo e imprime a saída no terminal. Para ver uma página PHP no navegador, inicie o servidor embutido com php -S localhost:8000 e abra http://localhost:8000.

php index.php

Um primeiro index.php pode ter uma linha só. Clique em Run: isto é exatamente o que php index.php imprime.

O código PHP vem depois da tag <?php. Tudo o que estiver antes dessa tag é impresso como texto puro, e é assim que o PHP mistura código com HTML.

Executar um arquivo PHP pela linha de comando

A CLI do PHP (interface de linha de comando) executa um script uma vez e termina. Você precisa ter o PHP instalado; se php -v mostrar um erro, veja primeiro instalar PHP.

cd ~/projects/hello
php index.php          # run the file
php -l index.php       # only check the syntax ("lint")
php index.php > out.txt   # save the output to a file

php -l é útil antes de subir um arquivo: ele informa um erro de sintaxe com o número da linha, ou No syntax errors detected in index.php.

Passar argumentos com $argv

As palavras depois do nome do arquivo chegam em $argv. $argv[0] é sempre o nome do próprio script e $argc é a contagem, incluindo esse nome. Aqui o bloco roda sem argumentos extras, então só o nome está lá:

Na sua máquina, php index.php Ada 3 imprime a saudação três vezes. Os fallbacks com ?? mantêm o script funcionando quando falta um argumento. Para opções nomeadas como --name=Ada, use getopt:

<?php
// php index.php --name=Ada --verbose
$opts = getopt('', ['name:', 'verbose']);
echo "Hello, " . ($opts['name'] ?? 'world') . "\n";
if (isset($opts['verbose'])) {
    echo "Verbose mode\n";
}

Executar PHP no navegador com php -S

O PHP tem um servidor web de desenvolvimento embutido. Inicie-o na pasta dos seus arquivos:

php -S localhost:8000
[Sat Oct  3 07:21:34 2026] PHP 8.3.19 Development Server (http://localhost:8000) started

Agora http://localhost:8000/ executa index.php, e http://localhost:8000/about.php executa about.php. Cada carregamento de página executa o arquivo de novo, com a query string em $_GET. O bloco abaixo se comporta do mesmo jeito: rode-o, clique num link, e o script roda de novo com $_GET['page'] definido.

Opções úteis:

php -S localhost:8000 -t public        # serve the public/ folder as the web root
php -S 0.0.0.0:8000                    # reachable from other devices on your network
php -S localhost:8000 router.php       # send every request through router.php

O servidor embutido atende uma requisição por vez e serve só para desenvolvimento. Em produção, o PHP roda atrás do Nginx ou do Apache, normalmente via PHP-FPM.

Verificar como o script foi iniciado

PHP_SAPI diz qual "server API" executa o script: cli num terminal, cli-server com php -S, e fpm-fcgi ou apache2handler atrás de um servidor web de verdade. Scripts que só devem rodar pelo terminal verificam isso primeiro:

Executar uma única linha com php -r

Para um teste rápido você não precisa de arquivo. php -r executa o código que você passa, sem a tag <?php:

php -r 'echo date("Y-m-d"), PHP_EOL;'
php -r 'var_dump(0.1 + 0.2 == 0.3);'

No cmd do Windows, coloque o código entre aspas duplas e use aspas simples dentro dele. Para várias linhas, php -a abre um shell interativo em que cada instrução roda quando você aperta Enter.

Tornar um script executável no macOS e no Linux

Adicione uma linha shebang antes de <?php e marque o arquivo como executável. A linha shebang não é impressa:

#!/usr/bin/env php
<?php
echo "Backup started\n";
chmod +x backup.php
./backup.php

É assim que scripts PHP rodam pelo cron: 0 3 * * * /usr/bin/php /home/me/backup.php.

Códigos de saída para scripts

Um script de linha de comando informa sucesso ou falha pelo código de saída, que shell scripts e o cron podem verificar. exit(0) significa sucesso, qualquer outro número significa falha:

<?php
$file = $argv[1] ?? '';
if (!is_file($file)) {
    fwrite(STDERR, "File not found: $file\n");
    exit(1);
}
echo "Processing $file\n";
exit(0);

Erro comum: executar o arquivo ou a pasta errada

Could not open input file: index.php significa que o PHP não encontra o arquivo a partir de onde o terminal está. Confira a pasta atual com pwd (ou cd no Windows) e entre no projeto com cd ou passe o caminho completo: php ~/projects/hello/index.php. Com php -S, um 404 numa página que você sabe que existe normalmente significa que o servidor foi iniciado em outra pasta; pare-o com Ctrl+C e inicie de novo no lugar certo, ou passe a pasta com -t. Quando o arquivo roda mas mostra uma página em branco, ative a exibição de erros para ver o que deu errado.

Perguntas frequentes

Como executo um arquivo PHP no navegador?

Inicie o servidor embutido na pasta que contém o arquivo com php -S localhost:8000 e abra http://localhost:8000/yourfile.php. Abrir o arquivo direto do disco não funciona, porque nada executa o código PHP.

Como passo argumentos para um script PHP?

Escreva-os depois do nome do arquivo: php report.php 2026 sales. Dentro do script, $argv é o array ['report.php', '2026', 'sales'] e $argc vale 3. O primeiro elemento é sempre o nome do script.

Como executo uma linha de PHP sem arquivo?

Use php -r e deixe de fora a tag <?php: php -r 'echo strtoupper("hi"), PHP_EOL;'. Para várias linhas, php -a abre um shell interativo.

Como sei se o PHP está rodando pela linha de comando ou por um servidor web?

Verifique PHP_SAPI (ou php_sapi_name()). Ele vale "cli" num terminal, "cli-server" com php -S, e algo como "fpm-fcgi" ou "apache2handler" atrás de um servidor web.

Ilustração das linguagens de programação do Coddy

Aprenda a programar com o Coddy

COMEÇAR