如何在不使用显式命令的情况下强制php使用`application/json`?

如何在不使用显式命令的情况下强制php使用`application/json`?,php,json,.htaccess,http-headers,mime-types,Php,Json,.htaccess,Http Headers,Mime Types,我们希望创建某种api,其中json格式的结果是使用.php文件生成的 web文件夹看起来像 api ├── .htaccess └── foo ├── bar.php └── baz.php 其中,bar.php和baz.php是生成json格式查询回复的php文件 这样的文件(bar.php)看起来像: <?php include_once("../../utils.php"); $id = $_GET['id']; echo json_encode(some_f

我们希望创建某种api,其中json格式的结果是使用
.php
文件生成的

web文件夹看起来像

api
├── .htaccess
└── foo
    ├── bar.php
    └── baz.php
其中,
bar.php
baz.php
是生成json格式查询回复的php文件

这样的文件(
bar.php
)看起来像:

<?php
include_once("../../utils.php");

$id = $_GET['id'];

echo json_encode(some_function($id));
?>
#All php files return JSON formatted text.
AddType application/json json php
但是生成的结果仍然是mime类型:
text/html


什么会导致这种情况?

PHP有一些值,包括。当Apache服务器生成
.php
页面时,它首先设置
应用程序/json
mime类型,但当php引擎启动时,标题被修改回
文本/html
。您可以通过在
.htaccess
中添加其他规则来设置:

#All php files return JSON formatted text.
AddType application/json json php
php_value default_mimetype application/json

AddType应用程序/json.json。php@TheStatehz:不起作用:(.try-AddType application/json.php-这是语法。请确保您的.htaccess文件也在使用中。@TheStatehz:也尝试过这个(还有很多变体).根据Apache文档,两者都是有效的。
AddType
是由OP添加的,因此我认为可以忽略它。它只需编写php\u value default\u mimetype应用程序即可工作/json@Ivanzinho:是正确的,但另外两行来自OPs
.httaccess