Сценарий PHP на моем сервере тестирования MAMP не может получить доступ к node_module: меньше - PullRequest
0 голосов
/ 10 декабря 2011

Я пытаюсь настроить свою локальную среду разработки для чтения файлов .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 ().Надеюсь, что это полезно для кого-то еще.

Ответы [ 2 ]

0 голосов
/ 05 июня 2012

Оказывается, что команда less (path / path / lessc) должна была быть выполнена.PHP этого не делал, поэтому команда shell_exec () ничего не возвращала.Вот почему мои эхо-заявления ДЕЙСТВУЮТ ...

См. Мои правки к вопросу выше.

0 голосов
/ 11 декабря 2011

Возможно, было бы проще, если бы вы использовали PHP-реализацию lesscss: lessphp

...