services.json failed to open stream: Permission de
services.json failed to open stream: Permission de
zoumingming 发表于3年前
services.json failed to open stream: Permission de
  • 发表于 3年前
  • 阅读 23
  • 收藏 0
  • 点赞 0
  • 评论 0

腾讯云 技术升级10大核心产品年终让利>>>   

摘要: services.json failed to open stream: Permission denied in Laravel 4

下面是老外的解释:

Spent a whole day for solving this and this command simply solved my problem.

If your permissions are 777 for Laravel App folder and you still get this error, it's because SEliux has blocked it. You can easily unblock your application's folder using this command:

su -c "chcon -R -h -t httpd_sys_script_rw_t /usr/share/nginx/YOUR_LARAVEL_APP/"

That's it!

老外说的比较明确,是因为selinux锁住了它,selinux是linux上的精细到进程的安全管理工具,能够对什么文件或文件夹进行操作,全凭其上的标签来决定,如果有httpd_sys_script_rw_t标签,就说明脚本是可以读写这个文件或者文件夹的。

查看selinux的标签,需先装上semanage,它是phython的一个工具。

安装的命令:

yum provides /usr/sbin/semanage
yum -y install policycoreutils-python
semanage fcontext -l | grep '/var/www'


可以看到所有web相关的标签。

可以参考如下文章:

https://linuxtoy.org/archives/selinux-introduction.html


一般,laravel报permission denied,多数跟读写权限,和由selinux控制的安全标签有关。

不建议关闭selinux,有以下两个命令,可供使用:

更改指定文件的读写权限:chmod -R 777 upload/ 

更改指定文件的安全标签:chcon -R -h -t httpd_sys_script_rw_t upload/


chmod用法可参考:

指令名称 : chmod 
使用权限 : 所有使用者 
使用方式 : chmod [-cfvR] [--help] [--version] mode file... 
说明 : Linux/Unix 的档案调用权限分为三级 : 档案拥有者、群组、其他。利用 chmod 可以藉以控制档案如何被他人所调用。 
参数 : 
mode : 权限设定字串,格式如下 : [ugoa...][[+-=][rwxX]...][,...],其中 
u 表示该档案的拥有者,g 表示与该档案的拥有者属于同一个群体(group)者,o 表示其他以外的人,a 表示这三者皆是。 
+ 表示增加权限、- 表示取消权限、= 表示唯一设定权限。 
r 表示可读取,w 表示可写入,x 表示可执行,X 表示只有当该档案是个子目录或者该档案已经被设定过为可执行。 
-c : 若该档案权限确实已经更改,才显示其更改动作 
-f : 若该档案权限无法被更改也不要显示错误讯息 
-v : 显示权限变更的详细资料 
-R : 对目前目录下的所有档案与子目录进行相同的权限变更(即以递回的方式逐个变更) 
--help : 显示辅助说明 
--version : 显示版本 
范例 :将档案 file1.txt 设为所有人皆可读取 : 
chmod ugo+r file1.txt  
将档案 file1.txt 设为所有人皆可读取 : 
chmod a+r file1.txt  
将档案 file1.txt 与 file2.txt 设为该档案拥有者,与其所属同一个群体者可写入,但其他以外的人则不可写入 : 
chmod ug+w,o-w file1.txt file2.txt  
将 ex1.py 设定为只有该档案拥有者可以执行 : 
chmod u+x ex1.py  
将目前目录下的所有档案与子目录皆设为任何人可读取 : 
chmod -R a+r *  
此外chmod也可以用数字来表示权限如 chmod 777 file 
语法为:chmod abc file 
其中a,b,c各为一个数字,分别表示User、Group、及Other的权限。 
r=4,w=2,x=1 
若要rwx属性则4+2+1=7; 
若要rw-属性则4+2=6; 
若要r-x属性则4+1=7。 
范例: 
chmod a=rwx file  
和 
chmod 777 file  
效果相同 
chmod ug=rwx,o=x file  
和 
chmod 771 file  
效果相同 
若用chmod 4755 filename可使此程序具有root的权限

原文链接:http://www.chinaunix.net/old_jh/7/240097.html


共有 人打赏支持
粉丝 0
博文 20
码字总数 5365
×
zoumingming
如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!
* 金额(元)
¥1 ¥5 ¥10 ¥20 其他金额
打赏人
留言
* 支付类型
微信扫码支付
打赏金额:
已支付成功
打赏金额: