5ucms论坛

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 5420|回复: 0
打印 上一主题 下一主题

[微擎函数] 检测目录可读写执行权限的微擎函数local_writeable($dir)

[复制链接]

670

主题

785

帖子

8243

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
8243
跳转到指定楼层
楼主
发表于 2017-5-30 08:21:21 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
函数名:local_writeable($dir)

参数:$dir 等待检测的目录

文件:/install.php

返回值:1/0,即真或假。

作用:检测目录(文件夹)$dir是否有可读写执行权限。
有时候我们对一个网站目录需要有可读写执行权限,这样可生成网页或写入内容。

  如何判断一个目录(文件夹)有读写权限?方法很简单只需要在这个目录(文件夹)创建一个文件试试,如果创建成功则说明这个目录可以读写。

  特别是在安装程序里面一般在安装程序前都要对一些目录(文件夹)进行检测,以判断这些目录有没有读写权限,这样在安装程序时就可以在这些目录里面创建目录写文件了。

函数分析

  1)设置默认返回值$writeable:
  1. $writeable = 0;
复制代码



  因为,我们不知道要检测的目录$dir是不是有权限,所以,在判断前往往先设置一下可能的值,这里假设要检测的目录$dir是不可写的,如果不可写再进行处理,如果可写的话再把$writeable的值重新赋值为1。

  2)判断$dir目录是否存在:

  1.   if(!is_dir($dir)) {
  2.         @mkdir($dir, 0777);
  3.     }
复制代码



  如果要检测的目录$dir根本就不是一个目录(文件夹),则重新创建这个目录$dir。

  这里使用了函数mkdir($dir,0777),这个函数第二个参数可以不写,默认就是这个参数,此函数的作用是创建可读写执行权限的目录$dir。

  3)判断目录$dir是否可读写:

  如果$dir是一个目录,即条件if(is_dir($dir))成立,则向这个目录里面写入文件test.txt试试,看看能否写入文件,如果可以把test.txt文件写入到目录$dir里面,则说明目录$dir可写,否则,目录$dir不可读写。

  以写的方式打开文件test.txt:如果条件if(fopen("$dir/test.txt", 'w'))成立,则说明文件test.txt文件可写入目录$dir,从而说明了目录$dir是可写的。

  既然,已经证明了$dir目录可读写,那么,就关闭打开的资源:fclose($fp);

  最后,删除测试文件test.txt:unlink("$dir/test.txt");

  然后,把$writeable的值重置为1:$writeable = 1;

  否则,如果不能写入test.txt文件,则说明检测的目录$dir不能写入东西,从而说明此目录$dir不可写,故把$writeable设置成0。

  4)最后,返回$writeable的值:
return $writeable;
例子

  在根目录创建一个目录phpos,然后,设置其权限为可写,如下图所示:



  调用函数测试:

  <?php

  1. $dir = './phpos/';
  2. echo local_writeable($dir);
复制代码

  结果:1

  若设置phpos目录为不可写,则提示下面的错误码:Warning: fopen(./phpos/test.txt): failed to open stream: Permission denied in

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|小黑屋|5ucms.com

GMT+8, 2024-5-2 19:08 , Processed in 0.140625 second(s), 34 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表