Некоторые функции PHP не работают должным образом на подключенном сетевом диске.

Я смонтировал сетевой диск (под управлением Windows Server 2008) в Ubuntu, добавив команду

//10.10.101.54/docflow /opt/lampp/htdocs/mount cifs user=administrator,password=wbaZaja43ik,rwx,user,auto,file_mode=6777,dir_mode=6777,uid=1000,gid=1000

в /etc/fstab, но возникают проблемы с использованием PHP-функций is_file() или is_dir() для файлов и каталогов на подключенном диске. Обе эти функции возвращают FALSE при вызове существующих файлов или каталогов - правильные пути проверяются функцией file_exists(), которая работает правильно. PHP работает под пользователем «администратор» и имеет все привилегии, необходимые для манипулирования.

Есть идеи, как это решить?

Спасибо!


person Matúš Matula    schedule 03.05.2012    source источник


Ответы (1)


Цитата из digitalaudiorock в комментариях gmail dot com в руководстве по php:

Просто примечание для всех, кто сталкивается с тем, что is_dir() возвращает false в точках монтирования CIFS или каталогах в этих точках монтирования в ядрах 2.6.31 и более новых: по-видимому, в новых ядрах они начали использовать опцию CIFS serverino по умолчанию. С общими ресурсами Windows это приводит к огромным числам инодов и, по-видимому, может привести к тому, что is_dir() вернет false. Добавление параметра noserverino к монтированию CIFS предотвратит это. Это может произойти только на 32 системах, но у меня нет 64-битной установки для тестирования.

person Mark Baker    schedule 04.05.2012
comment
Марк, не могу отблагодарить вас достаточно! Теперь работает как шарм. Спасибо! - person Matúš Matula; 04.05.2012
comment
Спасибо! Мы столкнулись с этой проблемой при запуске composer install в CentOS с использованием PHP/Laravel/Composer (ошибка заключалась в том, что Composer не смог найти файл composer.json в ...). Вариант noserverino сделал свое дело. - person Chris Schmich; 23.10.2014