0

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

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

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

然后我将所有文件删除/etc/apache2为 JUST contains httpd.conf,但它仍然不会改变它的行为 - 我正准备在我的屏幕上打一个洞。

我完全按照自制程序的说明进行操作,包括明显的 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"

我该如何解决?

4

2 回答 2

0

重要的东西,阅读!

在大量阅读 Apple 论坛和其他资源后,事实证明,如果没有第三方堆栈(例如Bitnami 的 MAMP),则无法更新到更高版本的 PHP(未在 10.8 上默认安装)[见注释] .

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

PHP 仍在预处理信息的原因是由于 Apple 删除了 Web 共享及其后续替代品,例如 OS X Server,它强制 PHP 5.3.15覆盖任何在httpd.conf.

PHP 只能通过 OS X Server 提供的“PHP On or Off”选项或我猜想与相同 API 交互的其他接口来禁用。


笔记

当然,以上内容基于连锁研究,对于非常具体的情况可能不正确 - 但我没有看到任何证据表明其他情况。

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

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

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

于 2013-08-19T09:53:45.937 回答
0

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

于 2013-08-19T08:08:35.213 回答