刚从源码(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中并尝试了以下命令,但无法找到标题。
E:\phpsdk\bin\php53dev\vc9\x86\php5.3.3>
configure --disable-all --enable-cli --enable-apache2-2handler=../apache --enable-apache2-2filter --enable-cgi
----第3次更新---
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
感谢您的链接
答案 0 :(得分:2)
PHP cli SAPI实际上不是要发送HTTP头;它的目的是从命令行使用。
如果要将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。
答案 1 :(得分:1)
应该有比你在http://pastebin.com/qhFVR8A3发布的几行更多的输出
很可能是消息Could not find apache2.2 libraries/headers
,这意味着配置脚本找不到至少一个以下文件:
将这些文件复制到php-build包含/库路径,或使用--with-extra-includes
和--with-extra-libs
指向相应的目录。