2012-01-04 38 views
10

Tôi đã chuyển ứng dụng từ máy chủ Ubuntu 11.04 (Natty Narwhal) sang máy chủ Red Hat Enterprise Linux (RHEL) vào cuối tuần. log lỗi của tôi là đầy đủ các lỗi PHP trong dòng chủ đề tham khảo các chức năng sau:T_PAAMAYIM_NEKUDOTAYIM không mong đợi, mong T_NS_Separator

function wfTalkHereArticleFromTitle(&$title, &$article) { 
    global $wgRequest, $wgTalkHereNamespaces; 

    if (isset($title->noTalkHere)) 
     return true; //Stop recursion 

    $action = $wgRequest->getVal('action' ); 
    $oldid  = $wgRequest->getVal('oldid' ); 
    $diff  = $wgRequest->getVal('diff'  ); 

    if ($action == 'purge') 
     $action = NULL; //"purge" is not considered an action in this context 

    if ($action || $oldid || $diff) 
     return true; 

    $ns = $title->getNamespace(); 

    if (!Namespace::isTalk($ns) && Namespace::canTalk($ns) && $title->exists() 
     && (!$wgTalkHereNamespaces || in_array($ns, $wgTalkHereNamespaces))) { 

     $tns = Namespace::getTalk($ns); 
     $talk = Title::makeTitle($tns, $title->getDBKey()); 

     if ($talk && $talk->userCan('read')) { 
      $t = clone $title; 
      $t->noTalkHere = true; //Stop recursion 

      $a = MediaWiki::articleFromTitle($t); 
      $article = new TalkHereArticle($a, $talk); 
     } 
    } 
    return true; 
} 

Các lỗi được ném vào báo cáo kết

If (!Namespace::isTalk($ns) 

. Lỗi này là lỗi mới cho tôi. Làm thế nào tôi có thể giải quyết nó?

tôi đã thay đổi mã vi phạm đến:

if (!Ns::isTalk($ns) && Ns::canTalk($ns) && $title->exists() 
    && (!$wgTalkHereNamespaces || in_array($ns, $wgTalkHereNamespaces))) { 

    $tns = Ns::getTalk($ns); 
    $talk = Title::makeTitle($tns, $title->getDBKey()); 

    if ($talk && $talk->userCan('read')) { 
     $t = clone $title; 
     $t->noTalkHere = true; //Stop recursion 

     $a = MediaWiki::articleFromTitle($t); 
     $article = new TalkHereArticle($a, $talk); 
    } 
} 
return true; 

đó có đủ để sửa chữa các lỗi, ít nhất là trong tập tin này?

+1

@Charles hehe lỗi không viết đúng chính tả :-P – Neal

+1

Bằng cách này, các lỗi thực sự đánh vần "PAAMAYIM NEKUDOTAYIM" (hữu ích khi Google). Như Neal đề cập, "PAAMAYIM NEKUDOTAYIM" là tiếng Do Thái cho dấu hai chấm (các tác giả gốc của PHP là Israel). –

+1

Pfft, tôi là một người đánh tag, không phải là một nazi speeling. – Charles

Trả lời

23

Có vẻ như máy chủ mới của bạn đang chạy PHP 5.3, trong khi máy chủ cũ của bạn đang chạy phiên bản cũ hơn.

Trong PHP 5.3, namespace là từ khóa, nhờ vào số new namespace feature.

Lớp học hiện tại Namespace của bạn sẽ cần được đổi tên. Lỗi phân tích cú pháp xảy ra khi mã cố gắng giải quyết Namespace::isTalk() thành tên không gian tên. (Cú pháp để làm như vậy sẽ là một cái gì đó giống như namespace Foo; nó trở nên bối rối khi nhìn thấy người điều khiển độ phân giải ::.)

+1

Tốt nhất một '+ 42'^_ ^ – Neal

Các vấn đề liên quan