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の違いで悩みそう(苦笑)。