我有一个运行路径的PHP文件(由用户手动输入),搜索该路径中的所有文件并获取其信息(大小,日期等)。该信息将被插入到DB中。我在这里附上了示例图片:php filemtime, filectime, fileatime shows different value
现在,在Windows PC上,路径是否来自外部硬盘,脚本在我的电脑上运行完美。问题是我的客户端PC正在使用Mac OS X.如果路径属于内部HDD,他可以运行脚本,但不知何故,当他使用ext.hdd时,他只能获取这些信息:
他说PHP脚本没有捕获其他文件。这甚至可能吗?我的意思是,在Windows操作系统中,脚本运行正常,无论是内部驱动器还是外部驱动器。
RecursiveIteratorIterator
是否也会捕获隐藏文件?
修改
这是我的代码:
$Directory = new RecursiveDirectoryIterator($p);
$Directory->setFlags(RecursiveDirectoryIterator::SKIP_DOTS);
$objects = new RecursiveIteratorIterator($Directory);
foreach($objects as $path => $object){
clearstatcache();
$infos=array();
$today = date("Y-m-d H:i:s");
$filesize=mysql_real_escape_string(filesize($path));
$lastaccess=mysql_real_escape_string(date('Y-m-d H:i:s',fileatime($path)));
$lastmod =mysql_real_escape_string(date('Y-m-d H:i:s',filemtime($path)));
$itime =mysql_real_escape_string(date('Y-m-d H:i:s',filectime($path)));
$filetype =mysql_real_escape_string(filetype($path));
$fileowner=mysql_real_escape_string(fileowner($path));
$path_parts = pathinfo($path);
if(!isset($path_parts['extension'])) {
$ext='directory';
} else {
$ext=mysql_real_escape_string($path_parts['extension']);
}
$dirname=mysql_real_escape_string($path_parts['dirname']);
$basename=mysql_real_escape_string($path_parts['basename']);
$filename=mysql_real_escape_string($path_parts['filename']);
$inode=mysql_real_escape_string(fileinode($path));
$path=mysql_real_escape_string($path);
$queries = $this->dbQuery("insert into directory_listing(Path, Filesize, Last_Access, Last_Modified, File_Type, Directory_Name, Basename, Filename, Extension,File_Inode, Inode_Changed_Time, File_Owner) values ('".$path."','".$filesize." bytes','".$lastaccess."','".$lastmod."','".$filetype."', '".$dirname."', '".$basename."','".$filename."','".$ext."', '".$inode."', '".$itime."','".$fileowner."')");
}
$this->getDirectory();
现在,我的问题是,我可以使用localhost
在我的Windows 7 PC中运行此代码(客户端也使用localhost
但在Mac OS X上使用MAMP,如果确实重要,我的是XAMPP)
修改
客户说他输入了这种路径格式:Volumes / [partition name]
编辑
我们尝试了几个ext.HDD,其中只有一个可以阅读'用上面的代码......
修改
如果我们输入' / Volumes / [partition_name] / [somefile_in_partition]'作为路径