通过Laravel控制器执行Python脚本

2024-10-01 13:43:25 发布

您现在位置:Python中文网/ 问答频道 /正文

这可能是一个简单的问题,但我找不到一个适合我的解决方案。所以我想通过laravel中的控制器启动一个python脚本。到目前为止,我尝试了exec()、shell_exec()和以下方法:

$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

当流程启动时,它应该只运行您键入的SKcript:

py yourPath/example.py在windows shell中。在我的例子中,shell_exec()感觉到当前会话,exec不工作。当我通过pycharm执行脚本时,它运行良好


Tags: 方法py脚本cmdifexample控制器解决方案
2条回答

试试这个

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

参考链接https://www.php.net/manual/en/function.escapeshellcmd.php

您可以使用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();
}

相关问题 更多 >