php cli内存限制

我在php cron作业中出现内存错误:

Fatal error: Allowed memory size of 67108864 bytes exhausted (tried to allocate 71 bytes) in /opt/matrix/core/lib/DAL/DAL.inc on line 830

crontab的适用部分是:

 $ sudo crontab -u www-data -l MAILTO=root # mh dom mon dow command */15 * * * * php /opt/matrix/core/cron/run.php /opt/matrix 

我在Debian Squeeze上运行,完全更新。

显而易见的解决scheme是cli具有低内存限制(64MB)。 但是,/etc/php5/cli/php.ini说这是无限的。

 $ cat /etc/php5/cli/php.ini | grep memory_limit memory_limit = -1 

我在某个地方看到,它可能是不同的用户,因为该过程是作为万维网数据运行,我跑:

 $ sudo -u www-data -s $ php -i | grep memory_limit memory_limit => -1 => -1 suhosin.memory_limit => 0 => 0 

即使是apache / php.ini也有比错误声称更高的限制:

 $ sudo cat /etc/php5/apache2/php.ini | grep memory_limit memory_limit = 128M 

我错过了什么? 这个内存限制在哪里?

IIRC,CLI不支持无限的memory_limit(我会试着find这个源代码),但现在,尝试将它传递给命令:

 php -d memory_limit=128M my_script.php 

UPDATE

显然我是梦想着无限的memory_limit不支持的PHP CLI。 无论如何,它看起来像ini的价值被忽略。 最简单的解决scheme应该是在调用脚本的php命令中专门设置它。

UPDATE2

要回答内存限制来自哪里的问题,最有可能在脚本本身使用“ini_set”来设置。

如果您将PHP安装为Apache模块(在phpinfo()检查“服务器API”),您应该通过命令行Web浏览器(wget,curl,lynx等)在cron作业中调用它,如下所示:

 */15 * * * * lynx -dump http://localhost/script.php >> /var/log/script.log 2>&1