Configuration du fichier PHP.INI : Guide du débutant

Salut à toi, futurs magiciens PHP ! Aujourd'hui, nous allons entreprendre un voyage passionnant dans le monde de la configuration PHP. Ne t'inquiète pas si tu n'as jamais écrit une ligne de code auparavant - je serai ton guide amical à travers cette aventure. À la fin de ce tutoriel, tu configureiras PHP comme un pro !

PHP.INI File Configuration

Qu'est-ce que PHP.INI ?

Avant de plonger dedans, parlons de ce qu'est réellement le fichier PHP.INI. Imagine que tu installes un nouveau smartphone. Tu voudrais probablement ajuster certains paramètres pour qu'il fonctionne exactement comme tu le souhaites, n'est-ce pas ? Eh bien, PHP.INI est comme le menu des paramètres pour PHP. C'est un fichier de configuration qui indique à PHP comment se comporter.

Fichier de configuration chargé

Premierement, voyons quel fichier PHP.INI ton système utilise réellement. PHP peut utiliser différents fichiers de configuration selon comment il est configuré. Voici une manière simple de vérifier :

<?php
phpinfo();
?>

Enregistre ceci en tant que fichier PHP (disons info.php) et exécute-le dans ton navigateur. Recherche l'entrée "Loaded Configuration File". C'est ton fichier PHP.INI actif !

Paramètres courants de PHP.INI

Maintenant, explorons certains des paramètres les plus importants dans PHP.INI. Je vais expliquer ce que fait chacun d'eux et te donner des exemples de leur utilisation.

short_open_tag = Off

Ce paramètre détermine si PHP doit autoriser la forme abrégée de l'ouverture de balise PHP (<?). Lorsqu'il est désactivé, tu dois utiliser la balise d'ouverture PHP complète (<?php).

<?php
echo "Hello, World!";
?>

Avec short_open_tag = On, tu pourrais écrire :

<? echo "Hello, World!"; ?>

Mais il est généralement recommandé de le garder désactivé pour une meilleure compatibilité.

safe_mode = Off

Le mode sans échec était une fonctionnalité de sécurité dans les anciennes versions de PHP. Il est maintenant obsolète et supprimé dans PHP 5.4.0 et versions ultérieures. Si tu utilises une version moderne de PHP, tu ne verras pas ce paramètre.

disable_functions = [function1, function2...]

C'est une fonctionnalité de sécurité puissante. Elle te permet de désactiver des fonctions PHP spécifiques que tu juges risquées. Par exemple :

disable_functions = exec,passthru,shell_exec,system

Cela empêcherait PHP d'exécuter des commandes système, ce qui pourrait être une menace de sécurité.

max_execution_time = 30

Ce paramètre définit le temps maximum en secondes qu'un script est autorisé à s'exécuter avant d'être interrompu. C'est comme setter un minuteur pour tes scripts.

<?php
// Ce script s'exécutera au maximum pendant 30 secondes
for ($i = 0; $i < 1000000; $i++) {
echo $i . "<br>";
}
?>

error_reporting = E_ALL & ~E_NOTICE

Ce paramètre contrôle quels erreurs sont signalés. E_ALL signifie signaler toutes les erreurs, et ~E_NOTICE signifie sauf les notifications.

<?php
// Avec E_ALL & ~E_NOTICE, cela ne montrera pas d'erreur
echo $undefinedVariable;
?>

register_globals = Off

C'est une ancienne fonctionnalité non sécurisée. Elle a été dépréciée et supprimée dans PHP 5.4.0. Gardes-la toujours désactivée dans les anciennes versions.

magic_quotes_gpc = On

Ce paramètre échappe automatiquement les données d'entrée pour les rendre sûres contre les injections SQL. Cependant, il a été déprécié et supprimé dans PHP 5.4.0. Dans les versions modernes de PHP, tu devrais utiliser des requêtes préparées à la place.

file_uploads = [on/off]

Cela contrôle si les téléversements de fichiers sont autorisés.

<?php
if ($_FILES) {
$uploaddir = '/var/www/uploads/';
$uploadfile = $uploaddir . basename($_FILES['userfile']['name']);
if (move_uploaded_file($_FILES['userfile']['tmp_name'], $uploadfile)) {
echo "Le fichier est valide et a été téléversé avec succès.\n";
} else {
echo "Échec du téléversement.\n";
}
}
?>

session.save-handler = files

Ce paramètre détermine comment les données de session sont stockées. La valeur par défaut est 'files', ce qui signifie que les données de session sont stockées dans des fichiers sur le serveur.

<?php
session_start();
$_SESSION['user'] = 'John Doe';
echo "Les données de session ont été sauvegardées !";
?>

ignore_user_abort = [On/Off]

Cela détermine si un script doit continuer à s'exécuter après que l'utilisateur a fermé la connexion.

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

// Ce script continuera à s'exécuter même si l'utilisateur ferme le navigateur
while (true) {
file_put_contents('log.txt', date('Y-m-d H:i:s') . "\n", FILE_APPEND);
sleep(1);
}
?>

Paramètres MySQL

PHP.INI inclut également des paramètres pour les connexions MySQL :

Paramètre Description Exemple
mysql.default_host Serveur MySQL par défaut mysql.default_host = localhost
mysql.default_user Nom d'utilisateur MySQL par défaut mysql.default_user = root
mysql.default_password Mot de passe MySQL par défaut mysql.default_password = password123

Souviens-toi, il est généralement meilleur de définir ces paramètres dans ton script plutôt que dans PHP.INI pour des raisons de sécurité.

<?php
$conn = mysqli_connect('localhost', 'root', 'password123');
if (!$conn) {
die("La connexion a échoué : " . mysqli_connect_error());
}
echo "Connexion réussie";
?>

Et voilà, les amis ! Tu viens de faire tes premiers pas dans le monde de la configuration PHP. Souviens-toi, chacun de ces paramètres peut avoir un impact significatif sur le comportement de tes scripts PHP, donc utilise-les avec sagesse. En continuant ton voyage en PHP, tu deviendras plus familier avec ces paramètres et comment les utiliser à ton avantage.

Bonne programmation, et que tes scripts PHP s'exécutent toujours sans problème !

Credits: Image by storyset