5

我寻求帮助找出为什么 MAMP 无法对 Apache 的“文档根”进行更改,并解决了这个问题。原始文件的第二次编辑包括大量附加信息,可能有助于识别解决方案。

Apache 最近停止响应 Apache httpd.conf 的“主”服务器配置部分中的“DocumentRoot”指令的更改。Apache 继续运行良好,只是它仍然停留在先前的“DocumentRoot”设置上。我会重视您的帮助,找到这个问题的根源并修复它。

我使用 Lion 在 2011 年初的 MacBookPro 上运行 Apache 2.0.64。为方便起见,我在 MAMP 2.0.5 中工作,其中包括 Apache 2.0.64。我一直在开发多个网站,位于不同路径下的不同目录中。为了在这些路径和目录之间切换 localhost,我经常使用 MAMP(不是 MAMP Pro)GUI 操作序列
“首选项...”>“Apache”>“文档根目录”>“选择...”
在两个路径之间切换.

一个多星期前,这个 GUI 开关背后的一些设置或过程卡在了其中一个路径上(“路径 p”,为简单起见)。GUI本身没有卡住;它显示“文档根”,就好像它在路径 p 和路径 q 之间来回切换一样。但是,只有路径 p 下的站点才能在 localhost/path 上运行。如果我将“文档根目录”的 MAMP 设置切换到路径 q,然后尝试运行 localhost 站点 q,q 将无法运行,即使它在问题首次出现之前运行良好;但任何通过路径 p 可访问的站点仍将运行。

查看 MAMP GUI 的后面,'phpinfo' 报告 'DOCUMENT_ROOT' 在 phpinfo 的 'Apache Environment' 部分和 '_SERVER("DOCUMENT_ROOT")' 中更改为 'path q' 在 'PHP 变量' 部分。当我更改 MAMP 的“Document_Root”设置时,我可以使用 TextWrangler 实时查看设置在“httpd.conf”中的更新。

Mac 的“活动监视器”显示七个正在运行的“httpd”进程。使用“检查”显示所有这些都在 MAMP 中运行。Mac 'Spotlight' 搜索 httpd.conf 只显示上面讨论的一个 'httpd.conf' 文件。

通过 MAMP/logs/apache_error.log 访问的相关错误消息总是(时间戳除外):

-- 恢复正常操作 [Sun Apr 22 12:34:22 2012] [notice] 捕获 SIGTERM,正在关闭 [Sun Apr 22 12:34:24 2012] [notice] 摘要:为摘要身份验证生成密钥 ... [Sun 2012 年 4 月 22 日 12:34:24] [通知] 摘要:完成 [2012 年 4 月 22 日星期日 12:34:24] [通知] Apache/2.2.21 (Unix) mod_ssl/2.2.21 OpenSSL/0.9.8r DAV/2 PHP/5.3.6 已配置——恢复正常操作

如果我理解正确,Apache 的运行版本是 2.2.21,而不是 Apache 2.0.64,MAMP 的常见问题解答页面(显示为访问从 GUI 的“打开开始页面”按钮打开的网页屏幕的选项卡)说的是安装的版本。

控制台常规错误日志中对应的错误消息为:

2012 年 4 月 21 日 9:40:27.746 PM [0x0-0xcd0cd].de.appsolute.MAMP: 120421 21:40:27 来自 pid 文件 /Applications/MAMP/tmp/mysql/mysql.pid 的 mysqld_safe mysqld 于 4/21 结束/12 9:40:28.653 PM [0x0-0xcd0cd].de.appsolute.MAMP:警告:DocumentRoot [/Applications/MAMP/Library/docs/dummy-host2.example.com] 不存在 4/21/12 9 :40:28.721 PM [0x0-0xcd0cd].de.appsolute.MAMP: 120421 21:40:28 mysqld_safe 记录到“/Applications/MAMP/logs/mysql_error_log.err”。2012 年 4 月 21 日 9:40:28.871 PM [0x0-0xcd0cd].de.appsolute.MAMP: 120421 21:40:28 mysqld_safe 使用 /Applications/MAMP/db/mysql 中的数据库启动 mysqld 守护程序 2012 年 4 月 21 日 9 :40:29.799 PM [0x0-0xcd0cd].de.appsolute.MAMP:警告:DocumentRoot [/Applications/MAMP/Library/docs/dummy-host2.example.com] 不存在

除日期和时间外,对于通过 MAMP 对“DocumentRoot”进行的任何更改,这些消息都保持不变。我无法识别这些消息中的任何有用信息。

在此问题发生前不久,我重新安装了 MAMP 以修复 MySQL 服务器的问题。在尝试在 MAMP 中调试 MySQL 服务器时,我和一位更熟练的计算机科学家还安装了 MacPorts。

似乎 MAMP 实际上正在打开一个可能已由 MacPorts 安装的 Apache 版本 2.2.21,而不是可能随 MAMP 2.0.5 一起安装的版本 2.0.64;但是 MAMP 的那部分仍然表现得好像 Apache 2.0.64 是可操作版本。如果这是真的,它可能会很快找到一个解决方案,尽管我对 MAMP 或 Apache 如何工作来完成这一点了解不足。

我广泛搜索了在线建议,测试了为多个用户设置 WordPress 格式的建议,并尝试更改“etc/hosts”,现在已恢复为默认值。大多数相关网站都是用 XHTML、PHP 和 CSS 硬编码的;少数人使用 WordPress。

在我将此问题发布到“堆栈溢出”的第二天,作为问题 #10252067,尚未收到回复,我将此查询的早期版本附加到有关 PHP 不起作用的 MAMP 论坛线程。该帖子尚未发布,可能正在审核中。当我更仔细地研究这个问题时,在我看来,与 httpd.conf 交互的 MAMP 接口部分可能正在正常工作,并且问题可能与 httpd 如何读取和解释 httpd 中的设置有关。 conf,或 MAMP 如何识别和交互几个可能的 Apache 版本。

非常感谢您的指导,以解决实施 Apache 'DocumentRoot' 设置失败的问题。

4

8 回答 8

14

有相同的症状并通过发现以下行在

/Applications/MAMP/conf/apache/httpd.conf 文件:

# Virtual hosts
Include /Applications/MAMP/conf/apache/extra/httpd-vhosts.conf

这是因为在我之前使用我的计算机的人设置 MAMP 为 Zend Framework 2 工作并设置了一个覆盖 DocumentRoot 设置的虚拟主机。我重新注释了该行,现在首选项中的 DocumentRoot 按预期工作。

于 2014-02-22T02:42:01.347 回答
2

更改 Apache 'document root' 时修复 MAMP 无效

  1. 退出 MAMP
  2. 打开终端并输入:sudo killall -9 httpd
  3. 重启 MAMP

修复 MySQL 未启动时的 MAMP

  1. 退出 MAMP
  2. 打开终端并输入:sudo killall -9 mysqld
  3. 重启 MAMP
于 2013-02-05T23:42:49.803 回答
1

这是一个老问题,但我今天遇到了这个问题。我以这种方式解决了它:

1) 关闭 MAMP

2)"/Applications/MAMP/conf/apache/http.conf"用文本编辑器打开并检查是否有类似的东西:

……

<VirtualHost *>
DocumentRoot "/Applications/MAMP/htdocs"
ServerName localhost
</VirtualHost>

……

3) 将 DocumentRoot 之后的字符串替换为新的 Path。

基本上您需要手动更改虚拟主机的路径

于 2014-07-23T09:56:06.947 回答
0

我解决了这个问题:

  • 停止 MAMP 中的服务器
  • 杀死活动监视器中的所有 httpd 进程
  • 在 MAMP 中启动服务器

到目前为止,这对我有用。我无法解释为什么它不起作用。

于 2012-09-06T21:50:44.950 回答
0

如果您想与 一起使用名称/虚拟主机localhost,请确保在localhost中明确定义/Applications/MAMP/conf/apache/extra/httpd-vhosts.conf,就像已经定义的任何其他虚拟主机一样。

于 2014-08-14T08:24:18.627 回答
0

聚会迟到了,但想指出我遇到了类似的问题。就我而言,我正在编辑:

/Applications/MAMP/conf/apache/original/httpd.conf

当我应该编辑时:

/Applications/MAMP/conf/apache/httpd.conf

非常愚蠢的错误,但是……我浪费了 45 分钟

于 2015-06-01T18:54:16.703 回答
0

检查 apache/conf/extras/httpd-conf.conf

我的 DocumentRoot 错误

<VirtualHost *:80>
    DocumentRoot /Users/..../..
    ServerName localhost
</VirtualHost>
于 2015-10-24T17:55:09.820 回答
0

在我的情况下,ssl 配置中的 DocumentRoot 不正确:

 apache/conf/extras/httpd-ssl.conf

因为我在本地启用了 HTTPS。

MAMP 接口仅更改 HTTP 根。

于 2021-02-24T21:02:32.397 回答