Я пытаюсь настроить свою локальную среду разработки для чтения файлов .less, чтобы я мог редактировать файлы .less во время разработки и преобразовывать их в .css только тогда, когда пора начинать работу.Имеет смысл?
Я использую MAMP в качестве локального сервера тестирования.Я следую инструкциям, которые нашел здесь: http://programming -perils.com / 155 / parse-less-files-on-the-fly-and-serve-them-as-css / # comment-920
Короче говоря, планируется использовать запросы на перехват файла htaccess для файлов .css и направить их в скрипт PHP, который компилирует файл .less с тем же именем и возвращает код CSS.
Кажется, все работает из командной строки.Я могу скомпилировать файл .less из командной строки, и он выплевывает CSS.Я знаю, что мое правило перезаписи работает, потому что я могу набрать URL-адрес в браузере и посмотреть результат моего php-скрипта.Например, если мой PHP-скрипт вызывает echo shell_exec('pwd');
, я увижу путь, напечатанный в браузере.
ПРОБЛЕМА заключается в том, что я не могу запустить меньше сценариев, если не использую SSH для localhost от имени root.Когда я выхожу из SSH и запускаю команду, я получаю «Отказано в доступе».Я подозреваю, что это происходит, когда мой PHP-скрипт пытается вызвать это ... так что он ничего не возвращает.
Я предполагаю, что вопрос сводится к тому, как мне заставить мой PHP-скрипт запускать меньше компилятор?
ОБНОВЛЕНИЕ!Я решил проблему ...
Получается, что нужно выполнить команду меньше (path/path/lessc
).PHP этого не делал, поэтому команда shell_exec () ничего не возвращала.Вот почему мои эхо заявления сработали.
Есть много способов обойти это, но я решил, что редактирование списка sudoers с sudo visudo
было лучшим для моих целей.На было много полезных советов .Методом проб и ошибок я выяснил, что PHP использует учетную запись www-data.Добавление этой строки устранило мою проблему:
www-data ALL=(ALL) NOPASSWD: /var/root/node/npm/node_modules/less/bin/lessc
Следует помнить, что вам все равно нужно добавить sudo в команду, которая передается в shell_exec ().Надеюсь, что это полезно для кого-то еще.