Linux下部署Symfony2对app/cache和app/logs目录的权限设置
在linux下部署完Symfony2,可能在访问的时候会报app/logs或者app/cache目录没有写权限的错误。在linux下,如果我们在命令行登陆的用户和web应用服务器(apache、nginx等)的用户不一样的时候,
可以使用下面四个方法来解决这个问题。
1、在支持chmod +a 的系统下使用ACL
很多版本的linux系统都支持chmod +a命令,所以我们优先使用这个命令。找出web应用服务器的用户名赋值到变量HTTPDUSER上。
$ rm -rf app/cache/*
$ rm -rf app/logs/* $ HTTPDUSER=`ps aux | grep -E '[a]pache|[h]ttpd|[_]www|[w]ww-data|[n]ginx' | grep -v root | head -1 | cut -d\ -f1`
$ sudo chmod +a "$HTTPDUSER allow delete,write,append,file_inherit,directory_inherit" app/cache app/logs
$ sudo chmod +a "`whoami` allow delete,write,append,file_inherit,directory_inherit" app/cache app/logs
第四行命令是:找出web应用服务器的用户名赋值给变量HTTPDUSER;第五行命令是:赋予web应用服务器对app/logs或者app/cache目录读、写、创建目录等权限;第六行命令是:赋予命令行登陆用户对app/logs或者app/cache目录读、写、创建目录等权限。
2、如果系统不支持chmod +a ,那么就使用setfacl命令来设置ACL
首先要确定目录所在分区支持ACL和已经安装setfacl命令。
$ HTTPDUSER=`ps aux | grep -E '[a]pache|[h]ttpd|[_]www|[w]ww-data|[n]ginx' | grep -v root | head -1 | cut -d\ -f1`
$ sudo setfacl -R -m u:"$HTTPDUSER":rwX -m u:`whoami`:rwX app/cache app/logs
如果不起作用,在第二行命令添加 -n 选项。
3、不使用ACL
如果不是使用ACL,还可以改变umask,使这两个目录的用户组有创建和修改文件的权限(775,并且web应用服务器和命令行用户在同一个组)或者所有用户都拥有创建和修改文件的权限(777),但是这两组权限都是不安全的,给予的权限过高。把下面的代码添加到app/console, web/app.php 和 web/app_dev.php 文件的首行。
umask(); // 生成的目录(app/cache和app/logs)权限为0775 // 或者 umask(); // 生成的目录(app/cache和app/logs)权限为0777
注:php的umask命令是非线程安全的。
4、命令行登陆的用户和web应用服务器的用户为同一个用户。
Linux下部署Symfony2对app/cache和app/logs目录的权限设置的更多相关文章
- Linux下部署多个Tomcat(完整)
Linux下部署多个Tomcat 1.环境:1.1.Centos 5.01.2.apache-tomcat-6.0.18 2.需要解决一下几个问题2.1.不同的tomcat启动和关闭监听不同的端口2. ...
- Linux下部署FTP服务器
Linux下部署FTP服务器 下载安装包 在这里介绍的是离线部署FTP,首先下载对应的rpm包,下载链接为: 下载vsftpd服务 下载FTP客户端 安装ftp服务器 关闭防火墙 service ip ...
- linux下部署项目问题
1. 今天linux下部署thinkphp项目,数据库用的mysql. 页面其他都是正常的,但是从数据库中取出的数据都是乱码.最后查了资料 解决方案: 在ThinkPHP里面 Library\Thin ...
- linux 下部署nodejs(两种方式)
本次博客的编写时用的系统环境,刚装好的Centos 6.4 64位虚拟机. 另外关于linux 其他系统的安装 可以参考https://github.com/joyent/node/wiki/Ins ...
- linux下部署php项目-Apache、php、mysql关联
linux下部署php项目环境可以分为两种,一种使用Apache,php,mysql的压缩包安装,一种用yum命令进行安装. 使用三种软件的压缩包进行安装,需要手动配置三者之间的关系.apache和p ...
- Linux 下部署Django项目
Linux 下部署Django项目 说明:本文所使用的环境为CentOS 6+Python2.7+Django1.11 安装Django.Nginx和uWSGI 1.确定已经安装了2.7版本的Py ...
- Linux下部署SSM,通过启动tomcat即可运行
Linux下部署SSM项目 1. Java环境配置(JRE&JDK) 安装JDK8:sudo yum install java-1.8.0-openjdk 将操作系统配置为默认使用JDK8:s ...
- linux 下部署web 程序
linux 下部署web 程序 1. 创建ucenter用户 一般情况下,发布应用程序都不是使用root用户的,需要创建一个普通用户来发布程序: 创建ucenter用户: useradd -d /uc ...
- Linux下部署开源版“禅道”项目管理系统《转载》
Linux下部署开源版“禅道”项目管理系统 https://www.cnblogs.com/xxsl/p/6525378.html
随机推荐
- 项目管理模式之如何去除SVN标记
原问地址:http://blog.csdn.net/djcken/article/details/7916986 当项目不需要SVN标志的时候,我们一般怎么办哪??可能很多人设置Window ...
- fedora19配置 SSH 免密码登陆
a.ssh-keygen -t rsa -P '' -f ~/.ssh/id_rsa b.cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys ...
- jQuery Ajax全解析
jQuery确实是一个挺好的轻量级的JS框架,能帮助我们快速的开发JS应用,并在一定程度上改变了我们写JavaScript代码的习惯. 我们先来看一些简单的方法,这些方法都是对jQuery.ajax( ...
- JSP学习笔记(一):JDK的安装及环境变量的配置
一.JDK的安装. JDK可以在Oracle(甲骨文)的官网下载,连接地址:http://www.oracle.com/technetwork/java/javase/downloads/index- ...
- SpriteKit游戏开发
http://blog.csdn.net/larrysai/article/category/1663301 http://blog.csdn.net/ping_yun_long/article/de ...
- jQuery实现密保互斥问题
密保互斥问题: 密保通常都会有n个问题,让用户选择其中2.3个,而且都不会让用户选择重复的问题.这就要求密保互斥. 效果如下: 下面我用了jquery实现密保互斥,用于解决密保,投票等类似互斥问题,可 ...
- [RxJS] Creation operators: empty, never, throw
This lesson introduces operators empty(), never(), and throw(), which despite being plain and void o ...
- 改变eclipse工程中代码的层次结构
1. 代码的层次结构 一般之代码包(package)结构 有两种:扁平结构和继承两种. 扁平结构(flat)如下图所示: 继承结构(hierarchical) 2. 如何修改: 1. 选中packag ...
- 关于apache下同IP多域名支持HTTPS和80跳转HTTPS的配置
httpd-ssl的配置: Listen 443 NameVirtualHost *:443 AddType application/x-x509-ca-cert .crt AddType appli ...
- 通用对象转换Json格式
public static string ObjectToJson<T>(IList<T> IL, params string[] args) { var Json = new ...