2012-06-12 3 views
0

У меня была функция, которая работала нормально. Затем я загрузил его на живой сервер, и он дал мне 500 внутренних ошибок сервера. После того, как пользователи Google запустили ошибку, которую вы получаете, когда что-то (но они не уверены, что), перепутали с сервером. Не очень полезно. другие сказали, что вы проверили свой журнал ошибок. Я понятия не имею, как добраться до него.500 Внутренняя ошибка сервера - нет журнала ошибок

Функция, которая вызывает =============================== ERRor

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; 
    } 

} 
+0

Если ваша функция работает нормально локально, но не на сервере, это связано с тем, что две машины настроены по-другому - стоит проверить, чтобы ваша локальная машина и сервер использовали одни и те же версии PHP, mySQL, и оба они имеют одинаковую конфигурацию. – andrewsi

+0

У вас есть доступ к журналам ошибок сервера? Они будут содержать более подробную версию сообщения –

+0

К сожалению, я не тот, который запускает живой сервер, но я поговорю с ним об этом. –

ответ

1

Как выясняется, была проблема с базой данных. Жаль тем, кто потратил время, пытаясь помочь. Парень, работающий в базе данных, нашел проблему. Спасибо за попытку.

0

это может быть двойной -> s в $this->input->post, попробуйте разделить его на отдельные разделы, например

$a = $this->input; 
if ($a->post('search')) { 

В моем опыте, некоторые конфигурации не любят дублей, как $this->input->post, особенно старые версии и некоторые конфиги IIS

+0

$ this-> input-> post() часть работает –

+0

ах, может быть, это не так :) Вы пробовали прогрессировать, хотя код? например после каждой части остановите скрипт с помощью 'die (« here »)' или что-то подобное, до тех пор, пока вы не дойдете до того момента, когда первая фатальная ошибка попадет туда, и вы найдете строку, которая вызывает ошибку? работает для меня большую часть времени! в любом случае, надеюсь, что вы найдете решение – Jamie

0

я сделайте следующее отлаживать если iwere вам:

  1. Установить PHP сообщение об ошибках до 8191, display_errors - 1 в php.ini
  2. Используйте isset в каждом соответствующем состоянии.
  3. Проверьте подключение db вручную.

Надеюсь, это поможет.

1

Вы можете загрузить любую страницу своего сайта CodeIgniter или только одну из них?

Следующие шаги могут помочь вам отладить:

в основной файл .htaccess добавить эти строки:

php_flag display_startup_errors on 
php_flag display_errors on 
php_flag html_errors on 

в основной index.php разделе «среды Application», установите «развитие "окружающая среда:

define('ENVIRONMENT', 'development'); 

и вы также можете включить CodeIgniter протоколирования ошибок в вашей конфигурации/файла config.php, раздел 'Error Logging Threshold'

Если какой-либо из них не делают никакого прогресса, обратитесь к администратору сервера :)

+0

Это и несколько других страниц, которые не работают. Большинство из них делают, хотя –

0

Попробуйте вместо этого:

$search = $this->input->post('search'); 
if ($search) { 
    $where = 'ad_name ="'.$search.'" AND'; 
    $this->data['search'] = $search; 
} else { 
    $where = ''; 
} 
+0

Это то, что я изначально имел, но я изменил его, когда я возился с ним –