В окнах, я открываю реж, читать файлы, и для каждого файла, запустите стат, чтобы определить размер и т.д.PHP lstat не различает ярлыки в окнах
Проблема заключается в том, что, когда я бегу stat в папке SHORTCUT, она возвращается как ПАПКА, и я не вижу нигде в битовой маске mode
, которая могла бы указать это. Это верно для всех ярлыков папки в c:\Documents and Settings\myUserName\
.
Для этих ярлыков, is_file
возвращает false
, is_dir
возвращает true
и is_link
не поддерживается в XP.
Вот выдержка из моего кода (она была урезана, так что могут быть ошибки):
if(([email protected]($root))!==false){
while (false !== ($file = readdir($h))){
if(!($file=="." || $file=="..")){
if($stat = @lstat($root . $file)){
$ary[0] = $file;
$ary[1] = $root;
$ary[2] = Date("m/d/y H:i:s", $stat['mtime']);
if($stat['mode'] & 040000){
$ary[3]="dir";
$ary[4]=0;
}else{
$ary[3] ="file";
$ary[4] = $stat['size'];
}
echo(json_encode($ary));
}
}
}
}
Обойти это будет понятно ...
EDIT: решение Winterblood в почти сработало
Прежде всего - мое плохое - это машина win7.
Благодаря Winterblood для быстрого оборота - это работало на несколько ярлыков, и PHP руководство говорит только, что ... Впрочем,
C: \ Users \ MyUserName \ AppData \ Local Data \ Application
(и другие) все еще возвращаются в качестве каталогов, в то время как winSCP правильно воспринимает их как ярлыки. По сути, «режим» - 040777, что точно так же, как и многие реальные папки.
Любые другие предложения?
Горячий проклятый - я набрал маленький-ol '' l в свой код и услышал колокола ангелов. – alfadog67
Почти сделал это ... Я скорректировал свое оригинальное сообщение, чтобы отразить текущую ситуацию. – alfadog67
Насколько я знаю,% LocalAppData% была реальной папкой. Если lstat сообщает, что это настоящая папка, но WinSCP сообщает об этом в качестве ссылки, я бы стал больше подвергать сомнению программное обеспечение, а не язык. –