解析错误:语法错误,第1行意外T_STRING

时间:2011-12-11 12:19:25

标签: php debugging

我知道这个错误是由于一些不匹配的括号,引号或其他什么,我仍然无法找到解决方案,因为我的代码在localhost上完美运行但在我的共享托管服务器上给了我这个错误(相同的PHP版本) :5.3.8)

function call_hook() {
    global $url;

    $url_array = explode('/', $url);

    if (isset($url_array[0]) && $url_array[0] != '') {
        $controller = $url_array[0];
    } else {
        $controller = DEFAULT_CONTROLLER;
    }

    if (isset($url_array[1]) && $url_array[1] != '') {
        $action = $url_array[1];
    } else {
        $action = DEFAULT_ACTION;
    }

    if (isset($url_array[2])) {
        $queryString = explode(PARAM_DELIMITER, $url_array[2]);
    } else {
        $queryString = array();
    }

    $controller_name = $controller;
    $controller = ucwords($controller);
    $model = rtrim($controller, 's');
    $controller .= 'Controller';
    $dispatch = new $controller($model, $controller_name, $action);

    if ((int)method_exists($controller, $action)) {
        // I get the error after this function call
        call_user_func_array(array($dispatch, $action), $queryString);
    } else {
        /* error */
    }
}

这个函数从URL加载一些参数然后调用右边的控制器,在call_user_func_array调用之后它应该加载相应的控制器php文件,但是我收到了这个错误:

Parse error: syntax error, unexpected T_STRING in /web/htdocs/www.mysite.com/home/app/application/controllers/CONTROLLERFILE.php on line 1 

每个控制器都会发生这种情况。 我已经尝试检查此调用之前的代码,但由于它在localhost上正常工作,我真的不知道该看什么。我所知道的唯一区别是,魔术引号在本地主机上是关闭,在服务器上是开启,但我不知道是否这个

修改 此外,每个控制器的开始是:

<?php
    class ControllerName extends Controller {

localhost是一个Windows系统,我的服务器是Linux服务器,如果这可能很重要。

1 个答案:

答案 0 :(得分:5)

我修好了。在Windows上编写代码意味着将\r\n作为新行字符,这些字符在我的Linux主机上没有正确解释:将所有\r\n转换为UNIX标准新行char \n修复了错误< / p>