繁体   English   中英

通过 Laravel 控制器执行 Python 脚本

[英]Executing Python script via Laravel controller

这可能是一个简单的问题,但我找不到适合我的解决方案。 所以我想通过laravel中的控制器启动一个python skript。 到目前为止,我尝试了 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

当进程启动时,它应该只像你输入的那样运行脚本:

py yourPath/example.py在 windows shell 中。 在我的情况下,shell_exec() 会占用当前会话,而 exec 不起作用。 当我通过 pycharm 执行脚本时,脚本工作正常。

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

尝试这个

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM