PHP解析错误:语法错误,意外的T_STRING,期望T_FUNCTION

3

我在我的PHP代码中遇到了以下错误:

PHP解析错误:语法错误,意外的T_STRING,期望在C:\Inetpub\wwwroot\webroot\www.novotempo.org.br\lib\Twitter.php的第54行之后输入T_FUNCTION

出错的代码行:

define('DEBUG',false);

在网上搜索后,我发现这通常发生在使用PHP 4.xx的情况下,但我正在使用5.2.6(只是使用phpinfo()进行了检查)。

我尝试了本地和其他两个外部主机,但仍然返回相同的消息。

为什么会发生这种情况?我该如何解决?


真正的问题可能是在它之前的某一行。 - Greg
你能否发布更多的代码(上下几行)? - Mike Dinescu
在一个类方法中,当我注释了一个 if 语句但忘记注释闭合括号时,出现了这个错误。这使得我的下一行代码超出了函数定义范围。它是对一个静态类函数的调用,PHP 将其视为意外的字符串文字,我想。 - Buttle Butkus
2个回答

17

如果您尝试在类的外部但不在函数内部定义某些内容,则会收到此错误。

(通常,PHP 只会在类的外部但不在方法中寻找函数而不期望获得字符串)

例如:您的代码不应该像这样:

class myClass
{
    define("DEBUG", true);
    function myFunc()
     {
     }
}

1

非常感谢,这很快地为我解决了一个烦人的问题。

我还想补充一点,常量名称中使用连字符是不起作用的,而且这似乎是预期的行为。看起来 echo 尝试在单词上评估数学(减号)。

<?php
define('THIS-IS-A-TEST','Testing');
echo THIS-IS-A-TEST;
?>

返回“0”。
<?php
define('THIS_IS_A_TEST','Testing');
echo THIS_IS_A_TEST;
?>

返回“测试”

2
实际上,您将在控制台日志中看到“PHP注意:使用未定义的常量:THIS - 假定'THIS'”。 - Yang Young

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接