为何我的 Mac 上的 Web 共享功能无法使用?

为何我的 Mac 上的 Web 共享功能无法使用?

背景:

我使用 Mac 进行 Web 开发,在本地运行网站副本。我最近安装了 Snow Leopard 更新,从各方面来看,它似乎都运行良好,除了...

什么不起作用?

网络共享;更具体地说,我无法通过偏好设置将其打开。当我尝试打开时,偏好设置窗格就挂起了。

因此 Apache 不会在重启时启动。我可以手动启动 Apache,但我对如何设置 Apache 使其随计算机一起启动或如何正确修复 Web 共享还不够了解。

更多细节

我的 Apache 错误日志在系统启动时没有显示任何内容(正如我所料)。

这是我尝试从共享偏好设置窗格启动网络共享时出现的错误消息。

28/09/2009 10:58:05 System Preferences[834] setInetDServiceEnabled failed with 1 for org.apache.httpd

这是我从命令行启动 apache 时给出的消息。

[Mon Sep 28 10:35:53 2009] [warn] Init: Session Cache is not configured [hint: SSLSessionCache]
[Mon Sep 28 10:35:54 2009] [warn] mod_bonjour: Skipping user 'sams' - index file /Users/sams/Sites/index.html has zero length.
[Mon Sep 28 10:35:54 2009] [notice] Digest: generating secret for digest authentication ...
[Mon Sep 28 10:35:54 2009] [notice] Digest: done
[Mon Sep 28 10:35:54 2009] [notice] Apache/2.2.11 (Unix) mod_ssl/2.2.11 OpenSSL/0.9.8k DAV/2 PHP/5.3.0 Phusion_Passenger/2.2.5 configured -- resuming normal operations

如果您需要更多详细信息,请告诉我。

任何帮助将不胜感激。

更新

我在下面添加了自己的答案 - 我能够解决这个问题,这要感谢下面的评论指明了正确的方向,非常感谢。但我仍然不完全清楚是什么导致了这个问题,或者我的解决方案是如何解决这个问题的,所以我暂时不回答这个问题。

答案1

两者都有。禁用标志(launchctl load -w /PATH/TO/PLIST运行时删除 - 在共享首选项窗格中选中“Web 共享”时自动运行)表示不运行。但是由于该行超出了字典的范围,因此它显示为格式错误的文件。将文件放回到以前的值中或将其全部删除(见下文)。

来自 Snow Leopard 的一个有效(但已禁用).plist 示例

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
    <key>Disabled</key>
    <true/>
    <key>Label</key>
    <string>org.apache.httpd</string>
    <key>ProgramArguments</key>
    <array>
        <string>/usr/sbin/httpd</string>
        <string>-D</string>
        <string>FOREGROUND</string>
    </array>
    <key>OnDemand</key>
    <false/>
    <key>SHAuthorizationRight</key>
    <string>system.preferences</string>
</dict>
</plist>

答案2

请随意为以下答案添加一些说明。我不是特别懂技术的人,所以我的大部分解决方案都涉及两个文件之间的破解。:)

根据上面的错误消息,我检查了 org.apache.httpd.plist 文件。然后,我将其与安装 Snow Leopard 之前的 plist 文件进行了比较。这两个文件的区别在于以下几点:

Snow Leopard 配置(不起作用)

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
    <key>Disabled</key>
    <true/>
    <key>Label</key>
    <string>org.apache.httpd</string>
    <key>EnvironmentVariables</key>
   <dict>
     <key>PATH</key>
   </dict>
     <string>/opt/local/bin:/usr/local/mysql/bin</string>
    <key>ProgramArguments</key>
    <array>

以前的配置(有效)

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
    <key>EnvironmentVariables</key>
    <dict>
        <key>PATH</key>
        <string>/opt/local/bin:/usr/bin:/bin:/usr/sbin:/sbin</string>
    </dict>
    <key>KeepAlive</key>
    <false/>
    <key>Label</key>
    <string>org.apache.httpd</string>
    <key>OnDemand</key>
    <false/>
    <key>ProgramArguments</key>

这里似乎有 3 个问题:

以下 - 我推测是禁用了 httpd?或者文件。不太确定。

<key>Disabled</key>
<true/>

下一行有所不同,因此我认为它指向了错误的位置。

<string>/opt/local/bin:/usr/local/mysql/bin</string>

并且整个块似乎没有正确格式化 - 例如字符串元素应该在 dict 块内。

   <dict>
     <key>PATH</key>
   </dict>
     <string>/opt/local/bin:/usr/local/mysql/bin</string>

所以,可能是其中任何一个。我希望我能更好地理解它,但至少它现在起作用了。

相关内容