15

我对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 山狮

更新:

重启后:

$ 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
4

3 回答 3

11

手动运行服务器并修复报告的错误:

root#> /usr/sbin/httpd -k start
于 2013-03-19T22:05:58.343 回答
1

我的解决方法是在 httpd.conf 中关闭“...apache_access_log combine”。

我今天粗鲁地面临着同样的小挫折,尽管就像 glasnhos-,没有红宝石包装。@glasnhost,你事后的想法告诉了我.. 当天早些时候,我在 apache httpd.conf 周围使用工具,玩弄日志。我已经打开了这两条几乎相同的行中的第二条(带引号和不带引号;注意一个有扩展名.log;而另一个是下划线_log)。

     # CustomLog "/Applications/MAMP/logs/apache_access.log" combined
       CustomLog /Applications/MAMP/logs/apache_access_log combined

同样,奇怪的是,这个问题直到几个小时后才吓到我的系统。多亏了这个线程,我的系统恢复了健康!没有上升的信心..

于 2013-06-01T03:04:01.800 回答
0


阅读这篇文章和尼克在 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 提供更受限制的权限。

于 2013-02-10T21:22:13.557 回答