开发thinkphp的第一步就是给Application目录(不包括其下的文件)777权限, 关闭selinux
开发thinkphp的时候, 总是会出现各种个样 的奇怪的毛病,
比如: 说什么Application目录不可写,
比如: 说什么 _STORAGE_WRITE_ERROR, 不能生成 Runtime/Cache/Home/下的缓存文件等.
作为初期开发, 可以不用考虑 安全和性能???
因此, 为了保证开发的顺利进行, 先把代码写出来, 因此, 第一步就是, 给APPLICATION 完全权限 777, 同时关闭selinux, 将selinux设为0.
就不会出现各种权限, 安全原因引起的 前期的无法 写下去 的问题.
为什么要给目录以777的权限呢?
这里的最后的那个7, 是针对other的, 而网站访问的人就是 other, 所以最后的这个7, 就是对web目录而言的;
目录的权限, 除了给以 write权限外, 还要给以 x 可执行 的权限, 因为: 目录的write权限 和 x权限 完全是不同的, 两者之间是不可以互相取代的:
write权限是指: 在目录中, 可以add创建文件/目录; 删除文件/文件夹(不管文件的本身的权限是什么, 也不管文件的所有者是谁?); 重命名文件/目录; 最后是可以移动文件/子目录.
而x 可执行权限, 是指 其他用户是否可以 进入 该目录, 是否可以 使用 cd 命令 进入该目录. 为什么又叫 可执行 权限呢? 因为 只有当你 可进入 cd 到 这个目录后, 你才可以在这个目录下 "执行" 命令. ... 如果你没有x命令, 那么即使你有read权限, 也是不能 读取目录里面的文件的!事实上, 在任何地方 任何用户, 创建 目录的 时候, 默认的目录 权限就是 r-x, 也就是说, 默认的目录 对other 都是有 x 权限的, 否则, 你创建目录干 什么呢?
通常来说, 重要的, 最主要的, 还是通过 控制 写权限 来 控制目录的. 故目录的写权限 w 才是最重要的.
所以, 给目录 在原来的权限基础上: 755, 给以写权限, 就号了, 即777. 一点都不过分.
而对于文件, 就不同于目录的默认权限 755, 文件的默认权限是 644, 因为文件默认不会设置它为 可执行文件, 没有 x 权限. 所以它的默认权限是644.
而文件 即使它不是 可执行文件, 给它 以 x 权限, 让他成为可执行文件, 也没有什么额外影响. 所以 给全部 Appliatcion以777 权限是可以的.
但是, 如果你有洁癖, 确实是不想给文件 以执行的 权限,(或者是说 不想看到vim中 Nerdtree 可执行文件旁边的星号, ) .... 如果我们只是想给web(application目录下的 子目录, 以777 的权限, 而 web下的 文件 的权限本身 不要改变, 这时候, 可以参考下面的内容:
先 chmod -R 777 /webpath,
然后, 恢复目录下的文件 的原来的权限: find /webpath -type f -exec chmod 644 {} \;理解以前的那么命令, 使用 find 命令和 其他命令 如ls 的 结合使用 : 就是上面的 , 使用 -exec .... {} \; 注意 这里 的{} \; 就相当于一个占位符, 代表前面的搜索到的 内容!
除了在终端下使用 chmod命令来修改文件的权限, 还可以 用php 提供的 chmod函数, 这里面的 权限参数, 就一定要使用 0777的 形式, 其中最前面的0 表示是 8 进制. 这个在 chmod函数只是不能省略的. chmod命令中其实 还是 0777, 仍然是八进制, 只是省略了而已!
注意, UID就是指的 文件的所有者. 在安全模式下, chmod函数, 会坚持所操作的文件, 和当前 脚本的文件 是否具有 相同的 UID. (即看它们是不是属于同一个所有者)...
有时候在linux调度一个站点时,为了排除文件权限问题最喜欢用 chmod -777 /web_path
可是要改回来怎么办,原来是目录为755 ,文件是644,
可以使用下面这种方法再改回来
find /path -type f -exec chmod 644 {} \; // -exec 后面的命令是以 {} \;结尾的, 记一个固定的就好了.
find /www/TianyaLVS -type d -exec chmod 755 {} \;
ls 命令, 本身是显示 某个目录下的 子目录和子 文件的 信息, 但是 , 如果要 显示 该目录自己呢? 显示它本身 自己的 信息 呢?
不用每次都切换 cd 到它的 父目录 去, 然后 用 ls 来显示, 直接 可以 使用 ls -d 就可以显示了.
开发thinkphp的第一步就是给Application目录(不包括其下的文件)777权限, 关闭selinux的更多相关文章
- (大数据工程师学习路径)第一步 Linux 基础入门----目录结构及文件基本操作
Linux 目录结构及文件基本操作 介绍 1.Linux 的文件组织目录结构. 2.相对路径和绝对路径. 3.对文件的移动.复制.重命名.编辑等操作. 一.Linux 目录结构 在讲 Linux 目录 ...
- 【python开发】迈出第一步,这可能是我唯一一次的Python开发了
好久没写博了,今天就瞎唠唠吧 背景: 组内有个测试平台,是基于Python2+tornado 框架写的,之前自己维护了一套系统的UIweb自动化代码,现在需要集成进去.这很可能是自己唯一一次基于pyt ...
- 三步学会用spring开发OSGI——(第一步:环境篇)
Spring-DM是什么 Spring-DM 指的是Spring Dynamic Modules. dm Server 是一个完全模块化部署的,基于OSGi的Java服务器,为运行企业Java应用和S ...
- 图形用户界面(GUI)应用程序开发——菜鸟的第一步
参考资源:贺老师博文 在看完贺老师的博文后,我就照葫芦画瓢的做了个求三角形面积的程序.这是我写的一篇所用时间最长博文(两个多小时,真心挺累,或许是我太笨吧),为了尽可能详细的把步骤写明白我截了二十一张 ...
- java学习第一步,使用IntelliJ IDEA编写自己的第一个java程序
首先下载java的jdk,然后说一下IDEA的配置 IntelliJ IDEA目前公认的最好的java开发工具,不过一般的学校的教学还是使用eclipse来进行java的开发.所以老师一般只会教你如何 ...
- SSM项目整合第一步 注册登陆实现
SSM项目整合第一步 注册: 项目目录: 一.数据库建表: 源码: ; -- ---------------------------- -- Table structure for t_user - ...
- java微信开发API第一步 服务器接入
I如何接入服务器,下面就为大家进行介绍 一.说明 * 本示例根据微信开发文档:http://mp.weixin.qq.com/wiki/home/index.html最新版(4/3/2016 5:34 ...
- Andriod开发第一步-部署环境(搬运&&总结)
第一步:安装JDK 第二步:配置Windows上JDK的变量环境 第三步:下载安装Eclipse 第四步:下载安装Android SDK 配置了JDK变量环境, ...
- JAVA开发第一步 - JDK安装与配置
JDK的安装与环境变量配置是JAVA开发之路的第一步,很多新人在这一步上就卡了很久,浪费了很多时间,甚至有些人就轻易地“从入门到放弃”了.今天我们就来一步步教你如何打倒这第一只拦路虎. 1.JDK下载 ...
随机推荐
- 编程语言吉祥物之Duke
在看到这个可爱的小家伙前,我一直以为那个咖啡杯子是Java的吉祥物.直到拿到<Java性能优化权威指南>这本书,才知道有这个小东西Duke.这位可爱的Duke是由Joe Palrang在1 ...
- 安全测试 - SQL注入
1. 工具测试: 使用SQLMAP进行扫描 2. 手工测试: 观察参数的值value是否为数字型.如果是数字型进行数字型测试,否则跳到第4步进行字符型测试(例如如果出现a那说明是字符型,如果出现2则将 ...
- PAT 1043. 输出PATest(20)
给定一个长度不超过10000的.仅由英文字母构成的字符串.请将字符重新调整顺序,按"PATestPATest...."这样的顺序输出,并忽略其它字符.当然,六种字符的个数不一定是一 ...
- libsvm的数据格式及制作
1.libsvm数据格式 libsvm使用的训练数据和检验数据文件格式如下: [label] [index1]:[value1] [index2]:[value2] … [label] [index1 ...
- [LeetCode] Guess Number Higher or Lower 猜数字大小
We are playing the Guess Game. The game is as follows: I pick a number from 1 to n. You have to gues ...
- .NET跨平台之旅:将示例站点从 ASP.NET 5 RC1 升级至 ASP.NET Core 1.0
终于将“.NET跨平台之旅”的示例站点 about.cnblogs.com 从 ASP.NET 5 RC1 升级至 ASP.NET Core 1.0 ,经历了不少周折,在这篇博文中记录一下. 从 AS ...
- python入门
输出用print 注释用# rang() >>> range(1,5) #代表从1到5(不包含5) [1, 2, 3, 4] >>> range(1,5,2) #代 ...
- 用vue.js学习es6(四):Symbol类型
一.Symbol类型: 1.ES6引入了一种新的原始数据类型Symbol,表示独一无二的值.它是JavaScript语言的第七种数据类型,前六种是:Undefined.Null. 布尔值(Boolea ...
- How to Disable Strict SQL Mode in MySQL 5.7
If your app was written for older versions of MySQL and is not compatible with strict SQL mode in My ...
- C#计算一段程序运行时间的三种方法
第一种方法利用System.DateTime.Now: static void SubTest() { DateTime beforDT = System.DateTime.Now; //耗时巨大的代 ...