500 Error interno del servidor - Sin registro de errores

Tenía una función que funcionaba bien. Luego lo subí al servidor en vivo y me dio un error de servidor interno 500. Después de buscar en Google, la gente dijo que es un error que se obtiene cuando algo (pero no están seguros de qué) está en mal estado con el servidor. No muy útil. otros dijeron que verifique su registro de errores. No tengo idea de cómo llegar a él.

Función que provoca el 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;
    }

}

preguntado el 12 de junio de 12 a las 21:06

Si su función funciona bien localmente pero no en un servidor, será porque las dos máquinas están configuradas de manera diferente; vale la pena verificar para asegurarse de que su máquina local y el servidor estén usando las mismas versiones de PHP, mySQL y que ambos tienen la misma configuración. -

¿Tiene acceso a los registros de errores del servidor? Esos contendrán una versión más detallada del mensaje:

Lamentablemente, no soy el que ejecuta el servidor en vivo, pero hablaré con él al respecto. -

@Pekka, podría, pero no sé cómo acceder a ellos.

@DylanButh: rastree sus registros de errores. Hable con su administrador de sistemas. A los administradores de sistemas les encanta que la gente quiera solucionar sus propios problemas. -

5 Respuestas

¿Puede cargar cualquier página de su sitio web de CodeIgniter o solo una en particular?

Los siguientes pasos pueden ayudarlo a depurar:

en su archivo principal .htaccess agregue estas líneas:

php_flag display_startup_errors on
php_flag display_errors on
php_flag html_errors on

en su sección principal de index.php "Entorno de la aplicación", configure el entorno de 'desarrollo':

define('ENVIRONMENT', 'development');

y también puede habilitar el registro de errores de CodeIgniter en su archivo config/config.php, sección 'Umbral de registro de errores'

Si alguno de estos no hace ningún progreso, comuníquese con el administrador de su servidor :)

Respondido el 12 de junio de 12 a las 21:06

Es esta y un puñado de otras páginas que no funcionan. La mayoría de ellos lo hacen sin embargo - dylan buth

Resulta que había un problema con la base de datos. Lo siento por aquellos que pasaron tiempo tratando de ayudar. El tipo que maneja la base de datos encontró el problema. Gracias por intentarlo.

Respondido el 13 de junio de 12 a las 21:06

puede ser el doble ->s en $this->input->post, intente dividirlo en secciones separadas, por ejemplo

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

En mi experiencia, a algunas configuraciones no les gustan los dobles como $this->input->post, especialmente versiones anteriores y algunas configuraciones de IIS

Respondido el 12 de junio de 12 a las 21:06

ah, tal vez no eso entonces :) ¿Has intentado progresar a través del código? por ejemplo, después de cada parte, detenga el guión con die("here") o algo similar, hasta que llegue al punto donde el error fatal llegue primero y encuentre la línea que causa el error? funciona para mí la mayor parte del tiempo! De cualquier manera, espero que encuentres una solución. Jamie

Haría lo siguiente para depurar si fuera usted:

  1. Configure el informe de errores de php en 8191, display_errors en 1 en php.ini
  2. Use isset en cada condición relevante.
  3. Compruebe la conexión db manualmente.

Espero que esto ayude.

Respondido el 12 de junio de 12 a las 21:06

Prueba esto en su lugar:

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

Respondido el 13 de junio de 12 a las 01:06

Eso es lo que tenía originalmente, pero lo cambié cuando estaba jugando con él. dylan buth

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.