Невозможно запустить команду shell (which) в коде PHP - PullRequest
0 голосов
/ 07 мая 2018

Итак, я работаю с Flyway и запускаю определенные команды, используя функцию PHP exec ():

exec('/path/absolute/flyway info');

Эти команды работают до тех пор, пока я указываю абсолютный путь, но он может варьироваться в зависимости от машин, на которых он будет работать. Вот почему я хочу использовать переменную, которая определяет этот абсолютный путь, с помощью команды exec('which flyway').

Дело в том, что это возвращает нулевое значение, хотя, когда я пишу его непосредственно в оболочке, я получаю желаемый результат. Я также пытался использовать интерактивную оболочку php php -a, где, если я запускаю команду echo exec('which flyway'), она также возвращает желаемый путь, хотя, когда я пишу его непосредственно в коде, я получаю результат NULL.

Обратите внимание, что если я хочу проверить абсолютный путь php (which php), я могу сделать это в оболочке, php -a или в моем коде, и он возвращает желаемый результат во всех трех случаях. Таким образом, команда which flyway единственная, которая имеет нулевой результат в моем коде.

Может кто-нибудь помочь мне в этом вопросе?

1 Ответ

0 голосов
/ 07 мая 2018

which использует те же переменные пути, которые используются при запуске команды без абсолютного пути. Таким образом, либо вы можете использовать их напрямую (потому что они находятся на пути), и вам не понадобится which в конце концов, либо which не сможет найти исполняемые файлы в конце концов.

Кроме того, имейте в виду, что не все хостеры допускают произвольный запуск из процесса PHP. Вы не должны строить свое приложение на таком фундаменте

...