我使用#!/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调用它的。
您的脚本打印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
选项。我会选择第一个