PHP - 为什么 system() 方法还要添加一个 header?

PHP - Why does the system() method add a header also?

我正在创建一个 php 图片上传脚本。脚本发送 post 请求并且(应该)收到 json 响应。

这是检查 MIME 类型的行。

$mimetype = system("file -bi -- ".escapeshellarg($_FILES["file"]["tmp_name"])); //line 63

在几行之后我设置了 JSON header:

header('Content-Type: application/json'); //line 124

但是 js 不工作。在 chrome 中检查网络选项卡时:

这是因为 system() 函数将 shell 中的所有内容写入脚本输出(类似于自动回显)。在从脚本发送了一些输出并且它发生后,您不能使用 header() - system() 发送输出("image/png; charset=binary" 在警告之前的网络选项卡中)。

尝试使用 exec()

它自己不发送headers,它只是发送执行结果,一旦发送就来不及发送headers。

我建议首先发送 headers 或按照@kbarborak 的建议使用 exec() 函数。