$process->start() выдает ошибку 500 laravel
При запуске процесса через интерфейс пользователя, то есть через контроллер выдает ошибку 500. Причем если запускать процесс через консоль, то отрабатывает без ошибок, на локальной машине отрабатывает вообще без ошибок и через консоль и через контроллер.
Вот код
static function StartArtisanProcess($artisanProcessName)
{
// search binary on new server
$phpBinaryFinder = new PhpExecutableFinder();
$phpBinaryPath = $phpBinaryFinder->find();
echo $phpBinaryPath; // пытался вывести путь до php не выводит.
$process = Process::fromShellCommandline("/usr/bin/php7.4 " . base_path('artisan') . " $artisanProcessName");
$process->setTimeout(0);
$process->disableOutput();
print_r($process); // смотрб что в процессе
$process->start();
return $process;
}
Созданый процес
Symfony\Component\Process\Process Object
(
[callback:Symfony\Component\Process\Process:private] =>
[hasCallback:Symfony\Component\Process\Process:private] =>
[commandline:Symfony\Component\Process\Process:private] => /usr/bin/php7.4 /var/www/www-root/data/www/test.ru/artisan SendUserRegistrationMail 5
[cwd:Symfony\Component\Process\Process:private] => /var/www/www-root/data/www/test.ru/public
[env:Symfony\Component\Process\Process:private] =>
[input:Symfony\Component\Process\Process:private] =>
[starttime:Symfony\Component\Process\Process:private] =>
[lastOutputTime:Symfony\Component\Process\Process:private] =>
[timeout:Symfony\Component\Process\Process:private] =>
[idleTimeout:Symfony\Component\Process\Process:private] =>
[exitcode:Symfony\Component\Process\Process:private] =>
[fallbackStatus:Symfony\Component\Process\Process:private] => Array
(
)
[processInformation:Symfony\Component\Process\Process:private] =>
[outputDisabled:Symfony\Component\Process\Process:private] => 1
[stdout:Symfony\Component\Process\Process:private] =>
[stderr:Symfony\Component\Process\Process:private] =>
[process:Symfony\Component\Process\Process:private] =>
[status:Symfony\Component\Process\Process:private] => ready
[incrementalOutputOffset:Symfony\Component\Process\Process:private] => 0
[incrementalErrorOutputOffset:Symfony\Component\Process\Process:private] => 0
[tty:Symfony\Component\Process\Process:private] =>
[pty:Symfony\Component\Process\Process:private] =>
[useFileHandles:Symfony\Component\Process\Process:private] =>
[processPipes:Symfony\Component\Process\Process:private] =>
[latestSignal:Symfony\Component\Process\Process:private] =>
)
Уже не знаю куда копать, возможно как то связано с тем, что не определяет путь до php через функцию при запуске через контроллер, так как при запуске через консоль путь выводит. Проверил на локалке тоже выводит путь.
Ответы (1 шт):
Cпасибо за совет про логи. Посмотрев логи нашел ошибку
message: fopen(): open_basedir restriction in effect. File(/dev/null) is not within the allowed path(s): (/var/www/www-root/data:.), exception: ErrorException, file: /vendor/symfony/process/Pipes/UnixPipes.php
Решилось арендой нового сервера, переконфигурацией, и запуском php в режиме cgi. Взяли новый сервер так как на старом при переключении режима приложение падало. Спасибо за помощь!