php cli memory limit

163,408

Solution 1

IIRC, an unlimited memory_limit isn't supported by the CLI (I'll try to find a source for this) but for now, try passing it into the command:

php -d memory_limit=128M my_script.php

UPDATE

Apparently I was dreaming about the unlimited memory_limit not being supported for php cli. Regardless, it looks like the value from the ini is ignored. The simplest solution should then be to specifically set it in the php command calling the script.

UPDATE2

To answer the question of where the memory limit is coming from, it's most likely being set in the script itself using 'ini_set'.

Solution 2

While testing a CLI php version 5.5.9 it appears that in cli it has unlmited memory limit by default, and specifying php -d memory_limit=4G my_script.php will set a limitation to that.

Share:
163,408

Related videos on Youtube

Ryan H
Author by

Ryan H

I was the student tech at my High School, Running the Windows Server 2003 Domain and File Servers. On my own time, I played with Fedora Core for a bit. Then, coming to College, I became the administrator of the Computer Science department, and became familiar with Windows Server 2008 Active Directory, File Services, etc. This is where I gained my experience with Debian Linux (my preferred distro), and with routing and web technologies under Linux (dns, apache, dhcp, iptables). I use Cisco routers, but much prefer the procurve hardware from HP. I worked at Pacific Union College as the Network Security Specialist, dealing with various Windows Server technologies and Networking Infrastructure. Now I work for NWA Media, doing web development, primarily in Python.

Updated on September 18, 2022

Comments

  • Ryan H
    Ryan H over 1 year

    I am getting a memory error in a php cron job:

    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

    The applicable parts of the crontab are:

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

    I am running on Debian Squeeze, fully updated.

    The obvious solution would be that the cli has a low memory limit (of 64MB). However, /etc/php5/cli/php.ini says it's unlimited.

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

    I read somewhere that it could be different for different users, and since the process is running as www-data, i ran:

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

    Even the apache/php.ini has a higher limit than the error is claiming:

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

    What am I missing? Where is this memory limit?

  • Ryan H
    Ryan H almost 13 years
    That conf is the debian default configuration, nothing special from me. Strangely, the comment above it say that it makes the memory limit 128 MB.
  • Derek Downey
    Derek Downey almost 13 years
    Hrm, the question of WHERE the value is coming from (which is the actual question apparently /fail reading comprehension) do you have any ini_set memory_limit in the code?
  • Allan Jude
    Allan Jude almost 13 years
    That just wastes more memory on Apache. Both the SAPI and CLI are installed, so it is best to use the CLI in this case.
  • Allan Jude
    Allan Jude almost 13 years
    run php --ini to print a list of the configuration files it is reading. In a FreeBSD configuration it will look for files in /usr/local/etc/php/*.ini after reading the main /usr/local/etc/php.ini
  • Ryan H
    Ryan H almost 13 years
    it seems that the script is setting the memory internally to this value. Thanks for helping me rule out everything else. I really didn't want it to be that! Thanks for the -d tip.
  • Ryan H
    Ryan H almost 13 years
    The script sets its own memory limit internally to the application. It was set to 64 MB. Thanks for helping me find it.
  • Derek Downey
    Derek Downey almost 13 years
    Glad you found it!
  • Aleksandr Ryabov
    Aleksandr Ryabov over 5 years
    You can also use php -dmemory_limit=-1 your_script.php for unlimited memory usage
  • zed
    zed over 5 years
    Do note that it is M not MB. Using MB does nothing at all.
  • Tim
    Tim over 4 years
    That's not correct, CLI will just follow the memory_limit setting specified in the php.ini file