web-dev-qa-db-ja.com

コマンドラインからPHPを実行するには#!/ usr / bin / envが必要ですか?

PHPこれはコマンドラインから実行されることを意図している場合が多いですが、この行は#!/usr/bin/env phpこのようなファイルの先頭に...

#!/usr/bin/env php
<?php
    // code
?>

これがファイルがLinux/Unixシステムで実行される場合にのみ意味があるのか​​、それともWindowsで実行する必要があるのか​​を知りたいと思っていましたか?

27
JasonDavis

「ハッシュバング」行は、スクリプトのタイプの自動検出に必要です。それはこの種の使用を可能にします:

[pfisher ~]$ chmod +x run-me.php
[pfisher ~]$ run-me.php

次のように、ファイル名を引数としてphpインタープリターに渡す場合、その行は必要ありません。

[pfisher ~]$ php run-me.php
29
Patrick Fisher

いいえ、そうではありません。直接使用できます

#!/path/to/php

Envユーティリティを介してphp(またはその他)を実行することは、弱いセキュリティ対策です。プラットフォームによっては、さまざまな構成ファイルに従ってPATH、LIB、およびその他の環境変数を「修正」し、そこにある危険な値の一部を削除する可能性があります(HPUXのenvなど)。

また、特定の環境でのシェル展開の範囲を制限することもできます。 (Linuxのman 1 envを参照してください)。

1
Ahmed Masud