Я использую PHP на 32-битном Linux для обхода смонтированной удаленной файловой системы (CIFS), и я заметил, что функции Unix, связанные со статистикой, не работают (stat()
, filemtime()
, is_dir()
, и так далее).
Это отправная точка:
$ sudo mkdir /mnt/cifs-mount-point
$ sudo mount -t cifs -o user="user",password="password" //example.local/share /mnt/cifs-mount-point
И вот некоторые тесты:
<?php
stat('/mnt/cifs-mount-point/directory'); // This will rise a Warning and return false
is_dir('/mnt/cifs-mount-point/directory'); // Will return false
Я проверил то же самое в Bash, и он работает как ожидалось:
$ stat /mnt/cifs-mount-point
$ if [ -d /mnt/cifs-mount-point ] ; then echo "is dir"; fi
stat()
может не работать на смонтированных CIFS ‘в 32-битных системах, если вы не укажете опцию noserverino
при монтаже. Например:
mount -t cifs -o user="user",password="password",noserverino //example.local/share /mnt/cifs-mount-point
Другие функции, основанные на stat()
данные, такие как функции времени файла и is_dir()
затронуты так же.
Это происходит потому, что если вы не укажете опцию noserverino
удаленный индекс может быть 64-битным, и, следовательно, локальная система не может его обработать.
Других решений пока нет …