2011-12-11 70 views
1

我知道这个错误是由于一些不匹配的括号,引号或任何其他原因,仍然无法找到解决方案,因为我的代码在本地主机上完美工作,但给我我的共享主机服务器上的这个错误(同样的PHP版本:5.3.8)解析错误:语法错误,第1行出现意外的T_STRING

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 

这发生在每个控制器上。 我试图检查此调用之前的代码,但由于它在本地主机上正常工作,我不知道该看什么。我所知道的唯一的区别是魔术引号是关在本地主机上,并在服务器上,但我不知道这是否

编辑 此外,每个控制器的启动是:

<?php 
    class ControllerName extends Controller { 

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

+3

演示:http://codepad.org/ hkA9UTt7没有得到你发布的分析错误。 –

+0

确认我也正确解析。 –

+0

@Jared Farrish:自己尝试一下:http://www.dovemangiostasera.com/app/place/view/1 –

回答

3

我修好了。编写代码在Windows隐含有\r\n新行字符,这些都没有在我的Linux主机正确intepreted:将所有\r\n到UNIX标准新行字符\n修复了这一错误

相关问题