Apache 随机失去查看文件的权限

arb*_*les 1 permissions configuration phusion-passenger apache-2.2

我有一台运行 Apache 和 MySQL 的服务器(Leopard Server,不是我的选择)。几个月前,服务器开始以随机间隔引发“禁止”错误,从而阻止访问 PHP 应用程序。这种行为随机停止。

现在,几天前我安装了Passenger 并部署了一个Sintra/Rack 应用程序。应用程序作为用户acarneg(例如)从 运行/Library/WebServer/Documents/presto/current/publicacarneg拥有整个结构。该_www用户访问通过ACL的目录chmod +a "_www allow read,write,..."

一切都很好!但是在一个随机的时间间隔后,通常是 ~12 或 ~24 小时,Passenger 会抛出一个错误,该错误也会阻止 PHP 应用程序运行。Passenger Error #2. Cannot stat file config.ru. Permission denied.但是权限没有改变(确认),解决错误所要做的就是sudo apachectl graceful.

如果权限没有改变并且 Apache 似乎没有合法问题,那么是什么导致了这种混乱?之前怎么停了,怎么又恢复了!?!?!?

谢谢您的帮助!

bas*_*lei 5

您的 Apache 可能已达到最大打开文件限制。Apache 会导致权限错误,它也解释了为什么它需要一段时间并通过重新加载 Apache 来解决。

我对 Mac 不是很熟悉,但应该有一个命令来检查进程的打开文件。(例如 lsof、pfiles、procfiles)。

可能的解决方案是:

  • 增加最大打开文件数(ulimit)
  • 减少日志文件的数量
  • 检查 PHP 代码是否关闭了所有文件

另请参阅Apache 文档中的文件描述符限制