Python 调用 PHP - 脚本格式错误 header 错误 header:数组
Python call to PHP - malformed header from script Bad header: Array
非常奇怪 - 我一直在使用一个 python 脚本来抓取数据,然后将其传递给 php-script - 几个星期以来一直非常有效,直到今天发生了一些事情。
我从 apache2 错误日志中收到以下消息:
malformed header from script 'pytest.py': Bad header: Array
所以它似乎是从这个 python 脚本派生的,php-script 被调用但是有一个服务器 500 错误并且错误日志告诉我们一个格式错误的 header 来自 python
python 脚本
#!/home/john/mydir/my_venv/bin/python3
# enable debugging
import cgitb
from bs4 import BeautifulSoup
from urllib.request import urlopen, Request
import os
cgitb.enable()
print ("Content-type: text/html\r\n\r\n")
url = "https://www.xxxx.."
soup = BeautifulSoup(urlopen(url).read())
stockNames = []
stockClose = []
stockHigh = []
stockLow = []
stockTurnover = []
for tag in soup.select('td[data-title="Namn"]'):
name = tag.get_text(strip=True, separator='\n')
stockNames.append(name)
for tag in soup.select('td[data-title="Senast"]'):
close = tag.get_text(strip=True, separator='\n')
stockClose.append(close)
os.system('php /var/www/html/omx/dataparser.php %s %s'%(stockNames, stockClose))
php 脚本(片段)
<?php
if (isset($argc)) {
unset($argv["0"]); // remove first argument i.e. filename
...
}
不知道怎么回事,为什么突然就这样了?是否可以安装数据包嗅探器以查看发生了什么?
我通过刷新输出流缓冲区解决了这个问题
更准确地说,我更改了打印功能:
print("内容类型:text/html\r\n\r\n")
至:
print ("内容类型:text/html", end="\r\n\r\n", flush=True)
非常奇怪 - 我一直在使用一个 python 脚本来抓取数据,然后将其传递给 php-script - 几个星期以来一直非常有效,直到今天发生了一些事情。
我从 apache2 错误日志中收到以下消息:
malformed header from script 'pytest.py': Bad header: Array
所以它似乎是从这个 python 脚本派生的,php-script 被调用但是有一个服务器 500 错误并且错误日志告诉我们一个格式错误的 header 来自 python
python 脚本
#!/home/john/mydir/my_venv/bin/python3
# enable debugging
import cgitb
from bs4 import BeautifulSoup
from urllib.request import urlopen, Request
import os
cgitb.enable()
print ("Content-type: text/html\r\n\r\n")
url = "https://www.xxxx.."
soup = BeautifulSoup(urlopen(url).read())
stockNames = []
stockClose = []
stockHigh = []
stockLow = []
stockTurnover = []
for tag in soup.select('td[data-title="Namn"]'):
name = tag.get_text(strip=True, separator='\n')
stockNames.append(name)
for tag in soup.select('td[data-title="Senast"]'):
close = tag.get_text(strip=True, separator='\n')
stockClose.append(close)
os.system('php /var/www/html/omx/dataparser.php %s %s'%(stockNames, stockClose))
php 脚本(片段)
<?php
if (isset($argc)) {
unset($argv["0"]); // remove first argument i.e. filename
...
}
不知道怎么回事,为什么突然就这样了?是否可以安装数据包嗅探器以查看发生了什么?
我通过刷新输出流缓冲区解决了这个问题
更准确地说,我更改了打印功能:
print("内容类型:text/html\r\n\r\n")
至:
print ("内容类型:text/html", end="\r\n\r\n", flush=True)