【问题标题】:Running python script with php - working in console not in web browser使用 php 运行 python 脚本 - 在控制台而不是在 Web 浏览器中工作
【发布时间】:2019-05-24 01:23:38
【问题描述】:

我正在尝试从 ec2 实例中的 php 运行 python 文件。 它使用php index.php 在 ssh 控制台中工作 但它不能在 Web 浏览器中正常工作。

我有一个 python 程序,它接受输入并生成图像

如果输入是“一朵红花”,它将使用 tensorflow 和 nltk 生成红花。

我注意到了一些不同的东西。 当我在 python 文件中输入这段代码时

我的python代码片段:

import getpass
username = getpass.getuser()
print username

并使用php index.php 从控制台运行它,我得到输出bitnami 但是当我使用我的网络浏览器运行相同的代码时,我得到了输出daemon

我的php代码sn-p:

<?php  
header('Access-Control-Allow-Origin: *');
define('ROOTPATH', dirname(__FILE__));
$output = exec('python test.py');
echo $output;
?>

预期结果:图像应使用 python 脚本保存在服务器上

实际结果:只有在控制台运行 php 脚本时才会保存图像

【问题讨论】:

  • 您的 ec2 实例上是否安装了 apache 或任何 Web 服务器?
  • 是的,Apache 已经安装好了,我认为没有任何环境设置丢失,因为 php 和 python 运行顺利。我怀疑用户权限有问题吗?检查我上面提到的问题,其中 k 提到了 bitnami 和守护进程
  • 你试过使用python的完整路径吗?也许/usr/bin/python 而不是python
  • 问题解决了!检查答案

标签: php python shell amazon-ec2 ssh


【解决方案1】:

问题解决了! 正如我在问题中提到的那样,我遇到了某种用户权限问题,我修改了我的代码并强制它使用 bitnami 作为用户,现在它可以工作了!

<?php  
header('Access-Control-Allow-Origin: *');
define('ROOTPATH', dirname(__FILE__));
$output = shell_exec('sudo -H -u bitnami python test.py ');
echo $output;
?>

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-06-29
    • 2014-01-05
    • 1970-01-01
    • 1970-01-01
    • 2013-06-17
    • 1970-01-01
    • 2017-02-08
    相关资源
    最近更新 更多