我正在尝试在Mac上安装Zend Server,并需要卸载Mavericks自动包含的Apache服务器,以便使用Zend所包含的Apache服务器。是否可以防止它在启动时运行或永久删除?
我正在尝试在Mac上安装Zend Server,并需要卸载Mavericks自动包含的Apache服务器,以便使用Zend所包含的Apache服务器。是否可以防止它在启动时运行或永久删除?
试试这个:
sudo launchctl unload -w /System/Library/LaunchDaemons/org.apache.httpd.plist
这将停止运行中的Apache实例,并记录它不应该被重新启动。它会在/private/var/db/launchd.db/com.apple.launchd/overrides.plist
中记录您的首选项。
试一下
sudo killall 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
利润。
apachectl stop
命令会提示“此操作需要root权限”。 - prayagupa