使用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程序中的常见漏洞进行攻击
Oct 09 PHP
PHP+DBM的同学录程序(5)
Oct 09 PHP
如何隐藏你的.php文件
Jan 04 PHP
PHP 导出数据到淘宝助手CSV的方法分享
Feb 27 PHP
PHP程序级守护进程的实现与优化的使用概述
May 02 PHP
php htmlspecialchars()与shtmlspecialchars()函数的深入分析
Jun 05 PHP
编写Smarty插件在模板中直接加载数据的详细介绍
Jun 26 PHP
使用Curl进行抓取远程内容时url中文编码问题示例探讨
Oct 29 PHP
CodeIgniter CLI模式简介
Jun 17 PHP
thinkPHP使用pclzip打包备份mysql数据库的方法
Apr 30 PHP
cakephp常见知识点汇总
Feb 24 PHP
golang实现php里的serialize()和unserialize()序列和反序列方法详解
Oct 30 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
使用Apache的rewrite技术
2006/06/22 PHP
PHP简介
2006/10/09 PHP
PHP验证码类代码( 最新修改,完全定制化! )
2010/12/02 PHP
php版微信js-sdk支付接口类用法示例
2016/10/12 PHP
laravel框架 laravel-admin上传图片到oss的方法
2019/10/13 PHP
JsRender for object语法简介
2014/10/31 Javascript
JavaScript实现向setTimeout执行代码传递参数的方法
2015/04/16 Javascript
Javascript实现网络监测的方法
2015/07/31 Javascript
以WordPress为例讲解jQuery美化页面Title的方法
2016/05/23 Javascript
jquery实现简单Tab切换菜单效果
2020/07/17 Javascript
获取input标签的所有属性的方法
2016/06/28 Javascript
AngularJS基础 ng-readonly 指令简单示例
2016/08/02 Javascript
总结javascript中的六种迭代器
2016/08/16 Javascript
js 实现省市区三级联动菜单效果
2017/02/20 Javascript
JS中cookie的使用及缺点讲解
2017/05/13 Javascript
angular2系列之路由转场动画的示例代码
2017/11/09 Javascript
bootstrap表格内容过长时用省略号表示的解决方法
2017/11/21 Javascript
使用vue-cli3新建一个项目并写好基本配置(推荐)
2019/04/24 Javascript
vue props default Array或是Object的正确写法说明
2020/07/30 Javascript
js实现石头剪刀布游戏
2020/10/11 Javascript
Vue 实例中使用$refs的注意事项
2021/01/29 Vue.js
[52:22]EG vs VG Supermajor小组赛B组 BO3 第一场 6.2
2018/06/03 DOTA
Python中为feedparser设置超时时间避免堵塞
2014/09/28 Python
Python 专题一 函数的基础知识
2017/03/16 Python
使用python Fabric动态修改远程机器hosts的方法
2018/10/26 Python
OpenCV 模板匹配
2019/07/10 Python
Python基于Dlib的人脸识别系统的实现
2020/02/26 Python
Python依赖包迁移到断网环境操作
2020/07/13 Python
详解Pycharm与anaconda安装配置指南
2020/08/25 Python
澳洲最大的时尚奢侈品电商平台:Cettire
2020/06/15 全球购物
STRATHBERRY苏贝瑞包包官网:西班牙高级工匠手工打造
2020/11/10 全球购物
公司培训欢迎词
2014/01/10 职场文书
护士思想汇报
2014/01/12 职场文书
《王二小》教学反思
2014/02/27 职场文书
民政局标准版离婚协议书
2014/12/01 职场文书
2015年秋季小学开学典礼主持词
2015/07/16 职场文书