Я использую человечность на виртуальной машине VMware для тестирования моих php проектов. Я там установил nginx, php7.0-fpm, mysql.
Мои доли расположены на окнах 10 и смонтированы к виртуальной машине с помощью cifs и fstab:
//192.168.100.1/projects /mnt/projects cifs credentials=/home/magic/.smbcredentials,cache=none,file_mode=0777,dir_mode=0777,noperm,rsize=16384,wsize=16384,noacl,sec=ntlm,nobrl 0 0
Это работает отлично большую часть времени. Но на большом проекте, где многие регистрируют, должен быть считан из компиляции, я получаю ошибку ввода/вывода во время жизни сценария PHP:
Warning: include(/mnt/projects/magento2/magento2/vendor/magento/framework/Component/ComponentRegistrarInterface.php): failed to open stream: Input/output error in /mnt/projects/magento2/magento2/vendor/composer/ClassLoader.php on line 444
Ошибка при соединении со случайным файлом каждый раз. Обычно проблема происходит, когда существует несколько запросов, прибывающих в php-fpm., например,
Проблема не происходит, когда нет никаких параллельных запросов php. Таким образом, когда существует только единственный запрос - php, успешно завершает работу компиляции. (не часто, но в единственном запросе ошибка также происходит),
Это ведет себя как ошибка, прибывающая из сетевого уровня. Что-то уничтожающее процесс считывания файла, когда новый запрос чтения файла обнаруживается.
Я рыл в конфигурацию самбы, конфигурацию CIFS. Обновленный до последней версии cifs-utils и самбы. Но не сделал получил любой успех все еще.
Все, что я смог сделать, просто ограничить php fpm процессы к 1. Который не является хорошим решением, потому что даже с одним ребенком - ошибка происходит некоторое время.
Существует ли способ узнать что, вызывая это или решить это?
Я решил подобную проблему путем определения версии протокола 2.0
mount -t cifs -o username=user,password=passwd,vers=2.0 /host/shared /mnt/project
Существует несколько различных версий SMB, используемого операционными системами Windows: