Backslash extra aggiunti in PHP
Domanda
Il mio host web schifoso ha fatto alcuni aggiornamenti l'altro giorno e alcune impostazioni sono andate male, perché guardando il wiki della nostra azienda (MediaWiki), ogni citazione viene evasa con una barra rovesciata. Non sono interessati solo i dati che vengono pubblicati (ovvero: gli articoli), ma anche il testo standard di MediaWiki. ad esempio:
Hai seguito un collegamento a una pagina che non esiste ancora. Per creare la pagina, inizia a digitare nella casella sottostante (vedi la pagina di aiuto per maggiori informazioni). Se sei qui per errore, fai clic sul pulsante del browser \ 's \' \ '\' indietro \ '\' \ '.
La prima cosa che ho fatto è stato disabilitare magic_quotes_gpc
AND magic_quotes_runtime
usando un file .htaccess
, ma questo sta ancora accadendo. Il mio php_info ()
riporta questo:
Setting Local Value Master Value
magic_quotes_gpc Off On
magic_quotes_runtime Off On
magic_quotes_sybase Off Off
Qualche idea?
Soluzione
Se i flag PHP sono impostati con php_admin_flag
/ php_admin_value
, non puoi cambiarlo da un file .htaccess
. Questo mi ha causato mal di testa prima. Disabilitalo in php.ini
o annulla virgolette magiche in runtime:
http://talks.php.net/show/php-best-practices/ 26
Altri suggerimenti
Potresti voler confermare che i dati nel tuo DB non sono stati danneggiati. Se stavi aggiungendo () i tuoi dati quando, a tua insaputa, erano stati attivati ??magic_quotes, allora saresti un doppio slashification dei dati che vanno nel tuo DB.
Dovrai farli cambiare il valore principale o gestirlo tu stesso. Non credo che tu possa impostare magic_quotes_gpc ()
in fase di esecuzione per i super globali. (impostandolo in fase di esecuzione rimuoverà cose come database / file, ma non i globali)
if (ini_get('magic_quotes_gpc') ) {
foreach( Dovrai farli cambiare il valore principale o gestirlo tu stesso. Non credo che tu possa impostare magic_quotes_gpc ()
in fase di esecuzione per i super globali. (impostandolo in fase di esecuzione rimuoverà cose come database / file, ma non i globali)
<*>GET as $key=>$value) {
Dovrai farli cambiare il valore principale o gestirlo tu stesso. Non credo che tu possa impostare magic_quotes_gpc ()
in fase di esecuzione per i super globali. (impostandolo in fase di esecuzione rimuoverà cose come database / file, ma non i globali)
<*>GET[$key] = stripslashes($value);
}
} // etc...
Forse qualcos'altro sta chiamando set_magic_quotes_runtime ().
Uso strisce () per rimuovere le barre durante la visualizzazione.
Hai provato a contattare l'host schifoso e a registrare un errore? Probabilmente non sei l'unico interessato se sei su hosting condiviso.