Несколько месяцев назад я наконец избавился от своей переоцененной сенсорной панели Apple Macbook Pro и переключился на Windows 10 с WSL Ubuntu для своей веб-разработки с использованием Docker.
В течение нескольких месяцев у меня не возникало проблем с локальным использованием Nginx, PHP 7, Redis и MariaDB в виде контейнеров Docker с docker-compose в Windows Power Shell.Для всего остального, связанного с Docker, я использую WSL Ubuntu.Я разделяю свой том Windows в среду WSL, смонтированную в / c, и до сегодняшнего дня он работал безупречно .
Сегодня мой проект Laravel 5.6 не может записывать в журнал.Это терпит неудачу с этой самой странной ошибкой:
root@5e3a192e29e1:/Projects/main# php artisan tinker
Psy Shell v0.9.8 (PHP 7.2.7 — cli) by Justin Hileman
>>> Log::error('WTF!')
UnexpectedValueException with message 'The stream or file
"/Projects/main/storage/logs/laravel.log" could not be opened: failed to open stream: No such file or directory'
Когда я пытаюсь перехватить или привязать журнал в WSL, это дает очень странное поведение:
root@5e3a192e29e1:/Projects/main# ls -la storage/logs | grep laravel
-rwxr-xr-x 1 root root 6487 Sep 28 21:35 laravel.log
root@5e3a192e29e1:/Projects/main#
root@5e3a192e29e1:/Projects/main# cat storage/logs/laravel.log
cat: storage/logs/laravel.log: No such file or directory
Я действительно сбит с толкупотому что чистый перезапуск Docker не исправил это и не сделал полную перезагрузку системы.Это вызывает особую тревогу, поскольку вчера все работало очень хорошо, а днем ранее, за несколько месяцев, и ничего, что я могу определить, не изменилось в системе.
Очевидно, Microsoft недавно улучшила обработку разрешений дляWSL поэтому я попробовал - без любви - та же ошибка.
Контейнеры работают, docker-compose работает нормально, docker работает в основном нормально, общий том работает нормально ... просто мое приложение не работает, потому что файлы либо не доступны для записи, либо представлены там, где они должныбыть, согласно PHP.Если я остановлюсь и запущу контейнер, а затем снова войду в контейнер из WSL, я смогу просто отследить файл.
Если вместо этого я выполню те же команды в Windows PowerShell, все будет работать нормально.
D:\Projects\main [feature/branch]> tail -f .\storage\logs\laravel.log
tail [2018-09-28 14:57:52] local.ERROR: WTF!
Я не уверен, является ли это проблемой WSL, PHP или Docker.Справка!
Не имеет значения: тот, кто устанавливает цветовую схему по умолчанию в Windows PowerShell, должен быть застрелен.