服务器上有500个内部服务器错误,但适用于开发系统

时间:2011-01-06 14:57:56

标签: php jquery zend-framework ubuntu

我正在使用zend framework btw,我已经实现了ZendX_JQuery_Form_Element_AutoComplete。它在我的本地系统上按预期工作,但在实时服务器上,当我开始键入时,它给了我500内部服务器错误。我已经有这个问题3天了,我用Google搜索并阅读了很少的解决方案。

希望有人可以提供帮助。

服务器和开发系统都运行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);
}

我真的希望你们能发现一些东西,其他明智的选择是使用选择元素,但列表太长或者让用户输入名称并点击提交按钮进行搜索。这也不太理想,因为拼写不常见或容易弄清楚,因此查询可能并不总是锻炼。

3 个答案:

答案 0 :(得分:1)

检查chmod以查找服务器上运行的文件。我的猜测是权限设置为您的主机不赞同的东西。

答案 1 :(得分:0)

尝试检查你的路径。也许在本地服务器上你的路径是正确的,但在真实服务器上这条路径是错误的。使用绝对路径的好习惯。在index.php的Zend Framework中,您可以声明ROOT_PATH和其他路径。在其他页面上,当您包含一些文件时,请使用此全局变量。服务器无法在服务器上找到文件(500内部错误)。抱歉我的英文。

答案 2 :(得分: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);