shell_exec可以运行我的机器学习代码吗?它在终端上运行良好,但在shell_exec中返回NULL

时间:2019-04-24 06:36:52

标签: php python machine-learning shell-exec

我有一个运行基于keras的神经网络的python脚本,它运行良好,但是当我用来通过php中的shell_exec运行该脚本并使用var_dump时,我得到“ NULL”。

我已经看到许多解决方案。我已将php.ini中的max_execution_time和max_input时间增加到5000。我还在命令中提供了文件的完整路径和所需的环境。另外,我还授予了文件夹(lampp,htdocs,(我的php文件文件夹)的所有权限)这是在shell_exec中最终调用的命令。

source /home/characterleveldl/anaconda3/bin/activate /home/characterleveldl/anaconda3/envs/spyderr && python fyp_final.py 5 /opt/lampp/htdocs/charlevel_fyp/train.csv /opt/lampp/htdocs/charlevel_fyp/test.csv 86save_true.pdf 86save_random.pdf 86save_result.txt 2>&1

fyp_final.py,train.csv和test.csv所有内容都与php文件位于同一文件夹中。我在根模式下通过终端运行了相同的命令,并且没有任何错误。但是在下面的php代码中,它返回NULL。

$cmd_initial ='source /home/characterleveldl/anaconda3/bin/activate /home/characterleveldl/anaconda3/envs/spyderr && ';

$cmd = $cmd_initial . 'python fyp_final.py ' . $num_classes . ' ' . $train . ' ' . $test . ' ' . $save_true . ' ' . $save_random . ' ' . $save_text . ' 2>&1'; 
$command = escapeshellcmd($cmd);
$output = shell_exec($command);
var_dump($cmd);
var_dump($output);

请帮助我。如果我做错了什么,或者甚至有可能因为我尝试运行小的代码而从php运行机器学习代码,那么它们运行得很好。

1 个答案:

答案 0 :(得分:0)

我知道了。我通过将代码放入外壳脚本中,然后通过shell_exec执行此脚本来解决了该问题。现在可以正常工作了。