Error interno 500 Apache, pero nada en los registros?

Recibo 500 errores del Servidor interno cuando bash hacer una POST HTTP a una dirección específica en mi aplicación. He revisado los registros del servidor en el directorio de registro personalizado especificado en el archivo de hosts virtuales, pero el error no aparece allí, por lo que la depuración ha sido un dolor de cabeza.

¿Cómo hago que Apache registre errores internos 500 en el registro de errores?

    El registro de errores generalmente tiene el (más) error específico. a menudo serán los permisos denegados o incluso un intérprete que no se puede encontrar.

    Esto significa que la falla casi siempre recae en su script. por ejemplo, ¿cargó un script de Perl pero no le dio permisos de ejecución? o tal vez estaba dañado en un entorno Linux si escribes el script en Windows y luego lo cargas al servidor sin que se conviertan los finales de línea, obtendrás este error.

    en perl si te olvidas

    print "content-type: text/html\r\n\r\n"; 

    obtendrás este error

    Hay muchas razones para eso. así que primero verifique su registro de errores y luego brinde más información.

    El registro de errores predeterminado suele estar en /var/log/httpd/error_log o /var/log/apache2/error.log .

    La razón por la que mira los registros de errores predeterminados (como se indicó anteriormente) es porque los errores no siempre se publican en el registro de errores personalizado como se define en el host virtual.

    Asume Linux y no necesariamente perl

    ¿Por qué los 500 errores internos del servidor no se registran en sus registros de error de apache?

    Los errores que causan su 500 Internal Server Error provienen de un módulo de PHP. Por defecto, PHP NO registra estos errores. La razón por la que desea que las solicitudes web vayan tan rápido como sea físicamente posible.

    Estas instrucciones para habilitar el Registro de errores interno del servidor son para Ubuntu 12.10 con PHP 5.3.10 y Apache/2.2.22 .

    Asegúrese de que el registro de PHP esté activado:

    1. Ubique su archivo php.ini:

       el@apollo:~$ locate php.ini /etc/php5/apache2/php.ini 
    2. Edite ese archivo como root:

       sudo vi /etc/php5/apache2/php.ini 
    3. Encuentra esta línea en php.ini:

       display_errors = Off 
    4. Cambia la línea de arriba a esto:

       display_errors = On 
    5. Más abajo en el archivo verá esto:

       ;display_startup_errors ; Default Value: Off ; Development Value: On ; Production Value: Off ;error_reporting ; Default Value: E_ALL & ~E_NOTICE ; Development Value: E_ALL | E_STRICT ; Production Value: E_ALL & ~E_DEPRECATED 
    6. Los puntos y comas son comentarios, eso significa que las líneas no surten efecto. Cambie esas líneas para que se vean así:

       display_startup_errors = On ; Default Value: Off ; Development Value: On ; Production Value: Off error_reporting = E_ALL ; Default Value: E_ALL & ~E_NOTICE ; Development Value: E_ALL | E_STRICT ; Production Value: E_ALL & ~E_DEPRECATED 

      Lo que esto comunica a PHP es que queremos registrar todos estos errores. Advertencia, habrá un gran golpe de rendimiento, por lo que no quiere que esto esté habilitado en la producción porque el registro lleva tiempo y el trabajo lleva tiempo; el tiempo cuesta dinero.

    7. Reiniciar PHP y Apache debería aplicar el cambio.

    8. Haga lo que hizo para volver a causar el error 500 Internal Server y verifique el registro:

       vi /var/log/apache2/error.log 
    9. Debería ver el error 500 al final, algo como esto:

       [Wed Dec 11 01:00:40 2013] [error] [client 192.168.11.11] PHP Fatal error: Call to undefined function Foobar\\byob\\penguin\\alert() in /yourproject/ your_src/symfony/Controller/FuckedUpController.php on line 249, referer: https://nuclearreactor.com/abouttoblowup 

    Me encontré con esto y fue debido a una configuración incorrecta de mod_authnz_ldap en mi archivo .htaccess. Absolutamente no se registraba nada, pero seguí obteniendo un error de 500.

    Si se encuentra con este problema en particular, puede cambiar el nivel de registro de mod_authnz_ldap así:

     LogLevel warn authnz_ldap_module:debug 

    Eso utilizará un nivel de registro de depuración para mod_authnz_ldap, pero advierta sobre todo lo demás ( https://httpd.apache.org/docs/2.4/en/mod/core.html#loglevel ).

    Verifique su registro de errores php, que podría ser un archivo separado de su registro de errores de apache.

    Encuéntrelo yendo a phpinfo() y phpinfo() atributo error_log. Si no está configurado. Establézcalo: https://stackoverflow.com/a/12835262/445131

    Tal vez su post_max_size sea demasiado pequeño para lo que está tratando de publicar, o una de las otras configuraciones de memoria máxima es demasiado baja.

    Si la información de su Error interno de servidor no aparece en los archivos de registro, probablemente necesite reiniciar el servicio de Apache .

    Descubrí que Apache 2.4 (al menos en la plataforma Windows) tiende a negarse obstinadamente a enjuagar archivos de registro; en cambio, los datos registrados permanecen en la memoria durante bastante tiempo. Es una buena idea desde el punto de vista del rendimiento, pero puede ser confuso cuando se desarrolla.

    Compruebe que la versión de php que está ejecutando coincide con su base de código. Por ejemplo, su entorno local puede ejecutar php 5.4 (y las cosas funcionan bien) y tal vez está probando su código en una máquina nueva que tiene instalado php 5.3. Si usa la syntax 5.4 como [] para array (), obtendrá la situación que describió anteriormente.

    Intente acceder a un archivo estático. Si esto tampoco funciona, vaya a todos los directorios desde la raíz “/” o “c: \” al directorio de su archivo y verifique si contienen archivos “.htaccess”.

    Una vez dejé un archivo en “c: \” y tuvo los resultados más extraños.

    En mi caso, era la directiva ErrorLog en httpd.conf. Recién lo noté por accidente ya después de que me rendí. Decidió compartir el descubrimiento) Ahora sé dónde encontrar los 500 errores.