错误:
PHP Notice: Undefined variable: exec in readings.php on line 3
PHP Fatal error: Function name must be a string in readings.php on line 3
代码:
<?php
require('smarty_config.php');
exec('reading_fetcher.py',$output,$ret_code);
$smarty->assign('readings',$output);
$smarty->display('readings.tpl');
?>
我被问到reading_fetcher.py
的代码,所以这里是:
#!/usr/bin/env python
import urllib2, re
response = urllib2.urlopen('http://it.ctsfw.edu/inc/nc_scriptureframe.php')
html = response.read()
def remove_html_tags(data):
p = re.compile(r'<.*?>')
return p.sub(' ', data)
import re
import htmlentitydefs
def convertentity(m):
if m.group(1)=='#':
try:
return unichr(int(m.group(2)))
except ValueError:
return '&#%s;' % m.group(2)
try:
return htmlentitydefs.entitydefs[m.group(2)]
except KeyError:
return '&%s;' % m.group(2)
def converthtml(s):
return re.sub(r'&(#?)(.+?);',convertentity,s)
readings = converthtml(str(remove_html_tags(html)))
readings.replace(" ", " ")
print readings[699:]
我已查看here,here和here。其中两个错误是额外的“$”。我的功能名称上没有额外的“$”。第三个错误是“()”而不是“[]”。所以我尝试更换它们。那没用。我还能尝试什么?
答案 0 :(得分:1)
exec()可能已被服务器管理员禁用。在这种情况下,对exec的调用将打印E_NOTICE和E_WARNING。因此,如果您禁用警告打印,则只能看到E_NOTICE并可能错过更有趣的警告,说“出于安全原因,exec已被禁用”。
您可以将此行添加到您的代码中
error_reporting(E_ALL);
这样你就可以有更详细的执行。