【发布时间】:2016-05-06 14:23:47
【问题描述】:
我正在学习 HTTP 和 Web 编程,我惊讶地发现您可以使用 php 设置 HTTP 标头。我认为 PHP 用于生成动态 HTML 网页和创建应用程序。 PHP 可以设置由 Web 服务器(例如 Apache)发送的标头,这对我来说似乎很奇怪。我知道 PHP 解释器读取 PHP 文件并通常以 HTML 的形式生成输出。
此过程是否适用于管道?在我看来,apache 服务器必须能够接收来自 PHP 解释器的命令,或者它必须能够解释 PHP 函数本身。我认为它们是独立的过程。
PHP 使用什么机制为 Web 服务器应用程序(httpd 或 Apache 或其他)设置标头
是否所有 Web 服务器都支持接收和设置通过 PHP 接收的标头?
是否可以为所有后端语言设置 HTTP 标头?
我搜索了该网站,但没有找到我的问题的答案。
更具体地说,我想知道 apache 或其他 web 服务器可以向 PHP.exe 应用程序或 PHP-CGI.exe 应用程序发送什么命令来接收除了输出的 HTML 文件之外的其他信息。
【问题讨论】:
-
Apache2 通常设置有一个 PHP 模块 - libapache2-mod-php5 - 这可能是它可能的原因。
-
@Antony D'Andrea 这是否意味着 apache 和 PHP 在同一个进程中运行? PHP解释器不是在操作系统中运行的一个单独的进程吗?
-
我不明白,真的有那么令人惊讶吗?如果 PHP 可以基于 .php 文件中的一些指令生成动态内容,即使网络服务器仍然是提供内容的服务器,为什么它不能设置标头?哦,PHP 解释器不是一个单独的进程,它就像一个网络服务器调用的额外二进制包。
-
标头被发送到浏览器,它们也必须在 Apache 开始重新调整网页的任何部分之前发送,因为标头必须在任何实际页面内容之前首先到达浏览器
-
请记住,当 Apache 看到
<php标记时,整个页面将被发送到 PHP 进行解释和执行。一旦 PHP 完成向页面添加内容 PHP 传递完成的页面将传递回 Apache,以便它可以将其传递给浏览器
标签: php apache http http-headers backend