开发thinkphp的时候, 总是会出现各种个样 的奇怪的毛病,

比如: 说什么Application目录不可写,

比如: 说什么 _STORAGE_WRITE_ERROR, 不能生成 Runtime/Cache/Home/下的缓存文件等.

作为初期开发, 可以不用考虑 安全和性能???

因此, 为了保证开发的顺利进行, 先把代码写出来, 因此, 第一步就是, 给APPLICATION 完全权限 777, 同时关闭selinux, 将selinux设为0.

就不会出现各种权限, 安全原因引起的 前期的无法 写下去 的问题.

为什么要给目录以777的权限呢?

  1. 这里的最后的那个7, 是针对other的, 而网站访问的人就是 other, 所以最后的这个7, 就是对web目录而言的;

  2. 目录的权限, 除了给以 write权限外, 还要给以 x 可执行 的权限, 因为: 目录的write权限 和 x权限 完全是不同的, 两者之间是不可以互相取代的:

    write权限是指: 在目录中, 可以add创建文件/目录; 删除文件/文件夹(不管文件的本身的权限是什么, 也不管文件的所有者是谁?); 重命名文件/目录; 最后是可以移动文件/子目录.

    而x 可执行权限, 是指 其他用户是否可以 进入 该目录, 是否可以 使用 cd 命令 进入该目录. 为什么又叫 可执行 权限呢? 因为 只有当你 可进入 cd 到 这个目录后, 你才可以在这个目录下 "执行" 命令. ... 如果你没有x命令, 那么即使你有read权限, 也是不能 读取目录里面的文件的!

  3. 事实上, 在任何地方 任何用户, 创建 目录的 时候, 默认的目录 权限就是 r-x, 也就是说, 默认的目录 对other 都是有 x 权限的, 否则, 你创建目录干 什么呢?

  4. 通常来说, 重要的, 最主要的, 还是通过 控制 写权限 来 控制目录的. 故目录的写权限 w 才是最重要的.

  5. 所以, 给目录 在原来的权限基础上: 755, 给以写权限, 就号了, 即777. 一点都不过分.

  6. 而对于文件, 就不同于目录的默认权限 755, 文件的默认权限是 644, 因为文件默认不会设置它为 可执行文件, 没有 x 权限. 所以它的默认权限是644.

  7. 而文件 即使它不是 可执行文件, 给它 以 x 权限, 让他成为可执行文件, 也没有什么额外影响. 所以 给全部 Appliatcion以777 权限是可以的.

  8. 但是, 如果你有洁癖, 确实是不想给文件 以执行的 权限,(或者是说 不想看到vim中 Nerdtree 可执行文件旁边的星号, ) .... 如果我们只是想给web(application目录下的 子目录, 以777 的权限, 而 web下的 文件 的权限本身 不要改变, 这时候, 可以参考下面的内容:

    先 chmod -R 777 /webpath,

    然后, 恢复目录下的文件 的原来的权限: find /webpath -type f -exec chmod 644 {} \;

  9. 理解以前的那么命令, 使用 find 命令和 其他命令 如ls 的 结合使用 : 就是上面的 , 使用 -exec .... {} \; 注意 这里 的{} \; 就相当于一个占位符, 代表前面的搜索到的 内容!

  10. 除了在终端下使用 chmod命令来修改文件的权限, 还可以 用php 提供的 chmod函数, 这里面的 权限参数, 就一定要使用 0777的 形式, 其中最前面的0 表示是 8 进制. 这个在 chmod函数只是不能省略的. chmod命令中其实 还是 0777, 仍然是八进制, 只是省略了而已!

  11. 注意, 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的更多相关文章

  1. (大数据工程师学习路径)第一步 Linux 基础入门----目录结构及文件基本操作

    Linux 目录结构及文件基本操作 介绍 1.Linux 的文件组织目录结构. 2.相对路径和绝对路径. 3.对文件的移动.复制.重命名.编辑等操作. 一.Linux 目录结构 在讲 Linux 目录 ...

  2. 【python开发】迈出第一步,这可能是我唯一一次的Python开发了

    好久没写博了,今天就瞎唠唠吧 背景: 组内有个测试平台,是基于Python2+tornado 框架写的,之前自己维护了一套系统的UIweb自动化代码,现在需要集成进去.这很可能是自己唯一一次基于pyt ...

  3. 三步学会用spring开发OSGI——(第一步:环境篇)

    Spring-DM是什么 Spring-DM 指的是Spring Dynamic Modules. dm Server 是一个完全模块化部署的,基于OSGi的Java服务器,为运行企业Java应用和S ...

  4. 图形用户界面(GUI)应用程序开发——菜鸟的第一步

    参考资源:贺老师博文 在看完贺老师的博文后,我就照葫芦画瓢的做了个求三角形面积的程序.这是我写的一篇所用时间最长博文(两个多小时,真心挺累,或许是我太笨吧),为了尽可能详细的把步骤写明白我截了二十一张 ...

  5. java学习第一步,使用IntelliJ IDEA编写自己的第一个java程序

    首先下载java的jdk,然后说一下IDEA的配置 IntelliJ IDEA目前公认的最好的java开发工具,不过一般的学校的教学还是使用eclipse来进行java的开发.所以老师一般只会教你如何 ...

  6. SSM项目整合第一步 注册登陆实现

    SSM项目整合第一步  注册: 项目目录: 一.数据库建表: 源码: ; -- ---------------------------- -- Table structure for t_user - ...

  7. java微信开发API第一步 服务器接入

    I如何接入服务器,下面就为大家进行介绍 一.说明 * 本示例根据微信开发文档:http://mp.weixin.qq.com/wiki/home/index.html最新版(4/3/2016 5:34 ...

  8. Andriod开发第一步-部署环境(搬运&&总结)

         第一步:安装JDK      第二步:配置Windows上JDK的变量环境      第三步:下载安装Eclipse      第四步:下载安装Android SDK 配置了JDK变量环境, ...

  9. JAVA开发第一步 - JDK安装与配置

    JDK的安装与环境变量配置是JAVA开发之路的第一步,很多新人在这一步上就卡了很久,浪费了很多时间,甚至有些人就轻易地“从入门到放弃”了.今天我们就来一步步教你如何打倒这第一只拦路虎. 1.JDK下载 ...

随机推荐

  1. Java 条形码 二维码 的生成与解析

    Barcode简介 Barcode是由一组按一定编码规则排列的条,空符号,用以表示一定的字符,数字及符号组成的,一种机器可读的数据表示方式. Barcode的形式多种多样,按照它们的外观分类: Lin ...

  2. URL_MODEL 2 不能访问 在APACHE服务器上的访问方式上去除index.php

    thinkphp URL_MODEL=2,访问链接http://i.cnblogs.com/Online/index.html  报错: Not Found The requested URL /on ...

  3. Windows批处理:自动部署常用软件(静默安装)

    一.简介 最近一直在测试使用域组策略自动部署软件,效果并不理想.首先,主机必须加入域才能让策略生效.其实是Windows Server 2012 R2只支持.msi格式的安装包,所以部署前需将软件重新 ...

  4. IBM Bluemix体验:Containers进阶

    上一篇中介绍了Bluemix的Containers服务以及如何使用自定义的docker image创建一个容器实例并对外提供服务.除了自定义镜像之外,Bluemix Containers还可以使用Do ...

  5. C语言的fopen函数(文件操作/读写)

    头文件:#include <stdio.h> fopen()是一个常用的函数,用来以指定的方式打开文件,其原型为:    FILE * fopen(const char * path, c ...

  6. VPN 部署方案

    VPN 对比: OpenVPN: 客户端连接太麻烦,放弃 PPTP VPN:版本较高的苹果手机没有 PPTP VPN 的连接方式,放弃 L2TP VPN:支持所有平台,客户端连接容易,最终选择部署 L ...

  7. Hbase学习连接

    http://blog.csdn.net/baolibin528/article/details/43672131 http://m.blog.csdn.net/article/details?id= ...

  8. Linux 进程与线程六

    //线程间的通信 #include <stdio.h> #include <stdlib.h> #include <string.h> #include <e ...

  9. oAuth 2.0 笔记

    OAuth 2.0规范于2012年发布,很多大型互联网公司(比如:微信.微博.支付宝)对外提供的SDK中,授权部分基本上都是按这个规范来实现的. OAuth 2.0提供了4种基本的标准授权流程,最为复 ...

  10. OLTP(on-line transaction processing)与OLAP(On-Line Analytical Processing)

    OLTP与OLAP的介绍 数据处理大致可以分成两大类:联机事务处理OLTP(on-line transaction processing).联机分析处理OLAP(On-Line Analytical ...