我有一个工作得很好的函数。然后我把它上传到实时服务器,它给了我一个 500 内部服务器错误。在谷歌搜索之后,人们说当某些东西(但他们不确定是什么)与服务器搞砸时,你会得到一个错误。不是很有帮助。其他人说检查你的错误日志。我不知道如何到达它。
导致错误的函数 ====
=================================== private function get_workstation () {
//================ I tried deleting all but this and that got rid of the error== //
if ($this->input->post('search')) {
$search = $this->input->post('search');
$where = 'ad_name ="'.$search.'" AND';
$this->data['search'] = $search;
} else {
$where = '';
}
// ================================================================= //
// Pagination Code //
$numOfRows = $this->db->query('
SELECT distinct sys_name
FROM v_rollout_sysuser
WHERE scope_ID = '. $this->session->userdata('scopeId') .'
');
if ($this->input->get('page')) {
$pageNum = $this->input->get('page');
} else {
$pageNum = 1;
}
$limit = ($pageNum - 1 ) * 50;
$numRows = $numOfRows->num_rows();
$totalPages = ceil($numRows / 50);
$this->data['pageNum'] = $pageNum;
$this->data['prevPage'] = $pageNum - 1;
$this->data['nextPage'] = $pageNum + 1;
$this->data['totalPages'] = $totalPages;
// End of Pagination Code //
$query = $this->db->query('
SELECT *
FROM v_rollout_sysuser
WHERE '.$where.' scope_ID = '. $this->session->userdata('scopeId') .'
GROUP BY sys_name
LIMIT '.$limit.',50');
$i = 0;
foreach ($query->result() as $row) {
$i = $i + 1;
$data['i'] = $i;
$data['ro_ID'] = $row->ro_ID;
$data['sys_name'] = $row->sys_name;
$data['EAM_Model'] = $row->EAM_Model;
$data['EAM_User'] = $row->ad_account;
$data['ad_DispName'] = $row->ad_DispName;
$data['search'] = $this->input->post('search');
$systems[] = $data;
}
if(isset($systems)) {
$this->data['systems'] = $systems;
} else {
$this->data['systems'] = null;
}
}
您是否能够加载 CodeIgniter 网站的任何页面或仅加载特定页面?
以下步骤可能有助于调试:
在您的主 .htaccess 文件中添加以下行:
php_flag display_startup_errors on
php_flag display_errors on
php_flag html_errors on
在主索引.php"应用程序环境"部分中,设置"开发"环境:
define('ENVIRONMENT', 'development');
您还可以在配置/配置文件中启用 CodeIgniter 错误日志记录.php"错误日志记录阈值"部分
如果其中任何一项没有取得任何进展,请与服务器管理员联系:)
事实证明,数据库有问题。对那些花时间试图提供帮助的人感到抱歉。运行数据库的人发现了问题。谢谢你的尝试。
它可能是$this->input->post
中的双->
s,尝试将其拆分为单独的部分,例如
$a = $this->input;
if ($a->post('search')) {
根据我的经验,有些配置不喜欢像$this->input->post
这样的替身,尤其是旧版本和一些IIS配置
如果我是你,我会执行以下操作来调试:
- 在 php 中将 php 错误报告设置为 8191,display_errors设置为 1.ini
- 在每个相关条件下使用 isset。
- 手动检查数据库连接。
希望这有帮助。
试试这个:
$search = $this->input->post('search');
if ($search) {
$where = 'ad_name ="'.$search.'" AND';
$this->data['search'] = $search;
} else {
$where = '';
}