如果可能的话,我想保留默认的 Apache 安装,并直接指示它使用使用 MacPorts 构建/安装的不同版本的 PHP。这可能吗(如果可以,是否有一个简单的设置过程)?
我知道 Apache 希望我指定要加载的 PHP 模块,但我不清楚如何让它使用不同的 PHP 安装(如果可能的话)。我是否需要编译一个新的 Apache 模块,以某种方式指向我用 MacPorts 构建的 PHP 副本?如果您能澄清我需要做什么,我将不胜感激!
更新:启用 FastCGI 并通过它而不是 Apache 模块运行 PHP 怎么样?我知道这两种方法之间存在权衡,但这是一种可能性吗?或者我会遇到类似的问题吗?
答案1
Macports PHP libphp5.so 通常与 OSX 的默认 Apache 系统不兼容。以下是我在 macosxserver 上发生的情况。
# /etc/apache2/httpd.conf
LoadModule php5_module /opt/local/apache2/modules/libphp5.so
尝试启动服务器
~> sudo /usr/sbin/apachectl -k start
httpd: Syntax error on line 118 of /private/etc/apache2/httpd.conf:
Cannot load /opt/local/apache2/modules/libphp5.so into server: dlopen(/opt/local/apache2/modules/libphp5.so, 10):
Library not loaded: /opt/local/lib/libaprutil-1.0.dylib\n Referenced from: /opt/local/apache2/modules/libphp5.so\n
Reason: Incompatible library version: libphp5.so requires version 5.0.0 or later, but libaprutil-1.0.dylib provides version 4.0.0
通过将路径设置为默认,您可以轻松地编译 PHP 以使用默认 Apache 安装apxs
。
# In PHP source directory
./configure --with-apxs2=/usr/sbin/apxs
当然,(重新)编译 PHP 的工作量可能比您希望继承的要大。最简单的方法是接受 Macport 的 Apache 安装,并调整您的 osxserver 以用作/opt/local/apache2
您的默认 HTTPD 服务。