现在的位置: 首页 > 综合 > 正文

关于PHP的chmod()函数

2014年11月26日 ⁄ 综合 ⁄ 共 1307字 ⁄ 字号 评论关闭

php文档:

bool chmod ( string filename, int mode)

尝试将 filename 所指定文件的模式改成 mode 所给定的。

注意 mode 不会被自动当成八进制数值,而且也不能用字符串(例如 "g+w")。要确保正确操作,需要给 mode 前面加上 0:

 

 

<?php
chmod
("/somedir/somefile", 755);   // 十进制数,可能不对
chmod ("/somedir/somefile", "u+rwx,go+rx"); // 字符串,不对
chmod ("/somedir/somefile", 0755);  // 八进制数,正确的 mode 值
?>

 

 

mode 参数包含三个八进制数按顺序分别指定了所有者、所有者所在的组以及所有人的访问限制。每一部分都可以通过加入所需的权限来计算出所要的权限。数字 1 表示使文件可执行,数字 2 表示使文件可写,数字 4 表示使文件可读。加入这些数字来制定所需要的权限。

 

CHMOD是PHP中一个函数,不过,似乎在程序中还比较少用到
更多的是在FTP上使用。
在FTP上,可以看到,其实CHMOD只有三个组
[说明一下,此函数用8进制代数字表权限]
三个组按顺序分别是:所有权,组,公共
比如,764,意思是所有权7,组6,公共4,代表三组的权限
而各组的数字是这样的算法
7=1+2+4=1*2^0+1*2^1+1*2^2
每组的属性,是1 2 4的互相组合而成
下面是三个数字代表的权限
读取[read]:4
写入[write]:2
执行[execute]:1
现在大家知道,一个字代表的权限了吧?
当然,也会有出现 0的时候,0,当然是没任何权限了
777不用说了,全权。
其实,现在看来,为使程式安全一点,设置属性,应该766就够了
一些空间要求用户要把CGI程式权限设置为755
因为上传后的默认权限是没这么高的
仅仅是644,显然,其中是不包括执行权的,所以每组都必须 加上1,为755
在程式中使用chmod的时候,建议在前面补0,如:chmod(/"filename/",0777) ;
 

温习下各中进制的转换:

2进制只有0、1两个数,遇到2就进1,比如二进制里的10就等于10进制里的2。8进制就是遇8进一,16进制就是遇16进一。
2进制到10进制,个位是2的0次幂,十位是2的1次幂,以此类推,最后结果相加就是所要的10进制数,例如:1010110=64*1+32*0+16*1+8*0+4*1+2*1+1*0=86。同样的方法,8进制、十六进制,就是将2的几次幂换成8的几次幂或16的几次幂。
10进制到2进制,采用短除法,比如25换成二进制数,首先用25除以2,商12余1,先不管余数,继续除则有以下结果,商6余0,商3余0,商1余1,商0余1。这个二进制数就是倒着书写这些余数,即11001。8进制、16进制方法雷同,不再叙述。
最后,给出个进制数的组成:
2进制:0,1
8进制:0,1,2,3,4,5,6,7
10进制:0,1,2,3,4,5,6,7,8,9
16进制:0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F

以上内容都上网上收集的,备份一个在BLOG,怕哪天年纪大了什么都忘记了.....

抱歉!评论已关闭.