我在运行带有cPanel的CentOS的托管虚拟服务器上运行Symfony2.1.除了我不能再使用symphony CLI命令外,一切运行正常.我明白了:
Fatal error: Out of memory (allocated 20185088) (tried to allocate 71 bytes)
Run Code Online (Sandbox Code Playgroud)
错误(例如,当我尝试运行php app/console cache:clear --env=prod或其他有用的Symfony命令时).
我几个月来一直使用相同的命令,没有任何问题,直到几天前出现这个错误.从那以后,我一直无法克服这个错误.
我想指出这不是PHP memory_limit相关的错误(见下文),是"Out of memory"错误而不是"Allocated memory size"错误.
当添加到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而我的"Out of memory"错误表明似乎不允许超过20M到PHP CLI
检查.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在我的帐户中登录再次没有任何效果