PHPスクリプトを「php -r」でコマンドラインで実行する場合、LinuxとWindowsではPHPスクリプトの囲み方が異なるようだ

PHPスクリプトを「php -r」を使ってコマンドラインで実行する場合、Linuxのコンソールで実行する場合とWindowsのコマンドプロンプトで実行する場合とでは、PHPスクリプトの囲み方が異なるので注意が必要だ。

例えば、Linuxでは、コンソールで

php -r 'phpinfo();'

と書いて[Enter]キーを押すと、このコマンドを実行できるが、Windowsの場合、これをそのまま実行すると、

PHP Parse error: syntax error, unexpected $end in Command line code on line 1

というエラーになってしまう。

しかし、エラーの解決方法は実に簡単。

php -r 'phpinfo();'ではなく

php -r "phpinfo();"とすれば、エラーが出ることなく無事にコマンドを実行できる。

どうやら、Windowsのコマンドラインで「php -r」でPHPスクリプトを実行する場合は、'(シングルクォーテーション)ではなく、"(ダブルクオーテーション)を使用したほうが良さそうだ

一方、Linuxは、'(シングルクォーテーション)、"(ダブルクオーテーション)どちらでも動作する場合もあるが、"(ダブルクオーテーション)だとうまく動作しない場合もあるようだ。

また、エラーメッセージは、実行するPHPスクリプトの内容によって変わるようだ。

《PHPスクリプトを「'」で囲んだ場合、Windowsでは実行できずエラーとなるが、Linuxでは実行できる例》

php -r 'for($i=1;$i<=10;$i++){echo $i.PHP_EOL;}'

・Windowsでの実行結果

指定されたファイルが見つかりません。

・Linuxでの実行結果

1
2
3
4
5
6
7
8
9
10

《PHPスクリプトを「"」で囲んだ場合、Windowsでは実行できるが、Linuxでは実行できない例》
php -r "for($i=1;$i<=10;$i++){echo $i.PHP_EOL;}"

・Windowsでの実行結果

1
2
3
4
5
6
7
8
9
10

・Linuxでの実行結果

PHP Parse error: syntax error, unexpected '=', expecting ';' in Command line code on line 1

あんまりコマンドラインで即興でPHPコマンドを実行する機会はないのだが、ほとんど趣味で実行する機会は今後もたくさんあるだろう。

そのたびに、このLinuxとWindowsの違いで悩みそう(苦笑)。

前へ

ntpdateコマンドで時刻合わせをする時にプロキシを使うのは無理っぽい

次へ

横浜駅から羽田空港への移動はバスが便利だし電車よりも到着が早い(かも)