touch

(PHP 3, PHP 4, PHP 5)

touch -- 设定文件的访问和修改时间

说明

bool touch ( string filename [, int time [, int atime]] )

尝试将由 filename 给出的文件的访问和修改时间设定为给出的时间。如果没有给出可选参数 time,则使用当前时间。这和 utime(有时也叫做 utimes)所作的等价。如果给出了第三个参数 atime,则给定文件的访问时间会被设为 atime。注意访问时间总是会被修改的,不论有几个参数。

如果文件不存在,则会被创建。如果成功则返回 TRUE,失败则返回 FALSE

例子 1. touch() 例子

<?php
if (touch($FileName)) {
    echo
"$FileName modification time has been changed to present time";
} else {
    echo
"Sorry, could not change modification time of $FileName";
}
?>


add a note add a note User Contributed Notes
Charles Belov
19-Jul-2006 09:10
Update the access time without updating the modified time:

Unix command: touch -a filename

PHP: touch(filename, date('U', filemtime(filename)), time())
spam at webmastersguide dot com
01-Sep-2005 08:09
If you're going to go around deleting (unlinking) files
that you don't own just in order to change the modification
time on the file, you darn well better chown() the file
back to it's original ownership after you are done and
chmod() it back to it's correct permissions.  Otherwise
you will almost certainly break things.  Additionally the
code listed for touch()ing a file you don't own should
set the file creation time back to it's original time if
what is wanted is to just change the modification time.
Also, the code listed will break things if there is an i/o
error such as disk full or too many files in the directory.
Here's how the code SHOULD be written:

Create the new file FIRST, rather than last, with a different
name such as $file.tmp.
Read the ownership, permissions, and creation time of the old file.
Set permissions and creation time of the new file the same as the old.
Rename the new file to the name of the old.
chown() the new file to the user that owned the file it's replacing.

Please be careful adding to the documentation if you've
never taken programming 101.
rf_public at yahoo dot co dot uk
26-Jul-2005 03:19
Note: the script to touch a file you don't own will change it's owner so ensure permissions are correct or you could lose access to it
guy at forster design dot com
12-May-2005 06:42
Here's a little workaround that allows the PHP user to touch a file it doesn't own:

<?php

   $target_file
= "/path/to/file/filename.txt"; //system filepath to your file
  
$file_content = implode("",file($target_file));
   @
unlink($target_file);
   if(
$savetofile = fopen($target_file, "w")) {
      
fputs($savetofile, $file_content);
      
fclose($savetofile);
   }
  
$new_date = strtotime("23 April 2005"); // set the required date timestamp here
  
touch($target_file,$new_date);
 
?>

Of course, PHP needs to have write access to the folder containing the file you want to touch, but that should be easy to arrange.
feathern at yahoo dot com
14-Aug-2002 06:31
Neat little script that will give you a list of all modified files in a certain folder after a certain date:

$filelist = Array();
$filelist = list_dir("d:\\my_folder");
for($i=0;$i<count($filelist);$i++){
   $test = Array();
   $test = explode("/",date("m/d/Y",filemtime($filelist[$i])));
//example of files that are later then
//06/17/2002
   if(($test[2] > 2001) && ($test[1] > 16) && ($test[0] > 5)){
       echo $filelist[$i]."\r\n";
   }
   clearstatcache();
}
function list_dir($dn){
   if($dn[strlen($dn)-1] != '\\') $dn.='\\';
   static $ra = array();
   $handle = opendir($dn);
   while($fn = readdir($handle)){
       if($fn == '.' || $fn == '..') continue;
       if(is_dir($dn.$fn)) list_dir($dn.$fn.'\\');
       else $ra[] = $dn.$fn;
   }
   closedir($handle);
   return $ra;
}
emilebosch at hotmail dot com
07-Oct-2001 06:41
To spare you ppl couple of hours of valuable time, you can only TOUCH a file that you own! Usually PHP is *nobody*
Warm regards,
Emile Bosch
master at dreamphp dot com
16-May-2001 02:23
$filename = "test.dat";
if (!file_exists($filename)) {
  touch($filename); // Create blank file
  chmod($filename,0666);
}