|
touch
Sets access and modification time of file
(PHP 4, PHP 5)
Example 672. touch() example<?php Related Examples ( Source code ) » touch Examples ( Source code ) » HttpRequest class Simple GET request Examples ( Source code ) » HttpRequest An multipart POST request Code Examples / Notes » touchcharles belov
Update the access time without updating the modified time: Unix command: touch -a filename PHP: touch(filename, date('U', filemtime(filename)), time()) emilebosch
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 seocab
The script for modifying the access time without modifying the modified time is overly complicated: <? touch($filename, date('U', filemtime($filename)), time()); ?> Since filemtime returns a UNIX timestamp, there is no need to call date('U') so the script could be simplified to: <? touch($filename,filemtime($filename),time()); ?> rf_public
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
feathern
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; } glen
In unix on the command-line, you can touch files you don't own - but like other comments on this page state - PHP's built in touch won't work. I simple alternative (on unix): <?php function touch_it_good($filename) { exec("touch {$filename}"); } ?> spam
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. guy
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. ilrazziatore85
Feathern wrote a little script for fetching files from a directory after a certain date. However the if statement (line 8) should be: if(($test[2] > 2002) || (($test[2] = 2002) && ($test[0] > 6)) || (($test[2] = 2002) && ($test[0] = 6) && ($test[1] > 17))){ echo $filelist[$i]."\r\n"; } Otherwise the script won't fetch lots of files it should. (In the example given, it should fetch all the files created after 06/17/2002, but the original script would miss files created 03/18/2003 or 11/01/2004) master
$filename = "test.dat"; if (!file_exists($filename)) { touch($filename); // Create blank file chmod($filename,0666); } |
Change Languagebasename chgrp chmod chown clearstatcache copy delete dirname disk_free_space disk_total_space diskfreespace fclose feof fflush fgetc fgetcsv fgets fgetss file_exists file_get_contents file_put_contents file fileatime filectime filegroup fileinode filemtime fileowner fileperms filesize filetype flock fnmatch fopen fpassthru fputcsv fputs fread fscanf fseek fstat ftell ftruncate fwrite glob is_dir is_executable is_file is_link is_readable is_uploaded_file is_writable is_writeable lchgrp lchown link linkinfo lstat mkdir move_uploaded_file parse_ini_file pathinfo pclose popen readfile readlink realpath rename rewind rmdir set_file_buffer stat symlink tempnam tmpfile touch umask unlink |