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
《L04 微信小程序从零到发布》
从小程序个人账户申请开始,带你一步步进行开发一个微信小程序,直到提交微信控制台上线发布。
《G01 Go 实战入门》
从零开始带你一步步开发一个 Go 博客项目,让你在最短的时间内学会使用 Go 进行编码。项目结构很大程度上参考了 Laravel。
讨论数量: 4

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

6年前 评论

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

6年前 评论

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

6年前 评论

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

drwxrwxrwx 1 vagrant vagrant
6年前 评论

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