Как выполнять программы nodejs в php

Я работаю над проектом, который использует очистить CSS

 https://github.com/purifycss/purifycss

в котором я установил purey-css на сервере с помощью npm, теперь я хочу выполнить команду, показанную ниже, через PHP и использую метод exec().

   purifycss css/final_css.css test1.html --min --out bootstrap-purify-1.css --info --rejected

но команда не работает. Если я использую эту же команду непосредственно в терминале, то она работает нормально. Все другие команды, такие как "mkdir" и все остальные, работают нормально, но эта команда в функции PHP exec() не работает. Я не знаю почему?. Заранее спасибо. Укажите, если вы что-то заметили.

1 ответ

Это зависит от каталога, из которого вы запускаете эту команду. Если вы вызовете exec или другую функцию в php для выполнения команды linux, она будет выполняться в каталоге, где находится файл php. Вы можете выполнить pwd команда, чтобы увидеть, в каком каталоге выполняется ваша команда, и если он не является корнем проекта, вы можете изменить его

exec('cd /path/to/dir && purifycss ...');

Я также рекомендую вам использовать этот инструмент https://symfony.com/doc/current/components/process.html который протестирован и охватывает больше случаев использования, чем вы можете сделать с помощью функции exec.

В качестве последнего замечания я настоятельно рекомендую создать команду gulp и выполнить ее с терминала. Или вы можете использовать webpack или grunt, если вы более знакомы с ними. Я не нахожу случая использования, когда приложение php должно знать, как создавать собственные стили и файлы js. Это работа для сценария развертывания.

Другие вопросы по тегам