【发布时间】:2018-08-29 09:53:34
【问题描述】:
最初的安装是在带有 PHP 5.5.9 和 CakePHP 5.4.1 的 Ubuntu 14.04 上。在使用 PHP 7.0.30 迁移到 Ubuntu 16.04 后,我主要通过交换 lib 文件夹将 CakePHP 更新到 2.10.4。在 Web 界面中一切正常,甚至是应用程序的内存消耗任务。 但是 CLI 坏了。每次调用“app/Console/cake”都会引发“PHP 致命错误”。
root@watt18:/var/www_external/app# Console/cake bake
PHP Fatal error: Allowed memory size of 2097152 bytes exhausted (tried to allocate 8192 bytes) in /var/www_external/lib/Cake/Console/ConsoleOptionParser.php on line 510
PHP Fatal error: Allowed memory size of 2097152 bytes exhausted (tried to allocate 32768 bytes) in /var/www_external/lib/Cake/I18n/I18n.php on line 1
“in”部分因调用而异。在网上搜索我找不到任何可比较的主题。我检查了“应用程序”内所有文件夹的权限,但找不到与原始安装的任何差异。我试图调试,但还没有走得很远。直到 Console/cake.php 中的 return ShellDispatcher::run($argv); 行,一切都很好。
从新下载的原始 cakephp 文件夹中进行调用时,我得到了相同的结果。
我不知道所有内存在哪里丢失。我会很高兴任何提示可能导致问题或如何继续调试。
【问题讨论】:
-
2 MB 的内存 waaaaay 对于几乎任何不仅仅是
echo 'hello world';的 PHP 脚本来说都太低了,更不用说框架了,尤其是在命令行中预计正在执行负载繁重的任务。 -
上!你当然是对的。我被数字误导了。 VM 的定义以 KiB 为单位,因此总内存大小为 2GB,这对于原始安装来说一直是足够的。我不明白 PHP 从哪里获得其允许的内存大小。设置为 128MB。正如 MaxGeek 所建议的,将其更改为 -1 可以暂时解决问题。
-
它可以在很多地方定义/覆盖(ini 文件、vhost 配置、htaccess 文件、PHP 代码...),我真的不知道您的环境中可能发生什么。