Azure DevOps构建流水线传递UserStory参数至PHP脚本失败排查
解决Azure DevOps流水线参数传递到PHP脚本的问题
错误原因分析
- 参数引用语法错误:Azure DevOps中流水线参数需用
${{ parameters.参数名 }}语法引用,你误用了变量的$(参数名)写法,导致bash把UserStory识别成命令,触发"command not found"错误。 - 环境变量命名不匹配:脚本里导出的环境变量是
USER_STORY,但PHP代码里尝试读取User_Story,大小写和下划线位置不一致,导致无法获取值。
修复后的YAML配置
修改Run index.php with user story ID步骤的脚本部分,正确引用参数并导出匹配的环境变量:
trigger: - main pool: vmImage: ubuntu-latest variables: phpVersion: 8.1 parameters: - name: UserStory displayName: Enter User Story ID. type: string default: '' steps: - script: | sudo update-alternatives --set php /usr/bin/php$(phpVersion) php -version displayName: 'Use PHP version $(phpVersion)' - script: | echo "Running script for user story number ${{ parameters.UserStory }}" export USER_STORY="${{ parameters.UserStory }}" ls -la php index.php displayName: 'Run index.php with user story ID'
修复后的PHP代码
调整getenv的参数,匹配导出的环境变量名:
<html> <head> <title>PHP Test</title> </head> <body> <?php $user_story1 = getenv('USER_STORY'); echo '<p>Hello World</p>'; echo "<p>User Story Number: $user_story1</p>"; ?> </body> </html>
验证效果
修复后运行流水线:
- 输入User Story ID后,bash脚本会正确输出该ID,不再出现"command not found"错误。
- PHP脚本会成功读取到
USER_STORY环境变量的值并显示。
内容的提问来源于stack exchange,提问作者Salman
相关产品推荐
相关产品推荐

