如何在 Laravel 中运行 Python 脚本?

问题描述 投票:0回答:2

我想知道如何使用 php 代码运行 python 脚本。我尝试过不同的选择,例如

 $output = exec("python  /var/GAAutomationScript.py");

 $command = escapeshellcmd('/var/GAAutomationScript.py');
 $output = shell_exec($command);

但是无法运行python脚本。我的应用程序是在 Laravel 中。是否可以使用 Laravel 调度程序作业运行 python 脚本,例如使用 artisan 命令?

php python laravel
2个回答
3
投票

关于您的问题需要提及的一些事情:

  • 我强烈建议使用
    symfony/process
    而不是直接使用 shell_exec 。它已经在 Laravel 中可用。您可以轻松检查命令是否成功并获得字符串格式等标准输出
  • 当您从 Web 应用程序运行 shell 脚本时,用户权限很重要。例如,laravel Web 用户是
    www-data
    ,你的 python 脚本是
    ubuntu.nbody
    ,然后它会检查 python 脚本具有哪些权限。是否允许本例中除
    ubuntu
    以外的用户运行它。
  • 如果你认为给 python 脚本赋予 777 权限就能解决权限问题,那么这也是一个风险。
  • 最后但并非最不重要的一点是,创建一个 Laravel 控制台命令,添加将从
    symfony/process
    运行 python 脚本的代码片段。然后运行它并调试错误。一旦它起作用了,你就可以像 Laravel 的 cron jon 中一样添加它。

请参阅此了解有关调度 artisan 命令的更多信息。

您还可以避免创建 artisan 命令并直接添加 shell,因为它内部使用

symfony/process
请参阅此以获取参考


0
投票

您可以尝试使用 laravel Process Synmfony 类执行 python 脚本:

<?php

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

public function testPythonScript()
{
    $process = new Process(['python3', '/path/to/your_script.py', 'arg1', 'arg2']);
    $process->run();
    
    if (!$process->isSuccessful()) {
        throw new ProcessFailedException($process);
    }

    $data = $process->getOutput();

    dd($data);
}
© www.soinside.com 2019 - 2024. All rights reserved.