3

#!/usr/bin/env phpコマンドラインでPHPスクリプトを呼び出すために使用していますが、これはうまく機能しています。PHP はコマンド ラインを正しく検出し、HTTP ヘッダーを抑制します。

しかし、cronジョブを介して、またはcronジョブを介してスクリプトの呼び出しを開始しsudoました.HTTPヘッダーの出力が開始されました。

>> ./test 
Hello world!

>> sudo -u nathan ./test 
Content-type: text/html

Hello world!

./test には、次のコードのみが含まれています。

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

echo 'Hello world!' , "\n";

これは、スクリプトが tty に渡されるかどうかに関係していると思いますが、よくわかりません。これらのヘッダーが印刷されないようにする方法はありますか? env経由で呼び出しているので、「-q」引数は使用できないと思います。

4

1 に答える 1

6

/usr/bin/env phpCLI ではなく CGI バージョンの PHP 実行可能ファイルを呼び出すため、スクリプトは HTTP ヘッダーを出力します。これを確認するには、最初に実行which phpして、どこ/usr/bin/env phpを指しているかを調べます。次に、実行/usr/bin/php -v(または返されるパスwhich php) を実行して、それが CGI であるか CLI であるかを確認します。

デフォルトでは、PHP は CLI と CGI の両方としてビルドされます。したがって、PHP の設定を修正するか、ハードコードされたパスを の-q代わりにenvオプションで使用してenvください。私は最初にやります。

于 2013-01-15T22:03:41.673 に答える