从源代码编译PHP 5.3.3到Apache

时间:2010-08-07 10:13:16

标签: php c apache pecl

刚从源码(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中并尝试了以下命令,但无法找到标题。

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

----第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

感谢您的链接

2 个答案:

答案 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,这意味着配置脚本找不到至少一个以下文件:

  • httpd.h中
  • libhttpd.lib
  • APR的-1.lib
  • libaprutil-1.lib

将这些文件复制到php-build包含/库路径,或使用--with-extra-includes--with-extra-libs指向相应的目录。