编译 Apache 后没有 PHP 模块

编译 Apache 后没有 PHP 模块

我正在尝试在 CentOS 上安装 Apache 2.4 和 PHP 5.6,我已经正确完成并确认使用了./apachectl configtestphp -v。问题是 Apache 无法识别 PHP 脚本,因为 Apache 安装不包含 Apache 所需的任何 PHP 模块。

唯一的事情是PHP 文档httpd.conf告诉我要做的就是通过添加以下内容来添加模块:

# Extra Modules
AddModule mod_php.c
AddModule mod_perl.c

# Extra Modules
LoadModule php_module         modules/mod_php.so
LoadModule php5_module        modules/libphp5.so
LoadModule perl_module        modules/libperl.so
AddType application/x-httpd-php .php

当尝试启动服务器时,输出:

httpd: Syntax error on line 156 of /usr/local/apache2/conf/httpd.conf: Cannot load modules/mod_php.so into server: /usr/
local/apache2/modules/mod_php.so: cannot open shared object file: No such file or directory

我已经正确编译了 Apache 和 PHP,没有任何错误。

我用这个为 Apache 编译:

./configure --with-included-apr=/usr
make
make install

对于 PHP 来说是这样的:

./configure
make
make install

任何帮助表示赞赏。

答案1

为了不让它得不到答复。

Apache 无法mod_php.so作为其构建的一部分进行构建,因为它不知道如何解析或运行 PHP。另一方面,PHP 需要知道 Apache 是如何编译生成mod_php.so.您需要指定:

  • --enable-so到 Apache 的配置脚本,以允许将额外的模块构建为共享库。并创建apxs,用于构建共享库的扩展工具。

  • 以及--with-apxs2=/path/to/apachePHP 的配置脚本,使其能够针对 Apache 标头进行构建、查找apxs并生成mod_php.so.

通常在 *nix 系统上,Apache--prefix将默认为/usr/localapxs以 结尾/usr/local/bin/apxs。因此编译应该如下运行。

首先 Aapche ( httpd) 具有:

./configure --enable-so
make
make install

然后 PHP 为:

./configure --with-apxs2=/usr/local/apache2/bin/apxs
make
make install

参考:

相关内容