我在使用 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 上发现了其他类似的问题,但每个问题都是使用我已经尝试过的方法之一解决的。所以我想我遇到了一个不同的问题。