在开始介绍 PHP 的档案系统相关功能之前,我们要先理清一件事情:在 Windows操作系统里面,档案路径可以使用斜线(/)或者反斜线(\)来表示,但是在其它操作系统里面我们只会使用到斜线。为了保持统一性,下面的例子里面的档案路径都是使用斜线。
下面的例子程序我将教大家基本的目录内容显示功能,每个步骤都有批注,请直接阅读。
复制代码 代码如下:
<? /* $dir_name 这个变量的值是你想要读取的目录的完整路径 */
$dir_name = "/home/me/";
/* opendir()函数会开启某个目录,并且传回一个参考值(handle)让我们可以用来在程序中参照到该目录 */
$dir = opendir($dir_name);
/* 开始建立一个字符串,这个字符串包含了 HTML 的列表卷标,用来显示目录中的文件名称。 */
$file_list = "<ul>";
/* 使用一个 while 循环叙述将前面开启的目录中的档案全部读取一遍。如果读取到的档名不是「.」或者「..」,就把该档名写入前面提到的字符串里面去。 */
while ($file_name = readdir($dir)) {
if (($file_name != ".") && ($file_name != "..")) {
$file_list .= "<li>$file_name";
}
}
/* 替 HTML 列表卷标加上结尾 */
$file_list .= "</ul>";
/* 关闭之前开启的目录并且结束这段 PHP 程序 */
closedir($dir);
?>
<!-- HTML原始码从这里开始 -->
<HTML>
<HEAD>
</HEAD>
<BODY>
<!-- 使用 PHP 程序来将我们所读取的目录名称显示在页面上 -->
<P>Files in: <? echo "$dir_name"; ?></p>
<!-- 使用 PHP 程序将该目录中读取到的文件名显示在页面上 -->
<? echo "$file_list"; ?>
</BODY>
</HTML>
经过上面几步,你已经成功把某个目录中的文件名称显示在网页上了。但你要记住一点:要读取某个目录或者档案(读取档案内容的做法稍后会介绍),PHP 本身执行所用的身分必须至少拥有该目录或者档案的读取权限才行,否则系统会显示权限不足的错误讯息。
下一个例子我将教大家如何复制一个档案:
复制代码 代码如下:
<? /* 变量$orginal储存源文件的完整路径,变量$copied储存复制过去的新档案的完整路径 */
$original = "/home/me/mydatabasedump";
$copied = "/archive/mydatabasedumo_1010";
/* 呼叫 copy() 函数把档案从原始位置复制一份到新的位置去。如果无法复制,那么便终止程序的执行并且显示错误讯息。 */
@copy($original, $copied) or die("无法复制档案。");
?>
上面的例子程序可以用来扩充成为一个档案备份系统程序。当这个程序执行的时候,它会将数据库的数据文件复制到其它目录下面做为备份之用。只要修改系统的排程档案内容(crontab),我们便可以让这个程序自动在每天的固定时间执行一次,达到系统自动备份,不需要人工手动执行。
如果你的系统上面有安装 Lynx 软件(Lynx 是一种纯文字的 Web 浏览器)的话,你可以在系统排程档案里面加入下面这笔记录来让系统在固定时间自动激活 Lynx 并且呼叫我们之前写好的 PHP 备份程序。当 Lynx 呼叫(浏览)我们的 PHP 程序的时候,该程序就会被执行,并且产生备份文件。下面这个例子教你如何在每天早晨五点钟执行我们的备份程序,并且在执行完以后自动将 Lynx 程序关闭:
0 5 * * * [username] lynx -dump 1>/dev/null 2>&1
如果你的系统安装的是 CGI 版本的 PHP,那么你可以直接呼叫 PHP 执行档而不需要通过 Lynx 来呼叫我们的 PHP 程序
php中include和require有什么区别
平常是没区别的.
当要加载的文件不存在时候, include会给一个warning警告, 然后继续运行. 而require则会给一个fatal error, 直接结束脚本
=====================================================
php手册里面是这样说的:
require() 和 include() 除了怎样处理失败之外在各方面都完全一样。include() 产生一个警告而 require() 则导致一个致命错误。换句话说,如果想在丢失文件时停止处理页面,那就别犹豫了,用 require() 吧。include() 就不是这样,脚本会继续运行。
您可能感兴趣的文章: