使用PHP维护文件系统


Posted in PHP onOctober 09, 2006

PHP有很多与文件系统相关的函数,不仅可以帮助你打开文件,还可以显示目录内容、移动文件等。很多人甚至使用PHP写出了基于Web的文件管理器。

首先需要提醒一些关于文件路径的东西:在Windows你可以在文件路径中使用斜线“/”或反斜线“\”,而其他操作系统仅使用”/”。出于兼容性考虑,以下实例使用“/”的表示方法:

下面的简单脚本显示了一个基本的目录列表。注释在代码中并解释了每一步:

<? /* 在变量 $dir_name中给出希望访问的目录完整路径*/

$dir_name = "/home/me/";

/* 创建句柄,打开给定目录的结果*/

$dir = opendir($dir_name);

/* 启动一段文本添加到将要放置列表元素(文件名)的地方 */

$file_list = "<ul>";

/* 使用while语句,读取所打开目录的所有元素。如果文件名既非“.”及“..”则在列表中输出文件名*/

while ($file_name = readdir($dir)) {

if (($file_name != ".") && ($file_name != "..")) {

$file_list .= "<li>$file_name";

}

}

/* 终结列表 */

$file_list .= "</ul>";

/* 关闭打开的目录句柄并结束PHP代码段*/

 
closedir($dir);

?>

<!-- Start your HTML -->

<HTML>

<HEAD>

<TITLE>Directory Listing</TITLE>

</HEAD>

<BODY>

<!-- Use PHP to print the name of the directory you read -->

<P>Files in: <? echo "$dir_name"; ?></p>

<!-- Use PHP to print the directory listing -->

<? echo "$file_list"; ?>

</BODY>

</HTML>

恭喜,这时已经有了一个目录列表。需要记住,要读取目录或文件(马上你会见到)中的内容用户所在的PHP运行平台必须至少对目录或文件有read权限。

以下例子为如何复制文件:

<? /* 将需要复制的文件路径放入变量$original,复制的目标路径放入变量$copied */

$original = "/home/me/mydatabasedump";

$copied = "/archive/mydatabasedumo_1010";

/* 使用函数copy() 复制源文件至目的地,或以输出错误信息结束*/

@copy($original, $copied) or die("Couldn't copy file.");

?>

示例脚本是备份系统的第一步。当脚本运行时,出于安全考虑它先将数据库复制到不同地点。通过对crontab的修改,你可以在选定时间执行此文件而无需用户介入。

假设系统上已有Lynx,你可以创建crontab入口以运行Lynx并访问文件。访问文件将运行脚本并创建复制文件。以下例子将在早晨5点运行脚本,然后关闭Lynx:

0 5 * * * [username] lynx -dump http://localhost/copyfile.php 1>/dev/null 2>&1

如果你运行的是PHP的CGI版本,你可以跳过Lynx部分并参考二进制文件:

0 5 * * * [username] php /path/to/copyfile.php 1>/dev/null 2>&1

--------------------------------------------
本文作者:Julie Meloni 是i2i Interactive的技术主管,及Linux和开放源代码社区的大力推动者。她撰写了很多关于PHP及其他技术的书籍,并成为对CNET Builder.com具有长期贡献的专家。

PHP 相关文章推荐
二十行语句实现从Excel到mysql的转化
Oct 09 PHP
新浪微博API开发简介之用户授权(PHP基础篇)
Sep 25 PHP
PHP超级全局变量数组小结
Oct 04 PHP
PHP中的插件机制原理和实例
Jul 08 PHP
PHP中strnatcmp()函数“自然排序算法”进行字符串比较用法分析(对比strcmp函数)
Jan 07 PHP
Zend Framework实现留言本分页功能(附demo源码下载)
Mar 22 PHP
浅谈PHP eval()函数定义和用法
Jun 21 PHP
php+resumablejs实现的分块上传 断点续传功能示例
Apr 18 PHP
Laravel 实现密码重置功能
Feb 23 PHP
PHP设计模式之原型模式定义与用法详解
Apr 03 PHP
Laravel核心解读之异常处理的实践过程
Feb 24 PHP
PHP+RabbitMQ实现消息队列的完整代码
Mar 20 PHP
跟我学小偷程序之成功偷取首页(第三天)
Oct 09 #PHP
在apache下限制每个虚拟主机的并发数!!!!
Oct 09 #PHP
PHP4之真OO
Oct 09 #PHP
第十一节 重载 [11]
Oct 09 #PHP
第十二节 类的自动加载 [12]
Oct 09 #PHP
第十四节 命名空间 [14]
Oct 09 #PHP
学习使用PHP数组
Oct 09 #PHP
You might like
为PHP初学者的8点有效建议
2010/11/20 PHP
分享一个Laravel好用的Cache宏
2015/03/02 PHP
浅谈PHP错误类型及屏蔽方法
2017/05/27 PHP
thinkphp查询,3.X 5.0方法(亲试可行)
2017/06/17 PHP
PHP实现可添加水印与生成缩略图的图片处理工具类
2018/01/16 PHP
Nigma vs Alliance BO5 第三场2.14
2021/03/10 DOTA
javascript 三种编解码方式
2010/02/01 Javascript
javasript实现密码的隐藏与显示
2015/05/08 Javascript
javascript中不易分清的slice,splice和split三个函数
2016/03/29 Javascript
JS设置CSS样式的方式汇总
2017/01/21 Javascript
js中的事件委托或是事件代理使用详解
2017/06/23 Javascript
jQuery 实现鼠标画框并对框内数据选中的实例代码
2017/08/29 jQuery
在原生不支持的旧环境中添加兼容的Object.keys实现方法
2017/09/11 Javascript
vue实现a标签点击高亮方法
2018/03/17 Javascript
vux uploader 图片上传组件的安装使用方法
2018/05/15 Javascript
分享5个顶级的JavaScript Ajax组件库
2018/09/16 Javascript
微信小程序tabbar底部导航
2018/11/05 Javascript
细述Javascript的加法运算符的具体使用
2019/10/18 Javascript
vue设置一开始进入的页面教程
2019/10/28 Javascript
基于javascript实现贪吃蛇经典小游戏
2020/04/10 Javascript
[58:23]LGD vs TNC 2019国际邀请赛小组赛 BO2 第一场 8.15
2019/08/16 DOTA
详解pandas的外部数据导入与常用方法
2019/05/01 Python
Python时间差中seconds和total_seconds的区别详解
2019/12/26 Python
如何在python开发工具PyCharm中搭建QtPy环境(教程详解)
2020/02/04 Python
Mysql数据库反向生成Django里面的models指令方式
2020/05/18 Python
css3设置box-pack和box-align让div里面的元素垂直居中
2014/09/01 HTML / CSS
html5的画布canvas——画出弧线、旋转的图形实例代码+效果图
2013/06/09 HTML / CSS
Richards网上商店:当代时尚,遍布巴西
2019/11/03 全球购物
应届生的求职推荐信范文
2013/11/30 职场文书
迎国庆横幅标语
2014/10/08 职场文书
特种设备安全管理制度
2015/08/06 职场文书
缅怀先烈主题班会
2015/08/14 职场文书
2016公务员年度考核评语
2015/12/01 职场文书
MySQL系列之四 SQL语法
2021/07/02 MySQL
MySQL非空约束(not null)案例讲解
2021/08/23 MySQL
LeetCode189轮转数组python示例
2022/08/05 Python