【发布时间】:2017-06-12 15:40:39
【问题描述】:
我无法从 python 脚本获取输出数据到 php。 php中没有抛出任何错误,并且python脚本从命令行完美输出。 Python:
import json,sys,MySQLdb
db = MySQLdb.connect(host="localhost", user="root", passwd="root", db="sr")
cur = db.cursor()
def requestQuiz():
sql = "SELECT quiz FROM wordbank ORDER BY RAND() LIMIT 1"
cur.execute(sql)
result_set = cur.fetchall()
quiz = result_set[0][0]
return json.dumps(quiz)
if __name__ == "__main__":
#print solve(sys.argv[1])
print requestQuiz()
PHP
<?php
$result = exec("python request.py");
$results_array = json_decode($result);
echo "<p>".$results_array."</p>";
?>
python 应该返回一个带引号的单词,例如"happy"
当我从命令行尝试时它会这样做
python request.py
我已经确认php和python在同一个目录下,python脚本名为“request.py”
【问题讨论】:
-
该文件的所有者是谁?是否可执行(
chmod('request.py', '+x'))? -
“无法获取输出数据”是什么意思?返回的数据是否为空?是否抛出错误?
-
@Carcigenicate PHP 中没有抛出错误。我所说的“无法获取输出数据”的意思是网页上没有显示任何内容,但我检查了 HTML,有 ,但里面没有任何内容
.
-
阅读 PHP 的
exec()的文档:“返回值:命令结果的最后一行。”它只得到一行 Python 脚本输出,而不是整个 JSON 文档。因此 json_decode() 无法解析不完整的 JSON,并返回 NULL。您需要使用shell_exec()或passthru()来获取Python 脚本的所有输出。 -
@BillKarwin 我都试过了,都不管用。嗯,python 应该返回一个单词,它是从命令行返回的。抱歉,我是新手。