500 Internal Server Error на сервере, но работает в системе разработки - PullRequest
1 голос
/ 06 января 2011

Я использую Zend Framework, кстати, и я реализовал ZendX_JQuery_Form_Element_AutoComplete. Он работает, как и ожидалось, в моей локальной системе, но на живом сервере, когда я начинаю печатать, он выдает мне 500 Internal Server Error. У меня есть эта проблема в течение 3 дней, и я погуглил и прочитал довольно мало решений.

Надеюсь, что кто-то может помочь.

Сервер и система разработки работают под управлением Ubuntu, и я попытался сохранить одинаковые настройки в обеих системах.

Edit:

Я проверил ссылки и разрешения, как было предложено, и проблема все еще сохраняется. Поэтому я буквально построчно запускал код, и я пришел к следующей строке в контроллере, которая вызывает ошибку 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, но список будет слишком длинным или позволит пользователю ввести имя и нажать кнопку отправки для поиска. это тоже не идеально, так как написание не является обычным или легко выяснимым, поэтому запрос может не всегда работать.

Ответы [ 3 ]

1 голос
/ 06 января 2011

попробуй проверить свои пути.Может быть, на локальном сервере ваши пути верны, но на реальном сервере этот путь неверен.Хорошей практикой является использование абсолютных путей.В Zend Framework в index.php вы можете объявить ROOT_PATH и другие пути.На других страницах, когда вы включаете некоторые файлы, используйте глобальные переменные.Сервер не может найти файл на сервере (500 внутренняя ошибка).Извините за мой английский.

1 голос
/ 06 января 2011

Проверьте chmod для файлов, запущенных на сервере. Я предполагаю, что права доступа установлены на то, что ваш хостинг не одобряет.

0 голосов
/ 09 февраля 2012

Вы можете удалить функции обратного вызова, комментируя следующие строки кода

/* //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);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...