Apache 2.2.2拒绝加载/卸载PHP


Apache 2.2.2 Refusing To Load/Deload PHP

我刚刚使用自制软件将PHP的默认OS 10.8安装更新为PHP 5.5.1,并且我已经在/etc/apache2更新了我的httpd.conf文件,但Apache仍然加载旧的PHP 5.3.15。

我甚至取消了所有php5_module行的注释,它仍然加载PHP。。。我非常生气,因为它拒绝工作——它现在甚至不应该加载php,这证明它甚至没有读取配置文件。

然后,我继续更改/etc/apache2目录中的所有其他配置文件,但它仍然拒绝加载正确的PHP版本,并继续首先加载PHP。

然后,我删除了/etc/apache2中的所有文件,只包含httpd.conf,它仍然不会改变它的行为——我准备在屏幕上打孔。

我严格遵循了homebrew的指示,包括明显的apache重启,我甚至试图重启我的机器,作为最后的恐慌手段。

我花了2个小时的大部分时间试图"解决"这个问题,有人知道如何解决这个问题或发生了什么吗?


这是我当前的httpd.conf,围绕php5_module区域

555是额外的预防措施,但它仍然像地狱一样顽固。

# LoadModule php5_module 55555libexec/apache2/libphp5.so
# LoadModule php5_module    555555/usr/local/opt/php55/libexec/apache2/libphp5.so

以下是我进入localhost时看到的内容

Apache/2.2.22 (Unix) DAV/2 PHP/5.3.15 with Suhosin-Patch mod_ssl/2.2.22 OpenSSL/0.9.8x

查询二进制文件得到:

[ 558 / 58 / 0 ] $ apachectl -V
Server version: Apache/2.2.22 (Unix)
Server built:   Dec  9 2012 18:57:18
Server's Module Magic Number: 20051115:30
Server loaded:  APR 1.4.5, APR-Util 1.3.12
Compiled using: APR 1.4.5, APR-Util 1.3.12
Architecture:   64-bit
Server MPM:     Prefork
  threaded:     no
    forked:     yes (variable process count)
Server compiled with....
 -D APACHE_MPM_DIR="server/mpm/prefork"
 -D APR_HAS_SENDFILE
 -D APR_HAS_MMAP
 -D APR_HAVE_IPV6 (IPv4-mapped addresses enabled)
 -D APR_USE_FLOCK_SERIALIZE
 -D APR_USE_PTHREAD_SERIALIZE
 -D SINGLE_LISTEN_UNSERIALIZED_ACCEPT
 -D APR_HAS_OTHER_CHILD
 -D AP_HAVE_RELIABLE_PIPED_LOGS
 -D DYNAMIC_MODULE_LIMIT=128
 -D HTTPD_ROOT="/usr"
 -D SUEXEC_BIN="/usr/bin/suexec"
 -D DEFAULT_PIDLOG="/private/var/run/httpd.pid"
 -D DEFAULT_SCOREBOARD="logs/apache_runtime_status"
 -D DEFAULT_LOCKFILE="/private/var/run/accept.lock"
 -D DEFAULT_ERRORLOG="logs/error_log"
 -D AP_TYPES_CONFIG_FILE="/private/etc/apache2/mime.types"
 -D SERVER_CONFIG_FILE="/private/etc/apache2/httpd.conf"

我该如何解决这个问题?

SERVER_CONFIG_FILE="/private/etc/apache2/httpd.conf"-编辑此文件及其包含的内容。

重要提示,请阅读

在大量阅读苹果论坛和其他资源后,发现如果没有第三方堆栈,如Bitnami的MAMP,就不可能更新到10.8上默认未安装的更高版本的PHP。

基于此,提供repo以更新PHP的homebrew抽头必须用于此类第三方堆栈,或者用于编译和上传的PHP的某些自定义安装,或者在文件系统上的其他地方使用自定义Apache安装,而不是/etc/apache2/

PHP仍在预处理信息的原因是,苹果删除了Web共享及其随后的替换,如OS X Server,它强制PHP 5.3.15覆盖httpd.conf中加载的任何PHP模块。

PHP只能通过OS X Server提供的"PHP打开或关闭"选项禁用,或者通过与同一API交互的其他接口禁用。


注释

当然,以上是基于连锁研究,在非常具体的情况下可能是不正确的,但我看不到其他证据。

如果您正在寻找运行+DefaultPHP的Apache服务器,则必须使用第三方堆栈。

我推荐Bitnami的MAMP,因为PHP和其他组件都是最新的,比其他堆栈更新。

我猜,如果出现了一个新的、激进的PHP版本,你可以通过各种brews或自定义PHP编译与它进行接口,就像你应该能够使用默认的/etc/apache2安装一样;不过,这只是猜测。