Configurazione del file PHP.INI: una guida per principianti

Ciao a tutti, futuri maghi di PHP! Oggi ci imbarcheremo in un viaggio emozionante nel mondo della configurazione di PHP. Non preoccupatevi se non avete mai scritto una riga di codice prima - sarò il vostro guida amichevole in questa avventura. Alla fine di questo tutorial, configurerete PHP come un professionista!

PHP.INI File Configuration

Cos'è PHP.INI?

Prima di immergerci, parliamo di cosa sia effettivamente PHP.INI. Immagina di configurare un nuovo smartphone. Probabilmente vorresti regolare alcune impostazioni per farlo funzionare proprio come piace a te, vero? Beh, PHP.INI è come il menu delle impostazioni per PHP. È un file di configurazione che dice a PHP come comportarsi.

File di configurazione caricato

Prima di tutto, scopriamo quale file PHP.INI il tuo sistema sta effettivamente utilizzando. PHP può utilizzare diversi file di configurazione a seconda di come è configurato. Ecco un modo semplice per verificarlo:

<?php
phpinfo();
?>

Salvate questo come un file PHP ( diciamo info.php) e eseguitelo nel vostro browser web. Cercate la voce "Loaded Configuration File". Questo è il vostro file PHP.INI attivo!

Impostazioni comuni in PHP.INI

Ora esploriamo alcune delle impostazioni più importanti in PHP.INI. Spiegherò cosa fa ognuna di esse e vi darò esempi su come utilizzarle.

short_open_tag = Off

Questa impostazione determina se PHP dovrebbe permettere la forma abbreviata del tag di apertura di PHP (<?). Quando è disattivata, dovete utilizzare il tag di apertura completo di PHP (<?php).

<?php
echo "Ciao, Mondo!";
?>

Con short_open_tag = On, potresti scrivere:

<? echo "Ciao, Mondo!"; ?>

Ma è generalmente raccomandato tenerla disattivata per una migliore compatibilità.

safe_mode = Off

La safe mode era una funzione di sicurezza nelle vecchie versioni di PHP. Ora è deprecata e rimossa da PHP 5.4.0 in poi. Se utilizzi una versione moderna di PHP, non vedrai questa impostazione.

disable_functions = [funzione1, funzione2...]

Questa è una funzione di sicurezza potente. Ti permette di disabilitare specifiche funzioni PHP che ritieni rischiose. Ad esempio:

disable_functions = exec,passthru,shell_exec,system

Questo impedirebbe a PHP di eseguire comandi di sistema, che potrebbe essere un rischio per la sicurezza.

max_execution_time = 30

Questa impostazione stabilisce il tempo massimo in secondi che uno script è permesso eseguire prima di essere interrotto. È come impostare un timer per i tuoi script.

<?php
// Questo script eseguirà per un massimo di 30 secondi
for ($i = 0; $i < 1000000; $i++) {
echo $i . "<br>";
}
?>

error_reporting = E_ALL & ~E_NOTICE

Questa impostazione controlla quali errori vengono riportati. E_ALL significa riportare tutti gli errori, e ~E_NOTICE significa tranne i notices.

<?php
// Con E_ALL & ~E_NOTICE, questo non mostrerà un errore
echo $undefinedVariable;
?>

register_globals = Off

Questa è una vecchia e non sicura funzione. È stata deprecata e rimossa in PHP 5.4.0. Mantienila sempre disattivata nelle vecchie versioni.

magic_quotes_gpc = On

Questa impostazione escaping automaticamente i dati di input per renderli sicuri da SQL injection. Tuttavia, è stata deprecata e rimossa in PHP 5.4.0. Nelle versioni moderne di PHP, dovresti utilizzare le prepared statements al loro posto.

file_uploads = [on/off]

Questa controlla se i caricamenti di file sono permessi.

<?php
if ($_FILES) {
$uploaddir = '/var/www/uploads/';
$uploadfile = $uploaddir . basename($_FILES['userfile']['name']);
if (move_uploaded_file($_FILES['userfile']['tmp_name'], $uploadfile)) {
echo "File è valido, e è stato caricato con successo.\n";
} else {
echo "Caricamento fallito.\n";
}
}
?>

session.save-handler = files

Questa impostazione determina come i dati di sessione vengono memorizzati. La impostazione predefinita è 'files', che significa che i dati di sessione vengono memorizzati in file sul server.

<?php
session_start();
$_SESSION['user'] = 'John Doe';
echo "Dati di sessione salvati!";
?>

ignore_user_abort = [On/Off]

Questa determina se uno script dovrebbe continuare a eseguire dopo che l'utente ha chiuso la connessione.

<?php
ignore_user_abort(true);
set_time_limit(0);

// Questo script continuerà a eseguire anche se l'utente chiude il browser
while (true) {
file_put_contents('log.txt', date('Y-m-d H:i:s') . "\n", FILE_APPEND);
sleep(1);
}
?>

Impostazioni MySQL

PHP.INI include anche impostazioni per le connessioni MySQL:

Impostazione Descrizione Esempio
mysql.default_host Server MySQL predefinito mysql.default_host = localhost
mysql.default_user Username MySQL predefinito mysql.default_user = root
mysql.default_password Password MySQL predefinita mysql.default_password = password123

Ricorda, è generalmente meglio impostare queste nel tuo script piuttosto che in PHP.INI per motivi di sicurezza.

<?php
$conn = mysqli_connect('localhost', 'root', 'password123');
if (!$conn) {
die("Connessione fallita: " . mysqli_connect_error());
}
echo "Connessione eseguita con successo";
?>

Eccoci, ragazzi! Avete appena compiuto i vostri primi passi nel mondo della configurazione di PHP. Ricorda, ognuna di queste impostazioni può influenzare significativamente il comportamento dei tuoi script PHP, quindi usale con saggezza. Continuando il tuo viaggio con PHP, diventerai sempre più familiare con queste impostazioni e come utilizzarle a tuo vantaggio.

Buon coding, e possa i tuoi script PHP sempre funzionare senza problemi!

Credits: Image by storyset