我对apache有这个奇怪的问题:
$ apachectl configtest
Syntax OK
配置没问题,实际上它在一分钟前工作,然后关闭它。
$ sudo apachectl start
org.apache.httpd: Already loaded
不,不是:
$ ps ax | grep httpd
58204 s000 R+ 0:00.00 grep httpd
让我们试着阻止它:
$ sudo apachectl stop
看起来它已停止了,对吗?让我们再试一次:
$ sudo apachectl start
$ sudo apachectl start
org.apache.httpd: Already loaded
所以它必须正在运行,但它不在ps ax
中而且根本不起作用。
$ sudo apachectl stop
$ sudo apachectl stop
launchctl: Error unloading: org.apache.httpd
试图将其从自动启动中删除:
$ sudo launchctl unload -w /System/Library/LaunchDaemons/org.apache.httpd.plist
$ sudo launchctl unload -w /System/Library/LaunchDaemons/org.apache.httpd.plist
launchctl: Error unloading: org.apache.httpd
但是当我尝试启动它时,它是相同的,它假装它启动但它没有。错误日志中也没有任何内容。救命啊!
OS X 10.8.2 Mountain Lion
更新
重启后:
$ sudo apachectl start
Password:
org.apache.httpd: Already loaded
$ sudo launchctl load -w /System/Library/LaunchDaemons/org.apache.httpd.plist
org.apache.httpd: Already loaded
$ ps ax | grep httpd
7300 s000 R+ 0:00.00 grep httpd
所以我现在没有网络服务器了。
解决方案:
在对org.apache.httpd.plist
进行研究后,我发现apache是由一个ruby脚本/usr/sbin/http-wrapper
控制的,因为我已经替换了系统ruby解释器,因此运行了一些问题。这为我解决了这个问题:
ln -s /System/Library/Frameworks/Ruby.framework/Versions/Current/usr/bin/ruby /usr/bin/ruby
答案 0 :(得分:11)
手动运行服务器并修复报告的错误:
root#> /usr/sbin/httpd -k start
答案 1 :(得分:1)
我的修复是在httpd.conf中切换“... apache_access_log combined”。
我今天粗暴地面对同样的小挫折,虽然像glasnhos-,w / out ruby包装。 @glasnhost,你的想法让我失望..当天早些时候,我在apache httpd.conf附近玩耍,玩日志。我已经切换了这两个几乎相同的行中的第二行(带引号和w / out引号;注意一个有扩展名.log
;而另一个是下划线{{1 }})。
_log
同样地,奇怪的是这个问题直到几个小时之后都没有吓到我的系统。感谢这个线程,我的系统恢复健康! 没有信心上升..
答案 2 :(得分:0)
阅读本文和Nick于11月5日回复,我试图以root用户身份在终端运行/ usr / sbin / http-wrapper。我收到了这个输出
titanium:~ root# /usr/sbin/httpd-wrapper
(2)No such file or directory: httpd: could not open error log file /private/var/log/apache2/error_log.
Unable to open logs
titanium:~ root#
然后我检查了/ private / var / log / apache2文件夹不存在。我创建了它并为每个人设置了权利。
titanium:log root# mkdir /private/var/log/apache2
titanium:log root# chmod 777 /private/var/log/apache2/
titanium:log root#
对我有用!
注意:如果您关心安全性,请为/ private / var / log / apache2而不是777提供更多限制权限。