我收到了这条消息:
configure: error: Invalid Apache directory - unable to find httpd.h under /usr/lib64/httpd/
执行以下命令后:
./configure --with-apache=/usr/lib64/httpd/
我不知道已安装的 apache 的顶级目录在哪里。apache 服务已从存储库安装在我的 CentOS 6.5 服务器上yum install httpd
。
- Apache 版本 2.2.15-31
- PHP 版本 5.4.25
答案1
这是我的问题的最终解决方案:
从存储库安装 httpd-devel 包yum install httpd-devel
,其中包含 apache 的标头。
使用 apxs2 配置 php ./configure --with-apxs
:。
最后一步是在 httpd.conf 文件(或包含的 .conf 文件)中的 VirtualHost 中添加以下行:
<FilesMatch \.php$>
SetHandler application/x-httpd-php
</FilesMatch>
答案2
如果您的 apache 已经构建和配置,您应该将 PHP 编译为共享模块而不是静态模块。
开销稍微高一些,但您可以单独升级每个组件。
配置示例:
$ ./configure --with-apxs=<path to apxs binary in apache/http bindir>
忘记了一件事:你的 apache 必须在启用 mod_so 的情况下进行编译,才能使用用 apxs 构建的动态模块
答案3
如果您想要为 apache 编译一些东西(这次是 php),您需要有 apache 的标头才能做到这一点。它们有些像“apache-dev”或“apache2-devel”或“libapache2-devel”,或类似命名的包。您必须安装这个包。
这个开发包将包含 apxs 二进制文件,它可能会被 php 配置脚本自动找到。
扩大:
其次,./configure --help
仔细阅读 php 源代码的输出。我记得,好像 、--with-apache
或--with-apache2
标志之间有一些区别--with-apxs
。你确定你不会意外地为 apache1 进行编译吗?
扩展 #2: 或许您也可以获取您的发行版的源 php 包,至少可以了解这是如何进行(重新)编译的。