PHPファイルを実行するには、そのフォルダーでターミナルを開いてphp index.phpと入力します。PHPがファイルを実行し、出力をターミナルに表示します。PHPのページをブラウザで見るには、php -S localhost:8000で組み込みサーバーを起動してhttp://localhost:8000を開きます。
php index.php
最初のindex.phpは1行でもかまいません。Runを押してください。これがphp index.phpの出力そのものです。
PHPのコードは<?phpタグのあとに書きます。タグより前にあるものはただのテキストとして出力され、これがPHPでコードとHTMLを混ぜて書ける仕組みです。
コマンドラインでPHPファイルを実行する
PHP CLI(コマンドラインインターフェース)は、スクリプトを1回実行して終了します。PHPのインストールが必要です。php -vがエラーになる場合は、先に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はファイルをアップロードする前に便利です。構文エラーがあれば行番号付きで報告し、なければNo syntax errors detected in index.phpと表示します。
$argvで引数を渡す
ファイル名のあとに書いた語は$argvに入ります。$argv[0]は常にスクリプト自身の名前で、$argcはその名前も含めた数です。ここでは追加の引数なしで実行されるので、名前だけが入っています。
自分のパソコンでphp index.php Ada 3と実行すると、あいさつが3回表示されます。??のフォールバックのおかげで、引数が足りなくてもスクリプトは動きます。--name=Adaのような名前付きオプションには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";
}
php -SでPHPをブラウザで動かす
PHPには開発用のWebサーバーが組み込まれています。ファイルのあるフォルダーで起動します。
php -S localhost:8000
[Sat Oct 3 07:21:34 2026] PHP 8.3.19 Development Server (http://localhost:8000) started
これでhttp://localhost:8000/はindex.phpを、http://localhost:8000/about.phpはabout.phpを実行します。ページを読み込むたびにファイルがもう一度実行され、クエリ文字列は$_GETに入ります。下のブロックも同じ動きをします。実行してからリンクをクリックすると、$_GET['page']がセットされた状態でスクリプトがもう一度動きます。
便利なオプション:
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
組み込みサーバーは一度に1つのリクエストしか処理せず、開発専用です。本番環境では、PHPはNginxやApacheの裏で、たいていPHP-FPMを通して動きます。
スクリプトの起動方法を確認する
PHP_SAPIは、スクリプトを動かしている「サーバーAPI」を教えてくれます。ターミナルではcli、php -Sではcli-server、本物のWebサーバーの裏ではfpm-fcgiやapache2handlerです。ターミナルからだけ実行すべきスクリプトは、まずこれを確認します。
php -rで1行だけ実行する
ちょっとした確認ならファイルは要りません。php -rは、渡したコードを<?phpタグなしで実行します。
php -r 'echo date("Y-m-d"), PHP_EOL;'
php -r 'var_dump(0.1 + 0.2 == 0.3);'
Windowsのcmdでは、コードをダブルクォートで囲み、中ではシングルクォートを使います。複数行なら、php -aで対話シェルが開き、Enterを押すたびに各文が実行されます。
macOSとLinuxでスクリプトを実行可能にする
<?phpの前にshebang行を書き、ファイルに実行権限を付けます。shebang行は出力されません。
#!/usr/bin/env php
<?php
echo "Backup started\n";
chmod +x backup.php
./backup.php
cronからPHPスクリプトを動かすのはこの方法です:0 3 * * * /usr/bin/php /home/me/backup.php。
スクリプトの終了コード
コマンドラインのスクリプトは、成功か失敗かを終了コードで伝え、シェルスクリプトやcronがそれを確認できます。exit(0)は成功、それ以外の数値は失敗を意味します。
<?php
$file = $argv[1] ?? '';
if (!is_file($file)) {
fwrite(STDERR, "File not found: $file\n");
exit(1);
}
echo "Processing $file\n";
exit(0);
よくあるミス:違うファイルやフォルダーで実行している
Could not open input file: index.phpは、ターミナルの今いる場所からPHPがファイルを見つけられないという意味です。pwd(Windowsではcd)で現在のフォルダーを確認し、プロジェクトにcdするか、php ~/projects/hello/index.phpのようにフルパスを指定してください。php -Sで、存在するはずのページが404になるなら、たいていサーバーを別のフォルダーで起動しています。Ctrl+Cで止めて正しい場所で起動し直すか、-tでフォルダーを指定してください。ファイルは動くのに真っ白なページが表示されるときは、エラー表示をオンにして原因を確認しましょう。
よくある質問
PHPファイルをブラウザで実行するには?
ファイルのあるフォルダーでphp -S localhost:8000を実行して組み込みサーバーを起動し、http://localhost:8000/yourfile.phpを開きます。ディスク上のファイルを直接開いても、PHPのコードを実行するものがないので動きません。
PHPスクリプトに引数を渡すには?
ファイル名のあとに書きます:php report.php 2026 sales。スクリプトの中では$argvが配列['report.php', '2026', 'sales']になり、$argcは3です。最初の要素は常にスクリプト名です。
ファイルを作らずにPHPを1行だけ実行するには?
php -rを使い、<?phpタグは省きます:php -r 'echo strtoupper("hi"), PHP_EOL;'。複数行なら、php -aで対話シェルが開きます。
PHPがコマンドラインとWebサーバーのどちらで動いているかはどうわかりますか?
PHP_SAPI(またはphp_sapi_name())を確認します。ターミナルでは"cli"、php -Sでは"cli-server"、Webサーバーの裏では"fpm-fcgi"や"apache2handler"のような値になります。