Questa potrebbe essere una domanda ridicola, ma mi ha infastidito per un po '. Ho un mittente di posta convogliato ad uno script PHP, che riceve perfettamente, però ho il seguente errore inviato di nuovo a me immediatamente:Come posso impedire a PHP di restituire le intestazioni quando viene eseguito da riga di comando?
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
Come si può vedere, Exim pensa la risposta di intestazione di un errore dal copione Io ho. Lo script può ricevere l'e-mail perfettamente da php: // stdin ma Exim sta rispondendo rapidamente con l'errore.
Inoltre,
- E 'in esecuzione dalla console, non Apache così HTAccess o la configurazione di Apache molto probabilmente non avrebbe fatto nulla.
- Non riesco a trovare alcuna soluzione o qualcuno con lo stesso problema.
Quindi la mia domanda è: come sbarazzarmi di quelle due intestazioni?
Grazie, ~ Jonny
Edit, Fonte:
#!/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);
Per quanto ho provato con php -v che ha restituito "Content-type: text/html", sono andato avanti e ho provato a eseguirlo con l'opzione -q e restituiva ancora le intestazioni. Exim è ancora piuttosto suscettibile. – JonnyLitt
prova ad aggiungere un'intestazione ('Content-type:'); all'inizio del tuo script. Controlla anche http://www.php.net/manual/en/function.header-remove.php –
eep, il problema è: non ho PHP <= 5.3.0 (necessario per Header_remove), piuttosto versione 5.2.4. Non posso aggiornarlo perché sono su un host condiviso e hanno discusso sul fatto che sia paranoico sui bug nelle nuove versioni di PHP. – JonnyLitt