Ik heb op mijn blog al regelmatig geschreven over Homebrew (brew), PHP en Composer. Soms komt het voor dat bij het uitvoeren van een Composer commando memory limit fouten optreden. Bijvoorbeeld:
$ composer update
Loading composer repositories with package information
Updating dependencies (including require-dev)
PHP Fatal error: Allowed memory size of 1073741824 bytes exhausted at Zend/zend_vm_execute.h:551 (tried to allocate 32 bytes) in phar:///usr/local/Cellar/composer/1.0.0-alpha8/libexec/composer.phar/src/Composer/DependencyResolver/RuleWatchGraph.php on line 52
Dergelijke fouten zijn vrij eenvoudig op te lossen door de memory limit te verhogen. Dit kan eenvoudig door in het PHP configuratie bestand de memory limit te verhogen.
Hiervoor moet je echter wel weten wat de locatie is van PHP configuratie bestand. Met Homebrew is dit gelukkig eenvoudig te achterhalen. Hiervoor moeten we eerst weten van welke PHP versie we gebruik maken:
$ php -v
PHP 5.6.3 (cli) (built: Nov 16 2014 12:01:32) (DEBUG)
Copyright (c) 1997-2014 The PHP Group
Zend Engine v2.6.0, Copyright (c) 1998-2014 Zend Technologies
with Xdebug v2.2.5, Copyright (c) 2002-2014, by Derick Rethans
Vervolgens kunnen we met het Homebrew info commando aanvullende informatie opvragen:
$ brew info php56
Dit commando zal de nodige informatie geven over PHP en onder het kopje “Caveats” zal de locatie van het PHP configuratie bestand vermeld staan:
The php.ini file can be found in:
/usr/local/etc/php/5.6/php.ini
Vervolgens kan dit bestand met behulp van nano
eenvoudig aangepast worden.
nano /usr/local/etc/php/5.6/php.ini
De memory_limit
kan vervolgens eenvoudig aangepast worden van bijvoorbeeld:
; Maximum amount of memory a script may consume (128MB)
; http://php.net/memory-limit
memory_limit = 1024M
naar:
; Maximum amount of memory a script may consume (128MB)
; http://php.net/memory-limit
memory_limit = 4096M
Met behulp van het volgende commando kan gecontroleerd worden of de wijziging goed is doorgevoerd:
$ php -i | grep memory_limit
memory_limit => 4096M => 4096M