php - 在 Windows .bat 文件中运行 "composer update"

标签 php batch-file composer-php

我最近更新了我的应用程序以使用 composer 来处理它的所有依赖项。作为其中的一部分,我更新了我的部署脚本——Grunt 任务和批处理文件的组合——在执行“git pull”之后包含“composer update”。

但是,我发现尽管 composer update 成功运行,但在该行之后批处理文件的其余部分中没有任何命令运行。如果我去掉“ Composer 更新”行,其他一切都运行良好(但当然我冒着过时/缺少依赖项的风险)。

编辑: 完整的 .bat 文件。如果没有 composer update 行,它会完全运行 - 有了它,它会跳到部署过程的下一部分。

这会在\versions\中创建一个新的带日期戳的文件夹,更新存储库并更新主 repo 文件夹中的 composer 依赖项,在新版本文件夹中执行 git checkout-index,使用 xcopy 与 composer 复制 Vendor 文件夹依赖于新版本(因为它被 git 忽略),然后更新一些符号链接(symbolic link),包括 IIS 用作站点根文件夹的\current\符号链接(symbolic link)。

@echo off
For /f "tokens=2-4 delims=/ " %%a in ('date /t') do (set mydate=%%c-%%a-%%b)
For /f "tokens=1-2 delims=/:" %%a in ('time /t') do (set mytime=%%a%%b)
set date=%mydate%_%mytime%

mkdir "C:\inetpub\appname\versions\%date%"

cd "C:\inetpub\appname\repository"
git pull origin master
composer update
git checkout-index -a -f --prefix="C:\inetpub\appname\versions\%date%\\"

cd "C:\inetpub\appname\versions\%date%\\"

xcopy /E /y /q "C:\inetpub\appname\repository\www\app\Vendor" "www\app\Vendor"

del /Q www\app\webroot\files
rmdir www\app\webroot\files

cd "C:\inetpub\appname\"

MKLINK /D "C:\inetpub\appname\versions\%date%\www\app\tmp" "C:\inetpub\appname_tmp"
MKLINK /D "C:\inetpub\appname\versions\%date%\www\app\webroot\files" "E:\appname_files"

rmdir current
MKLINK /D current "C:\inetpub\appname\versions\%date%\www"

appcmd recycle apppool /apppool.name:"Localhost"

最佳答案

更新答案:

要使上述工作正常,您必须在执行另一个批处理文件的任何行的开头添加“调用”,例如调用 composer install

关于php - 在 Windows .bat 文件中运行 "composer update",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26309074/

相关文章:

php - 如何在 PHP 中显示数据库的所有表行内容?

javascript - Facebook,在新窗口中发布标签以获取链接和 FORM

batch-file - 将结果写入文本文件

用于并行执行 n 个其他批处理文件的 Windows 批处理文件

MySQL - 调用批处理文件来运行 MySQL 查询

php - Laravel 中缺少文件

php - 如果值尚未在 session 数组中,如何将新项目添加到 session 数组中? PHP

php - 具有 Composer 依赖的大型项目不断需要修改 json 文件

php - 如何在 PHP 服务器上运行 Composer 更新?

php - Chrome 问题 - 视频流和 session 冲突