刚刚从源代码 (win32) 编译了 5.3.3。 尝试测试一些 header() 东西,但它看起来不适用于 CLI sapi。 任何关于将编译后的源代码作为模块放入 apache 的好文档,就像我通常对预编译模块所做的那样。
基本上我的测试将来自 CLI
php -r "header('Content-Type: text/plain', true, 404); var_dump(headers_list());"
我从 headers_list() 得到一个空数组,所以我需要将这个内置源放入 apache 中,以便我从 headers_list() 得到响应。
提前谢谢你们。
-------- 更新------
配置命令,但还没有apache? http://pastebin.com/qhFVR8A3 :
E:\phpsdk\bin\php53dev\vc9\x86\php5.3.3>configure --disable-all --enable-cli --enable-apache2-2handler --enable-apache2-2filter
Enabled SAPI:
-------------
| Sapi Name |
-------------
| cli |
-------------
----- 第二次更新 ----
下载了 apache,将其固定在 ../apache 中并尝试了以下命令,但找不到 header 。
http://pastebin.com/XyrzuZvu :
E:\phpsdk\bin\php53dev\vc9\x86\php5.3.3>
configure --disable-all --enable-cli --enable-apache2-2handler=../apache --enable-apache2-2filter --enable-cgi
---- 第三次更新---
Enabled SAPI:
--------------------
| Sapi Name |
--------------------
| apache2_2filter |
| apache2_2handler |
| cgi |
| cli |
--------------------
I have it working now.
E:\phpsdk\bin\php53dev\vc9\x86\php5.3.3>configure --disable-all --enable-cli --enable-apache2-2handler --enable-apache2-2filter --enable-cgi --with-extra-includes=E:\phpsdk\bin\php53dev\vc9\x86\apache\include --with-extra-libs=E:\phpsdk\bin\php53dev\vc9\x86\apache\lib
谢谢你的链接
最佳答案
PHP cli SAPI 并不是真的要发送 HTTP header ;它的目的是从命令行使用。
如果要将 PHP 与 Apache 一起使用,则必须编译 Apache 模块 SAPI 或 CGI SAPI。
要编译 Apache 2.2 模块,您必须拥有 Apache 库并分别在 %LIB% 和 %INCLUDE% 中包含目录,然后使用:
--enable-apache2-2handler
请注意,您走的是 Apache 模块路线,您必须针对 Apache 二进制文件使用的相同版本的 C 运行时库对其进行编译。原因是 PHP 必须能够分配内存并将这些指针传递给 Apache 以便它释放它们,反之亦然,为了正确发生,版本必须相同。因此,例如,如果您编译(或从某处下载)使用 Visual C++ 9 编译的 Apache,则必须使用 Visual C++ 9 来编译 PHP。
关于php - 将 PHP 5.3.3 从源代码编译到 Apache,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3430030/