【问题标题】:Apache 2.2.2 Refusing To Load/Deload PHPApache 2.2.2 拒绝加载/卸载 PHP
【发布时间】:2013-08-19 07:44:15
【问题描述】:

我刚刚使用自制软件将 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,它仍然不会改变它的行为 - 我准备在我的屏幕上打一个洞。

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

我该如何解决这个问题?

【问题讨论】:

  • 运行apache2ctl -V时HTTPD_ROOT的值是多少
  • @Marek $ apachectl -V [OUTPUT] -D HTTPD_ROOT="/usr"
  • 所以你必须查看 /usr + SERVER_CONFIG_FILE (再次在 apache2ctl -V 的输出中)
  • /usr/private/ ... - 不存在。
  • 我写的时候没有看到完整的输出。 SERVER_CONFIG_FILE 以 / 开头,所以它是绝对路径。 /private/etc/apache2/httpd.conf 是 apache 读取的文件。可能是启动脚本设置了不同的路径,检查一下。

标签: php macos apache


【解决方案1】:

SERVER_CONFIG_FILE="/private/etc/apache2/httpd.conf" - 编辑这个文件,以及它包含的任何内容。

【讨论】:

    【解决方案2】:

    重要的东西,阅读!

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

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

    PHP 仍在预处理信息的原因是由于 Apple 移除了 Web 共享及其后续替代品,例如 OS X Server,它强制 PHP 5.3.15 覆盖@中的任何 PHP 模块加载987654324@.

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


    注意事项

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

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

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-06-26
      • 1970-01-01
      • 1970-01-01
      • 2017-04-04
      • 2017-12-29
      • 2021-08-21
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多