Py学习  »  Python

为什么这个python代码不是通过php中的shell_exec执行的?

Chris • 4 年前 • 1342 次点击  

我一直在尝试运行一个python代码,它接受来自终端的如下输入 python3 mycode.py input1 input2 当我在终端上尝试的时候,它就完美的工作了。但当我在php上尝试时,它不起作用 shell_exec . 我的php-

<?php 

$a = 'hello';
$b = 'world';

$output = shell_exec('python3 /path/to/mycode.py '.$a.' '.$b.'');
echo '<pre>'.$output.'</pre>';

?>

但它没有输出任何东西。 我也试着加上

#!/usr/bin/python3

在我的python代码的顶部

sudo chmod +X mycode.py

但还是不行。

编辑: 我发现了问题,但仍然不知道如何解决。py包含PIL模块,但不能用于 www-data 用户。所以我试着 sudo chown -R chris:www-data /var/www/html/mysite 现在它显示没有找到PIL模块。如何安装PIL模块 www数据 ?

Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/52510
 
1342 次点击  
文章 [ 1 ]  |  最新文章 4 年前
AsusServerTek
Reply   •   1 楼
AsusServerTek    4 年前

这个 exec() 函数应返回所执行命令的输出数组。因此我建议使用 print_r() .

请尝试以下操作:

<?php 

$a = 'hello';
$b = 'world';

exec('python3 /path/to/mycode.py '.$a.' '.$b, $command_output);
echo PHP_EOL;
print_r($command_output);
echo PHP_EOL;
?>

为了排除权限问题,您还可以从终端执行php脚本。假设您使用的是Apache,而服务帐户通常是 www-data 帐户可能无法访问您试图执行的文件。

如果这对您尝试以sudo的身份运行php脚本不起作用。如果失败,请确保查看php日志以获取任何线索。