deployer/composerで遭遇したエラー達

09/12/2020

laravel使ってるサイト
久々deploy試してみたら
composerで色々エラーに遭遇したので
書いておく。

memory_limit

composerでmemory_limitのエラーが出た時は

COMPOSER_MEMORY_LIMIT=-1 composer install

的な事やればいいらしい

deployerでやる場合はどうすればいいのかなと思い、調べてみると

vendors.phpに

<?php
/* (c) Anton Medvedev <anton@medv.io>
 *
 * For the full copyright and license information, please view the LICENSE
 * file that was distributed with this source code.
 */

namespace Deployer;

desc('Installing vendors');
task('deploy:vendors', function () {
    if (!commandExist('unzip')) {
        writeln('<comment>To speed up composer installation setup "unzip" command with PHP zip extension https://goo.gl/sxzFcD</comment>');
    }
    run('cd {{release_path}} && {{bin/composer}} {{composer_options}}');
});

こんな記述があったので

deploy:vendorsのoverride

多分deploy.phpに書けばオーバーライドできるだろうと書いてみたらできた。

set('composer_options', 'install --verbose --prefer-dist --no-progress --no-interaction --no-dev --optimize-autoloader');

task('deploy:vendors', function () {
    if (!commandExist('unzip')) {
        writeln('<comment>To speed up composer installation setup "unzip" command with PHP zip extension https://goo.gl/sxzFcD</comment>');
    }
    run('cd {{release_path}} && /usr/bin/php -d memory_limit=-1 /usr/local/bin/composer {{composer_options}}');
});

こんなかんじ

You are using an outdated version of Composer.

今度はこんなのが出た
多分Composer2.0にアップデートしなさいよ的な事だと思う。

なのでローカルとリモートでselfアップデートする

composer self-update

You are using the deprecated option “–no-suggest”

手元のバージョンのcomposer_optionsが

/usr/local/bin/composer install --verbose --prefer-dist --no-progress --no-interaction --no-dev --optimize-autoloader

ってのがデフォルトみたいで
多分2.0でdeprecatedになってるのがエラー出た?ようなので
‘composer_options’もsetする。

上のdeploy.phpと同じだけどこの部分

set('composer_options', 'install --verbose --prefer-dist --no-progress --no-interaction --no-dev --optimize-autoloader');

your PHP version does not satisfy that requirement.

今度はphpのバージョンが違うと怒られる。

laradock使っていて
laradockのphp-fpmだと7.1とか7.2とかまでしか指定出来ない?と思うので
どうしたもんかと思っていたら

composer.jsonでバージョン指定

composer.jsonに

~~
"config": {
        "platform": {
            "php": "7.1.30"
        }
    },
~~

こんな感じで書いとけばよくは分かってないけど
うまい事やってくれるっぽい。

php artisan package:discover –ansi / Undefined indexname

今度はこれでエラー。

laravel/frameworkのアップデート

なんかcomposer2.0以降でのエラーらしい。

laravel側アップデートすれば解消するとの事で
アップデートする。
各メジャーバージョンでパッチ的なのがあるあらしいので

5.8.30 -> 5.8.38

みたいな感じマイナー部分?だけアップデートする。
依存関係でアラートでたらその部分もアップデート必要。

で、無事deployできました。

webLaravel, php

Posted by admin