1

刚刚从源代码(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

---- 第三次更新 ---

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

感谢您的链接

4

2 回答 2

2

PHP cli SAPI 并不是真的要发送 HTTP 标头。它的目的是从命令行使用。

如果您想在 Apache 中使用 PHP,您必须编译 Apache 模块 SAPI 或 CGI SAPI。

要编译 Apache 2.2 模块,您必须分别在 %LIB% 和 %INCLUDE% 中拥有 Apache 库和包含目录,并使用:

--enable-apache2-2handler

请注意,您走的是 Apache 模块路线,您必须使用 Apache 二进制文件使用的相同版本的 C 运行时库来编译它。原因是 PHP 必须能够分配内存并将这些指针传递给 Apache 以便它释放它们,反之亦然,并且为了正确发生这种情况,版本必须相同。因此,例如,如果您编译(或从某处下载)使用 Visual C++ 9 编译的 Apache,则必须使用 Visual C++ 9 编译 PHP。

于 2010-08-07T10:30:50.213 回答
1

应该有比您在http://pastebin.com/qhFVR8A3
上发布的几行更多的输出 很可能有消息Could not find apache2.2 libraries/headers,这意味着配置脚本至少找不到以下文件之一:

  • httpd.h
  • libhttpd.lib
  • libapr-1.lib
  • libaprutil-1.lib

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

于 2010-08-07T11:07:06.613 回答