[英]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.