/ usr / bin / env php shebang通过sudo或cron调用时打印标题

时间:2013-01-15 20:31:07

标签: php

我正在使用#!/usr/bin/env php在命令行调用PHP脚本,该脚本运行良好。 PHP正确检测命令行并禁止HTTP头。

但是我开始通过sudo或通过cron作业调用我的脚本,它已经开始打印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有关,但我不确定。有没有办法防止打印这些标题?我不能使用“-q”参数,我不认为,因为我通过env。

调用它

1 个答案:

答案 0 :(得分:6)

您的脚本打印HTTP标头,因为/usr/bin/env php调用PHP可执行文件的CGI版本而不是CLI。您可以先运行which php来查看/usr/bin/env php指向的位置,以验证这一点。然后运行/usr/bin/php -v(或任何路径which php返回)以查看它是CGI还是CLI。

默认情况下,PHP构建为CLI和CGI。因此,要么修复PHP设置,要么使用-q选项而不是env使用硬编码路径,因为你是对的,你不能使用env选项。我会做第一个。