Como ya te mencionó @pateketrueke, un Error 500 - Internal Error Server es algo ambiguo para dar una respuesta. Lo que quiere decir ese mensaje es que algo falló a nivel WebServer, pero no puede determinarse exactamente qué.
Este link te puede orientar acerca de qué estamos hablando:
http://www.checkupdown.com/status/E500_es.html
Allí verás la descripción algoritmica del tema que sería:
Cita:
Errores 500 en el ciclo HTTP
Cualquier cliente (por ejemplo, su navegador web o nuestro robot CheckUpDown) sigue el siguiente ciclo cuando se comunica con el servidor web:
(1) Obtiene una dirección IP del nombre IP del sitio (la URL del sitio sin el encabezado "http://"). Esta búsqueda (la conversión del nombre IP a dirección IP) es provista por los servidores de nombre de dominio (DNS).
(2) Abre una conexión de socket IP hacia esa dirección IP.
(3) Escribe un flujo de datos HTTP a través de ese socket.
(4) Recibe un flujo de datos HTTP en respuesta desde el servidor web. Este flujo de datos contiene códigos de estado cuyos valores son determinados por el protocolo HTTP. Analiza este flujo de datos en busca de códigos de estado y otra información útil.
Este error ocurre en el paso final mencionado arriba cuando el cliente recibe un código de estado HTTP que reconoce como "500".
En el contexto de tu script, habría que debuggear paso a paso para ver en quñe punto llega el fallo, si es que lo que lo causa es la ejecución de ese script...