2011-12-11 69 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修復了這一錯誤

相關問題