Поэтому я работаю с Flyway и запускаю конкретные команды с помощью функции PHP exec ():
exec('/path/absolute/flyway info');
Эти команды работают до тех пор, пока я указываю абсолютный путь, но он может варьироваться в зависимости от машин, на которых он будет работать. Вот почему я хочу использовать переменную, которая определяет этот абсолютный путь, с помощью команды exec('which flyway')
,
Дело в том, что это возвращает нулевое значение, хотя, когда я пишу его непосредственно в оболочке, я получаю желаемый результат. Я также пытался использовать интерактивную оболочку php php -a
где, если я запускаю команду echo exec('which flyway')
он также возвращает желаемый путь, хотя, когда я пишу его непосредственно в своем коде, я получаю нулевой результат.
Обратите внимание, что если я хочу проверить абсолютный путь php (which php
), Я могу сделать это в оболочке, php -a или в моем коде, и он возвращает желаемый результат во всех трех случаях. Итак which flyway
Команда единственная, которая имеет нулевой результат в моем коде.
Может кто-нибудь, пожалуйста, помогите мне в этом вопросе?
which
использует те же переменные пути, которые используются при запуске команды без абсолютного пути. Таким образом, либо вы можете использовать их напрямую (потому что они находятся на пути) и не нужно which
в конце концов, или which
не может найти исполняемые файлы в конце концов.
Кроме того, имейте в виду, что не все хостеры допускают произвольный запуск из процесса PHP. Вы не должны строить свое приложение на такой основе
Других решений пока нет …