Задать вопрос
t-alexashka
@t-alexashka
Сразу пишу legacy код

Почему из консоли команда выполняется, а из php нет?

Привет народ.

Есть команда сборки фронтенда

cd /var/www/project && nvm exec 16 gulp build --env=prod


Если выполнить её из bash вручную - она выполняется как надо.

Если выполнить её из php через system(), то вылазит ошибка

sh: 1: nvm: not found

и консоль (ручной режим) и php работают под одним юзером gituser (проверил, 100%).

Any ideas?
  • Вопрос задан
  • 112 просмотров
Подписаться 1 Простой Комментировать
Решения вопроса 1
DevMan
@DevMan
потому что переменные_окружения/юзер разные.
на это явно намекает nvm: not found

sh: 1: явно намекает, что "Если выполнить её из bash вручную - она выполняется как надо" – ни о чем: sh и bash – разные шеллы и имеют отдельные конфиги.

указывайте полный путь к вызываемым командам или запускайте код в идентичном окружении.
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
toxa82
@toxa82
посмотрите полный путь к команде через which nvm, и укажите в команде полный путь..
Ответ написан
Комментировать
@AUser0
Чем больше знаю, тем лучше понимаю, как мало знаю.
Сделайте в консоли команду set, и впечатлитесь, сколько переменных окружения назначены в консоли.

В том числе очень важная переменная PATH, из которой берутся директории, в которых нужно по очереди искать утилиту nvm, для вожделенного запуска...

И сравните, какие переменные окружения есть в PHP-шном system().
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы