【问题标题】:php cannot execute python script with MySQLdbphp 无法使用 MySQLdb 执行 python 脚本
【发布时间】:2014-10-31 05:53:37
【问题描述】:

我有 2 个脚本。

1 - php web-scripts,它从用户那里收集信息并执行 python 脚本,并将所有收集到的数据作为参数发送

2 - python 脚本,它使用 sys.argv 从 php-script 获取参数并使用 MySQLdb 更新 MySQL

当我通过命令行运行 python 脚本时 - 它就像一个魅力。它做它应该做的任何事情。但是,当我尝试使用 PHP 脚本执行 python 脚本时,在我从 python 脚本中删除 import MySQLdb 之前什么都没有发生。

一旦我从我的 python 脚本中删除“import MySQLdb” - PHP 脚本就可以执行它并且它们都可以工作(更新 MySQL 除外)。

你知道并知道出了什么问题吗?

附: 我试图得到一个错误

在 python 文件中我使用这个:

import traceback
import sys
import MySQLdb

# Some classes and functions

if __name__ == '__main__':
    try:
        main()
    except Exception, err:
        print traceback.format_exc()

在我使用的 php 中:

$result = shell_exec("/usr/bin/python /FULL_PATH_TO/script.py $argument";
echo $result;

而且还是……什么都没有。网页只是重新加载而不提供任何信息

【问题讨论】:

  • "什么都没有发生" -- 你检查回溯了吗?
  • @mgilson 更新了关于您评论的主题
  • 可能是环境变量 PYTHONPATH 被 web 服务器执行的时候不一样? PYTHONPATH 指示 python 查找库...
  • @Paul 可能是一个案例,谢谢。现在需要弄清楚我应该怎么做才能更改网络服务器的 PATH :(
  • 你检查过 php (web) 错误日志吗? shell_exec() 可以通过网络服务器获得吗?它被 PHP 安全模式禁用。

标签: php python mysql-python


【解决方案1】:

我遇到了同样的问题。这里的关键问题是你的python脚本没有输出任何东西!

找出发生了什么的关键是你需要知道,这里发生了一些错误但你看不到错误输出。你需要检查这个问题: PHP script can't get output from Python script

这是简短的回答:您需要执行并将错误输出(stderr)放到标准输出中。您需要执行以下操作: exec('python hello-numpy.py 2>&1');

你会看到问题,这一定是 MySQLDB 库需要一些被拒绝的权限。

如何获得所需的权限,那是另一个问题:)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2010-10-08
    • 2013-03-13
    • 2020-08-18
    • 2015-12-12
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多