社区所有版块导航
Python
python开源   Django   Python   DjangoApp   pycharm  
DATA
docker   Elasticsearch  
aigc
aigc   chatgpt  
WEB开发
linux   MongoDB   Redis   DATABASE   NGINX   其他Web框架   web工具   zookeeper   tornado   NoSql   Bootstrap   js   peewee   Git   bottle   IE   MQ   Jquery  
机器学习
机器学习算法  
Python88.com
反馈   公告   社区推广  
产品
短视频  
印度
印度  
Py学习  »  Python

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

Chris • 5 年前 • 1567 次点击  

我一直在尝试运行一个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
 
1567 次点击  
文章 [ 1 ]  |  最新文章 5 年前
AsusServerTek
Reply   •   1 楼
AsusServerTek    5 年前

这个 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日志以获取任何线索。