Symfony / Process не может запустить скрипт sh из каталога - PullRequest
1 голос
/ 28 июня 2019

У меня есть сценарий: /home/user/project/deploy.sh
Я пытаюсь запустить компонент Symfony / Process из обработчика php в другом каталоге:

$process = new Process(['./deploy.sh']);
    $process->setWorkingDirectory('/home/user/project');
    $process->run(function ($type, $buffer) {
        echo $buffer;
});

Но я получил ошибку:

Указанный cwd "/ home / user / project" не существует.

Эта папка существует, и обработчик симфонии запущен как правильный пользователь с правильными разрешениями на эту папку. Как правильно запустить этот скрипт из другой папки?

1 Ответ

0 голосов
/ 28 июня 2019

Только для целей отладки протестируйте приведенный ниже код.

$process = new Process(['/home/user/project/bin/console', '--version']);
$process->run();
if (!$process->isSuccessful()) {
    throw new ProcessFailedException($process);
}
echo $process->getOutput();

Если он работает, попробуйте:

  • new Process(['/home/user/project/deploy.sh']);
  • new Process(['sh /home/user/project/deploy.sh']);
  • Process::fromShellCommandline('/home/user/project/deploy.sh');

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...