使用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 相关文章推荐
一些PHP写的小东西
Dec 06 PHP
php购物网站支付paypal使用方法
Nov 28 PHP
那些年一起学习的PHP(二)
Mar 21 PHP
基于PHP生成静态页的实现方法
May 10 PHP
php错误级别的设置方法
Jun 17 PHP
分享PHP header函数使用教程
Sep 05 PHP
ThinkPHP中的create方法与自动令牌验证实例教程
Aug 22 PHP
PHP中foreach()用法汇总
Jul 02 PHP
Cygwin中安装PHP方法步骤
Jul 04 PHP
php socket通信简单实现
Nov 18 PHP
php传值方式和ajax的验证功能
Mar 27 PHP
php实现留言板功能(会话控制)
May 23 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代码把全角数字转为半角数字
2007/12/10 PHP
PHP常用代码大全(新手入门必备)
2010/06/29 PHP
PHP 删除文件与文件夹操作 unlink()与rmdir()这两个函数的使用
2011/07/17 PHP
PHP实现的json类实例
2015/07/28 PHP
CI框架中类的自动加载问题分析
2016/11/21 PHP
php实现微信分享朋友链接功能
2019/02/18 PHP
JavaScript 异步调用框架 (Part 3 - 代码实现)
2009/08/04 Javascript
javascript闭包的高级使用方法实例
2013/07/04 Javascript
探讨js字符串数组拼接的性能问题
2014/10/11 Javascript
让angularjs支持浏览器自动填表
2014/11/10 Javascript
删除Javascript Object中间的key
2014/11/18 Javascript
window.open()实现post传递参数
2015/03/12 Javascript
javascript创建对象、对象继承的实用方式详解
2016/03/08 Javascript
jQuery自定义数值抽奖活动代码
2016/06/11 Javascript
AngularJS包括详解及示例代码
2016/08/17 Javascript
利用Node.JS实现邮件发送功能
2016/10/21 Javascript
Angular2库初探
2017/03/01 Javascript
微信小程序自定义底部弹出框
2020/11/16 Javascript
nodejs对mongodb数据库的增加修删该查实例代码
2020/01/05 NodeJs
快速了解Vue父子组件传值以及父调子方法、子调父方法
2020/07/15 Javascript
[02:03]完美世界DOTA2联赛10月30日赛事集锦
2020/10/31 DOTA
Python第三方库的安装方法总结
2016/06/06 Python
python3爬取数据至mysql的方法
2018/06/26 Python
python和mysql交互操作实例详解【基于pymysql库】
2019/06/04 Python
Python greenlet和gevent使用代码示例解析
2020/04/01 Python
PyTorch中model.zero_grad()和optimizer.zero_grad()用法
2020/06/24 Python
Python操作Word批量生成合同的实现示例
2020/08/28 Python
购买美国制造的相框和画框架:Picture Frames
2018/08/14 全球购物
工程力学专业毕业生求职信
2013/10/06 职场文书
公共机构节能宣传周活动总结
2014/07/09 职场文书
光学与应用专业毕业生求职信
2014/09/01 职场文书
群众路线剖析材料
2014/09/30 职场文书
幼儿园校园小喇叭广播稿
2014/10/17 职场文书
政风行风评议个人心得体会
2014/10/29 职场文书
关于mysql中时间日期类型和字符串类型的选择
2021/11/27 MySQL
Javascript中async与await的捕捉错误详解
2022/03/03 Javascript