我正在使用#!/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。
调用它答案 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
选项。我会做第一个。