如何在mac Mavericks上永久停止Apache?

45

我正在尝试在Mac上安装Zend Server,并需要卸载Mavericks自动包含的Apache服务器,以便使用Zend所包含的Apache服务器。是否可以防止它在启动时运行或永久删除?


17
关闭这个问题是愚蠢的决定,因为它显然与软件开发有关。实际上,在Server Fault上,这个问题是不可接受的,因为它与服务器管理无关。没有人将Mavericks用作服务器操作系统,他们在开发机器上使用它,这使得这个问题与开发工具有关。 - Jehan
Reeeeeeeeeeeeeee - Walrus the Cat
4个回答

94

试试这个:

sudo launchctl unload -w /System/Library/LaunchDaemons/org.apache.httpd.plist

这将停止运行中的Apache实例,并记录它不应该被重新启动。它会在/private/var/db/launchd.db/com.apple.launchd/overrides.plist中记录您的首选项。


5
我在OSX 10.9上遇到了“Error unloading: org.apache.httpd” 错误。 - Subtubes
12
"Edgar,你需要已经运行一个 Apache 实例才能使这个命令生效。""sudo apachectl start" - Ryan Tuosto
29
这似乎在Mac 10.10 Yosemite上无法运行。显示/System/Library/LaunchDaemons/org.apache.httpd.plist: Could not find specified service. - TechRemarker
1
它在Yosemite Beta 5上无法工作。我收到与@cchiera相同的消息。 - James
7
在执行命令之前,需要运行Yosemite 5上的Apache。 - cyberwombat
显示剩余4条评论

14

试一下

sudo killall httpd

它将停止一切。


3
这只停止了httpd服务,但不会防止它在重新启动时启动。 - SaundersB

2
我遇到过同样的问题,罪魁祸首非常难以捉摸。最终发现是因为OSX试图包含一个不存在的php版本,但由于homebrew httpd优先级较高,OSX httpd也无法直接访问。以下是我解决问题的方法:
第一步: brew unlink httpd 然后,which httpd显示如下:/usr/sbin/httpd 此时,我运行了sudo /usr/sbin/httpd -k stop,真正的罪魁祸首终于浮出水面:
httpd: Syntax error on line 527 of /private/etc/apache2/httpd.conf: Syntax error on line 8 of /private/etc/apache2/other/+php-osx.conf: Cannot load /usr/local/php5/libphp5.so into server: dlopen(/usr/local/php5/libphp5.so, 10): Symbol not found: _environ\n  Referenced from: /usr/local/php5/libphp5.so\n  Expected in: /usr/sbin/httpd\n in /usr/local/php5/libphp5.so

我随后使用 sudo vi /private/etc/apache2/httpd.conf 命令进行修复,并注释掉该文件中的所有行,为了确保无误,我还运行了以下命令:

sudo launchctl unload -w /System/Library/LaunchDaemons/org.apache.httpd.plist

这段话的意思是:“这里说明:”。
/System/Library/LaunchDaemons/org.apache.httpd.plist: Could not find specified service

根本问题在于原生OSX实例仍在运行,但由于找不到PHP而已经从launchctl中分离出来。因此,基本上launchctl认为它已经正确关闭了进程,但是由于PHP错误,导致apachectl代理拒绝停止,从而产生了一个分离的进程,只有当homebrew版本也未链接时才能进行直接控制。

将原生PHP include注释掉后,我可以顺利运行sudo apachectl -k stop

解决这个问题后,我接着运行了

brew link httpd

跟随着
brew services restart httpd

利润。


0
如果您像我一样进入了这个页面,并且遇到了类似于“/System/Library/LaunchDaemons/org.apache.httpd.plist: Could not find specified service.”的错误,请尝试不要使用sudo命令,因为它会导致上述错误的出现。

10
即使没有使用sudo,我仍然遇到了这个问题...还有其他的想法吗? - Christian Vermeulen
1
在没有使用sudo的情况下,执行apachectl stop命令会提示“此操作需要root权限”。 - prayagupa

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接