Debian上Composer与其他工具的集成实践
一 开发工具链集成
- 将PHPStan与Psalm作为开发依赖安装,生成配置后通过Composer 脚本统一入口执行,便于本地与CI统一调用。示例:
- 安装:composer require --dev phpstan/phpstan;composer require --dev vimeo/psalm
- 初始化:vendor/bin/phpstan init-config;vendor/bin/psalm –init
- 脚本:在 composer.json 中添加
{
“scripts”: {
“analyse”: [“phpstan analyse src/”, “psalm”]
}
}
- 使用:运行 composer analyse 一键执行两项检查。
二 持续集成与部署集成
- 在GitLab CI/CD中,使用 Composer 安装依赖并执行项目命令,保持与本地一致的开发与测试流程:
- 示例 stages:
stages:
- test
- deploy
variables:
DEPLOY_ENV: production
test:
stage: test
script:
- composer install --no-interaction --prefer-dist
- php artisan migrate --force
- php artisan test
deploy:
stage: deploy
script:
- ssh -o StrictHostKeyChecking=no $DEPLOY_USER@$DEPLOY_SERVER “bash -s” < deploy_script.sh
only:
- master
- 要点:使用**–no-interaction --prefer-dist**加速安装;在部署脚本中同样执行 composer install 与应用命令,确保产物一致性。
三 多PHP版本与平台配置集成
- 多版本管理:在 Debian 上用 update-alternatives 切换 CLI 的 PHP 版本,使 Composer 解析依赖时使用正确版本。
- 配置示例:
sudo update-alternatives --install /usr/bin/php php /usr/bin/php8.1 50
sudo update-alternatives --install /usr/bin/php php /usr/bin/php8.2 60
sudo update-alternatives --set php /usr/bin/php8.2
php -v
- 平台配置:在不改动实际运行环境的前提下,用 Composer 统一“平台”版本,解决跨机/CI环境差异。
- 示例:composer config platform.php 8.1.0
- 临时绕过(不建议长期使用):composer install --ignore-platform-req=php(仅跳过 PHP 版本检查)。
四 API文档与服务器运行集成
- API 文档:使用 Composer 安装 Swagger UI/Editor 的包,将生成的静态文件部署到 Nginx/Apache 目录即可访问。
- 安装:composer require swagger-api/swagger-ui;composer require swagger-api/swagger-editor
- 部署:将对应包的 dist 目录内容复制到例如 /var/www/html,配置 Web 服务器允许访问并重启服务。
- Web 服务器运行:以 Nginx 为例,root 指向项目 public 目录,配置 try_files $uri $uri/ /index.php?$query_string; 并通过 PHP-FPM 处理 .php 请求;确保目录权限与 PHP 扩展(如 pdo、mbstring、xml、curl、zip、gd、bcmath 等)满足框架需求。