Bienvenue sur www[/gris].STUDENT-DESIGNER.[gris]com

Annonces


Affichage du tutoriel

Tutoriaux Tutoriaux > Programmation > PHP / MYSQL > Configurer un serveur web > Les directives de configuration
Créé le Lundi 14 Aout 2006 par manu

Les directives de configuration

Vous trouvez sans doute que les possibilités offertes par PHP sont largement suffisantes et pourtant vous n'utilisez sans doute que la configuration par défaut de PHP. Le fichier de configuration php.ini est une véritable mine d'or comme disent certains codeurs chevronnés.

Si vous ne l'avez jamais fait, je vous conseille d'y jeter un coup d'oeil. Ce tutorial est la pour vous décrire les principales directives que vous rencontrerez tout au long du fichier de configuration PHP. Une directive n'est rien de plus qu'une variable qui vu influer sur le comportement de PHP.

ouvrir Chapitre 1 : Balises d'ouverture

Pour que du code php soit exécuter, il est nécessaire de l'entourer de balises. Celles ci sont appelées balises d'ouvertures[/b]. La plus utilisée et la recommandée est [b]<?php[/b]. Ceux qui utilisent [b]<?[/b] ont surement remarqué qu'avec la dernière version de PHP elle ne fonctionne plus. Cela est du à la directive [b]short_open_tag[/b] qui a surement été passée à off[/i]. Pour respecter les normes et avoir un code portable paramétrez cette directive à [i]off et utilisez [b]<?php.

Code :

short_open_tag=Off



Certains codeurs habitués à ASP préférant les balises <% pourront continuer à utiliser cette syntaxe en parametrant asp_tags

Code :

asp_tags=On

ouvrir Chapitre 2 : Compression des pages

Vous pouvez compresser automatiquement les codes HTML que PHP génère. Cela permet d'économiser de la bande passante et bien entendu d'accélerer le temps de téléchargement de vos pages HTML.


zlib.output_compression=On
zlib.output_compression_level=9



La directive zlib.output_compression_level permet de définir le taux de compression. 9 est le plus fort taux de compression, en cas de problèmes après avoir activé la compression essayer de baisser ce taux de compression.

ouvrir Chapitre 3 : Mode sécurisé (Safe mode)

Si la directive safe_mode est activée, PHP n'autorisera pas les exécutions de programme externe ou l'accès aux fichiers d'autres utilisateurs. Cela pourra vous servir si vous souhaiter partager votre hébergement. Si vous travaillez seul sur votre serveur ( mutualisé ou dédié ) n'activez pas cette directive, elle restreint les possibilités du developpeur.

Code :

safe_mode=Off

ouvrir Chapitre 4 : Limitation d'accès aux répertoires

Dans le même esprit que la directive précédente, open_basedir permet de partager, entre plusieurs utilisateurs, un même serveur Web. Pour cela il suffit de définir un open_basedir différent pour chaque utilisateur :

Code :

open_basedir="/home/daminus/www"



Ainsi depuis le compte "daminus" on ne pourra ni voir ni modifier les fichiers des autres répertoires comme par exemple "/home/student_designer/www/" ( Dans le cas ou le compte daminus est sur le même serveur que student-designer ).

ouvrir Chapitre 5 : Gestion des ressources

Par défaut, un script PHP s'exécute au maximum pendant 30 secondes. Le délai expiré le script s'arrete et affiche ce message d'erreur :

Citation :
Fatal error:Maximum execution time of 30 seconds exceeded in c:\home\daminus\script_maxtime.php on line 1
[p]


[/p]

Si vous avez un script qui nécessite un certain temps d'exécution ( envoie de newsletter par exemple), vous pouvez modifier cette limite.

Code :

max_execution_time=100



Si vous souhaitez désactiver cette limite de temps[/b], remplacez 100 par 0. Dans ce cas faites [b]attention aux boucles infinies dans vos scripts !

Un script PHP occupe de la mémoire lors de son exécution. Le maximum autorisé par défaut est de 8méga ( ce qui est déja pas mal pour un script PHP ). Si jamais vous avez besoin de plus de mémoire, vous pouvez modifier cette directive :

Code :

memory_limit = 8M

ouvrir Chapitre 6 : Gestion des erreurs

Vous avez dû remarquer que PHP affichent les erreurs de compilation, après oubli d'un ; par exemple. Il existe plusieurs types d'erreurs ( qui vous seront détaillés dans un prochain tutorial ). Pour afficher toutes les erreurs modifier la directive suivante :

Code :

error_reporting = E_ALL



Si votre site est en ligne et accessible au public, il paraitra d'autant plus professionnel qu'aucune erreur ne salissent vos pages. Pour ce faire :

Code :

display_error = Off



Cette modification est à double tranchant, vous n'êtes plus au courant d'éventuelles erreurs. Il est donc recommandé de stocker ces erreurs PHP dans un fichier. En cas de bug, vous pourrez donc consulter ce fichier et comprendre plus facilement d'ou il vient.

Code :

log_errors = On


ouvrir Chapitre 7 : Gestion des données

Il s'agit ici du paramètre register_globals. Celui ci est à Off par défaut depuis la version 4.1 de PHP. Il est conseillé de le laisser désactivé pour des raisons de sécurité. Pour en savoir plus, ce sujet a été traité dans ce tutorial : http://www.student-designer.com/.../securite/php-register-globals-failles/

Code :

register_globals = Off

ouvrir Chapitre 8 : Gestion des magic quotes

Pour simplifier la vie des codeurs, PHP embarquait par défaut un mécanisme de protection des injections SQL[/b] ( Ce terme sera expliqué dans un prochain tutorial ). Cette protection se nomme [b]magic quotes[/b]. Cet outil ajoutait, sans aucun code supplémentaire de la part du développeur, une barre oblique inverse ( [b]\ ) devant les apostrophes et les guillemets pour les données provenant de GET, POST ou COOKIE.

Si vous utilisez vos propres protections contre les injections SQL, préférez désactiver les magic quotes. De plus elles entrainent une légère baisse de performance. Cependant certains scripts les utilisent et vous serez peut-être amené à les réactiver :

Code :

magic_quotes_gpc = On

ouvrir Chapitre 9 : Gestion des chemins

Si vous connaissez les fonctions include()[/b] et [b]require()[/b] vous devez savoir qu'elle permet d'inclure un fichier PHP dans un autre. Cependant connaissez vous la directive [b]include_path ? Celle ci indique à PHP ou chercher votre fichier par défaut dont voici un exemple :

Code :

include_path = ".:/php/includes/"



Passons maintenant aux explications. Le premier .[/b] va indiquer à PHP de chercher votre fichier d'abord dans le répertoire courant[/i]. Le [b]:[/b] indique dans le cas de Linux l'instruction [i]ou. Pour un serveur windows cette instruction s'indique par [b];[/b]. Tout comme "[b].[/b]", [b]/php/includes/ indique à PHP un autre dossier ou chercher votre fichier inclue.

Imaginons une situation ou vous faites un include( "send_mail.php" )[/b]. Si vous avez bien suivi le paragraphe précédent, PHP va tout d'abord chercher votre fichier dans le répertoire courant[/i] ( symbolisé par [b].[/b] ) [i]ou[/i] ( symbolisé par [b]:[/b] ) dans le répertoire [i]/php/includes/[/i]. Votre script [i]send_mail.php[/i] peut servir a tous vos sites sur votre serveur, vous pouvez donc le stocker dans le dossier [i]/php/includes/ et l'appeler simplement avec [b]include( "send_mail.php" ) dans n'importe quel script. Ce qui vous simplifie la tâche.

Un petit détail qui a son importance. Lorsque PHP trouve un fichier portant le même nom que celui que vous souhaitez inclure il s'arretera de chercher. L'ordre dans lequel vous indiquez les dossier a explorer dans include_path est donc très important. Dans notre exemple c'est le fichier présent dans le répertoire courant qui a priorité sur le fichier présent dans /php/includes/

10.[/b] [b]Gestion des fichiers téléchargés

Vous avez le choix d'autoriser ou non le téléchargement HTTP de fichiers en attribuant la valeur On[/i] ou [i]Off à la directive file_upload.

Code :

file_uploads = On



Un fois votre formulaire validé, le fichier se télécharge sur votre serveur. Vous vous doutez bien que le fichier est temporairement stocké dans un dossier. Ce dossier est défini par upload_tmp_dir. De même vous pouvez limiter la taille maximum des fichiers téléchargés :


upload_tmp_dir = "/temp/"
upload_max_filesize = 2M


ouvrir Chapitre 10 : Gestion des sessions

Les sessions seront traités en détails ultérieurement. En attendant un tutorial traitant sur la mise en place d'un espace membre est disponible http://www.student-designer.com/.../php-mysql/les-cours-php/script-gestion-sessions-php/. Pour ceux qui connaissent les sessions il est possible de stocker les sessions autrement que dans des fichiers (option par défaut). Vous pouvez définir cette option comme suit :

Code :

session_save_handler = files



Si vous utilisez le stockage des sessions par fichier, il vous est possible de choisir dans quel dossier vous souhaitez sauvegarder vos fichiers de session. Faites attention à ne pas les stocker dans un répertoire public (pas dans un dossier "www" par exemple) ce qui permettrait a n'importe qui de consulter les informations contenues dans les sessions.

Code :

session.save_path = "/tmp/sessions/"


ouvrir Chapitre 11 : Inclusion de fichier automatique

A chaque page de votre script vous faites les mêmes include ? PHP vous permet d'inclure automatiquement un fichier PHP avant ou/et après le fichier à exécuter. Pour cela il vous faut completer la directive auto_prepend_file[/b] qui aura le même effet qu'un [b]include en première ligne de chacun de vos scripts.

Code :

auto_prepend_file = /home/daminus/www/header.php



De même utilisez la directive suivant pour inclure un fichier en fin d'execution de chacun de vos scripts. Cette directive vous offre la possibilité de mettre en place des statistiques par exemple.

Code :

auto_append_file = /home/daminus/www/footer.php

Conlusion

J'en conviens ce tutorial est magistral. Programmeurs débutants, il est fort probable que vous l'ayez juste survolé, ce qui est tout à fait normal. Mais essayez de retenir dans les grandes lignes les possibilités offertes pas le php.ini et je pense qu'après avoir bien progressé en PHP vous reviendrez vers ce tutorial pour augmenter les possiblités offertes par PHP.

Il est possible qu'au contraire ce tutorial vous ai mis l'eau à la bouche et que vous vouliez en savoir plus. Dans ce cas je vous conseille d'aller voir ce tutorial qui faut un tour d'horizon un peu plus large : http://www.illiweb.com/manuel/php/configuration.directives.html

Commentaires

Auteur

Soyez le premier à commenter ce tutorial.

Page : -
Tutoriaux Tutoriaux > Programmation > PHP / MYSQL > Configurer un serveur web > Les directives de configuration

Derniers inscrits