Недавно я занялся настройкой новой операционной системы macOS, начиная с нуля. В этот раз решил опробовать развёртывание PHP-разработки с использованием Laravel Herd (https://herd.laravel.com) — приложения, включающего в себя готовые бинарные файлы PHP, nginx и DNSMasq.
Установка прошла гладко, согласно инструкции, и с первой попытки заработало всё, включая Xdebug.
Однако, изучение документации выявило, что в основе Laravel Herd лежат разработки Laravel Valet, что вызвало у меня смешанные чувства. Несколько лет назад я уже сталкивался с Laravel Valet и тогда его баги заставили меня отказаться от использования, оставив после себя негативные впечатления.
В целом, философия Laravel Valet, как и всего Laravel, заключается в том, что множество "магии" скрыто от разработчика, который не должен вникать в детали работы системы — она просто работает. Этот подход имеет свои преимущества.
Однако, то, что мне категорически не нравится в Laravel Valet, так это то, что вся гибкость настройки конфигурации nginx перекладывается с файла конфигурации nginx на так называемые Valet Drivers, написанные на PHP. На первый взгляд, работа с Drivers может показаться проще, чем настройка nginx, но это кажется неестественным и оторванным от реальных условий производственной среды, где, в конечном итоге, всё равно приходится работать с конфигурацией nginx.
Для тех, кто не знаком с Laravel Valet, вот интересный и, возможно, шокирующий факт: все запросы обрабатываются через некий файл server.php, который, благодаря системе Drivers, заменяет собой роутинг на уровне nginx. Это означает, что вместо использования директив location в конфигурации nginx, мы имеем набор условий if в PHP-коде.
Более того, через инфраструктуру Valet проходят даже HTTP-запросы на получение статических файлов. Например, когда браузер запрашивает my-site.test/logo.png, запрос проходит через множество PHP-кода внутри Laravel Valet. Файл определяется с помощью file_exists(), и контент logo.png в итоге отдаётся через PHP-FPM, что кажется довольно необычным решением. 🙈
Post #1304
3.95K
- 🤯 34
- 🤮 29
- 👍 6
- 😁 2
- 😢 1
- 💩 1
- 😐 1