我写了一个 python 实用程序,它返回一个结果数组。此实用程序将图像路径作为输入,处理该图像,并返回结果的 json 数组。
现在我想在我的网站上显示这个输出,它使用的是Laravel 5.7
所以我创建了一个工匠命令,它执行python脚本并给我结果。
此命令在终端中运行良好,但是当我使用 Artisan::call 方法从控制器执行相同的命令时,它会在 Web 浏览器中显示"0"作为输出。
我也尝试了shell_exec()。但结果是一样的。
这是我的工匠命令文件
$process = new Process('python3 my_python_script.py -i ' . $this->argument('path'));
$process->run();
$result = $process->getOutput();
return $result;
工匠指挥部
php artisan image:upload image_path
Artisan
的调用方法返回整数。它不会从输出中读取,或者它不是句柄方法的返回值。
看:
/**
* Run an Artisan console command by name.
*
* @param string $command
* @param array $parameters
* @param SymfonyComponentConsoleOutputOutputInterface|null $outputBuffer
* @return int
*/
public function call($command, array $parameters = [], $outputBuffer = null);
也许你应该尝试Artisan::output()
但我认为它不是线程安全的或类似的东西。