【问题标题】:ZShmStorage(): Fatal error: failed to allocate semaphore. Permission deniedZShmStorage():致命错误:分配信号量失败。没有权限
【发布时间】:2020-01-06 01:25:32
【问题描述】:

我已经阅读了很多关于信号量问题的帖子,但似乎没有一个与这个特定问题有关。我正在运行 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 会话有关,因此我确保为 [ZendServerPath]/etc/php.ini 文件中的 session.save_path 指定的目录也具有适当的权限。

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

任何能指引我正确方向的帮助或信息将不胜感激。

【问题讨论】:

    标签: apache permissions semaphore fatal-error zend-server-ce


    【解决方案1】:

    我知道现在帮助 @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 Server 安装到/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 是定义保存路径的地方。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-06-23
      • 2018-06-17
      • 1970-01-01
      • 2018-11-06
      • 2015-12-18
      • 2015-12-16
      • 2018-09-14
      • 1970-01-01
      相关资源
      最近更新 更多