Homestead 下,tp5 运行 PHP think make:middleware Check 报错 mkdir ():Permission Denied
一开始执行 php think make:middleware Check -vvv 时是报错没权限,如下图:
百般尝试以后无果,什么 777 755 都不行,所以就重装了 box,重装 box 可以看这里:
【笔记】Windows 10 下重建 Laravel 开发环境 Homestead 和项目
重装后,再运行结果变成如下图报错:
$ cd 返回到虚拟机下映射的根目录,$ ls 一看多了一个小写的根目录(我的根目录头字母大写...):
然后从一开始报错 trace 找到框架源代码,发现是生成目录路径时转换成小写了,所以另外生成了小写的目录,但是当我$ cd到该目录下时,却发现没有生成相应中间件,然后返回大写的原目录,再一次执行命令,结果报错:
再$ 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 协议》,转载必须注明作者和本文链接
关于 LearnKu
ubuntu有没有尝试使用过sudo命令@韩槑槑 好像我之前有sudo过一次,然后才出现
failed to open stream: No such file or directory是不是sudo过一次生成之后就不用了?@Wayne02 那可能是因为
sudo生成的文件夹是root权限组,而不是homestead可以尝试
sudo chown -R homestead.homestead /home/vagrant/Code/把 Code 目录下面所有文件权限组都改成homestead@韩槑槑
之前操作顺序已经记不清了,好像有执行过
sudo php think make:middleware Check可能是因为你说的这个原因才导致权限报错,因为我现在重新生成项目已经没有报错权限,而是报failed to open stream: No such file or directory这是项目的权限组: