2013-02-12 15 views
8

Ho un VPS da 1 & 1 con CentOS 5.2 64-bit.PHP sputa una nuova riga prima di qualsiasi uscita

Martedì scorso ho aggiornato PHP e installato ImageMagick, che ha dovuto aggiornare molti altri pacchetti, tra cui Apache, MySQL, Perl, ecc. Un sacco di cose sono state aggiornate nel processo, ma essendo un noob completo l'ho appena seguito.

Ora il problema è che tutti i siti web simile a questa:

1. 
2. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/ xhtml1/DTD/xhtml1-transitional.dtd"> 

(una nuova linea su ogni singolo file PHP prima uscita)

ho anche provato ob_start(); e die(trim(ob_get_clean())); senza fortuna. La nuova linea continua a persistere.

Ho brevemente controllato /etc/php.ini senza che nessuno si distinguesse.

Cosa posso fare?

+0

E come appare una delle tue pagine PHP? – Jon

+0

Penso che la sua distinta base? –

+0

Non lo fa localmente. Ha funzionato molto bene prima dell'aggiornamento. Non è BOM, ho appena provato l'intestazione '(Content-type: text/html; charset = utf-8"); 'niente di buono. Il problema è ancora qui. –

risposta

6

Girato al buio, ma controlla il tuo php.ini per un valore auto-prepend-file. Potrebbe puntare a un file di default vuoto che ha un'interruzione di riga.

+0

probabilmente un file auto incluso ... –

+0

Appena controllato '/ etc/php.ini', ho'; auto_append_file = 'and'; auto_prepend_file = 'entrambi commentati. :( –

+1

+1 per quelle direttive ini, avevo dimenticato quegli ingannevoli ragazzi erano lì. Potevo anche vedere qualche plugin/upgrade subdolo usarlo per rendere il loro codice 'globablly' disponibile. –

3

La causa più probabile di questo è qualche base include file con spazi bianchi alla fine di esso. Se qualche file include ha caratteri fuori sito dei tag <?php e ?>, comprese le interruzioni di riga o spazi, quindi apache scriverà una riga vuota all'inizio della risposta, come si sta vedendo.

Sfortunatamente, qualsiasi file nella catena di inclusione potrebbe essere il colpevole. Se si è su un provider di hosting condiviso, potrebbe essere necessario contattare il proprio supporto per assicurarsi di non avere comportamenti stravaganti di inclusione automatica o direttive di apache, come menziona AlienWebguy. Ecco una buona domanda Stack Overflow su best practices for include files. (Si fa anche notare che Smarty, un plug-in di php di terze parti aveva spazi bianchi di riserva nei suoi file di inclusione, anche nelle versioni recenti/attuali.)

E questo è un probabile articolo per sapere come find and kill pages with whitespace on them. Se il tuo * nix-fu è abbastanza forte, si potrebbe grep la struttura del file con una regex per cercare di trovare alcun colpevole. Preventivamente, Mario nella domanda SO collega post alcune direttive php che possono avvisare su di esso, che potrebbero essere gettate in un hook di commit svn per catturare eventuali errori futuri.

+0

Sembra che sia successo solo dal suo aggiornamento. – AlienWebguy

+0

E il colpevole potrebbe essere in uno qualsiasi dei nuovi file che sono stati installati o modificati. –

+0

Ho SVN sul server, ma nessuno dei miei PHP finisce in '?> '. Ho appena installato Ruby e ho eseguito quel comando per confermare. (solo alcune aree di amministrazione avevano) Non sono in hosting condiviso, è un VPS. –