PHP has many file system-related functions, which not only help you open files, but also display directory contents, move files, etc. Many people have even written web-based file managers using PHP.
First of all, I need to remind you something about the file path: in Windows you can use slash "/" or backslash "\" in the file path, while other operating systems only use "/". For compatibility reasons, the following examples use the "/" representation:
The following simple script displays a basic directory listing. Comments are in the code and explain each step:
<? /* Give the full path to the directory you wish to access in the variable $dir_name*/
$dir_name = /home/me/;
/* Create a handle and open the result of the given directory* /
$dir = opendir($dir_name);
/* Start adding a piece of text to the place where the list element (file name) will be placed */
$file_list = <ul>;
/* Use the while statement to read all elements of the opened directory . If the file name is neither "." nor "..", then output the file name in the list */
while ($file_name = readdir($dir)) {
if (($file_name != .) && ($file_name != ..)) {
$file_list .= <li>$file_name;
}
}
/* Finalize the list*/
$file_list .= </ul>;
/* Close the open directory handle and end the PHP code segment*/
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>
At this time, there is already a directory listing. You need to remember that to read the contents of a directory or file (you will see it soon), the PHP running platform where the user is located must have at least read permission on the directory or file.
The following example shows how to copy files:
<? /* Put the path of the file to be copied into the variable $original, and the target path to be copied into the variable $copied */
$original = /home/me/mydatabasedump;
$copied = /archive/mydatabasedumo_1010;
/* Use the function copy() to copy the source file to the destination, or end with outputting an error message*/
@copy($original, $copied) or die(Couldn't copy file.);
?>
The sample script is the first step in backing up the system. When the script runs, it first copies the database to a different location for security reasons. By modifying the crontab, you can execute this file at a selected time without user intervention.
Assuming Lynx is already on the system, you can create a crontab entry to run Lynx and access files. Accessing the file will run the script and create a copy of the file. The following example will run the script at 5 o'clock in the morning and then shut down Lynx:
0 5 * * * [username] lynx -dump http://localhost/copyfile.php 1>/dev/null 2>&1
if you are running PHP CGI version, you can skip the Lynx part and refer to the binaries:
0 5 * * * [username] php /path/to/copyfile.php 1>/dev/null 2>&1