使用现有 Apache 配置 PHP 时出错

使用现有 Apache 配置 PHP 时出错

我收到了这条消息:

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 包,至少可以了解这是如何进行(重新)编译的。

相关内容