Jaz*_*zzy 1 php mamp views chmod laravel
我正在阅读Shawn McCool的书(好书),每次我创建一个新视图,并尝试加载它,我得到一个权限错误.
我想知道为什么生成的视图没有读取权限.奇怪的是,如果我chmod到775,我仍然得到错误,我必须777然后775.
任何人都可以对此有所了解,为什么会发生这种情况?
谢谢!
编辑:
添加新视图后出错
file_put_contents(/Users/jason/Sites/laravel1/storage/views/5c4b7b4707d658dffe52d481be6c680e): failed to open stream: Permission denied
Permissions on storage/views
drwxrwxr-x@ 7 jason jason 238 Mar 7 17:15 views
Run Code Online (Sandbox Code Playgroud)
新视图的权限
-rw-r--r--
之后出错 chmod 775 views
file_put_contents(/Users/jason/Sites/laravel1/storage/views/5c4b7b4707d658dffe52d481be6c680e): failed to open stream: Permission denied
Run Code Online (Sandbox Code Playgroud)
之后的权限 chmod 775 views
drwxrwxr-x@ 7 jason jason 238 Mar 7 17:15 views
Run Code Online (Sandbox Code Playgroud)
之后chmod 777 views,它的工作原理
drwxrwxrwx@ 8 jason jason 272 Mar 7 17:25 views
Run Code Online (Sandbox Code Playgroud)
之后chmod 777 views它仍然有效
drwxrwxr-x@ 8 jason jason 272 Mar 7 17:25 views
Run Code Online (Sandbox Code Playgroud)
但这是扭曲,如果我不使用viewname.blade.php,我没有这个问题.如果我做了viewname.php,则没有错误.它似乎与Blade有关.
相关:始终确保.gitignore这些文件,以便您不会最终使用缓存视图等从您的开发环境拉到您的服务器上.
由于(我认为)Lion,Web服务器不再使用mod_userdir,因此apache不会以您的用户身份运行,而是_www相反,请参阅
user:~$ ps ax -o pid,user,rgroup,comm | grep -Ee "PID|httpd"
PID USER RGID COMM
10317 root 0 /usr/sbin/httpd
16516 _www 70 /usr/sbin/httpd
18497 _www 70 /usr/sbin/httpd
...
Run Code Online (Sandbox Code Playgroud)
现在为您的文件夹提供权限775,用户jason和组jason
drwxrwxr-x@ 7 jason jason 238 Mar 7 17:15 storage/views
Run Code Online (Sandbox Code Playgroud)
Laravel将尝试为该文件夹中的每个刀片视图创建一个缓存文件.如果不存在此类文件,它将尝试自动创建该文件.这需要写访问到文件夹,因为运行Apache _www它要求写在该目录接入等.
但是,一旦文件存在,该文件就归该文件所有_www,因此Apache不再需要对该storage/views目录的写访问权限.直到创建新视图...
现在你能做的是:
(记住,还有其他的缓存太storage比其他storage/views,所以这里的一切是对整个完成的storage文件夹)
要么将storage目录设置为777(对于开发,这是"ok")
chmod -R 777 storage
Run Code Online (Sandbox Code Playgroud)或(更好)chown的storage目录jason:_www,这样可以保持775权限和你和阿帕奇有足够的访问.
sudo chown -R jason:_www storage
Run Code Online (Sandbox Code Playgroud)| 归档时间: |
|
| 查看次数: |
2169 次 |
| 最近记录: |