0

我已经阅读了很多关于信号量问题的帖子,但似乎没有一个与这个特定问题有关。我正在运行 Apache 2.4 和 PHP 7.1 作为 Zend Server CE 的一部分,当启动 Apache 服务时,Apache 错误日志中显示以下致命错误:

ZShmStorage(): Fatal error: failed to allocate semaphore. Permission denied

我猜这与共享内存存储有关,但我不清楚......

  1. 它实际上试图为什么分配信号量
  2. 在哪里寻找与所述信号量相关的配置

我想这可能与 Zend 缓存有关,所以我确保权限对于[ZendServerPath]/tmp/datacache.

我还认为它可能与 PHP 会话有关,因此我确保为文件中指定的目录session.save_path[ZendServerPath]/etc/php.ini具有适当的权限。

我不确定还有什么地方可以看,因为似乎没有任何与此相关的讨论(我发现),而是所有关于可用空间之类的东西。万一它与分配过程中出现的问题有关,我继续执行ipcs -s并注意到在 Zend 服务器运行时存在大约 20 个信号量数组。我停止了服务并ipcs -s再次运行——没有留下任何信号量数组。重新启动 Zend Server 服务并再次遇到错误,并且还重新分配了大约 20 个信号量数组。

任何可以为我指明正确方向的帮助或信息将不胜感激。

4

1 回答 1

0

我知道现在帮助@amorio 为时已晚,但也许它会帮助其他人。

该错误具体来自ZShmStorage(),这意味着它不是 apache 或 php 的错。错误消息有点误导确实无济于事

至少在我的情况下,关于错误的更多上下文。我打赌使用 php(-cgi) 是一样的。

Starting php-fpm (/usr/local/zend/sbin/php-fpm --nodaemonize -c /usr/local/zend/etc/php-7.1-fpm.ini --pid /usr/local/zend/var/run/php-fpm.pid --fpm-config /usr/local/zend/etc/php-7.1-fpm.conf) [10.11.2020 18:18:05 ERROR] ZShmStorage(): Fatal error: failed to allocate semaphore. Permission denied
<br />
<b>Warning</b>:  Could not initialize Zend Data Cache: Fatal error: failed to allocate semaphore. Permission denied in <b>Unknown</b> on line <b>0</b><br />

Zend 服务器安装到/usr/local/zend.

ZendServer 9.1.10我在上遇到了同样的问题Ubuntu 16.04。就我而言,我必须修复对/usr/local/zend/tmp/datacache所以www-data(apache 用户)具有写访问权限的权限。

/usr/local/zend/etc/conf.d/datacache.ini是定义保存路径的地方。

于 2020-11-10T18:33:57.450 回答