安装Laravel8与Sail后执行sail up提示Permission denied错误如何解决
报错原因
该报错是因为vendor/laravel/sail/bin/sail脚本缺少可执行权限,Linux/Unix 类系统下无执行权限的脚本无法被直接调用运行。
解决方案
方案1:手动添加执行权限(最常用)
直接给目标脚本添加可执行权限,执行命令:chmod +x vendor/laravel/sail/bin/sail
执行完成后重新运行./vendor/bin/sail up即可正常启动。
如果后续还出现同系列脚本权限问题,可以批量给sail的bin目录加执行权限:chmod -R +x vendor/laravel/sail/bin/
方案2:临时应急调用(无需修改文件权限)
如果不想修改文件权限,可以直接用PHP解释器调用脚本运行,命令如下:php vendor/laravel/sail/bin/sail up
方案3:配置Composer钩子自动处理(避免重复操作)
如果每次执行composer install或composer update后都会出现该问题,可以在项目composer.json中添加自动执行脚本,每次依赖安装/更新完成后自动给sail加权限:
找到composer.json中的scripts节点,修改为以下内容:
"scripts": { "post-install-cmd": [ "@php artisan package:discover --ansi", "chmod +x vendor/laravel/sail/bin/sail" ], "post-update-cmd": [ "@php artisan package:discover --ansi", "chmod +x vendor/laravel/sail/bin/sail" ] }
注意事项
- 不要给整个vendor目录设置777一类的高权限,会带来严重安全风险,仅给需要执行的特定脚本加权限即可
- 如果是用root用户安装的Composer依赖,建议切换到项目所属的普通用户重新执行
composer install,避免后续出现更多权限相关问题 - 如果是WSL环境且项目存放在Windows挂载的盘符下,需要修改WSL的fstab配置给挂载盘增加可执行权限,避免每次系统重启后权限被重置
内容的提问来源于stack exchange,提问作者cerberusphp
相关产品推荐
相关产品推荐

