2011-01-06 20 views
1

私はzend framework btwを使用しています。私はZendX_JQuery_Form_Element_AutoCompleteを実装しました。私のローカルシステムでは正常に動作しますが、ライブサーバーでは入力を開始すると500台の内部サーバーエラーが発生します。私は今3日間この問題を抱えており、私はグーグルで、かなりのソリューションを読んでいます。500サーバー上の内部サーバーエラーですが、開発システム上で動作します

誰かが助けてくれることを願っています。

サーバとdevシステムの両方でUbuntuを実行していますが、私は両方のシステムで同じ設定を維持しようとしています。

編集:提案と問題が解決しないように私がリンクして許可をチェックした

。だから、私がやったことは、文字通りコードライン・バイ・ラインを実行するためだったと私はエラー500をトリガコントローラで次の行に来た:以下

$response = $groupsmapper->search($this->getRequest()->getParam('term')); 

完全な機能が

public function getallgroupnamesAction() 
{ 
    $this->_helper->viewRenderer->setNoRender(); 
    $this->_helper->getHelper('layout')->disableLayout(); 
    $groupsmapper = new Application_Model_GroupsMapper(); 

    $response = $groupsmapper->search($this->getRequest()->getParam('term')); 
    $json = Zend_Json::encode(array_values($response)); 
    echo $json; 
} 

ですそしてgroupsmapperの検索方法は、私は本当にあなたたちは何かを見つけることができると思いますので、

public static function search($term) 
{ 
    $groupsmapper = new Application_Model_GroupsMapper(); 
    $response = $groupsmapper->getDbTable()->fetchAll(
        $groupsmapper->getDbTable() 
        ->select() 
        ->distinct() 
        ->from(array('groups'), array('group_name')) 
      ); 

    $no_groups = count($groups_array = $response->toArray()); 

    for ($x = 0; $x < $no_groups; $x++) 
    { 
     $groups[] = $groups_array[$x]['group_name']; 
    } 


    $filter = function($group) use ($term) 
    { 
     if(stristr($group, $term)) 
      return true; 
     return false; 
    }; 
    return array_filter($groups, $filter); 
} 

のようなものです、他の賢明な選択肢はselect要素を使用するようにしているが、リストが長すぎるかになりますユーザーに名前を入力させて、送信ボタンをクリックして検索させます。綴りが一般的ではなく、簡単に把握できないため理想的ではないため、クエリが常に正しく動作するとは限りません。

+5

実際にエラーメッセージの詳細については何が表示されますか?詳細がなければ、言うことは不可能です。 – artlung

+0

合意。 "エラー500"は完全に一般的です。実際のエラーメッセージの内容を確認するには、サーバーのエラーログを参照する必要があります。 – Spudley

答えて

1

chmodで、サーバー上で実行されているファイルを確認してください。私の推測では、あなたのホスティングが承認していないものに権限が設定されているということです。

0

パスを確認してください。たぶんあなたのパスはローカルサーバー上にあるが、実際のサーバーではこのパスは間違っている。絶対パスを使用するのがよい方法です。 index.phpのZend Frameworkでは、ROOT_PATHと他のパスを宣言できます。他のページでは、いくつかのファイルをインクルードするときに、このグローバル変数を使用します。サーバーがサーバー上のファイルを検出できません(内部エラー500)。私の英語のために申し訳ありません。

0

あなたは

/* //lines to comment 
$filter = function($group) use ($term) 
{ 
    if(stristr($group, $term)) 
     return true; 
    return false; 
}; 
return array_filter($groups, $filter); 
*/ 

は、独自の機能を備えて次のコード行をコメント化し、コールバック関数を削除することができますし、確かにそれが動作するコールバック関数の上にそれを渡します。私は次の行を使って同じ問題を克服しました。

//New lines to include 
    function filtergroup() 
    { 
     return true; 
    } 

    return array_filter($groups, $filtergroup); 
関連する問題