Github Actions自托管Ubuntu运行器配置PHP7.3失败如何解决?
问题排查与修复方案
报错核心原因是shivammathur/setup-php动作在自托管Ubuntu服务器上安装PHP7.3时执行失败,可按以下步骤排查修复:
第一步:基础环境排查
- 确认Ubuntu系统版本:运行
lsb_release -a查看当前服务器版本,PHP7.3属于已停止维护的旧版本,Ubuntu22.04及以上版本的默认软件源已经移除了PHP7.3相关安装包,会直接导致安装失败。 - 验证软件源配置:运行
sudo apt list | grep php7.3,如果无匹配结果说明未添加包含旧版PHP的第三方源。 - 检查运行权限:
setup-php动作需要sudo权限安装依赖包,确认启动Github Actions runner的用户有sudo免密权限,权限不足会导致安装进程被拦截。
第二步:针对性修复
情况1:系统版本≥22.04、缺少PHP源
先在自托管服务器手动添加第三方PHP源:
sudo apt update sudo apt install -y software-properties-common sudo add-apt-repository ppa:ondrej/php -y sudo apt update
可选择提前预安装PHP7.3和所需扩展,避免动作运行时出错:
sudo apt install -y php7.3 php7.3-mbstring php7.3-pdo php7.3-grpc php7.3-tokenizer php7.3-xml php7.3-json php7.3-ctype php7.3-fileinfo php7.3-openssl php7.3-bcmath composer phpunit
预安装完成后,可修改yml配置中的PHP设置步骤,添加update: true参数强制刷新源:
- name: Configure PHP 7.3 uses: shivammathur/setup-php@v2 with: php-version: '7.3' tools: composer, phpunit extensions: mbstring,PDO,grpc,tokenizer,xml,json,ctype,fileinfo,openssl,bcmath update: true
情况2:runner无sudo权限
给运行runner进程的用户配置sudo免密权限:
运行sudo visudo,在文件末尾添加一行(将runner_user替换为实际的runner用户名):
runner_user ALL=(ALL) NOPASSWD:ALL
保存退出后重启runner进程即可。
情况3:grpc扩展安装失败
grpc属于第三方非原生扩展,默认源无对应包时可通过pecl手动安装:
sudo apt install -y php7.3-dev php-pear sudo pecl install grpc echo "extension=grpc.so" | sudo tee /etc/php/7.3/mods-available/grpc.ini sudo phpenmod grpc
可选优化方案
如果你的Laravel应用支持更高版本PHP,建议将yml中php-version参数改为8.0及以上版本,高版本PHP在新Ubuntu系统上无需额外添加源即可直接安装,安全性和稳定性更好。
内容的提问来源于stack exchange,提问作者Alexdev
相关产品推荐
相关产品推荐

