繁体   English   中英

从python到php的有限返回值

[英]Limited return value from python to php

我使用以下命令从php调用python脚本

$url = "https://www.digitalocean.com/community/tutorials/how-to-secure-your-redis-installation-on-ubuntu-14-04";
$output = shell_exec('python PythonScripts/readable.py '.$url);
echo($output);

当我使用命令行运行该文件

python extractor.py https://www.digitalocean.com/community/tutorials/how-to-secure-your-redis-installation-on-ubuntu-14-04

我得到了理想的输出。

python文件的内容是

import sys
from readability.readability import Document
from urllib import FancyURLopener

class MyOpener(FancyURLopener):
    version = 'Mozilla/5.0 (Windows; U; Windows NT 5.1; it; rv:1.8.1.11)'

myopener = MyOpener()
request = myopener.open(sys.argv[1])
html = request.read()

readable_article = Document(html).summary()
readable_title = Document(html).short_title()

print readable_article #If I use readable_title then it's getting printed in php

问题是php没有捕获readable_article 但是当我使用命令行时, readable_articlereadable_title都被打印出来。

可能是什么问题? 我试过exec(), system()但仍然没有运气。

可能存在多个问题:

  • 不同的用户(python脚本的执行权限)
  • python解释器和脚本的完整路径('/ usr / bin / python~ / PythonScripts / readable.py')
  • ...

您可以使用popen而不是shell_exec来简化调试。 这导致数字返回值,stdout和stderr。

我终于找到了这个问题。 问题是python脚本发出了错误

UnicodeEncodeError: 'ascii' codec can't encode character u'\u2014' in position 3102: ordinal not in range(128)

我通过使用以下任一方法解决了这个问题
readable_article = Document(html).summary().encode('utf8')
readable_article = Document(html).summary().encode('ascii', 'replace')

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM