Come configurare smartphone e PC. Portale informativo

Cattive informazioni php. Servire i file in modo efficiente con PHP

Questa funzione visualizza una tabella contenente molte informazioni utili su impostazioni php, moduli installati, configurazione del server locale, variabili di ambiente, versione del sistema operativo, percorsi, intestazioni HTTP, licenza PHP, ecc.

La funzione phpinfo viene utilizzata durante il controllo del sistema, poiché ogni server sulla rete ha le proprie impostazioni uniche. Se lo script ha funzionato correttamente su un server e ha smesso di funzionare su un altro, è necessario controllare le impostazioni di configurazione del nuovo server utilizzando questa funzione.

Il modo più semplice per utilizzare questa funzione è creare un file separato:

Verrà visualizzato qualcosa del genere sullo schermo:

Figura 1. La funzione phpinfo() in azione.

E le informazioni sono ancora circa quattro schermate in meno.

phpinfo è una funzione che mostra informazioni complete sulla configurazione PHP corrente.

funzione phpinfo
Nome (costante)Significato Descrizione
INFO_GENERALI 1 Informazioni generali sulla configurazione, posizione di php.ini, informazioni sul server Web, informazioni sul sistema, ecc.
INFO_CREDITS 2 Informazioni sugli sviluppatori PHP. Può anche essere ottenuto usando la funzione phpcredits().
INFO_CONFIGURAZIONE 4 Informazioni sui valori attuali delle direttive PHP principali e locali. Possono anche essere ottenuti usando la funzione ini_get().
INFO_MODULI 8 Moduli caricati e relative impostazioni. Vedi anche get_loaded_extensions() .
INFO_AMBIENTE 16 Informazioni sulle variabili di ambiente, disponibili anche in $_ENV .
INFO_VARIABILI 32 Emette tutte le variabili predefinite da EGPCS (Environment, GET, POST, Cookie, Server).
INFO_LICENZA 64 Informazioni sulla licenza PHP.
INFO_TUTTI -1 Emette tutto quanto sopra.

Puoi vedere che la funzione phpinfo contiene dati EGPCS, quindi può essere utilizzata per il debug.

I valori sono bit per bit, quindi i numeri utilizzati sono 2, 4, 8, 16, 32 e 64.

Esempi di utilizzo di phpinfo() con argomenti:

Le informazioni fornite dalla funzione phpinfo() possono essere utilizzate dagli aggressori per danneggiare il tuo sito. Pertanto, i file con questa funzione devono essere eliminati.

Nel 2010, la nota risorsa russa per programmatori Habrahabr ha pubblicato un articolo che ha fornito i dati di uno studio molto interessante. Si è scoperto che il 4,69% dei siti russi contiene il file phpinfo.php con la funzione phpinfo. A quel tempo, il Runet era costituito da 36804 siti, 1725 aveva una potenziale vulnerabilità.

Se vuoi solo sapere quale versione di PHP è sul server, puoi usare la funzione phpversion.

Qualsiasi software che desideri eseguire sul tuo server web ha determinati requisiti che deve soddisfare. Ad esempio, WordPress richiede PHP versione 5.2.4 o successiva. A seconda del server è possibile modificare alcune impostazioni PHP, altre, al contrario, è vietato modificarle, tuttavia è possibile ottenere informazioni su tutte nel file phpinfo. In questo tutorial imparerai come creare un file phpinfo e scoprire i valori e lo stato dei moduli PHP. Può anche essere utile per ottenere informazioni sul tuo account di hosting come max_execution_time, memory_limit, post_max_size e altro.

Prima di iniziare questa guida, avrai bisogno di quanto segue:

  • Accedi al tuo pannello di controllo di hosting o account FTP

Opzione 1: controllo delle informazioni PHP tramite il pannello di controllo dell'hosting

Su Hostinger, le informazioni PHP del tuo account possono essere trovate sotto Altro → Informazioni PHP. Questa è una funzionalità molto utile in quanto non sarà necessario creare file aggiuntivi sul tuo hosting.

Successivamente, verrai indirizzato a una pagina con tutte le informazioni necessarie sulla tua versione, moduli e valori di PHP. Per cercare un modulo o una funzione specifica, utilizzare la ricerca premendo la scorciatoia da tastiera CTRL+F.

Congratulazioni! Hai imparato come accedere alle tue informazioni php tramite il pannello di controllo di Hostinger.

Opzione 2: verifica le informazioni PHP creando un file phpinfo.php

Non preoccuparti se la tua piattaforma di hosting non supporta la funzionalità mostrata in opzione 1. Lo stesso risultato può essere ottenuto creando un file speciale all'interno del tuo account di hosting. Il file mostrerà anche tutte le informazioni sul tuo PHP e sarà accessibile tramite il browser.

Passaggio 2.1 - Creazione di un file phpinfo

Esistono diversi modi per creare un file phpinfo. In questa guida utilizzeremo . Tuttavia, lo stesso risultato può essere ottenuto creando il file sul computer locale e quindi caricando il file sul server tramite .

Accedi al tuo pannello di controllo di hosting e apri Gestore di file. Fare clic sul pulsante Nuovo file per creare un nuovo file.

Nel primo campo, specificare il percorso in cui verrà creato il nuovo file. Successivamente, sul campo Nuovo nome file accedere phpinfo.php. Nella maggior parte dei casi, puoi lasciare il percorso invariato. /pubblico_html. In questo caso, il file verrà creato nella directory principale del tuo sito.

Passaggio 2.2 - Modifica del file

A questo punto hai già un file vuoto phpinfo.php nel catalogo public_html. Copia il codice seguente in un file e fai clic sull'icona Salva nell'angolo sinistro dello schermo.

Ecco fatto, hai creato con successo un file PHP che visualizzerà tutte le tue opzioni PHP. Come accennato in precedenza, lo stesso risultato può essere ottenuto con:

  1. Usa qualsiasi editor di testo e crea un file phpinfo.php sul tuo computer.
  2. Aggiungi il seguente codice al file:
  1. Carica il file tramite FTP nella tua directory public_html.

Passaggio 2.3 - Controllo delle informazioni PHP tramite un browser

Se tutto è stato fatto correttamente, ora puoi accedere al file creato aggiungendo alla fine il tuo nome di dominio /phpinfo.php. Per esempio, http://tuodominio.ru/phpinfo.php

Dovresti vedere un risultato simile quando apri questa pagina in un browser:

In questa pagina potrai vedere tutte le tue impostazioni PHP.

Conclusione

Alla fine di questo tutorial, hai imparato come creare un file phpinfo e controllare le informazioni sulle tue impostazioni PHP. Queste informazioni sono utili se vuoi conoscere le tue impostazioni di hosting o eseguire software che richiede determinati moduli PHP.

(PHP 3, PHP 4, PHP 5)

phpinfo - mostra molte informazioni su PHP.

Descrizione

int phpinfo()

Visualizza molte informazioni sullo stato corrente di PHP. Ciò include informazioni su opzioni ed estensioni di compilazione PHP, versioni PHP, informazioni su server e ambiente (se compilate come modulo), ambiente PHP, versione del sistema operativo, percorsi, variabili delle opzioni di configurazione master e locali, intestazioni HTTP e licenza PHP. Poiché ogni sistema è configurato in modo diverso, phpinfo() viene in genere utilizzato per verificare le impostazioni di configurazione e la disponibilità di variabili predefinite su un dato sistema. Inoltre, phpinfo() è un importante strumento di debug, poiché contiene tutti i dati EGPCS (Environment, GET, POST, Cookie, Server). Un output può essere specializzato passando uno o più dei seguenti costante i valori dei bit riassunti nel parametro opzionale what . Puoi anche combinare i valori costanti o bit corrispondenti con il .

Tabella 1. Opzioni di phpinfo()
Nome (costante) Valore Descrizione INFO_GENERAL1 Stringa di configurazione, posizione php.ini, data di build/build, server Web, sistema, ecc. INFO_CREDITS2 PHP 4 crediti. Vedi anche phpcredits() .INFO_CONFIGURATION4 Gli attuali valori Local e Master delle direttive php. Vedi anche ini_get() .INFO_MODULES8Moduli caricati e le rispettive impostazioni.INFO_ENVIRONMENT16Informazioni variabili ambiente disponibili anche in $_ENV .INFO_VARIABLES32Mostra tutte le variabili predefinite da EGPCS (Ambiente, GET, POST, Cookie, Server).INFO_LICENSE64PHP Informazioni sulla licenza. anche licenza faq .INFO_ALL-1 Tutto quanto sopra Questo è il valore predefinito.

Nota: parti delle informazioni visualizzate sono disabilitate quando l'impostazione di configurazione expone_php è disattivata. Ciò include loghi e crediti PHP e Zend. anche

Se hai bisogno di inviare file non direttamente dal server web, ma utilizzando PHP (ad esempio per raccogliere statistiche di download), per favore sotto cat.

1. Usa readfile()

Il metodo è buono perché funziona fuori dagli schemi. Devi solo scrivere la tua funzione di invio file (un esempio leggermente modificato dalla documentazione ufficiale):

Funzione file_force_download($file) ( if (file_exists($file)) ( // ripristina il buffer di output PHP per evitare di sovraccaricare la memoria allocata per lo script // se ciò non avviene, il file verrà letto completamente in memoria! if (ob_get_level()) ( ob_end_clean()); ) // fa in modo che il browser mostri l'intestazione della finestra del file di salvataggio ("Content-Description: File Transfer"); header ("Content-Type: application/octet-stream"); ​​​​header("Content-Disposition: attachment; filename =" .basename($file)); header("Content-Transfer-Encoding: binary"); header("Scade: 0"); header("Cache-Control: must -revalidate"); header("Pragma: public"); header("Content-Length: " . filesize($file)); // legge il file e lo invia all'utente readfile($file); exit; ) )
Anche file di grandi dimensioni possono essere inviati in questo modo, poiché PHP leggerà il file e lo consegnerà immediatamente all'utente in parti. La documentazione afferma chiaramente che readfile() non dovrebbe creare problemi di memoria.

Peculiarità:

  • Il file viene letto nel buffer interno della funzione readfile(), che ha una dimensione di 8kB (grazie a 2fast4rabbit)

2. Leggere e inviare il file manualmente

Il metodo utilizza lo stesso Drupal quando si inviano file da un file system privato (i file non sono direttamente accessibili tramite link):

Funzione file_force_download($file) ( if (file_exists($file)) ( // ripristina il buffer di output PHP per evitare di sovraccaricare la memoria allocata per lo script // se ciò non avviene, il file verrà letto completamente in memoria! if (ob_get_level()) ( ob_end_clean()); ) // fa in modo che il browser mostri l'intestazione della finestra del file di salvataggio ("Content-Description: File Transfer"); header ("Content-Type: application/octet-stream"); ​​​​header("Content-Disposition: attachment; filename =" .basename($file)); header("Content-Transfer-Encoding: binary"); header("Scade: 0"); header("Cache-Control: must -revalidate"); header("Pragma: public"); header("Content-Length: " . filesize($file)); // legge il file e lo invia all'utente if ($fd = fopen($file) , "rb")) ( while (!feof($ fd)) ( print fread($fd, 1024); ) fclose($fd); ) exit; ) )
Peculiarità:

  • Lo script attende finché l'intero file non viene letto e fornito all'utente.
  • Risparmia memoria del server

3. Utilizzare il modulo del server web

3a. Apache
Il modulo XSendFile consente di inviare un file ad Apache stesso utilizzando un'intestazione speciale. Esistono versioni per Unix e Windows, nelle versioni 2.0.*, 2.2.* e 2.4.*

Nelle impostazioni dell'host, è necessario abilitare l'intercettazione dell'intestazione utilizzando la direttiva:
XSendFile attivato
È inoltre possibile specificare una lista bianca di directory, file in cui possono essere elaborati. Importante: se si dispone di un server basato su Windows, il percorso deve includere una lettera di unità maiuscola.

Descrizione delle possibili opzioni sul sito Web dello sviluppatore: https://tn123.org/mod_xsendfile/

Esempio di caricamento file:

Funzione file_force_download($file) ( if (file_exists($file)) ( header("X-SendFile: " . realpath($file)); header("Content-Type: application/octet-stream"); ​​​​header ("Disposizione contenuto: allegato; nomefile=" . nomebase($file)); uscita; ) )

3b. Nginx
Nginx può inviare file fuori dagli schemi tramite un'intestazione speciale.

Per un corretto funzionamento è necessario negare l'accesso alla cartella direttamente tramite il file di configurazione:
posizione /protetto/ ( interno; root /alcuni/percorso; )
Un esempio di invio di un file (il file deve trovarsi nella directory /some/path/protected):

Funzione file_force_download($file) ( if (file_exists($file)) ( header("X-Accel-Redirect: " . $file); header("Content-Type: application/octet-stream"); ​​​​header( "Contenuto -Disposizione: allegato; nomefile=" . nomebase($file)); uscita; ) )
Maggiori informazioni sulla pagina della documentazione ufficiale

Peculiarità:

  • Lo script esce immediatamente dopo l'esecuzione di tutte le istruzioni
  • Fisicamente, il file viene inviato dal modulo del server web stesso e non da PHP
  • Consumo minimo di memoria e risorse del server
  • Massima performance

aggiornare: Habrauser ilyaplot dà buoni consigli sul fatto che è meglio inviare non application/octet-stream , ma il vero tipo mime del file. Ad esempio, ciò consentirà al browser di sostituire i programmi necessari nella finestra di dialogo di salvataggio del file.

Articoli correlati in alto