Homestead 下,tp5 运行 PHP think make:middleware Check 报错 mkdir ():Permission Denied

一开始执行 php think make:middleware Check -vvv 时是报错没权限,如下图:
file
百般尝试以后无果,什么 777 755 都不行,所以就重装了 box,重装 box 可以看这里:
【笔记】Windows 10 下重建 Laravel 开发环境 Homestead 和项目
重装后,再运行结果变成如下图报错:
file
$ cd 返回到虚拟机下映射的根目录,$ ls 一看多了一个小写的根目录(我的根目录头字母大写...):
file
然后从一开始报错 trace 找到框架源代码,发现是生成目录路径时转换成小写了,所以另外生成了小写的目录,但是当我$ cd到该目录下时,却发现没有生成相应中间件,然后返回大写的原目录,再一次执行命令,结果报错:
file
$ cd到虚拟机映射目录,$ ls -lih发现,生成小写目录权限是 drwxr-xr-x root root
结合之前没权限的报错,我想大概原因就是框架生成小写目录路径的文件夹,但是又没权限执行写入(也就是mkdir(): Permission Denied),所以没生成中间件,才报错报错file_put_contents(/home/vagrant/WWW/tp5/application/http/middleware/Check.php): failed to open stream: No such file or directory找不到文件,至于为什么之后没报错mkdir(): Permission Denied,且生成的小写目录权限不一样,学识有限,有待研究,可能跟下面的链接有关也可能没有。

关于 vagrant up 时 composer 权限的问题:

Composer root permision error during "vagrant up"
Composer update warning

本作品采用《CC 协议》,转载必须注明作者和本文链接
Wayne
《L03 构架 API 服务器》
你将学到如 RESTFul 设计风格、PostMan 的使用、OAuth 流程,JWT 概念及使用 和 API 开发相关的进阶知识。
《L02 从零构建论坛系统》
以构建论坛项目 LaraBBS 为线索,展开对 Laravel 框架的全面学习。应用程序架构思路贴近 Laravel 框架的设计哲学。
讨论数量: 4

ubuntu 有没有尝试使用过 sudo 命令

5年前 评论

@韩槑槑 好像我之前有sudo过一次,然后才出现failed to open stream: No such file or directory是不是sudo过一次生成之后就不用了?

5年前 评论

@Wayne02 那可能是因为 sudo 生成的文件夹是 root 权限组,而不是 homestead
可以尝试 sudo chown -R homestead.homestead /home/vagrant/Code/ 把 Code 目录下面所有文件权限组都改成 homestead

5年前 评论

@韩槑槑
之前操作顺序已经记不清了,好像有执行过 sudo php think make:middleware Check 可能是因为你说的这个原因才导致权限报错,因为我现在重新生成项目已经没有报错权限,而是报 failed to open stream: No such file or directory
这是项目的权限组:

drwxrwxrwx 1 vagrant vagrant
5年前 评论

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!