[英]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_article
和readable_title
都被打印出來。
可能是什么問題? 我試過exec(), system()
但仍然沒有運氣。
可能存在多個問題:
您可以使用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.