Решаем проблем с ошибкой при создании symlink в Vagrant Homestead

Решаем проблем с ошибкой при создании symlink в Vagrant Homestead

Программируя на PHP я постоянно использую Vagrant, образ Homestead, в частности. Использование Vagrant-а при разработке часто очень здорово выручает. Но, как обычно, в мире IT должно существовать какое-то "но". И, в моём случае, вероятно, как и в вашем тоже, оно проявило себя при попытке создания символической ссылки. Каждый раз, когда я пытался создать символическую ссылку из консоли, или с помощью Laravel artisan, получал ошибку: symlink(): Protocol error, или что-то похоже.
В этой статье я и расскажу, почему не получается создать symlink в vagrant, и как это исправить.

Почему эта ошибка происходит

Сначала стоит разобраться с причиной, приводящей к этой ошибке. И так получается, что это причина не самая очевидная, но очень примитивная. Дело в том, что на Windows, по умолчанию, символические ссылки могут создавать только администраторы. И только потому, при попытке создания ссылки мы получаем ошибку, ввиду того, что, по-умолчанию, Vagrant запускается от имени обычного пользователя (не администратора).

Решение

Для того, чтобы решить эту проблему, достаточно будет запустить Virtual Box от имени администратора. После чего, с созданием символических ссылок внутри виртуалки проблем не будет. Статья закончена ^^.


Второй вариант - более сложный. Но, он позволяет решить эту проблему без запуска Virtual Box-а от имени администратора.
Этот способ заключается в том, что нужно разрешить создание символических ссылок любому пользователю, не являющимся админом.

Для этого, в командной строке Windows (открыть её можно, нажав правой кнопкой мыши на "Пуске", и выбрав меню выполнить) cmd прописав secpol.msc в поле для ввода secpol.msc

В результате чего, откроется меню настроек "Локальная политика безопасности",
где нужно выбрать пункт Локальные политики > Назначение прав пользователя,
где найти параметр под названием Создание символических ссылок:
settings

Выбрав который, и, кликнув на кнопку Добавить пользователя или группу, откроется окно с настройкой.
И, первое, что нужно сделать - это узнать имя пользователя, для которого мы будем разрешать беспрепятственное создание символических ссылок. Сделать это можно, как показано на картинке (для текущего пользователя):
find-username-1
В моём случае - это Alexander. У вас же, скорее всего, это имя будет отличаться.

Кликнув по этому имени, все конфигурационные данные автоматически будут подставлены в поля формы, и окно будет иметь примерно подобный вид:result

И на этом все шаги по настройке закончены. Осталось применить новые настройки, перезапустить виртуалку, если она включена (vagrant halt && vagrant up) и радоваться работоспособности системы.

Теперь вы знаете, как исправить ошибку при создании symlink в Windows 10 Vagrant Homestead двумя способами.