用户
 找回密码
 入住 CI 中国社区
搜索
查看: 4213|回复: 0
收起左侧

[初级] CI学习,边学边记 - constants.php

[复制链接]
发表于 2012-5-12 17:37:55 | 显示全部楼层 |阅读模式
本帖最后由 imwebmaster.net 于 2012-5-12 17:34 编辑

CI版本:2.1.0   
准备:将CodeIgniter包 重命名为ci ,并放在环境根目录下 , /ci 。
常量文件:/ci/application/config/constants.php

在 Common.php 全局函数中,is_really_writable() 所用到的常量就在这里。

PHP复制代码
 
define('FILE_READ_MODE', 0644);
define('FILE_WRITE_MODE', 0666);
define('DIR_READ_MODE', 0755);
define('DIR_WRITE_MODE', 0777);
 
 
复制代码

LINUX文件即目录权限系统
没权限上传照片啊 晕啊 文件的权限是之于用户,用户所在组 ,其它用户的。假设文件 index.php  的权限为 644 。

用户 用户所在组 其它用户
   6        4      4
  rw-          r--        r--
r = 4  w =2  x =1

对于文件来说
r   可以读取文件实际内容,比如文本文件的文字内容

w  可以编辑 新增,修改文件内容 ,不包含删除文件哦

x   该文件可被系统执行,在WINDOWS中,文件是否具备被执行能力,取决于它的扩展名 .exe .bat,但是在LINUX下
     是否可执行更扩展名没关系

假设目录 cache 权限为 755

用户 用户所在组 其它用户
   7        5      5
  rwx          r-x        r-x

对于目录来说:

r     可以读取目录结构列表的权限,所以你可以LS 来查看 ,windows下是不是 dir?
w   
  可以创建文件和目录;
  删除已经存在的文件和目录
  重命名已存在的文件和目录
  移动目录下的文件和目录位置
x
目录总不会拿来被执行吧?目录的X权限代表用户能否进入该目录成为工作目录的权限。linux 下的cd命令。

你是否还记得/ci/index.php 中的这段代码,如果该d目录dirname(__FILE__) 没有x权限的话,不能切换成功的哦
PHP复制代码
 
        if (defined('STDIN'))
        {
                chdir(dirname(__FILE__));
        }
 
 
复制代码


要点:对一个文件是否有删除的权限 取决于对其所在目录是否有写的权限。

用户管理以及文件权限是一个很大的话题,小弟的能力有限,只能做以上的阐述了。

PHP复制代码
 
define('FOPEN_READ',                                                        'rb');
define('FOPEN_READ_WRITE',                                                'r+b');
define('FOPEN_WRITE_CREATE_DESTRUCTIVE',                'wb');
define('FOPEN_READ_WRITE_CREATE_DESTRUCTIVE',        'w+b');
define('FOPEN_WRITE_CREATE',                                        'ab');
define('FOPEN_READ_WRITE_CREATE',                                'a+b');
define('FOPEN_WRITE_CREATE_STRICT',                        'xb');
define('FOPEN_READ_WRITE_CREATE_STRICT',                'x+b');
 
 
复制代码

PHP基础
FOPEN 打开文件的模式


模式 可读?可写?   文件指针 截断?创建?
r    Y   N    开始 N N
r+    Y   N    开始 N N
w    N   Y   开始 Y Y
w+    Y   Y   开始 Y Y
a    N   Y   结尾 N Y
a+    Y   Y   结尾 N Y
x   N   Y  开始 Y
x+   Y   Y  开始 Y

     r = read  , w = write ,    a = append , x  = ?  谁告诉我一下 是不是extend ?


在非POSIX 系统中, 如WIN, 在打开二进制文件时,需要在模式中添加一个b = binary ,因此总是加个b,保证代码在Unix和Windows 中都能运行。(POSIX  = 可移植系统接口 FOR UNIX。)

$fh = fopen('$filename', $mode)  模式作为FOPEN的第二个参数,决定了FOPEN的行为.

评分

参与人数 1威望 +5 收起 理由
Hex + 5 赞一个!

查看全部评分

本版积分规则