PHP - 函数名必须是字符串

时间:2011-02-01 05:25:05

标签: php function

错误:

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("&nbsp;", " ")

print readings[699:]

我已查看hereherehere。其中两个错误是额外的“$”。我的功能名称上没有额外的“$”。第三个错误是“()”而不是“[]”。所以我尝试更换它们。那没用。我还能尝试什么?

1 个答案:

答案 0 :(得分:1)

exec()可能已被服务器管理员禁用。在这种情况下,对exec的调用将打印E_NOTICE和E_WARNING。因此,如果您禁用警告打印,则只能看到E_NOTICE并可能错过更有趣的警告,说“出于安全原因,exec已被禁用”。

您可以将此行添加到您的代码中

error_reporting(E_ALL);

这样你就可以有更详细的执行。