El error 500 silencioso: cómo encontrar caracteres basura en PHP

El clásico problema local vs. servidor

Hay una situación frustrante que conoce cualquier desarrollador: tienes un archivo PHP que funciona perfecto en tu ordenador, pero al subirlo a un entorno de producción en Linux, el servidor devuelve un código de estado 500. La primera reacción es pensar que algo está mal con la configuración del sistema o las credenciales de la base de datos.

Vista de código PHP con error de sintaxis y terminal Linux
El archivo filtrar.php con el carácter 0x1C en la línea 834 antes de ser corregido.

El detective: revisando los logs

Llegar a este punto requiere paciencia y una buena estrategia de depuración. Es común sugerir habilitar el reporte de errores en pantalla usando display_errors, pero si el servidor está configurado para ocultarlos, ese truco no funcionará.

El descubrimiento: un carácter inesperado

Al acceder directamente a los archivos del sistema y revisar el registro de errores (el log), apareció una pista crucial. El mensaje indicaba un PHP Parse error: syntax error, unexpected character 0x1C. Este código hexadecimal no es algo normal; corresponde a un carácter de control binario.

Cómo limpiar el archivo

La solución no fue cambiar la lógica del programa ni tocar la base de datos. Se trató de una limpieza básica del entorno de codificación:

  • Borrar las líneas problemáticas (en este caso, alrededor de la línea 834).
  • Escribir el código manualmente para evitar copiar y pegar basura.
  • Guardar el archivo como UTF-8 sin BOM.

Con estos pasos simples, se eliminó el carácter invisible que estaba corrompiendo el parser de PHP en el servidor Linux. Ahora todo funciona correctamente.