如何无交互运行Composer?解决CakePHP部署权限交互问题
解决CakePHP中Composer Install时的文件夹权限询问问题
看了你给出的示例场景(本地执行composer install遇到权限询问,生产环境计划用CI自动执行),先把你当时的命令输出贴出来方便参考:
John:$ composer install Loading composer repositories with package information Installing dependencies (including require-dev) from lock file Nothing to install or update Generating autoload files > Cake\Composer\Installer\PluginInstaller::postAutoloadDump > Cake\Composer\Installer\PluginInstaller::postInstall Set Folder Permissions ? (Default to Y) [Y,n]
下面给你分场景说处理方法:
本地开发环境:直接确认即可
这时候直接按回车(默认选Y)就行,Composer会自动帮你配置CakePHP核心目录(比如tmp/、logs/)的读写权限,满足框架运行需求,不用自己手动折腾。生产/CI环境:非交互式自动处理
CI执行时不能有手动交互,所以执行命令时加上--no-interaction参数,让Composer自动使用所有默认选项(包括同意权限设置):composer install --no-interaction一般生产环境还会搭配其他参数优化,比如跳过开发依赖、优化自动加载:
composer install --no-interaction --optimize-autoloader --no-dev提前手动配置权限:彻底避免询问
如果你想完全掌控权限,不想让Composer插手,可以提前给CakePHP的关键目录设置好合适的权限,比如:# 给tmp和logs目录设置读写权限(适合本地或测试环境) chmod -R 775 tmp/ logs/ # 生产环境建议根据服务器用户组调整,比如Nginx/Apache的用户www-data chown -R www-data:www-data tmp/ logs/配置完再执行
composer install就不会弹出权限询问了。
内容的提问来源于stack exchange,提问作者John Hunt
相关产品推荐
相关产品推荐

