X
    Categories: Magento2

PHP Fatal error Allowed memory size exhausted во время установки Magento2

Очень частов во время установки Magento 2 (используя php bin/magento setup:install) появляется ошибка: «PHP Fatal error: Allowed memory size of NNN bytes exhausted». Эта ошибка значит, что вашему скрипту на хостинге или локальном компьютере не хватает памяти для корректной работы.

Полный текст ошибки и php stack trace:

$ php bin/magento setup:install --admin-firstname name \
 --admin-lastname lastname --admin-email=email@email.com
PHP Fatal error: Allowed memory size of 134217728 bytes exhausted (tried to allocate 5 bytes)
 in magento2/vendor/magento/zendframework1/library/Zend/Db/Statement/Pdo.php
on line 228

PHP Stack trace:
PHP   1. {main}() magento2/bin/magento:0
PHP   2. Symfony\Component\Console\Application->run() magento2/bin/magento:25
PHP   3. Magento\Framework\Console\Cli->doRun() magento2/vendor/symfony/console/Symfony/Component/Console/Application.php:126
PHP   4. Symfony\Component\Console\Application->doRun() magento2/vendor/magento/framework/Console/Cli.php:49
PHP   5. Symfony\Component\Console\Application->doRunCommand() magento2/vendor/symfony/console/Symfony/Component/Console/Application.php:195
PHP   6. Symfony\Component\Console\Command\Command->run() magento2/vendor/symfony/console/Symfony/Component/Console/Application.php:874
PHP   7. Magento\Setup\Console\Command\InstallCommand->execute() magento2/vendor/symfony/console/Symfony/Component/Console/Command/Command.php:257
PHP   8. Magento\Setup\Model\Installer->install() magento2/setup/src/Magento/Setup/Console/Command/InstallCommand.php:125
PHP   9. call_user_func_array:{magento2/setup/src/Magento/Setup/Model/Installer.php:331}() magento2/setup/src/Magento/Setup/Model/Installer.php:331
PHP  10. Magento\Setup\Model\Installer->installDataFixtures() magento2/setup/src/Magento/Setup/Model/Installer.php:331
PHP  11. Magento\Setup\Model\Installer->handleDBSchemaData() magento2/setup/src/Magento/Setup/Model/Installer.php:746
PHP  12. Magento\ConfigurableSampleData\Setup\InstallData->install() magento2/setup/src/Magento/Setup/Model/Installer.php:798
PHP  13. Magento\Framework\Setup\SampleData\Executor->exec() magento2/vendor/magento/module-configurable-sample-data/Setup/InstallData.php:33
PHP  14. Magento\Framework\App\State->emulateAreaCode() magento2/vendor/magento/framework/Setup/SampleData/Executor.php:50
PHP  15. call_user_func_array:{magento2/vendor/magento/framework/App/State.php:171}() magento2/vendor/magento/framework/App/State.php:171
PHP  16. Magento\ConfigurableSampleData\Setup\Installer->install() magento2/vendor/magento/framework/App/State.php:171
PHP  17. Magento\ConfigurableSampleData\Model\Product->install() magento2/vendor/magento/module-configurable-sample-data/Setup/Installer.php:57
PHP  18. Magento\ImportExport\Model\Import\Interceptor->importSource() magento2/vendor/magento/module-configurable-sample-data/Model/Product.php:96
PHP  19. Magento\ImportExport\Model\Import\Interceptor->___callPlugins() magento2/var/generation/Magento/ImportExport/Model/Import/Interceptor.php:104
PHP  20. call_user_func_array:{magento2/vendor/magento/framework/Interception/Interceptor.php:144}() magento2/vendor/magento/framework/Interception/Interceptor.php:144
PHP  21. Magento\ImportExport\Model\Import->importSource() magento2/vendor/magento/framework/Interception/Interceptor.php:144
PHP  22. Magento\ImportExport\Model\Import->processImport() magento2/vendor/magento/module-import-export/Model/Import.php:413
PHP  23. Magento\ImportExport\Model\Import\Entity\AbstractEntity->importData() magento2/vendor/magento/module-import-export/Model/Import.php:448
PHP  24. Magento\CatalogImportExport\Model\Import\Product->_importData() magento2/vendor/magento/module-import-export/Model/Import/Entity/AbstractEntity.php:578
PHP  25. Magento\CatalogImportExport\Model\Import\Product->_saveProductsData() magento2/vendor/magento/module-catalog-import-export/Model/Import/Product.php:844
PHP  26. Magento\CatalogImportExport\Model\Import\Product->_saveProducts() magento2/vendor/magento/module-catalog-import-export/Model/Import/Product.php:876
PHP  27. Magento\CatalogImportExport\Model\Import\Product->_saveProductAttributes() magento2/vendor/magento/module-catalog-import-export/Model/Import/Product.php:1613
PHP  28. Magento\Framework\DB\Adapter\Pdo\Mysql->insertOnDuplicate() magento2/vendor/magento/module-catalog-import-export/Model/Import/Product.php:1160
PHP  29. Magento\Framework\DB\Adapter\Pdo\Mysql->query() magento2/vendor/magento/framework/DB/Adapter/Pdo/Mysql.php:1842
PHP  30. Magento\Framework\DB\Adapter\Pdo\Mysql->_query() magento2/vendor/magento/framework/DB/Adapter/Pdo/Mysql.php:499
PHP  31. Zend_Db_Adapter_Pdo_Abstract->query() magento2/vendor/magento/framework/DB/Adapter/Pdo/Mysql.php:444
PHP  32. Zend_Db_Adapter_Abstract->query() magento2/vendor/magento/zendframework1/library/Zend/Db/Adapter/Pdo/Abstract.php:238
PHP  33. Zend_Db_Statement->execute() magento2/vendor/magento/zendframework1/library/Zend/Db/Adapter/Abstract.php:480
PHP  34. Magento\Framework\DB\Statement\Pdo\Mysql->_execute() magento2/vendor/magento/zendframework1/library/Zend/Db/Statement.php:303
PHP  35. Zend_Db_Statement_Pdo->_execute() magento2/vendor/magento/framework/DB/Statement/Pdo/Mysql.php:95
PHP  36. PDOStatement->execute() magento2/vendor/magento/zendframework1/library/Zend/Db/Statement/Pdo.php:228

[свернуть]

По умолчанию Magento 2 устанавливает лимит использования памяти в 256мб в magento2/pub/.htaccess:

############################################
## adjust memory limit

    php_value memory_limit 256M
    php_value max_execution_time 18000

Поэтому лучше всего иметь 256мб в настройках PHP.

Решение:

1) Изменить php.ini для увеличения параметра memory_limit на глобальном уровне
Для нахождения php.ini можено использовать команду «php —ini» из консоли

...
; How many GET/POST/COOKIE input variables may be accepted
; max_input_vars = 1000

; Maximum amount of memory a script may consume (128MB)
; http://php.net/memory-limit
memory_limit = 256M
...

2) Также можно изменить данный параметр локально только для magento2 скрипта:
Добавить ini_set(«memory_limit»,»256M») в «magento2/bin/magento» файл

#!/usr/bin/env php
<?php
/**
 * Copyright © 2015 Magento. All rights reserved.
 * See COPYING.txt for license details.
 */
ini_set('memory_limit', '256M');
use Magento\Framework\AppInterface;
if (PHP_SAPI !== 'cli') {
    echo 'bin/magento must be run as a CLI application';
    exit(1);
}

3) Также можно изменить memory_limit только для этого вызова php

php -dmemory_limit=1G bin/magento setup:install 

Как проверить текущее значение memory_limit:

1) Выполнить комманду:

php -r "echo ini_get('memory_limit').PHP_EOL;"

2) Или выполнить следующую команду:

php -i | grep memory

Это выведет, что-то такое:

$ php -i | grep memory
memory_limit => 128M => 128M
Collecting memory statistics => Yes

3) Создать php файла phpinfo.php и добавить следующий код:

<?php phpinfo(); ?>

Текст данной статьи на английском Magento 2 installation: PHP Fatal error Allowed memory size exhausted

admin:
Related Post