2010-03-14 21 views
6

Esto puede ser una pregunta ridícula, pero me ha estado molestando por un tiempo. Tengo un emisor de correo canalizado a un script PHP, que recibe a la perfección, sin embargo he enviado el siguiente error de nuevo a mí al instante:¿Cómo podría evitar que PHP devuelva encabezados cuando se ejecuta desde la línea de comandos?

A message that you sent could not be delivered to one or more of its recipients. This is a permanent error. The following address(es) failed: 

    pipe to |/home/[webroot]/public_html/external/mobile/email.php 
    generated by [email protected][mydomain] 

The following text was generated during the delivery attempt: 

X-Powered-By: PHP/5.2.13 
Content-type: text/html 

Como se puede ver, Exim piensa la respuesta de cabecera de un error del guión Yo tengo. La secuencia de comandos puede recibir el correo electrónico perfectamente desde php: // stdin pero Exim responde rápidamente con el error.

Plus,

  • Está funcionando desde la consola, por lo que no Apache HTAccess o configuración de Apache más probable es que no hacer nada.
  • No encuentro ninguna solución, o alguien con el mismo problema.

Así que mi pregunta es: ¿Cómo deshacerse de esos dos encabezados?

Gracias, ~ Jonny

Editar, Fuente:

#!/usr/bin/php 
<?php 
    $fd = fopen("php://stdin", "r"); 
     $email = ""; 
     while (!feof($fd)) { 
     $email .= fread($fd, 1024); 
     } 
     fclose($fd); 

     $dat = fopen(dirname(__FILE__).'/test.txt', 'w'); 
     fwrite($dat, $email); 
     fclose($dat); 

Respuesta

14

parece que se está ejecutando php-cgi mientras que necesita php-cli (sólo "php"). Ejecute php -v para estar seguro. Si cgi es el caso, pruebe la opción "-q".

+0

Por lo que he intentado con php -v devolvió el spam "Tipo de contenido: text/html", seguí adelante y traté de ejecutarlo con la opción -q y todavía devolvió los encabezados. Exim sigue siendo bastante sensible con él. – JonnyLitt

+1

intente agregar encabezado ('Content-type:'); al inicio de tu script También consulte http://www.php.net/manual/en/function.header-remove.php –

+0

eep, Hizo eso, el problema es: no tengo PHP <= 5.3.0 (Necesario para Header_remove), más bien versión 5.2.4. No puedo actualizar tampoco porque estoy en un host compartido y han argumentado en contra de que sea paranoico sobre los errores en las versiones más nuevas de PHP. – JonnyLitt

0

Tenía el mismo problema. Mis anfitriones me dijeron que podía usar php-5.4-cli (normalmente usaba php-5.4).

Agregar -cli funcionó para mí.

Cuestiones relacionadas