对Apache'文档根'的MAMP更改无效

时间:2012-04-20 19:04:38

标签: apache mamp document-root phpinfo

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

Apache最近停止响应' DocumentRoot' ' main'中的指令Apache httpd.conf的服务器配置部分。 Apache继续运行良好,除了它仍然停留在之前的一个' DocumentRoot'。我很乐意帮助你找到这个问题的来源并修复它。

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

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

回顾MAMP GUI,' phpinfo'报告' DOCUMENT_ROOT'因为被改为“路径q'在phpinfo的Apache环境'部分,以及' _SERVER(" DOCUMENT_ROOT")'在PHP变量'部分。当我改变MAMP' Document_Root"设置,我可以使用TextWrangler实时查看设置是否在httpd.conf'中更新。

Mac'活动监控器'显示七个httpd'进程正在运行使用' Inspect'显示所有这些都在MAMP中运行。 Mac' Spotlight'搜索httpd.conf只显示一个' httpd.conf'文件如上所述。

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

- 恢复正常操作 [Sun Apr 22 12:34:22 2012] [通知]抓住了SIGTERM,关闭了 [Sun Apr 22 12:34:24 2012] [notice] Digest:为摘要认证生成秘密...... [Sun Apr 22 12:34:24 2012] [notice] Digest:done [Sun Apr 22 12:34:24 2012] [notice] 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打开的网页屏幕' s'打开开始页面'按钮)说是已安装的版本。

控制台常规错误日志中的相应错误消息是:

4/21/12 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'。 4/21/12 9:40:28.871 PM [0x0-0xcd0cd] .de.appsolute.MAMP:120421 21:40:28 mysqld_safe使用/ Applications / MAMP / db / mysql中的数据库启动mysqld守护程序 4/21/12 9:40:29.799 PM [0x0-0xcd0cd] .de.appsolute.MAMP:警告:DocumentRoot [/Applications/MAMP/Library/docs/dummy-host2.example.com]不存在

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

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

MAMP实际上可能正在打开一个可能由MacPorts安装的Apache 2.2.21版本,而不是版本2.0.64,可能是MAMP 2.0.5附带的版本。但是MAMP的那部分仍然就像Apache 2.0.64是操作版本一样。如果这是真的,它可能会迅速找到一个解决方案,尽管我不太了解MAMP或Apache如何在这方面做到这一点。

我已经广泛搜索了在线建议,测试了为多个用户格式化WordPress的建议,并玩弄了更改' etc / hosts'现在恢复到默认值。大多数相关网站都是用XHTML,PHP和CSS进行硬编码的;一些人使用WordPress。

在我将此问题发布到' Stack Overflow',问题#10252067,尚未收到回复的第二天,我将此查询的早期版本附加到MAMP论坛线程,关于PHP无效。该帖子尚未发布,可能正在审核中。当我仔细研究这个问题时,在我看来,与httpd.conf交互的MAMP接口部分可能正常工作,而且问题可能与httpd如何读取和解释httpd中的设置有关。 conf,或者MAMP如何识别和交互几种可能的Apache版本。

我很感激您的指导,以解决实施Apache' DocumentRoot'设置。

8 个答案:

答案 0 :(得分:11)

有相同的症状并通过发现

中未发现以下行解决了它

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

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

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

答案 1 :(得分:1)

更改Apache'文档根目录'时修复MAMP

  1. 退出MAMP
  2. 打开终端并输入:sudo killall -9 httpd
  3. 重启MAMP
  4. 在MySQL未启动时修复MAMP

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

答案 2 :(得分:0)

我用以下方法解决了问题:

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

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

答案 3 :(得分:0)

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

1)关闭MAMP

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

...

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

...

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

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

答案 4 :(得分:0)

如果您希望将名称/虚拟主机与localhost一起使用,请确保localhost/Applications/MAMP/conf/apache/extra/httpd-vhosts.conf内明确定义为已定义的任何其他虚拟主机。< / p>

答案 5 :(得分:0)

晚会,但想注意我遇到了类似的问题。就我而言,我正在编辑:

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

当我应该编辑时:

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

非常愚蠢的错误,但......我最终浪费了45分钟

答案 6 :(得分:0)

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

我在

中使用了错误的DocumentRoot
<VirtualHost *:80>
    DocumentRoot /Users/..../..
    ServerName localhost
</VirtualHost>

答案 7 :(得分:0)

就我而言,ssl 配置中的 DocumentRoot 不正确:

 apache/conf/extras/httpd-ssl.conf

因为我在本地启用了 HTTPS。

MAMP 接口仅更改 HTTP 根目录。