0

我在尝试测试 simplesamlphp 解析错误时收到此错误:语法错误,第 139 行 /simplesamlphp/modules/core/lib/Auth/Process/GenerateGroups.php 中的意外 T_FUNCTION

这是什么原因造成的?

我正在运行 PHP 5.2

4

1 回答 1

2

这是因为这是使用匿名函数。我用下面的方法和一个额外的方法替换了这个方法,现在它在 5.2 中可以正常工作。SimplesamlPHP 的要求表明它只需要 PHP 5.1 或 5.2,但如果没有此代码更改,这显然是不正确的。

/**
 * Escape special characters in a string.
 *
 * This function is similar to urlencode, but encodes many more characters.
 * This function takes any characters not in [a-zA-Z0-9_@=.] and encodes them with as
 * %<hex version>. For example, it will encode '+' as '%2b' and '%' as '%25'.
 *
 * @param string $string  The string which should be escaped.
 * @return string  The escaped string.
 */
private static function escapeIllegalChars($string) {
    assert('is_string($string)');

    return preg_replace_callback('/([^a-zA-Z0-9_@=.])/',
        array(self,escapeIllegalCharsPregCallback),
        $string);
}

private static function escapeIllegalCharsPregCallback($m) {
    return sprintf("%%%02x", ord($m[1]));
}
于 2013-12-05T14:08:06.990 回答