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