2016-11-19 10 views
1

私はPHPでコマンドラインユーティリティを書いています。#!/ usr/bin/php行にはどのような有用な引数を付けることができますか?

#!/usr/bin/php 
<?php 
    print "Hello, world!" 
?> 

私は#!行に追加する必要があります任意の有用なフラグがありますか?たとえば、Perlで書くかもしれません。#!/usr/bin/perl -w

エラーやあいまいさ、移植性のない機能ができるだけ積極的に捕捉されるように、できるだけタイトなものにすることをお勧めします。

+0

IIRCのエラー報告の後に目に見えない追加の空白文字でなければならない原因と奇妙なエラーであっ助けることができる持っていません'-1/E_ALL'でcliにいてください。そうでない場合は、 'php.ini'で変更するか、スクリプトの中で' error_reporting(-1); 'を使うだけです。 –

+0

バイナリラインではありませんが、PHPのオープニングラインには、関数/メソッドの引数の型ジャグリングを防ぐために、 '<?php declare(strict_types = 1);'が必要です。 – PeeHaa

+0

脇に: '/ usr/bin/perl -w'は、_all_モジュール内の警告を可能にするため、モジュールがオフになることを期待する可能性があるため、適切な方法とは考えられません。 – duskwuff

答えて

1

TL; DR Iだろう、次のいずれか:

  • #!/usr/bin/php -q -c /location/to/known/php.ini/file私はへのアクセス権を持っている場合は、適切な事前に設定され、私は
いない場合、スクリプト
  • #!/usr/bin/php -q -n -d error_reporting=-1ためphp.ini

    ロングバージョン

    Here areあなたが使用できるコマンドラインオプション。

    -qは必須ではありませんが、CGIコンテキストでPHPが実行していると思われる奇妙な理由がある場合は、HTTPヘッダーの出力を抑制します。

    残りは、のオプションがあります。ここでは、エラーレベル(およびその他の設定値)を都合のよいものに設定できる、使用するファイルの場所をphp.iniに指定できます。あなたはphp.iniにあなたのスクリプトをポテンシャル的に供給して、PHPが起動したときに起動されるようにすることができます。特に、デフォルトのマシンphp.iniを完全に制御できないマシンでスクリプトを実行する必要がある場合、設定。

    何らかの理由でphp.iniをスクリプトに渡すことはできませんが、依然として不明な(おそらく不明な)php.iniの設定を上書きする場合は、-d foo[=bar]の設定値を設定できます。たとえば、-d error_reporting=-1は、エラー報告をE_ALLに設定します。この設定を-nとすると、パス上のphp.iniが単に破棄されます。 -nには基本的にすべての設定が削除されるため、いくつかの副作用があるかもしれないことに注意してください。既定値はあなたが思うほど賢明ではないかもしれません。例えば

    #!/usr/bin/php 
    <?php 
    echo ini_get('error_reporting'); 
    echo $unknown; 
    

    あなたの場所でPHPインタプリタ場合

    X-Powered-By: PHP/7.0.1 
    Content-type: text/html 
    
    0 
    

    を返すかもしれませんが、代わりにCLI 1のCGI一つであり、デフォルトphp.inierror_reportingがオフになっています。これはおそらくあなたが望むものではありません。一方

    あなたが

    #!/usr/bin/php -q -n -d error_reporting=-1 
    <?php 
    echo ini_get('error_reporting'); 
    echo $unknown; 
    

    にしようとした場合、このスクリプトは、あなたのphp.iniが異なって設定されている場合でも

    -1 
    Notice: Undefined variable: unknown in <filename> on line 4 
    

    を返します(それは単にとにかく破棄されるように)、およびあなたはCGIバージョンを使用しています。

    はまた、スクリプトの起動時にのみ正しくphp.iniに設定することができますoutput_handlerのようないくつかの例外が、ありますが、あなたは、通常は、適切な変数を設定するini_setを使用できることに注意してください。 -nを使用すると、非標準のiniファイルの潜在的な問題を取り除くことができます。

    はまた、あなたは通常、スクリプトで終わる?>を追加する必要はありません、それは時にはすでに終了?>

  • +0

    '' '-q'''は、特定のボックス'/usr/bin/php'がphpのcgiバージョンを指していない限り、CLI –

    +0

    @JoeWatkinsではまったく何もしません。PHPは実際に実行すると考えるようにCLIではなくCGIモードで実行します。 – SztupY

    +0

    それはかなり奇妙なことです、私はそれが一般的に適用可能なアドバイスだとは思わない。 –

    関連する問題