我最近在两台不同的机器上注意到的一点是,当我启动时,通过 MacPorts 安装的 Apache2 似乎已经停止启动。诚实的事实是,我不能发誓以前这样做过,但我认为我会注意到这一点,因为安装 LaunchDaemon 是我安装过程的一部分。事实上,如果我尝试重新加载 LaunchDaemon,它会失败:
$ sudo launchctl load -w /Library/LaunchDaemons/org.macports.apache2.plist
org.macports.apache2: Already loaded
除非我手动启动 Apache(使用sudo apachectl restart
),否则在我的进程列表中对“apache2”或“httpd”进行 grep'ing 只会产生以下结果:
$ sudo ps -ef | egrep "apache2|httpd"
0 52 1 0 0:00.06 ?? 0:00.08 /opt/local/bin/daemondo --label=apache2 --start-cmd /opt/local/etc/LaunchDaemons/org.macports.apache2/apache2.wrapper start ; --stop-cmd /opt/local/etc/LaunchDaemons/org.macports.apache2/apache2.wrapper stop ; --restart-cmd /opt/local/etc/LaunchDaemons/org.macports.apache2/apache2.wrapper restart ; --pid=none
1410639199 6960 6792 0 0:00.00 ttys001 0:00.00 egrep apache2|httpd
看起来守护程序本身就位,但没有可执行文件。据我所知/可以告诉,相关的可执行文件(httpd 和 apachectl)是每个人都可以执行的。
有没有其他人注意到这一点?有任何想法吗?
更新
按照下面的要求,我确实执行了launchctl list
. 清单很长,我不知道如何剪掉它,但只要说没有org.macports.*
列出任何项目就足够了。这本身很有趣,因为我的 MySQL 守护程序是以相同的方式加载的。它有效,但也没有出现在列表中。让我知道是否真的需要整个输出。
更新
我假设我是launchctl list
在 sudo 下执行的,但在 mipadi 下面的评论提示下,我再次尝试确保我这样做并且我假设不正确。在 sudo 下执行时,出现 MacPorts 项:
51 - org.macports.mysql5
52 - org.macports.apache2
我不确定这是否会有所帮助,但仍然有更多信息。
更新
我在LaunchDaemons 和 Environment Variables提出了一个不同但相关的问题。随着我了解更多,我会更新这两个问题。
更新
今天,根据邮件列表输入,我尝试使用通配符主目录。在学术上,它比我想要的更具包容性,但实际情况是我是唯一一个使用这台电脑的人;当然是唯一一个拥有 Apache 配置文件的人。
Include "/Users/*/Dropbox/Application Support/apache/conf.d.osx/*.conf"
Include "/Users/*/Library/Application Support/MacPorts/apache/conf.d/*.conf"
很遗憾...
httpd: Syntax error on line 512 of /opt/local/apache2/conf/httpd.conf: Wildcard patterns not allowed in Include /Users/*/Dropbox/Application Support/apache/conf.d.osx/*.conf