Newsgroup: it.comp.www.php
Titolo: is_dir mi ritorna "falso" su alcune directories

Questo script:
<inizio>-------------------------------------
clearstatcache();// just in case
$src="/mnt/vera/2014/04_apr/20140402/";
// ho provato CON e SENZA il "trailing slash": nulla cambia!
if (file_exists($src)) {
   echo "esiste ".$src;
   $m=is_dir($src);   
   if ($m) echo "<br>e' dir:".$m;
   else echo "<br>NON e' dir";
}
<fine>-------------------------------------
mi da':
esiste /mnt/vera/2014/04_apr/20140402/ 
NON e' dir 
 
da shell il comando "stat" sembra ok:
<inizio>-------------------------------------
cb@golemVMW ~ $ stat /mnt/vera/2014/04_apr/20140402/
  File: '/mnt/vera/2014/04_apr/20140402/'
  Size: 0         	Blocks: 0          IO Block: 16384  directory
Device: 19h/25d	Inode: 5901304608  Links: 2
Access: (0777/drwxrwxrwx)  Uid: (  999/   mysql)   Gid: (  999/   mysql)
Access: 2015-03-22 23:00:00.000000000 +0100
Modify: 2015-03-13 19:16:38.000000000 +0100
Change: 1940-10-24 04:26:18.955161600 +0200
 Birth: -
<fine>-------------------------------------
 
Invece un'altra directory (/mnt/vera/2014/03_mar/20140302/), nello stesso mount, funziona correttamente.
Lo "stat" mi sembra identico
<inizio>-------------------------------------
cb@golemVMW ~ $ stat /mnt/vera/2014/03_mar/20140302/
  File: '/mnt/vera/2014/03_mar/20140302/'
  Size: 0         	Blocks: 0          IO Block: 16384  directory
Device: 19h/25d	Inode: 
2512069504
  Links: 2
Access: (0777/drwxrwxrwx)  Uid: (  999/   mysql)   Gid: (  999/   mysql)
Access: 2015-03-22 23:00:00.000000000 +0100
Modify: 2015-03-13 19:16:36.000000000 +0100
Change: 1940-10-24 04:26:18.955161600 +0200
 Birth: -
<fine>-------------------------------------
 
/mnt/vera e' NTFS 
(in realta' e' un volume criptato con veracrypt, ultimo release, 
ma non credo che c'entri: sia 03_mar che 04_apr sono sullo stesso volume)
 
Ho googlato come un matto, ma senza successo.
Grazie a chiunque abbia voglia di aiutarmi !
 
 
Qui ulteriori info che potrebbero tornare utili:
 
-PHP Version 5.6.3
-System Linux golemVMW 3.13.0-24-generic #47-Ubuntu SMP Fri May 2 23:31:42 UTC 2014 i686 
 
cb@golemVMW ~ $ cat /etc/fstab
# /etc/fstab: static file system information.
.....
//
192.168.1.132/V
 /mnt/vera cifs credentials=/root/.veracredentials,iocharset=utf8,nobrl,gid=999,uid=999,file_mode=0777,dir_mode=0777 0 0
----------------------------------------------------------------
cb@golemVMW ~ $ mount -v
.....
//
192.168.1.132/V
 on /mnt/vera type cifs (rw)
 


La butto lì, magari dico 'na ca**ata.
 
Gli inode mi sembrano incredibilmente grossi, per me hai un problema sui
64 bit.
Googleando su questo ho trovato un vecchio bug di PHP
(
https://bugs.php.net/bug.php?id=51266
) dove suggeriscono di aggiungere un
"noserverino" alle opzioni di mount.
 
Prova così, magari risolvi con poco ;)
 
Ciao!

grande funzia.
GRAZIE!
ti devo piu' di qualcosa !!!!!
(evidentemente non si googla mai abbastanza!)


 (evidentemente non si googla mai abbastanza!)
 
eh, capirai..
 
Più che altro è curioso che in cinque anni 'sta cosa non l'abbiano messa a
posto, visto che giri con la 5.6.3...
 
Per curiosità, sei in un ambiente a 32bit? Perché a questo punto, molto
probabilmente, visto che il problema è sulla gestione interna degli inode,
non solo is_dir, ma *tutte* le funzioni di filesystem non funzionano a dovere
su CIFS, che è una cosa che vale la pena ricordare in caso si presenti un
problema simile.. ;)
 
Ciao!

 problema simile.. ;)
Ebbene si':e' un linux a 32 bit sotto vmware 
...solo xche' non sono riuscito a installarlo a 64 e non ho capito xche' :-(
VMW e' 64, ma non sono riuscito a installarci sotto nessun linux a 64 (ho provato 2 o 3 distribuzioni)
Prima o poi riprovero' a prendere il toro x le corna ;-)