You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Bitbucket Pipeline已安装Composer仍提示未找到问题求助

Bitbucket Pipeline 中Composer命令找不到的原因及解决办法

问题原因

Bitbucket Pipeline的每个step都是独立运行的Docker容器,容器之间的文件系统相互隔离——只有配置了缓存或**产物(artifacts)**的内容才会在步骤间共享。

你第一个step里把Composer安装到了/usr/local/bin目录,但这个路径不在Bitbucket默认的composer缓存范围内(默认composer缓存仅针对项目的vendor目录和Composer全局缓存,不包含/usr/local/bin里的可执行文件)。因此第二个step启动新容器后,/usr/local/bin中没有Composer,自然会报bash: composer: command not found。


解决办法

方案一:使用自带Composer的PHP镜像(最简便)

直接替换基础镜像为官方预安装了Composer的版本,所有step可直接调用composer命令,无需手动安装:

image: php:8.1-cli-composer

pipelines:
  default:
    - step:
        caches:
          - composer
        script:
          - composer install
          - ./vendor/bin/phpunit
    
    - step:
        caches:
          - composer
        script:
          - composer install --no-dev
          - apt-get update && apt-get install -y zip
          - export FILE=release-$(date "%Y%m%d%H%M%S").zip 
          - zip ${FILE} ./lib/*.php ./vendor/* composer.json composer.lock index.php config.php ./utils/*.php
          - curl -X POST --user "${BB_AUTH_STRING}" "https://api.bitbucket.org/2.0/repositories/${BITBUCKET_REPO_OWNER}/${BITBUCKET_REPO_SLUG}/downloads" --form files=@"${FILE}"
        artifacts:
          - release-$(date "%Y%m%d%H%M%S").zip

方案二:将Composer安装到项目目录并共享

如果必须使用原版PHP镜像,可把Composer安装到项目内的bin目录,再通过自定义缓存实现步骤间共享:

image: php:8.1

pipelines:
  default:
    - step:
        caches:
          - composer
          - composer-bin
        script:
          - mkdir -p ./bin
          - php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');"
          - php composer-setup.php --install-dir=./bin --filename=composer
          - php -r "unlink('composer-setup.php');"
          - chmod +x ./bin/composer
    
    - step:
        caches:
          - composer
          - composer-bin
        script:
          - export PATH=./bin:$PATH
          - composer install
          - ./vendor/bin/phpunit
    
    - step:
        caches:
          - composer
          - composer-bin
        script:
          - export PATH=./bin:$PATH
          - composer install --no-dev
          - apt-get update && apt-get install -y zip
          - export FILE=release-$(date "%Y%m%d%H%M%S").zip 
          - zip ${FILE} ./lib/*.php ./vendor/* composer.json composer.lock index.php config.php ./utils/*.php
          - curl -X POST --user "${BB_AUTH_STRING}" "https://api.bitbucket.org/2.0/repositories/${BITBUCKET_REPO_OWNER}/${BITBUCKET_REPO_SLUG}/downloads" --form files=@"${FILE}"
        artifacts:
          - release-$(date "%Y%m%d%H%M%S").zip

# 自定义缓存规则
definitions:
  caches:
    composer-bin: ./bin

内容的提问来源于stack exchange,提问作者Dimitrios Desyllas

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.26 21:26:00