我正在尝试在 CentOS 上安装 Apache 2.4 和 PHP 5.6,我已经正确完成并确认使用了./apachectl configtest
和php -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/apache
PHP 的配置脚本,使其能够针对 Apache 标头进行构建、查找apxs
并生成mod_php.so
.
通常在 *nix 系统上,Apache--prefix
将默认为/usr/local
并apxs
以 结尾/usr/local/bin/apxs
。因此编译应该如下运行。
首先 Aapche ( httpd
) 具有:
./configure --enable-so
make
make install
然后 PHP 为:
./configure --with-apxs2=/usr/local/apache2/bin/apxs
make
make install
参考: