我寻求帮助找出为什么 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' 设置失败的问题。