PHP RecursiveIteratorIterator在Mac OSx上无法获取ext.HDD中的所有文件(仅限)

时间:2014-04-04 12:45:10

标签: php macos

我有一个运行路径的PHP文件(由用户手动输入),搜索该路径中的所有文件并获取其信息(大小,日期等)。该信息将被插入到DB中。我在这里附上了示例图片:php filemtime, filectime, fileatime shows different value

现在,在Windows PC上,路径是否来自外部硬盘,脚本在我的电脑上运行完美。问题是我的客户端PC正在使用Mac OS X.如果路径属于内部HDD,他可以运行脚本,但不知何故,当他使用ext.hdd时,他只能获取这些信息:

enter image description here

他说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]'作为路径

0 个答案:

没有答案