我有一台运行 Apache 和 MySQL 的服务器(Leopard Server,不是我的选择)。几个月前,该服务器开始随机间隔出现“禁止”错误,阻止访问 PHP 应用程序。此行为随机停止。
现在,几天前我安装了 Passenger 并部署了一个 Sintra/Rack 应用程序。该应用程序以acarneg
来自 的用户身份运行(例如)/Library/WebServer/Documents/presto/current/public
,acarneg
拥有整个结构。_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 似乎没有合法问题,那么是什么导致了这种混乱?为什么它之前停止了,为什么又恢复了!?!?!?
谢谢您的帮助!
答案1
您的 Apache 可能已达到最大打开文件数限制。Apache 将导致权限错误,这也解释了为什么需要一段时间,并通过重新加载 Apache 来解决。
我对 Mac 不是很熟悉,但应该有一个命令来检查进程的打开文件。(例如 lsof、pfiles、procfiles)。
可能的解决方案包括:
- 增加最大打开文件数 (ulimit)
- 减少日志文件的数量
- 检查 PHP 代码是否关闭了所有文件
也可以看看文件描述符限制在 Apache 文档中。
答案2
文件系统存储在哪里?是否需要 Kerberos 来访问数据,或者 AFS 或其他什么东西,所以你的问题是一张过期的票?