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
《L01 基础入门》
我们将带你从零开发一个项目并部署到线上,本课程教授 Web 开发中专业、实用的技能,如 Git 工作流、Laravel Mix 前端工作流等。
《G01 Go 实战入门》
从零开始带你一步步开发一个 Go 博客项目,让你在最短的时间内学会使用 Go 进行编码。项目结构很大程度上参考了 Laravel。
讨论数量: 4

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

7年前 评论

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

7年前 评论

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

7年前 评论

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

drwxrwxrwx 1 vagrant vagrant
7年前 评论

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