在现有Laravel项目中使用Sail时Composer安装google/apiclient失败求助
环境信息
- Sail版本:1.16.2
- Laravel版本:9.37
- PHP版本:8.1
- 主机操作系统:macOS 12.3
问题描述
我想在现有Laravel应用中使用Sail,按照官方文档执行以下命令安装Composer依赖时,安装到google/apiclient-services失败,报错:
Install of google/apiclient-services failed In Filesystem.php line 314: Could not delete /var/www/html/vendor/composer/cc83f9bf/googleapis-google-api-php-client-services-52b4942/src/OrgPolicyAPI:
执行的命令是:
docker run --rm \ -u "$(id -u):$(id -g)" \ -v $(pwd):/var/www/html \ -w /var/www/html \ laravelsail/php81-composer:latest \ composer install --ignore-platform-reqs
可行解决方案
1. 清理本地残留文件后重新执行
先在本地项目目录执行:
rm -rf vendor composer.lock rm -rf ~/.composer/cache
然后重新运行原来的Docker命令。
2. 临时跳过用户权限指定执行命令
macOS的文件权限有时会导致容器内无法删除文件,试试去掉-u "$(id -u):$(id -g)"参数执行:
docker run --rm \ -v $(pwd):/var/www/html \ -w /var/www/html \ laravelsail/php81-composer:latest \ composer install --ignore-platform-reqs
执行完成后修复本地文件权限:
sudo chown -R $(id -u):$(id -g) vendor composer.lock
3. 使用Sail shell执行Composer命令
如果项目根目录已有sail脚本,直接进入容器执行:
./sail shell
进入容器后执行:
composer install --ignore-platform-reqs
这种方式权限问题更少,因为是在容器内部环境操作。
4. 升级Composer版本后再安装
容器内的Composer版本可能较旧,试试先更新Composer再执行安装:
docker run --rm \ -u "$(id -u):$(id -g)" \ -v $(pwd):/var/www/html \ -w /var/www/html \ laravelsail/php81-composer:latest \ composer self-update && composer install --ignore-platform-reqs
内容的提问来源于stack exchange,提问作者Samax
相关产品推荐
相关产品推荐

