php - 在 Symfony gitlab CI 上运行 composer 时出现 memory_limit 问题

我正在尝试为 Symfony 项目添加 Gitlab CI,并且在构建阶段我有一个脚本,用于安装所需的扩展和库,最后运行 composer install

apt-get update -yqq \
&& apt-get install git libcurl4-gnutls-dev libicu-dev libmcrypt-dev libvpx-dev libjpeg-dev libpng-dev libxpm-dev zlib1g-dev libfreetype6-dev libxml2-dev libexpat1-dev libbz2-dev libgmp3-dev libldap2-dev unixodbc-dev libpq-dev libsqlite3-dev libaspell-dev libsnmp-dev libpcre3-dev libtidy-dev libzip-dev libonig-dev -yqq \
&& docker-php-ext-install mbstring pdo_mysql curl json intl gd xml zip bz2 opcache \
&& pecl install xdebug \
&& docker-php-ext-enable xdebug \
&& curl -sS https://getcomposer.org/installer | php \
&& php composer.phar install

问题是我得到 memory_limit 错误如下:

!!  
!!  In 40bd61cdac921aa5789618d083759e080acd3c990e06953a3380ae5c5e1156fa.php line 3768:
!!                                                                                 
!!    Error: Allowed memory size of 134217728 bytes exhausted (tried to allocate   
!!    122880 bytes)                                                                
!!                                                                                 
!!  
!!  cache:clear [--no-warmup] [--no-optional-warmers]
!!  
!!

我试图将 PHP memory_limit 从 128M 增加到 256M 但它不起作用。我尝试了以下方法:

php -d memory_limit=256M composer.phar install

我也试过 php -r "ini_set('memory_limit', '256M');" 但它也没有任何效果。

关于如何解决这个问题的任何建议?

使用此命令为我解决了:

sed -i -e "s/\(memory_limit = \).*/\1256M/" $PHP_INI_DIR/php.ini

它直接从 php.ini 文件中编辑 memory_limit value。

回答1

你的 git repo 中有 composer.lock 吗?正常安装速度很快,并且不需要大量内存,因为没有依赖树生成。如果你没有提交你的 composer.lock 你真的应该。 (这也确保您使用与本地相同的版本。不会因为使用不同的版本而出现奇怪的错误)

你也可以试试:

php -d memory_limit=-1 composer install

回答2

你的 docker 镜像怎么样?您可以尝试在构建 docker 映像中修改您的 php.ini。前任。在 docker 文件中添加 memory_limit。

echo 'memory_limit = 512M' >> /etc/php.d/docker-gitlab-ci-runner-php.ini

相似文章

composer-php - Composer 安装后脚本未执行

我正在尝试构建一个包含PHP应用程序的docker映像。此应用程序通过composer.json安装一些依赖项,并且在composer安装后,需要完成一些自定义(例如,必须将某些文件从供应商文件夹复制...

随机推荐

最新文章