10

我在使用 cPanel 运行 CentOS 的托管虚拟服务器上运行 Symfony2.1。一切运行良好,只是我不能再使用 Symfony CLI 命令。我得到这个:

Fatal error: Out of memory (allocated 20185088) (tried to allocate 71 bytes)

错误(例如,当我尝试运行php app/console cache:clear --env=prod或其他有用的 Symfony 命令时)。

几个月前,我通过 CLI 使用相同的命令没有任何问题,直到几天前出现此错误。从那以后,我一直无法克服这个错误。

我想指出,这不是与 PHP memory_limit 相关的错误(见下文),是“内存不足”错误,而不是“分配的内存大小”错误。

当添加到 cron 作业时,完全相同的命令可以完美运行(这是我现在使用的临时解决方法),这意味着脚本本身不应该受到指责。

到目前为止我试图做的事情:

  • 增加 php.ini 中的 memory_limit(或直接在命令行上):我怀疑我遇到的错误类型,这没有效果

  • 搜索可能覆盖 CLI 的此设置的任何其他 php.ini 文件:没有

  • 使用 free -m监控内存使用情况:有大量可用内存(这是意料之中的,因为 symfony 命令通过 cron 作业完美运行)

  • 试图找出WHM/cPanel 是否可能有,例如通过更新,为用户帐户设置任何内存限制:我发现在使用被监禁的 SSH shell 时可能会出现这种情况(但事实是,我不是,我正在使用普通的 SSH shell),或者如果启用 Shell Fork Bomb 保护(但不,这在我的服务器上被禁用)

  • 使用 ulimit -a检查我的服务器/帐户上的 ulimit 设置:有限制,但它们达到 256M,而我的“内存不足”错误表明 PHP CLI 似乎允许不超过 20M

  • 检查 .conf 文件中某处是否有任何内存限制,尤其是在/etc/security/limits.conf中:没有

  • 检查任何其他可以设置这种内存限制的文件:这次我确实找到了一个,即 /usr/local/cpanel/etc/login_profile/limits.sh似乎设置了这样的限制(ulimit -n 100 -u 35 -m 20000 -d 20000 -s 8192 -c 20000 -v unlimited 2>/dev/null) => 我想我终于找到了罪魁祸首,因为数字 (20000) 似乎对应,但编辑这个文件为root 并通过 SSH 再次登录我的帐户再次没有效果

我的问题 :

我现在已经没有选择了。我联系了我的主人,但他们和我一样一无所知(实际上,他们甚至不知道 Symfony)。有没有人遇到过同样的问题?

如果有任何机会/usr/local/cpanel/etc/login_profile/limits.sh让我接近答案,我错过了什么?我是否需要重新启动服务器或重新启动 cPanel,而不仅仅是重新登录我的帐户?

附带说明一下,这是否可能与 WHM/cPanel 更新有关(如前所述,直到几天前,一切都在命令行上正常运行)?

感谢您的帮助,很抱歉这个冗长的问题。

PS:我在 Stack Overflow 上发现了其他类似的问题,但每个问题都是使用我已经尝试过的方法之一解决的。所以我想我遇到了一个不同的问题。

4

1 回答 1

1

事实证明,在不需要的 cPanel 更新后,我的 SSH 端口已从默认值更改,我无法登录。我以安全模式重新启动 SSH 以登录。

今天,凭直觉,我查看了 SSH 端口/etc/ssh/sshd-config,以“正常”模式重新启动 SSH,并使用正确的端口登录:脚本现在运行完美。

所以原因是在安全模式下使用SSH,就是这样。希望这个非常具体的问题对其他人有用:除非绝对需要,否则不要在日常使用中使用 SSH 安全模式。

于 2013-04-07T07:25:08.240 回答