我正在使用#!/usr/bin/env php命令行调用PHP脚本,该脚本运行良好.PHP正确检测命令行并禁止HTTP标头.
但我开始通过sudo或通过cron作业调用我的脚本,它已经开始打印HTTP标头.
>> ./test
Hello world!
>> sudo -u nathan ./test
Content-type: text/html
Hello world!
Run Code Online (Sandbox Code Playgroud)
./test只包含以下代码:
#!/usr/bin/env php
<?php
echo 'Hello world!' , "\n";
Run Code Online (Sandbox Code Playgroud)
我认为这与脚本是否通过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.我会先做第一个.