Abbiamo ereditato una pagina PHP che funziona bene su Ubuntu, ma scarica il codice sorgente sul display su un sistema Windows 7 con XAMMP usando PHP 5.4, o WAMP usando PHP 5.3 .La pagina PHP viene visualizzata su ubuntu, non su Windows 7
Il punto in cui si verifica il dump sembra essere quando tenta di analizzare una combinazione di caratteri "->" (oggetto di proprietà). Quando lo cambio in "[]" per accedere come elemento di array, lo supera, ma poi scarica il codice sorgente sul display che appare dopo la combinazione di caratteri "=>" (mappatura). Commentandolo non funziona, solo eliminando l'intera linea lo supera.
Infine, quando si stampa semplicemente html con i segni "<" e ">", anche questo causa il dump dello schermo. Se sostituisco quei caratteri con le entità html, il codice sorgente non scarica più, ma il programma non visualizza il menu e non funziona affatto. Si noti che posso accedere correttamente all'app tramite la sua pagina di accesso, anche se questo mostra "POST" e qualche altro "<" e ">" caratteri nel campo del nome utente.
Ho provato a eseguire unix2dos sull'intera app, ma ciò non ha avuto alcun effetto. Ho anche provato a convertire il testo di una delle pagine offensive in UTF-8, ma ancora senza fortuna.
In risposta ad alcune delle domande poste: versione di Ubuntu
Il funzionamento è PHP versione 5.3.10-1ubuntu3.1
Il primo pezzo di codice che funziona in Ubuntu e non in Windows è questo :
public function __construct($gid)
{
$this->id = $gid;
return $this->retrieve();
}
in cui il codice discarica sul display inizia con:
id = $gid; return $this->retrieve(); }
Sì, PHPInfo funziona, mostrando per il server WAMP con PHP Versione 5.3.13
Ho provato a cambiare il tag di apertura breve ma non ha fatto alcuna differenza.
Il prodotto è stato scritto per noi da un gruppo di outsourcing e sembra essere basato su un qualche tipo di struttura. Ma non sono riuscito a trovare alcun riferimento a nessuno dei nomi di classe su Google, quindi forse hanno scritto tutto in casa.
Andare al log di Apache, l'errore effettivo accade su questa linea:
$_SESSION['admin_gid'] = Membership::getGroup($rUser['id']);
in cui il messaggio di errore è:
appartenenza' non trovato
appartenenza è un classe che viene dichiarata più tardi nello stesso file di quello che viene scaricato sul display nel punto sopra indicato, quindi per qualche motivo il parser PHP non capisce che è leggendo il codice PHP da quel punto.
Potrebbe inviare il pezzo più breve di codice che funziona su una piattaforma e non l'altro? – Floris
sembra che la direttiva short-open-tag sia stata disattivata in windows http://php.net/manual/en/ini.core.php#ini.short-open-tag –
Puoi ottenere un ' Php phpinfo (); ?> 'funziona sul server web Win7? – halfer