我正在尝试为 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