Выполнение скрипта Python через контроллер Laravel - PullRequest
0 голосов
/ 29 января 2020

Это может быть простой вопрос, но я не смог найти решение, которое работает для меня должным образом. Поэтому я хочу запустить скрипт python через контроллер в laravel. До сих пор я пробовал exe c (), shell_exe c () и это также:

$cmd = "py pathtoSkript/example.py";

  if (substr(php_uname(), 0, 7) == "Windows"){
      pclose(popen("start /B ". $cmd, "r"));
  }
  else {
      exec($cmd . " > /dev/null &");
  }

Моя python Версия: Python 3.7.2 (tags/v3.7.2:9a3ffc0492, Dec 23 2018, 22:20:52) [MSC v.1916 32 bit (I

Когда процесс запускается, он должен запускать скрипт только так, как вы набираете:

py yourPath/example.py в оболочке windows. shell_exe c () в моем случае загружает текущий сеанс и exe c не работает. Скрипт работает нормально, когда я выполняю его через pycharm.

Ответы [ 2 ]

0 голосов
/ 29 января 2020

Попробуйте это

 $command = escapeshellcmd('py pathtoSkript/example.py');
 $output = shell_exec($command);
 $output;

ссылка ссылка https://www.php.net/manual/en/function.escapeshellcmd.php

0 голосов
/ 29 января 2020

Вы можете использовать Symfony Процесс https://symfony.com/doc/current/components/process.html

Установка

 composer require symfony/process

Использование

use Symfony\Component\Process\Exception\ProcessFailedException;
use Symfony\Component\Process\Process;

$process = new Process(['py pathtoSkript/example.py']);
// or $process = new Process(['python', 'pathtoSkript/example.py']);

try {
    $process->mustRun();

    echo $process->getOutput();
} catch (ProcessFailedException $exception) {
    echo $exception->getMessage();
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...