Laravel + Apache的执行Python脚本matplotlib
问题描述:
我使用PHP 7 laravel 5.4,我试图执行使用matplotlib创建一些地块一些Python脚本。Laravel + Apache的执行Python脚本matplotlib
用例:
Python脚本script.py
:
print("DONE")
命令行输出:
d:\workspace>python sample.py
DONE
创建一个小的PHP文件test.php
:
<?php
exec('sample.py', $output);
print_r($output);
?>
将输出:
d:\workspace>php test.php
Array
(
[0] => DONE
)
从laravel控制器的方法做同样的事情:
public function show_with_file($id, $file)
{
...
// Execute python script to retrieve dot-plot
$command = escapeshellcmd('d:\\workspace\\sample.py');
exec($command, $output);
dd($output);
...
}
将转储输出:
array:1 [▼
0 => "DONE"
]
一切都运行良好,直到现在。但是,如果我们修改Python脚本包括matplotlib模块:
import matplotlib
print("DONE")
执行脚本会成功,执行test.php
文件中的命令行工作正常,但是从Laravel控制器倾销的输出结果给出:
[]
注:
阅读一些关于在不同的岗位这个问题上,我改变matplot 11b的后端,以总比分
import matplotlib
matplotlib.use('agg')
print("DONE")
,但什么都没有改变:通过python sample.py
脚本完全在命令行中,其结果是通过执行php test.php
正确给出,但在laravel控制器中结果仍然丢失。
我由于是一个小的PHP脚本的exec会做就好了,但在laravel和Apache它很困惑,因为它不是一个PHP的问题并不和它不是文件许可的问题,因为如果脚本不包含matplotlib,则该脚本可以工作。
任何人有我失去了什么什么想法?
答
您确定您的Python代码中没有错误吗?
也许PHP试图在未安装matplotlib
的Python版本上运行您的代码?
已经安装了Python的只有一个版本,已经选中此:( – ashcrok
尝试写'试试:'你的代码之前和'除例外的错误:打印(错误)'结尾的那段路,让错误是的,它必须打印它 – codeiscool
嗯,你是对的:'没有名为'matplotlib''的模块' – ashcrok