我刚刚使用自制软件将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
安装一样;不过,这只是猜测。