Documentation PHP - Free
Le tableau suivant montre l'importance de ces ouvrages dans quatre pays du sud
..... et qu'il peut en principe corriger ses mauvaises pratiques pour lutter contre l'
érosion. ...... The cost of these small-scale works has been estimated at only TD 6
million, ...... MORGAN R. P. C., MCINTYRE K., VICKERS A. W., QUINTON J.N., ...
part of the document
"language.constants.html"Constantes
9. LIENHYPERTEXTE "expressions.html"Expressions
10. LIENHYPERTEXTE "language.operators.html"Opérateurs
11. LIENHYPERTEXTE "control-structures.html"Structures de contrôle
12. LIENHYPERTEXTE "functions.html"Fonctions
13. LIENHYPERTEXTE "oop.html"Classes et Objets
III. LIENHYPERTEXTE "features.html"Caractéristiques
14. LIENHYPERTEXTE "features.error-handling.html"Gestion des erreurs
15. LIENHYPERTEXTE "features.images.html"Création d'images GIF
16. LIENHYPERTEXTE "features.http-auth.html"Authentification HTTP avec PHP
17. LIENHYPERTEXTE "features.cookies.html"Cookies
18. LIENHYPERTEXTE "features.file-upload.html"Gestion des transferts de fichiers
19. LIENHYPERTEXTE "features.remote-files.html"Utilisation de fichiers à distance
20. LIENHYPERTEXTE "features.connection-handling.html"Gestion des connections
21. LIENHYPERTEXTE "features.persistent-connections.html"Connexions persistantes aux bases de données
IV. LIENHYPERTEXTE "funcref.html"Référence des fonctions PHP
I. LIENHYPERTEXTE "ref.adabas.html"Fonction d'accès aux base de données Adabas D
II. LIENHYPERTEXTE "ref.apache.html"Fonctions spécifiques à Apache
III. LIENHYPERTEXTE "ref.array.html"Manipulation des tableaux
IV. LIENHYPERTEXTE "ref.aspell.html"Fonction Aspell
V. LIENHYPERTEXTE "ref.bc.html"Fonctions de précision mathématiques
VI. LIENHYPERTEXTE "ref.calendar.html"Calendriers
VII. LIENHYPERTEXTE "ref.cpdf.html"Fonctions ClibPDF
VIII. LIENHYPERTEXTE "ref.datetime.html"Fonctions de date et d'heure
IX. LIENHYPERTEXTE "ref.dba.html"Database (dbm-style) abstraction layer functions
X. LIENHYPERTEXTE "ref.dbase.html"Fonction dBase
XI. LIENHYPERTEXTE "ref.dbm.html"Fonctions dbm
XII. LIENHYPERTEXTE "ref.dir.html"Accès aux dossiers
XIII. LIENHYPERTEXTE "ref.dl.html"Chargement dynamique de librairies
XIV. LIENHYPERTEXTE "ref.exec.html"Exécution de programmes externes
XV. LIENHYPERTEXTE "ref.fdf.html"Forms Data Format
XVI. LIENHYPERTEXTE "ref.filepro.html"Fonction FilePro
XVII. LIENHYPERTEXTE "ref.filesystem.html"Fonctions système
XVIII. LIENHYPERTEXTE "ref.http.html"Fonctions HTTP
XIX. LIENHYPERTEXTE "ref.hyperwave.html"Hyperwave
XX. LIENHYPERTEXTE "ref.image.html"Images
XXI. LIENHYPERTEXTE "ref.imap.html"IMAP
XXII. LIENHYPERTEXTE "ref.info.html"Options PHP & informations
XXIII. LIENHYPERTEXTE "ref.ifx.html"Fonctions Informix
XXIV. LIENHYPERTEXTE "ref.ibase.html"Fonctions InterBase
XXV. LIENHYPERTEXTE "ref.ldap.html"Fonctions LDAP
XXVI. LIENHYPERTEXTE "ref.mail.html"Email
XXVII. LIENHYPERTEXTE "ref.math.html"Fonctions mathématiques
XXVIII. LIENHYPERTEXTE "ref.mcrypt.html"Fonctions de cryptage
XXIX. LIENHYPERTEXTE "ref.mhash.html"Fonctions de hash
XXX. LIENHYPERTEXTE "ref.misc.html"Fonctions diverses
XXXI. LIENHYPERTEXTE "ref.msql.html"Fonctions d'accès à mSQL
XXXII. LIENHYPERTEXTE "ref.mssql.html"Fonctions d'accès à Microsoft SQL Server
XXXIII. LIENHYPERTEXTE "ref.mysql.html"Fonctions d'accès à MySQL
XXXIV. LIENHYPERTEXTE "ref.sybase.html"Fonctions d'accès Sybase
XXXV. LIENHYPERTEXTE "ref.network.html"Fonctions réseau
XXXVI. LIENHYPERTEXTE "ref.nis.html"Fonctions NIS
XXXVII. LIENHYPERTEXTE "ref.odbc.html"ODBC
XXXVIII. LIENHYPERTEXTE "ref.oci8.html"Fonctions d'accès à Oracle 8
XXXIX. LIENHYPERTEXTE "ref.oracle.html"Fonctions d'accès à Oracle
XL. LIENHYPERTEXTE "ref.pcre.html"Expressions régulières compatibles Perl
XLI. LIENHYPERTEXTE "ref.pdf.html"Fonctions relatives au format PDF
XLII. LIENHYPERTEXTE "ref.pgsql.html"Fonctions d'accès à PostgreSQL
XLIII. LIENHYPERTEXTE "ref.regex.html"Expressions régulières
XLIV. LIENHYPERTEXTE "ref.sem.html"Sémaphores et mémoire partagée
XLV. LIENHYPERTEXTE "ref.session.html"Gestion des sessions
XLVI. LIENHYPERTEXTE "ref.solid.html"Fonctions Solid => obsoletes, utiliser les fonctions ODBC
XLVII. LIENHYPERTEXTE "ref.snmp.html"Fonctions SNMP
XLVIII. LIENHYPERTEXTE "ref.strings.html"Gestion des chaînes de caractères
XLIX. LIENHYPERTEXTE "ref.url.html"URL
L. LIENHYPERTEXTE "ref.var.html"Fonctions sur les variables
LI. LIENHYPERTEXTE "ref.vmailmgr.html"Fonctions Vmailmgr
LII. LIENHYPERTEXTE "ref.wddx.html"Fonctions WDDX
LIII. LIENHYPERTEXTE "ref.zlib.html"Fonctions de compression
LIV. LIENHYPERTEXTE "ref.xml.html"Analyseur de syntaxe XML
V. LIENHYPERTEXTE "appendixes.html"Annexes
A. LIENHYPERTEXTE "migration.html"Migration de PHP/FI 2.0 a PHP 3.0
B. LIENHYPERTEXTE "phpdevel.html"Développement du PHP
C. LIENHYPERTEXTE "debugger.html"Le debuggeur PHP
Préface
Table des matières
LIENHYPERTEXTE \l "ABOUT"A propos de ce document
PHP est un langage de script qui s'inclue dans le langage HTML . La syntaxe du langage PHP provient du C, de Java et du Perl, avec un petit nombre de fonctions inédites par rapport à ces langages. Le but du langage PHP est de permettre aux développeurs de site web d'écrire rapidement des pages web dynamiques.
A propos de ce document
Ce document est écrit à l'aide du langage SGML en utilisant LIENHYPERTEXTE "http://www.ora.com/davenport/"DocBook DTD, LIENHYPERTEXTE "http://www.jclark.com/dsssl/"DSSSL (Document Style and Semantics Specification Language) pour le formatage. Les outils utilisés pour le formatage HTML, TeX et RTF sont LIENHYPERTEXTE "http://www.jclark.com/jade/"Jade, écrit par LIENHYPERTEXTE "http://www.jclark.com/bio.htm"James Clark et LIENHYPERTEXTE "http://nwalsh.com/docbook/dsssl/"The Modular DocBook Stylesheets écrit par LIENHYPERTEXTE "http://nwalsh.com/"Norman Walsh. L'ensemble de la documentation a été regroupée par LIENHYPERTEXTE "mailto:stig@php.net"Stig S¾ther Bakken.
I. Premiers pas
Chapitre 1. Introduction
Le PHP, qu'est ce que c'est ?
Le PHP est un langage de script server qui s'inclue dans le language HTML.
A question simple, réponse simple. Mais qu'est ce que cela signifie ?Prenons un exemple:
PRIVATEExemple 1-1. Un exemple simple
Exemple
Il est à noter la différence avec les autres scripts CGI écrit dans d'autres langages tels que le Perl ou le C -- Au lieu d'écrire un programme avec de nombreuses lignes de commandes afin d'afficher une page HTML, vous écrivez une page HTML avec du code inclu à l'intérieur afin de réaliser une action précise (dans ce cas là, afficher du texte). Le code PHP est inclus entre un tag de début et un tag de fin qui permettent au navigateur de passer en "mode PHP".
Ce qui distingue le PHP des languges de script comme le Javascript est que le code est exécuté sur le serveur. Si vous avez un script similaire sur votre serveur, le client ne reçoit que le résultat du script, sans aucun moyen d'avoir accès au code qui a produit ce ré. Vous pouvez configurer votre serveur web afin qu'il analyse tous vos fichiers HTML comme des fichiers PHP. Ainsi, il n'y a aucun moyen de distinguer les pages qui sont produites dynamiquement des pages statiques.
Que peut vous apporter le PHP ?
Le language PHP possède les même fonctionnalités que les autres languages permettant d'écire des scripts CGI, comme collecter des donnée, générer dynamiquement des pages web ou bien envoyer et recevoir des cookies.
La plus grande qualité et le plus important avantages du language PHP est le support d'un grand nombre de bases de données. Réaliser une page web dynamique interfacant une base de donnés; est extrêmement simple. Les bases de donnés;es suivantes sont supportées par le language PHP:
PRIVATEAdabas DInterBaseSoliddBasemSQLSybaseEmpressMySQLVelocisFileProOracleUnix dbmInformixPostgreSQL
Le language PHP inclue le support des services utilisant les protocoles tel que IMAP, SNMP, NNTP, POP3 ou encore HTTP. Vous pouvez également ouvrir des connections et interagir en utilisant d'autres protocoles.
La génèse du PHP
Le language PHP a été concue durant l'automne 1994 par Rasmus Lerdorf. Les premières versions (qui restèrent privées) étaient utilisées afin de savoir qui venait consulter son CV en ligne. La première version public fut disponible au début de l'année 1995. Elle fut connue sous le nom de "Personal Sommaire Page Tools". Elle était composée d'un parseur extrêmement simple qui ne reconnaissait que quelques marco spéciales et d'un petit nombre d'utilities courament utilisées dans les pages web. Un guestbook, un compteur, etc... Le parseur fut réécrit durant l'été 1995 et fut appelé PHP/FI Version 2. FI etaient les initiales d'un autre package que Rasmus avait écrit qui interprétait les formulaires HTML. C'est alors qu'il combina le "Personnal Sommaire Page tools" avec le "Form Interpreter" et il y ajouta le support de mSQL: c'est comme cela que naquît PHP/FI. PHP/FI grandit de manière spectaculaire et de nombreuses personnes commencèrent à contribuer à son amélioration.
Il est relativement peu aisée de donner des statistiques, mais on estime que PHP/FI est utilisé sur 15 000 sites web dans le monde entier, fin 1996. Ce chiffre atteint 50 000 durant l'été 1997. L'été 1997 voit aussi un profond changement dans le développemnt du PHP: d'un projet personnel à Ramsus on passa alors a une projet d'équipe. Le parseur fut de nouveaux réécrit par Zeev Suraskyi et Andi Gutmans et ce nouveau parseur forma la base de la version 3 du PHP. Une grande partie du code de PHP/FI fut complètement réécrit alors que l'autre partie fut portée pour donner le PHP Version 3.
Aujourd'hui (été 1999) PHP/FI ou PHP3 sont distribués avec de nombreux produit commerciaux comme "C2's StrongHold web server" et "RedHat Linux" et il est admis (d'après les chiffres de NetCraft) que le PHP est utilisés sur 150 000 sites web dans le monde entier. Pour comparaison, ce chiffre est supérieur au nombre de serveur tournant sous "Netscape's flagship Enterprise server" sur l'Internet.
Enfin, à l'heure est ce document est rédigé, la nouvelle génération du PHP est en cours de création. Elle utilisera les qualités de Zend pour améliorer les performances et améliorera le support des seveurs web autre que Apache.
Chapitre 2. Installation
Télécharger la version la plus récente
Le code source ainsi que des binaires pour certaines plates-formes (notamment Windows), sont disponibles à l'adresse suivante: LIENHYPERTEXTE "http://www.php.net/"http://www.php.net/.
Installation sous UNIX
Ce chapitre va vous aider lors de la configuration et de l'installation du PHP. Les connaissances nécessaires sont les suivantes :
Connaissances basiques d'UNIX
Avoir un compilateur C installé
Avoir installé un serveur web
Installation rapide (Version Module Apache)
1. gunzip apache_1.3.x.tar.gz
2. tar xvf apache_1.3.x.tar
3. gunzip php-3.0.x.tar.gz
4. tar xvf php-3.0.x.tar
5. cd apache_1.3.x
6. ./configure --prefix=/www
7. cd ../php-3.0.x
8. ./configure --with-mysql --with-apache=../apache_1.3.x --enable-track-vars
9. make
10. make install
11. cd ../apache_1.3.x
12. ./configure --prefix=/www --activate-module=src/modules/php3/libphp3.a
13. make
14. make install
A la place de cette étape, vous pouvez simplement écraser le binaire
httpd. Assurez-vous d'avoir bien arrÆté le demon d'abord.
15. cd ../php-3.0.x
16. cp php3.ini-dist /usr/local/lib/php3.ini
Vous pouvez éditer le fichier de configuration /usr/local/lib/php3.ini.
Si vous préférez installer le fichier dans un autre répertoire,
il faut utiliser l'option de configuration --with-config-file-path=/path
à l'étape 8.
17. Editez le fichier de configuration apache httpd.conf or srm.conf et ajoutez :
AddType application/x-httpd-php3 .php3
Ici, il faut choisir l'extension que vous souhaitez donner au fichier php.
.php3 est simplement celle que nous suggérons.
18. Utilisez la procédure normale afin de démarrer le serveur Apache. (Vous
devez impérativement arrêter et redémarrer le serveur Apache, et pas
seulement le relancer à l'aide d'un signal HUP ou USR1).
Configuration
Il y a deux moyens de configurer PHP.
Utilisations du script "setup" qui est fourni avec la distribution PHP. Ce script vous pose une serie de question (comme le script d'installation de PHP/FI 2.0) et lance le script "configure" à la fin. Afin de lancer le script, tapez ./setup.
Ce script va aussi créer un fichier appelé "do-conf", qui contient les options de configuration. Vous pouvez éditer ce fichier afin de modifier certaines options sans avoir a réexécuter la totalité du script "setup". Dans ce cas là, tapez ./do-conf afin de lancer le script "configure" avec les nouvelles options.
Lancez le script "configure" à la main. Pour voir toutes les options de configuration disponible, tapez ./configure --help.
Tous les détails à propos des différentes options de configuration sont regroupés ici:
Module Apache
Pour compiler PHP comme un module Apache, répondre "yes" à la question "Build as an Apache module ?" (correspond à l'option de configuration LIENHYPERTEXTE \l "WITH-APACHE"--with-apache= DIR) et spécifie la racine de la distribution Apache. Si vous avez décompressé Apache dans le répertoire /usr/local/www/apache_1.2.4, c'est la racine de la distribution Apache. Le répertoire par défaut est : /usr/local/etc/httpd.
Module fhttpd
Pour compiler PHP comme un module fhttpd, répondre "yes" à la question "Build as an fhttpd module ?" (correspond à l'option de configuration LIENHYPERTEXTE \l "WITH-FHTTPD"--with-fhttpd= DIR et spécifie la racine de la distribution fhttpd. Le répertoire par défaut est: /usr/local/src/fhttpd. Si vous utilisez fhttpd, compiler PHP en module vous permettra d'obtenir des performances supérieures, plus de controle et la possibilité d'exécution à distance.
Version CGI
Par défaut, PHP est compilé comme une CGI. Si vous voulez que votre serveur web supporte le PHP, compiler le PHP comme une CGI permet d'obtenir de meilleures performances. Cependant, la version CGI permet les utilisateurs de lancer des script PHP sous leur UID respectives. Lisez attentivement le LIENHYPERTEXTE "security.html"chapitre consacré à la Sécurité si vous souhaitez utilisé cette solution.
Configuration pour le support des bases de données
PHP supporte de nombreuses bases de données (comme ODBC)
Adabas D
--with-adabas=DIR
Configure PHP pour le support des bases de données Adabas D. Le paramètre est le répertoire d'installation de la base de données et par défaut /usr/local/adabasd.
LIENHYPERTEXTE "http://www.adabas.com/"Adabas home page
dBase
--with-dbase
Configure PHP pour le support des bases de données dbase. Aucune librairie n'est nécessaire.
filePro
--with-filepro
Configure PHP pour le support des bases de données filePro. Aucune librairie n'est nécessaire.
mSQL
--with-msql=DIR
Compile PHP pour le support des bases de données mSQL. Le paramètres est le répertoire d'installation de la base de données et par défaut /usr/local/Hughes. C'est le répertoire par défaut où est installé mSQL 2.0. configure détecte automatiquement quelle version de mSQL est installé. PHP supporte aussi bien la version 1.0 que la version 2.0, mais si vous compilez PHP avec mSQL 1.0, vous pourrez accéder uniquement à mSQL 1.0, et vice-versa.
Voir aussi LIENHYPERTEXTE "configuration.html" \l "INI.SECT.MSQL"Configuration de mSQL au chapitre LIENHYPERTEXTE "configuration.html" \l "CONFIGURATION.FILE"fichier de configuration.
LIENHYPERTEXTE "http://www.hughes.com.au"mSQL home page
MySQL
--with-mysql=DIR
Compile PHP pour le support des bases de données MySQL. Le paramètre est le répertoire d'installation de la base de données et par défaut /usr/local. C'est le répertoire par défaut où est installé MySQL.
Voir aussi LIENHYPERTEXTE "configuration.html" \l "INI.SECT.MYSQL"Configuration de MySQL au chapitre LIENHYPERTEXTE "configuration.html" \l "CONFIGURATION.FILE"fichier de configuration.
LIENHYPERTEXTE "http://www.tcx.se"MySQL home page
iODBC
--with-iodbc=DIR
Compile PHP pour le support des bases de données iODBC. Cette fonction a été développée au départ pour supporter "iODBC Driver Manager", un driver ODBC qui fonctionne sous la plupart des versions d'UNIX. Le paramètre est le répertoire d'installation de la base de données et par défaut /usr/local.
LIENHYPERTEXTE "http://users.ids.net/~bjepson/freeODBC/"FreeODBC home page
OpenLink ODBC
--with-openlink=DIR
Compile PHP pour le support des bases de données OpenLink ODBC. Le paramètre est le répertoire d'installation de la base de données et par défaut /usr/local/openlink.
LIENHYPERTEXTE "http://www.openlinksw.com/"OpenLink Software's home page
Oracle
--with-oracle=DIR
Compile PHP pour le support des bases de données Oracle. Cette option fonctionne avec les versions 7.0 à 7.3 d'Oracle. Le paramètre est le répertoire d'installation de la base de données et par défaut ORACLE_HOME. Vous n'avez pas à spécifier ce paramètres si votre base de données Oracle est déjà installée.
LIENHYPERTEXTE "http://www.oracle.com"Oracle home page
PostgreSQL
--with-pgsql=DIR
Compile PHP pour le support des bases de données PostgreSQL. Le paramètre est le répertoire d'installation de la base de données PostgreSQL et par défaut /usr/local/pgsql.
Voir aussi LIENHYPERTEXTE "configuration.html" \l "INI.SECT.PGSQL"Configuration de Postgres au chapitre LIENHYPERTEXTE "configuration.html" \l "CONFIGURATION.FILE"fichier de configuration file.
LIENHYPERTEXTE "http://www.postgreSQL.org/"PostgreSQL home page
Solid
--with-solid=DIR
Compile PHP pour le support des bases de données Solid. Le paramètre est le répertoire d'installation de la base de données et par défaut /usr/local/solid.
LIENHYPERTEXTE "http://www.solidtech.com"Solid home page
Sybase
--with-sybase=DIR
Compile PHP pour le support des bases de données Sybase. Le paramètre est le répertoire d'installation de la base de données et par défaut /home/sybase.
Voir aussi LIENHYPERTEXTE "configuration.html" \l "INI.SECT.SYBASE"Configuration Sybase au chapitre LIENHYPERTEXTE "configuration.html" \l "CONFIGURATION.FILE"fichier de configuration.
LIENHYPERTEXTE "http://www.sybase.com"Sybase home page
Sybase-CT
--with-sybase-ct=DIR
Compile PHP pour le support des bases de donnés Sybase-CT. Le paramètre est le répertoire d'installation de la base de données Sybase-CT et par défaut /home/sybase.
Voir aussi LIENHYPERTEXTE "configuration.html" \l "INI.SECT.SYBCT"Configuration Sybase-CT au chapitre LIENHYPERTEXTE "configuration.html" \l "CONFIGURATION.FILE"fichier de configuration.
Velocis
--with-velocis=DIR
Compile PHP pour le support des bases de données Velocis. Le paramètre est le répertoire d'installation de la base de données Velocis et par défaut /usr/local/velocis.
LIENHYPERTEXTE "http://www.raima.com"Velocis home page
Autre librairie ODBC
--with-custom-odbc=DIR
Compile PHP pour le support d'une autre libraire ODBC. Le paramètre est le répertoire d'installation de la base de données et par défaut /usr/local.
Cette option impliques que vous aillez définie la variable CUSTOM_ODBC_LIBS avant de lancer le script de configuration. Vous devez aussi avoir une fichier odbc.h quelques part dans votre répertoire d'installation. Si vous n'en avez pas, créez en un et inclué dedans vos header. Vos headers demanderons sûrement des définitions supplémentaire, notamment en cas de base de données multiplateforme. Définissez les dans la variable CFLAGS.
Par exemple, vous pouvez utiliser Sybase SQL n'import où sous QNX en définissant la variable CFLAGS comme suit: CFLAGS=-DODBC_QNX LDFLAGS=-lunix CUSTOM_ODBC_LIBS="-ldblib -lodbc" ./configure --with-custom-odbc=/usr/lib/sqlany50
ODBC unifié
--disable-unified-odbc
Invalide le module ODBC unifié, qui est une interface commune a toutes les bases de données doté d'une interface ODBCn tel que Solid et Adabas D. Cela fonctionne aussi les librairies classique ODBC. Cela a été testé avec iODBC, Solid, Adabas D and Sybase SQL, sous tous les types d'OS. Cela implique qu'un et un seule des modules ou le module Velocis est utilisé ou bien une librairie personnel ODBC. Cette option n'est valide que si une des options suivantes est utilisée: LIENHYPERTEXTE \l "WITH-IODBC"--with-iodbc, LIENHYPERTEXTE \l "WITH-SOLID"--with-solid, LIENHYPERTEXTE \l "WITH-ADABAS"--with-adabas, LIENHYPERTEXTE \l "WITH-VELOCIS"--with-velocis, or LIENHYPERTEXTE \l "WITH-ADABAS"--with-custom-odbc,
Voir aussi LIENHYPERTEXTE "configuration.html" \l "INI.SECT.UODBC"Configuration du module ODBC unifié au chapitre LIENHYPERTEXTE "configuration.html" \l "CONFIGURATION.FILE"fichier de configuration.
LDAP
--with-ldap=DIR
Ajoute le support LDAP (Lightweight Directory Access Protocol). Le paramètre est le répertoire d'installation de LDAP et par défaut /usr/local/ldap.
Plus d'informations à propos de LDAP est disponible dans les LIENHYPERTEXTE "ftp://ftp.isi.edu/in-notes/rfc1777.txt"RFC 1777 et LIENHYPERTEXTE "ftp://ftp.isi.edu/in-notes/rfc1778.txt"RFC 1778.
Autres options de configuration
--with-mcrypt=DIR
--with-mcrypt
Ajoute le support de la librairie mcrypt. Consulter la documentation concernant LIENHYPERTEXTE "ref.mcrypt.html"mcrypt pour plus d'information. Si vous utilisez le paramètre optionnel, DIR , PHP cherchera le fichier mcrypt.h dans le répertoire DIR/include.
--enable-sysvsem
--enable-sysvsem
Ajoute le support des sémaphores Sys V (supportés par la plupart des versions d'UNIX) Consulter la documentation concernant LIENHYPERTEXTE "ref.sem.html""Semaphore and Shared Memory" pour plus d'information.
--enable-sysvshm
--enable-sysvshm
Ajoute le support pour la memoire partagée. (supporter par la plupart des versions d'UNIX) Consulter la documentation concernant LIENHYPERTEXTE "ref.sem.html""Semaphore and Shared Memory" pour plus d'information.
--with-xml
--with-xml
Ajoute le support du parseur XML en utilisant la LIENHYPERTEXTE "http://www.jclark.com/xml/"librairie expat de James Clark. Voir aussi LIENHYPERTEXTE "ref.xml.html"les références aux fonctions XML pour plus de renseignements.
--enable-maintainer-mode
--enable-maintainer-mode
Ajoutes des dépendences supplémentaires ainsi que des options de compilation utilisées par certains développeurs du language PHP.
--with-system-regex
--with-system-regex
Cette option les expressions régulières du PHP en lieu et place de celles fournis avec le language. Si vous compilez PHP comme module serveur, vous devez utilisez la même librairie lorsque vous compilez PHP et lorsque vous le linker au serveur. Vous pouvez ajouter cette option si la librairie systeme ajoute de fonctionnalités supplémentaire dont vous avez besoin. Dans le cas contraire, il est recommendé d'utiliseer la librairie fournis avec le language.
--with-config-file-path
--with-config-file-path=DIR
Le répertoire spécifié en paramètre est utilisé lorque PHP cherche le LIENHYPERTEXTE "configuration.html" \l "CONFIGURATION.FILE"fichier de configuration au démarrge du PHP.
--with-exec-dir
--with-exec-dir=DIR
Permet l'execution des programmes qui se trouve dans le répertoire DIR lorsque l'option "safe mode" est activée. Par défaut, DIR = /usr/local/bin. Cette option ne permet pas de modifier la valeur par défaut. Cette valeur peut être modifiée avec la directive LIENHYPERTEXTE "configuration.html" \l "INI.SAFE-MODE-EXEC-DIR"safe_mode_exec_dir dans le LIENHYPERTEXTE "configuration.html" \l "CONFIGURATION.FILE"fichier de configuration.
--enable-debug
--enable-debug
Ajoute la possibilité d'obtenir des informations complémentaires. Il est alors possible d'obtenir plus d'informations quand il y a des problemes avec PHP. (Il est à noter que cela n'a rien à voir avec des facilitées de débuggage ou des informations à propos des scripts PHP.)
--enable-safe-mode
--enable-safe-mode
Active le "safe mode" par défaut. Cela imposes de nombreuses restrictions sur les fonctionnalités du PHP, concernant notamment l'ouverture des fichiers. Consultez le LIENHYPERTEXTE "security.html"chapitre sur la sécurité pour avoir plus de renseignements. Si vous compilez PHP comme CGI, vous devriez toujours activer le "safe mode". Cela active l'option par défaut. Ce mode peut être activé ou désactivé en utilisant la directive LIENHYPERTEXTE "configuration.html" \l "INI.SAFE-MODE"safe_mode dans le LIENHYPERTEXTE "configuration.html" \l "CONFIGURATION.FILE"fichier de configuration.
--enable-track-vars
--enable-track-vars
Permet au PHP de stocker dans les tableaux HTTP_GET_VARS, HTTP_POST_VARS et HTTP_COOKIE_VARS les informations recues par les méthodes GET/POST ou bien en provenance d'un cookie. Cela active l'option par défaut. Cette option peut être activée ou désactivée grÅce à la directive LIENHYPERTEXTE "configuration.html" \l "INI.TRACK-VARS"track_vars dans le LIENHYPERTEXTE "configuration.html" \l "CONFIGURATION.FILE"fichier de configuration.
--enable-magic-quotes
--enable-magic-quotes
Acitve l'option "magic quotes" par défaut. Cela active l'option par défaut. Cette option peut être activée ou désactivée grÅce à la directive LIENHYPERTEXTE "configuration.html" \l "INI.MAGIC-QUOTES-RUNTIME"magic_quotes_runtime dans le LIENHYPERTEXTE "configuration.html" \l "CONFIGURATION.FILE"fichier de configuration. Voir aussi les directivesLIENHYPERTEXTE "configuration.html" \l "INI.MAGIC-QUOTES-GPC" magic_quotes_gpc et LIENHYPERTEXTE "configuration.html" \l "INI.MAGIC-QUOTES-SYBASE"magic_quotes_sybase.
--enable-debugger
--enable-debugger
Permet d'utiliser le débugger interne du PHP. Cette fonctionnalité est encore au stade expériementale. Voir aussi la directive LIENHYPERTEXTE "configuration.html" \l "INI.SECT.DEBUGGER"Debugger Configuration dans le fichier LIENHYPERTEXTE "configuration.html" \l "CONFIGURATION.FILE"fichier de configuration.
--enable-discard-path
--enable-discard-path
Si cette option est activée, le binaire du PHP (dans le cas d'une compilation comme CGI) peut être placée en toute sureté à l'extérieur de l'arborescence du serveur web. Les utilisateurs ne pourront pas aller au delà des règles de sécurité imposée par le fichier ".htaccess". Voir aussi le chapitre concernant LIENHYPERTEXTE "security.html" \l "SECURITY.CGI.SHELL"la sécurité à propos de cette option.
--enable-bcmath
--enable-bcmath
Ajoute les fonctions de précisions mathématiques arbitraires. Voir aussi l'option LIENHYPERTEXTE "configuration.html" \l "INI.SECT.BCMATH"bcmath.scale dans le LIENHYPERTEXTE "configuration.html" \l "CONFIGURATION.FILE"fichier de configuration.
--enable-force-cgi-redirect
--enable-force-cgi-redirect
Active une option de sécurité concernant la redirection interne du serveur web. Si vous utilisez Apache comme CGI, vous devriez utiliser cette option.
Lorsque vous utilisez PHP comme CGI, PHP vérifie toujours par défaut qu'il est utilisé par redirection. (par exemple, sous Apache, en utilisant les directives "Action Directives"). Cela assure que le binaire PHP ne peut pas être utilisé pour passer par dessus les procédures d'authentification du serveur web en appellant une procédure directevement. Par exemple, http://my.host/cgi-bin/php/secret/doc.html. Dans cette exemple, on accède à la page http://my.host/secret/doc.html mais cela n'utilise aucune règle de sécurité pour le répertoire /secret.
Ne pas activer cette option annule la vérification et permet éventuellement de passser par dessus les procédures d'authentification et de sécurité du démon httpd. Désactivez cette option uniquement si votre serveur n'est pas capable d'indiquer si une rédirection sécurisée a été effectué et si toutes les fichiers sur votre serveur et dans les répertoires utilisateurs peuvent être accessible de l'extérieure par tout le monde.
Consultez le chapitre consernant LIENHYPERTEXTE "security.html" \l "SECURITY.CGI.FORCE-REDIRECT"la sécurité a propos de cette option.
--disable-short-tags
--disable-short-tags
Désactive la version courte des tags PHP. Vous devez désactiver la version courte des tags si vous souhaitez utiliser le PHP avec XML. Si vous désactivez la version courte des tags, les seuls tag PHP acceptés sont . Cette option établie la valeur par défaut. Elle peut être activée ou désactivée ave la directive LIENHYPERTEXTE "configuration.html" \l "INI.SHORT-OPEN-TAG"short_open_tag dans le LIENHYPERTEXTE "configuration.html" \l "CONFIGURATION.FILE"fichier de configuration.
--enable-url-includes
--enable-url-includes
Ajoute la possibilité d'exécuter du code PHP à partir d'un autre serveur HTTP ou FTP directement grÅce à la fonction LIENHYPERTEXTE "function.include.html"include(). Vois aussi l'option LIENHYPERTEXTE "configuration.html" \l "INI.INCLUDE-PATH"include_path dans le LIENHYPERTEXTE "configuration.html" \l "CONFIGURATION.FILE"fichier de configuration.
--disable-syntax-hl
--disable-syntax-hl
Annule la surbrillance de la syntaxe.
CPPFLAGS and LDFLAGS
Pour que, lors de la compilation et de l'installation, PHP cherche les diférents fichiers ou librairies dans des répertoires précis, vous devez modifier les variables d'environnement CPPFLAGS et LDFLAGS. Si vous utilisez un shell "sensible" (???), vous pouvez aussi exécuter la commande LDFLAGS=-L/my/lib/dir CPPFLAGS=-I/my/include/dir ./configure
Compilation
Lorsque vous avez exécuté le script de configuration, vous êtes prêt pour compiler le PHP comme module ou bien comme CGI. La commande make devrait s'occuper de la compilation. Si cela ne fonctionne pas correctement, vous trouverez dans le LIENHYPERTEXTE "install-problems.html"paragraphe problemes de nombreuses réponses aux problèmes courant de compilation.
Test
Si vous avez compilé PHP comme CGI, vous pouvez vérifier que votre compilation c'est bien déroulée en tapant la commande make test. C'est toujours une bonne idée de test si la compilation c'est bien déroulée. Dans ce sens, vous serez capable de détecter une erreur à la source au lieu de chercher des erreurs le problèmes plutard.
Benchmark
Si vous avez compilé PHP comme CGI, vous pouvez utiliser le script de benchmark en tapant la commande make bench. Il est a noté que si le "safe mode" est activé, le bench ne pourra pas se finir si l'exécution prend plus que les 30 secondes permises. Cela tient au fait que la fonction LIENHYPERTEXTE "function.set-time-limit.html"set_time_limit() ne peut pas être utilisé lorsque le "safe mode" est activé. Utilisez la directive LIENHYPERTEXTE "configuration.html" \l "INI.MAX-EXECUTION-TIME"max_execution_time pour contrúler le temps d'exécution dans vos scripts. make bench ne tient pas compte du LIENHYPERTEXTE "configuration.html" \l "CONFIGURATION.FILE"fichier de configuration.
Installation on Windows 95/98/NT systems
This install guide will help you install and configure PHP on your Windows 9x/NT webservers. This guide was compiled by LIENHYPERTEXTE "mailto:bob_silva@mail.umesd.k12.or.us"Bob Silva. The latest revision can be found at LIENHYPERTEXTE "http://www.umesd.k12.or.us/php/win32install.html"http://www.umesd.k12.or.us/php/win32install.html.
This guide provides installation support for:
Personal Web Server (Newest version recommended)
Internet Information Server 3 or 4
Apache 1.3.x
Omni HTTPd 2.0b1
Configuration Changes for PHP
All modules are now prefixed with 'php3_'. You will need to change your LIENHYPERTEXTE "configuration.html" \l "PHP3.INI"php3.ini file and/or any scripts loading extensions with the LIENHYPERTEXTE "function.dl.html"dl() function (or you could always remove the 'php3_' prefix). This will prevent confusion between php modules and their supporting libraries.
The LIENHYPERTEXTE "http://www.php.net/ChangeLog.php3"ChangeLog, LIENHYPERTEXTE "http://www.php.net/FAQ.php3"FAQ and updated documentation can always be found at the offical PHP website or any of its mirrors.
General Installation Steps
The following steps should be performed on all installations before the server specific instructions.
Extract the distribution file to a directory of your choice. "C:\PHP3\" is a good start.
Copy the file, 'php3-dist.ini' to your '%WINDOWS%' directory and rename it to 'php3.ini'. Your '%WINDOWS%' directory is typically:
PRIVATEc:\windows for Windows 95/98c:\winnt or c:\winnt40 for NT servers
Edit your 'php3.ini' file:
You will need to change the 'extension_dir' setting to point to your php-install-dir, or where you have placed your 'php3_*.dll' files. ex: c:\php3
If you are using Omni Httpd, do not follow the next step. Set the 'doc_root' to point to your webservers document_root. ex: c:\apache\htdocs or c:\webroot
Choose which modules you would like to load when PHP starts. You can uncomment the: 'extension=php3_*.dll' lines to load these modules. Some modules require you to have additional libraries installed on your system for the module to work correctly. The PHP LIENHYPERTEXTE "http://www.php.net/FAQ.php3"FAQ has more information on where to get supporting libraries. You can also load a module dynamically in your script using: dl("php_*.dll");
On PWS and IIS, you can set the browscap.ini to point to: 'c:\windows\system\inetsrv\browscap.ini' on Windows 95/98 and 'c:\winnt\system32\inetsrv\browscap.ini' on NT Server. Additional information on using the browscap functionality in PHP can be found at this LIENHYPERTEXTE "http://www.netvision.net.il/browser-id.php3"mirror, select the "source" button to see it in action.
Windows 95/98/NT and PWS/IIS 3
The recommended method for configuring these servers is to use the INF file included with the distribution (php_iis_reg.inf). You may want to edit this file and make sure the extensions and PHP install directories match your configuration. Or you can follow the steps below to do it manually.
WARNING: These steps involve working directly with the windows registry. One error here can leave your system in an unstable state. We highly recommend that you back up your registry first. The PHP Development team will not be held responsible if you damage your registry.
Run Regedit.
Navigate to: HKEY_LOCAL_MACHINE /System /CurrentControlSet /Services /W3Svc /Parameters /ScriptMap.
On the edit menu select: New->String Value.
Type in the extension you wish to use for your php scripts. ex: .php3
Double click on the new string value and enter the path to php.exe in the value data field. ex: c:\php3\php.exe %s %s. The '%s %s' is VERY important, PHP will not work properly without it.
Repeat these steps for each extension you wish to associate with PHP scripts.
Now navigate to: HKEY_CLASSES_ROOT
On the edit menu select: New->Key.
Name the key to the extension you setup in the previous section. ex: .php3
Highlight the new key and in the right side pane, double click the "default value" and enter phpfile.
Repeat the last step for each extension you set up in the previous section.
Now create another New->Key under HKEY_CLASSES_ROOT and name it phpfile.
Highlight the new key phpfile and in the right side pane, double click the "default value" and enter PHP Script.
Right click on the phpfile key and select New->Key, name it Shell.
Right click on the Shell key and select New->Key, name it open.
Right click on the open key and select New->Key, name it command.
Highlight the new key command and in the right side pane, double click the "default value" and enter the path to php.exe. ex: c:\php3\php.exe -q %1. (don't forget the %1).
Exit Regedit.
PWS and IIS 3 users now have a fully operational system. IIS 3 users can use a nifty LIENHYPERTEXTE "http://www.genusa.com/iis/iiscfg.html"tool from Steven Genusa to configure their script maps.
Windows NT and IIS 4
To install PHP on an NT Server running IIS 4, follow these instructions:
In Internet Service Manager (MMC), select the Web site or the starting point directory of an application.
Open the directory's property sheets (by right clicking and selecting properties), and then click the Home Directory, Virtual Directory, or Directory tab.
Click the Configuration button, and then click the App Mappings tab.
Click Add, and in the Executable box, type: c:\path-to-php-dir\php.exe %s %s. You MUST have the %s %s on the end, PHP will not function properly if you fail to do this.
In the Extension box, type the file name extension you want associated with PHP scripts. (You must repeat step 5 and 6 for each extension you want accociated with PHP scripts. (.php3 and .phtml are common)
Set up the appropriate security. (This is done in Internet Service Manager), and if your NT Server uses NTFS file system, add execute rights for I_USR_ to the directory that contains php.exe.
Windows 9x/NT and Apache 1.3.x
You must edit your srm.conf or httpd.conf to configure Apache to work with the PHP CGI binary.
Although there can be a few variations of configuring PHP under Apache, this one is simple enough to be used by the newcomer. Please consult the Apache Docs for further configuration directives.
ScriptAlias /php3/ "c:/path-to-php-dir/"
AddType application/x-httpd-php3 .php3
AddType application/x-httpd-php3 .phtml
Action application/x-httpd-php3 "/php3/php.exe"
To use the source code highlighting feature, simply create a PHP script file and stick this code in: . Substitute original_php_script.php3 with the name of the file you wish to show the source of. (this is only one way of doing it). Note: On Win-Apache all back slashes in a path statement such as: "c:\directory\file.ext", must be converted to forward slashes.
Omni HTTPd 2.0b1 for Windows
This has got to be the easiest config there is:
PRIVATEStep 1: Install Omni serverStep 2: Right click on the blue OmniHTTPd icon in the system tray and select PropertiesStep 3: Click on Web Server Global SettingsStep 4: On the 'External' tab, enter: virtual = .php3 | actual = c:\path-to-php-dir\php.exeStep 5: On the Mime tab, enter: virtual = wwwserver/stdcgi | actual = .php3Step 6: Click OKRepeat steps 2 - 6 for each extension you want to associate with PHP.
PHP Modules
Table 2-1. PHP Modules
PRIVATEphp3_calendar.dllCalendar conversion functionsphp3_crypt.dllCrypt functionsphp3_dbase.dllDBase functionsphp3_dbm.dllGDBM emulation via Berkely DB2 libraryphp3_filepro.dllREAD ONLY access to filepro databasesphp3_gd.dllGD Library functions for gif manipulationphp3_hyperwave.dllHyperWave functionsphp3_imap4r2.dllIMAP 4 functionsphp3_ldap.dllLDAP functionsphp3_msql1.dllmSQL 1 clientphp3_msql2.dllmSQL 2 clientphp3_mssql.dllMSSQL client (requires MSSQL DB-Librariesphp3_mysql.dllMySQL functionsphp3_nsmail.dllNetscape mail functionsphp3_oci73.dllOracle functionsphp3_snmp.dllSNMP get and walk functions (NT only!)php3_zlib.dllZLib functions
Problèmes ?
Consultez la FAQ
Certains problèmes sont plus courant que d'autres. La solutions aux problèmes les plus courants sont rassemblés dans la FAQ PHP, disponibles à l'adresse LIENHYPERTEXTE "http://www.php.net/FAQ.php3"http://www.php.net/FAQ.php3
Rapporter un bug
Si vous pensez que vous avez trouvé un bug dans PHP, veuillez le faire savoir. Les développers PHP ne le connaissent probablement pas, et si vous ne le faites pas connaitre, il n'y a aucune chance que celui-ci soit corrigé. Vous pouvez le faire savoir en utilisant le bug-tracking système à l'adresse LIENHYPERTEXTE "http://www.php.net/bugs.php3"http://www.php.net/bugs.php3.
Autres problèmes
Si vous êtes toujours dans l'impasse, il y a probablement quelqu'un sur la liste de diffusion PHP qui pourra vous aider. Vous devriez déjà vérifier dans les archives de la liste de diffusion au cas ou quelqu'un aurait déjà répondu à votre question. Les archives sont accessibles à partir de la page "support" à l'adresse LIENHYPERTEXTE "http://www.php.net/"http://www.php.net/. Pour s'inscrire sur la liste de diffusion PHP, envoyer un message vide à l'adresse suivante: LIENHYPERTEXTE "mailto:php3-subscribe@lists.php.net"php3-subscribe@lists.php.net. L'adresse de la liste de diffusion est: php3@lists.php.net.
Si vous voulez obtenir de l'aide sur la liste de diffusion, veuillez essayer de préciser votre environnement (quel OS, quelle version de PHP, quel serveur web, si vous utilisez PHP comme CGI ou commer module serveur, etc...), et donnez assez de code afin que les membres de la liste puissent reproduire votre problème et le tester.
Chapitre 3. Configuration
Table des matières
LIENHYPERTEXTE \l "CONFIGURATION.FILE"Le fichier de configuration file
Le fichier de configuration
Le fichier de configuration (appelé php3.ini dans la version 3.0 du PHP, et simplement php.ini dans la version 4.0) est lu par le PHP au démarrage. Si vous avez compilé PHP en module, le fichier n'est lu qu'une seule fois, au lancement du démon HTTP. Pour la version CGI le fichier est lu à chaque invocation.
Lorsque vous utilisez le module Apache vous pouvez aussi changer les paramètres de configurations en utilisant les directives dans les fichiers de configuration d'Apache et dans les fichiers ".htaccess".
Dans la version 3.0, à chaque directive de configuration présente dans le fichier de configuration d'Apache correspond une directive de configuration dans le fichier php3.ini à l'exception des directives préfixées par "php3_".
Dans la version 4.0, il n'y a seulement que quelques directives dans le fichier de configuration d'Apache qui vous permettent de modifier la configuration de PHP.
php_value name value
Cette directive affecte une valeur à la variable spécifiée.
php_flag name on|off
Cette directive est utilisée pour activer ou désactiver l'option précédente.
php_admin_value name value
Cette directive affecte une valeur à la variable spécifiée. La directive "Admin" ne peut être utilisée que dans le fichier de configuration d'Apache, et non dans un fichier ".htaccess".
php_admin_flag name on|off
Cette directive est utilisée pour activer ou désactiver l'option précédente.
Vous pouvez voir l'état de votre configuration en utilisant la fonction LIENHYPERTEXTE "function.phpinfo.html"phpinfo(). Vous pouvez aussi accéder aux valeurs de votre configuration de manière individuelle en utilisant la fonction LIENHYPERTEXTE "function.get-cfg-var.html"get_cfg_var().
Directives de configuration générale
auto_append_file chaine de caractères
Spécifie le nom du fichier qui est automatiquement lu après le fichier principale. Le fichier est inclus comme si il avait été appelé avec la fonction LIENHYPERTEXTE "function.include.html"include(), donc LIENHYPERTEXTE \l "INI.INCLUDE-PATH"include_path est utilisé.
Le mot réservé none désactive auto-appending.
Note: Si le script s'arrête par la fonction LIENHYPERTEXTE "function.exit.html"exit(), auto-append ne fonctionnera pas.
auto_prepend_file chaine de caractères
Spécifie le nom du fichier qui est automatiquement lu après avant le fichier principal. Le fichier est inclus comme si il avait été appelé avec la fonction LIENHYPERTEXTE "function.include.html"include(), donc LIENHYPERTEXTE \l "INI.INCLUDE-PATH"include_path est utilisé.
Le mot réservé none désactive auto-appending.
cgi_ext chaine de caractères
display_errors booléen
Cette directive détermine si les erreurs doivent être affichées à l'écran au format HTML ou non.
doc_root chaine de caractères
Fixe la valeur du répertoire racine du PHP sur le serveur. Cette directive n'est utilisée que s'il n'est pas vide. Si PHP est configuré en LIENHYPERTEXTE \l "INI.SAFE-MODE"safe mode, aucun fichier en dehors de l'arborescence sous la racine n'est accessible.
engine booléen
Cette directive n'est utile que dans le cas de la compilation du PHP en tant que module Apache. Elle est utilisée par les sites qui veulent activer ou désactiver le parsage des fichiers suivant le répertoire ou suivant le serveur virtuel. En ajoutant php3_engine off dans le fichier httpd.conf, alors le PHP peut être activé ou désactivé au plaisir.
error_log chaine de caractères
Nom du fichier ou les erreurs doivent être logger. Si le mot réservé syslog est utilisé, les erreurs sont envoyées au logger système. Sous Unix, cela correspond à syslog(3), sous Windows NT cela correspond à "event log". Il n'y a pas de système de log sous Windows 95/98.
error_reporting valeur numérique
Définit le niveau de reporting des erreurs. Le paramètre est une valeur numérique repésentant un champs de bits. Ajoutez le niveau d'erreur que vous voulez.
Tableau 3-1. Niveau de reporting des erreurs.
PRIVATEValeur du bitniveau de reporting1erreurs nomrales2warnings normals4erreurs de parsage8warning faibleLa valeur par défaut pour cette directive est 7 (erreurs normales, warnings normaux, et erreurs de parsage sont notées).
open_basedir chaine de caractères
Limite les fichiers qui peuvent être ouverts avec le PHP à l'arborescence spécifié en paramètre.
Lorsqu'un script essaie d'ouvrir un fichier avec, par exemple, la fonction fopen ou gzopen, la localisation du fichier est vérifiée. Si le fichier est situé dans un répertoire à l'extérieur de l'arborescence spécifiée, PHP refuse d'ouvrir ce fichier. Tous les liens symboliques sont suivis, donc il n'est pas impossible de passer outre cette restriction.
Le mot réservé . indique que seul le répertoire contenant le script sera utilisé comme "base-directory".
Sous Windows, séparez les répertoires par des ";". Sous tous les autres système séparez les répertoires par des ":". Si vous avez compilé PHP comme module Apache, les répertoires héritent du répertoire parent la valeur de "open_basedir".
Note: Le support pour les répertoires multiples a été ajouté dans la version 3.0.7.
Par défaut, un script peut ouvrir n'importe quel fichier.
gpc_order chaine de caractères
Etablit l'ordre de préscéance des méthodes GET/POST/COOKIE. Par défaut, cette directive est établie a "GPC". En affectant "GP" à cette directive, PHP ignorera les cookies, et écrasera toute méthode GET utilisée par une méthode POST avec des variables du même nom.
ignore_user_abort chaine de caractères
Désactivée par défaut. Si cette directive est activée, alors tous les scripts lancés iront jusqu'à leur terme, même si le client se déconnecte en plein milieu. Voir aussi la fonction LIENHYPERTEXTE "function.ignore-user-abort.html"ignore_user_abort().
include_path chaine de caractères
Spécifie la liste des répertoires où les fonctions LIENHYPERTEXTE "function.require.html"require(), LIENHYPERTEXTE "function.include.html"include() and fopen_with_path() chercheront leurs fichiers. Le format est le même que les variables d'environement PATH: une liste de répertoires séparés par des ":" sous UNIX ou des ";" sous Windows.
PRIVATEExemple 3-1. Include_path sous UNIX
include_path=.:/home/httpd/php-lib
PRIVATEExemple 3-2. Include_path sous Windows
include_path=".;c:\www\phplib"La valeur par défaut pour cette directive est . (Seulement le répertoire courant.
isapi_ext chaine de caractères
log_errors booléen
Cette option décrit si oui ou non il faut logger les messages d'erreur.
magic_quotes_gpc booléen
Active l'option "magic_quotes" pour les méthodes GPC (GET/POST/COOKIE) Lorsque les magic_quotes sont activées, les caractères ' (simple quote), " (double quote), \ (backslash) et NUL sont précédés automatiquement d'un backslash. Si l'option magic_quotes_sybase est activée, une simple-quote est précédée d'une autre simple-quote au lieu d'un backslash.
magic_quotes_runtime booléen
Si l'option magic_quotes_runtime est activée, la plupart des fonctions qui renvoient des datas depuis toutes sortes de sources externes, comme les bases de données ou les fichiers textes, auront leur double quotes précédées d'un backslash.
magic_quotes_sybase booléen
Si l'option magic_quotes_sybase activée, une simple-quote est précédée d'une autre simple-quote au lieu d'un backslash si l'option magic_quotes_gpc ou l'option magic_quotes_runtime est activée.
max_execution_time valeur numérique
Grâce à cette option, vous pouvez donner un temps maximum d'exécution de votre script, avant qu'il ne soit terminé par le parseur. Cela permet de ne pas avoir de script qui boucle sur votre serveur.
memory_limit valeur numérique
Grâce à cette option, vous pouvez donner une taille maximum de mémoire qu'un script peut allouer. Cela permet de ne pas avoir de script qui utilise toute la mêmoire sur votre serveur.
nsapi_ext chaine de caractères
short_open_tag booléen
Acitve ou désactive l'utilisation des tags court, () Si vous voulez utiliser PHP et XML en même temps, vous devez désactiver cette option. Si cette option est désactivée, vous devez utiliser la forme longue des tags, ( ).
sql.safe_mode booléen
track_errors booléen
Si cette option est activée, le dernier message d'erreur est présent dans la variable globale $php_errormsg.
track_vars booléen
Si cette option est activée, lors de l'appel des méthodes GET, POST et des cookies, les variables sont disponibles dans un tableau associatif global appelé respectivement $HTTP_GET_VARS, $HTTP_POST_VARS ou $HTTP_COOKIE_VARS.
upload_tmp_dir chaine de caractères
Correspond au répertoire utilisé lors de l'upload d'un fichier. Ce répertoire doit être accessible en lecture pour l'utilisateur qui lance le script PHP.
user_dir chaine de caractères
Répertoire où sont stockés les fichiers PHP dans le répertoire d'un utilisateur. Par exemple, public_html.
warn_plus_overloading booléen
Si cette option est activée, PHP émet un warning lorsque l'opérateur plus (+) est utilisé sur une chaine de caractères. Cela permet de trouver plus facilement les scripts qui doivent être réécrit en utilisant l'opérateur de concaténation (.) plutôt que l'opérateur plus.
Configuration des directives concernant le mail
SMTP chaine de caractères
Adresse IP ou nom que PHP doit utiliser sous Windows pour envoyer du mail avec la fonction LIENHYPERTEXTE "function.mail.html"mail() .
sendmail_from chaine de caractères
Valeur du champs "From:" qui doit être utilisée lors de l'envoie de mail sous Windows.
sendmail_path chaine de caractères
Localisation du binaire de sendmail, habituellement /usr/sbin/sendmail ou /usr/lib/sendmail configure essaye de repérer la présence de sendmail et affecte le résultat par défaut. En cas de problème, vous pouvez établir une nouvelle valeur par défaut.
Tout système n'utilisant pas sendmail doit établir cette directive à la valeur chemin du wrapper qui remplace le serveur de mail, si celui-ci existe, par exemple, LIENHYPERTEXTE "http://www.qmail.org/"Qmail. Dans ce cas la, vous devez mettre: /var/qmail/bin/sendmail.
Directives de configuration du "Safe Mode"
safe_mode booléen
Cette directives active ou désactive l'option "safe mode". Lisez le LIENHYPERTEXTE "security.html"chapitre Sécurité pour plus d'informations.
safe_mode_exec_dir chaine de caractères
Si l'option "safe mode" est activée, LIENHYPERTEXTE "function.system.html"system() et les autres fonctions exécutant des programmes systèmes refusent de se lancer si elles ne sont pas dans ce répertoire.
Directives de configuration de débbugage.
debugger.host chaine de caractères
Adresse IP ou nom de l'hôte utilisé pour le déboggage.
debugger.port chaine de caractères
Numéro du port utilisé pour le déboggage.
debugger.enabled booléen
Directives qui activent ou désactivent l'option de déboggage.
Directives de chargement des extensions
enable_dl booléen
Cette directive est réellement utile que dans le cas d'une compilation comme module Apache. Vous pouvez activer le chargement dynamique des extensions avec la fonction LIENHYPERTEXTE "function.dl.html"dl(), et cela de maniére locale à chaque serveur virtuel ou à chaque répertoire.
La principale raison qui pousse à désactiver le chargement dynamique est un problème de sécurité. Lorsque le chargement dynamique est activé, il est possible d'ignorer les directives "safe_mode" ou "open_basedir".
Par défaut, il est possible d'utiliser le chargement dynamique, sauf lorsque la directive "safe_mode" est activée. En effet, il est alors impossible d'utiliser la fonction LIENHYPERTEXTE "function.dl.html"dl().
extension_dir chaine de caractères
Définit le répertoire dans lequel le PHP doit chercher les extensions lors du chargement dynamique.
extension chaine de caractères
Définit les extensions qui doivent être chargées lors du démarrage du PHP.
Directives de configuration MySQL
mysql.allow_persistent booléen
Active ou désactive les connexions persistentes à la base de données MySQL.
mysql.max_persistent valeur numérique
Nombre maximum de connexions persistantes à une base de donnée MySQL par processus.
mysql.max_links valeur numérique
Nombre de connexion maximum à une base de donnée MySQL par processus, incluant les connexions persistantes.
Directives de configuration mSQL
msql.allow_persistent booléen
Active ou désactive les connexions persistentes à la base de données mSQL.
msql.max_persistent valeur numérique
Nombre maximum de connexions persistantes à une base de donnée mSQL par processus.
msql.max_links valeur numérique
Nombre de connexions maximum à une base de donnée mSQL par processus, incluant les connexions persistantes.
Directives de configuration Postgres
pgsql.allow_persistent booléen
Active ou désactive les connexions persistentes à la base de données Postgres.
pgsql.max_persistent valeur numérique
Nombre maximum de connexions persistantes à une base de donnée Postgres par processus.
pgsql.max_links valeur numérique
Nombre de connexions maximum à une base de donnée Postgres par processus, incluant les connexions persistantes.
Directives de configuration Sybase
sybase.allow_persistent booléen
Active ou désactive les connexions persistentes à la base de données Sybase.
sybase.max_persistent valeur numérique
Nombre maximum de connexions persistantes à une base de donnée Sybase par processus.
sybase.max_links valeur numérique
Nombre de connexions maximum à une base de donnée Sybase par processus, incluant les connexions persistantes.
Directives de configuration Sybase-CT
sybct.allow_persistent booléen
Active ou désactive les connexions persistentes à la base de données Sybase-CT. Par défaut, cette option est activée.
sybct.max_persistent valeur numérique
Nombre maximum de connexions persistantes à une base de donnée Sybase-CT par processus. Par défaut, cette option est à -1, ce qui signifie nombre de connexion illimité.
sybct.max_links valeur numérique
Nombre de connexions maximum à une base de donnée Sybase-CT par processus, incluant les connexions persistantes. Par défaut, cette option est à -1, ce qui signifie nombre de connexions illimitées.
sybct.min_server_severity valeur numérique
Les messages en provenance du serveur avec une "severity" égale à sybct.min_server_severity seront considérés comme des warnings. Cette valeur peut être modifiée à l'intérieur du script en appelant la fonction sybase_min_server_severity(). Par défaut, cette valeur vaut 10.
sybct.min_client_severity valeur numérique
Les messages en provenance de la librairie client avec une "severity" égale ou supérieur à sybct.min_client_severity seront considérés comme des warnings. Cette valeur peut être modifiée à l'intérieur du script en appelant la fonction sybase_min_client_severity(). Par dêtre modifié à l'intérieur du script en appelant la fonction faut, cette valeur vaut 10, ce qui annule tout reporting d'erreur.
sybct.login_timeout valeur numérique
Temps maximum au terme duquel une tentative de connexion non aboutie renvoie une erreur. Il est à noter que si max_execution_time est dépassé avant que la connexion "timed out", votre script sera terminé avant le message d'erreur. Par défaut, cette valeur vaut 1 minute.
sybct.timeout valeur numérique
Temps maximum en secondes avant qu'une tentative de requête "select_db" ou "query" non aboutie renvoie une erreur. Il est à noter que si max_execution_time est dépassé avant que la requête "timed out", votre script sera terminé avant le message d'erreur. Par défaut, il n'y a pas de limite.
sybct.hostname chaîne de caractères
Nom de l'hôte à partir duquel vous vous connectez, afin d'être affiché par la fonction sp_who. Par défaut, cette valeur égale à 0.
Directives de configuration Informix
ifx.allow_persistent booléen
Active les connexions persistantes à une basse de donnée Informix.
ifx.max_persistent valeur numérique
Nombre maximum de connexions persistantes à une basse de donnée Informix, par processus.
ifx.max_links valeur numérique
Nombre maximum de connexions à une basse de donnée Informix par processus, en incluant les connexions persistantes.
ifx.default_host chaîne de caractères
Hôte par défaut ou se connecter si auxun hôte n'est spécifié par les directives LIENHYPERTEXTE "function.ifx-connect.html"ifx_connect() ou LIENHYPERTEXTE "function.ifx-pconnect.html"ifx_pconnect().
ifx.default_userchaîne de caractères
User id par défaut à utiliser lorsque qu'aucun n'est spécifié par les fonctions LIENHYPERTEXTE "function.ifx-connect.html"ifx_connect() ou LIENHYPERTEXTE "function.ifx-pconnect.html"ifx_pconnect().
ifx.default_password chaîne de caractères
Mot de passe par défaut si aucun n'a été spécifié par la fonctions LIENHYPERTEXTE "function.ifx-connect.html"ifx_connect() ou LIENHYPERTEXTE "function.ifx-pconnect.html"ifx_pconnect().
ifx.blobinfile booléen
Activer cette option si vous voulez que les colonnes de type "blob" soit retournée dans un fichier, et désactivez là si vous voulez qu'elle soit retournée en mémoire. Vous pouvez modifier dynamiquement cette valeur grâce à la fonction LIENHYPERTEXTE "function.ifx-blobinfile-mode.html"ifx_blobinfile_mode().
ifx.textasvarchar booléen
Activer cette option si vous voulez qu'une colonne de type "TEXT" soit renvoyée comme une chaîne de caractères normale, et désactivez là si vous voulez utiliser le paramètre "blob id". Vous pouvez modifier dynamiquement cette valeur gâce à la fonction LIENHYPERTEXTE "function.ifx-textasvarchar.html"ifx_textasvarchar().
ifx.byteasvarchar booléen
Activer cette option si vous voulez qu'une colonne de type "BYTE" soit renvoyée comme une chaîne de caractères normale, et désactivez là si vous voulez utilisez le paramètre "blob id". Vous pouvez modifier dynamiquement cette valeur grâce à la fonction LIENHYPERTEXTE "function.ifx-textasvarchar.html"ifx_textasvarchar().
ifx.charasvarchar booléen
Acitvez cette option si vous voulez conserver les espaces en fin de chaîne de caractères lorsque vous faites un fetch.
ifx.nullformat booléen
Activez cette option si vous voulez que les colonnes "NULL" soit renvoyées comme une chaîne de caractères, désactivez là si vous voulez qu'elle soit renvoyée comme une chaîne de caractères vide. Vous pouvez modifier dynamiquement cette valeur en utilisant la fonction LIENHYPERTEXTE "function.ifx-nullformat.html"ifx_nullformat().
Directives de configuration de précision mathématique.
bcmath.scale valeur numérique
Nombre de chiffres après la virgule pour toutes les fonctions de précision mathématique.
Directives de configuration du navigateur.
browscap chaîne de caractères
Nom du fichier de "browser capabilities".
Directives de configuration du driver ODBC unifié
uodbc.default_db chaîne de caractères
"ODBC data source" à utiliser dans les fonctions LIENHYPERTEXTE "function.odbc-connect.html"odbc_connect() ou LIENHYPERTEXTE "function.odbc-pconnect.html"odbc_pconnect() si aucune n'est spécifiée.
uodbc.default_user chaîne de caractères
Nom d'utilisateur à utiliser dans les fonctions LIENHYPERTEXTE "function.odbc-connect.html"odbc_connect() ou LIENHYPERTEXTE "function.odbc-pconnect.html"odbc_pconnect() si aucun n'est spécifié.
uodbc.default_pw chaîne de caractères
Mot de passe à utiliser dans les fonctions LIENHYPERTEXTE "function.odbc-connect.html"odbc_connect() ou LIENHYPERTEXTE "function.odbc-pconnect.html"odbc_pconnect() si aucun n'est spécifié.
uodbc.allow_persistent booléen
Cette option permet d'activer ou de désactiver les connexions persistantes à la base de données.
uodbc.max_persistent valeur numérique
Nombre de connexion persistante authorisée à la base de données.
uodbc.max_links valeur numérique
Nombre de connexions totales (persistantes ou non) par processus à la base de données.
Chapitre 4 : Security
PHP est un langage puissant et l'interpréteur, qu'il soit inclus dans le serveur web ou bien compilé en version CGI, est capable d'accéder aux fichiers, d'exécuter des commandes et d'ouvrir des connexions réseaux. Toutes ces propriétés rendent le serveur web non sécurisé. Le langage PHP a été pensé afin d'être un langage beaucoup plus sécurisé pour écrire des CGI que le Perl ou le langage C, de plus une sélection rigoureuse des options de compilation et d'exécution vous permettront d'obtenir un équilibre parfaite entre liberté et sécurité.
Etant donné qu'il y a de nombreux moyens d'utiliser le langage PHP, il y a de nombreuses directives de configuration afin d'en contrôler le comportement. Un grand nombre d'options permettent d'utiliser le PHP dans de nombreuses situations, mais cela signifie aussi qu'il y a certaines combinaisons d'options de compilation et d'exécution qui amènent le serveur a être non sécurisé. Ce chapitre explique comme les différentes options de configurations peuvent être combinées, tout en conservant une sécurité maximum.
Version binaire CGI
Attaques possibles
L'option d'utiliser le PHP comme un binaire CGI vient la plupart du temps du fait de ne pas vouloir l'utiliser comme un module du serveur web, (comme Apache), ou bien que vous souhaitez l'utiliser en combinaison d'un wrapper CGI afin de créer un environnement de script sécurisé (en utilisant des techniques de chroot ou setuid). Une telle décision signifie habituellement que vous installez votre exécutable dans le répertoire cgi-bin de votre serveur web. CERT advisory LIENHYPERTEXTE "http://www.cert.org/advisories/CA-96.11.interpreters_in_cgi_bin_dir.html"CA-96.11 recommende effectivement de placer l'interpréteur à l'intérieur du répertoire cgi-bin. Même si le binaire PHP peut être utilisé comme interpréteur indépendant, PHP a été pensé afin de rendre impossible les attaques que ce type d'installation induit.
Accès au système de fichier: http://ma.machine/cgi-bin/php?/etc/passwd
La requête dans une url après le point d'interrogation (?) est envoyée à l'interpréteur comme une ligne de commande par l'interface CGI. Habituellement, l'interpréteur ouvre le fichier spécifié et l'exécute.
Lorsqu'il est invoqué comme binaire CGI, le PHP refuse d'interpréter les arguments de la ligne de commande.
Accès d'un document web sur le serveur: http://ma.machine/cgi-bin/php/secret/doc.html
Le "path information" dans l'url, situé juste après le nom du binaire PHP, /secret/doc.html est utilisé par convention pour spécifier le nom du fichier qui doit être ouvert et interprété par le programe CGI. Habituellement, des directives de configuration du serveur web (pour le serveur Apache: Action) sont utilisées pour rediriger les requêtes pour obtenir un document http://ma.machine/secret/script.php3 par l'interpréteur PHP. Dans une telle configuration, le serveur web vérifie d'abord si il a accès au répertoire /secret, et après cette vérification redirige la requête vers http://ma.machine/cgi-bin/php/secret/script.php3. Malheureusement, si la requète est faite directement sous cette forme, aucune vérification d'accès n'est faite par le serveur web pour le fichier /secret/script.php3, mais uniquement pour le fichier /cgi-bin/php. De cette manière, n'importe quel utilisateur qui peut accéder au fichier /cgi-bin/php peut aussi accéder au document protégés sur le serveur web.
Avec le PHP, l'option de compilation LIENHYPERTEXTE "install-unix.html" \l "ENABLE-FORCE-CGI-REDIRECT"--enable-force-cgi-redirect et les options d'exécution LIENHYPERTEXTE "configuration.html" \l "INI.DOC-ROOT"doc_root et LIENHYPERTEXTE "configuration.html" \l "INI.USER-DIR"user_dir peuvent être utilisées pour prévenir ce genre d'attaques, si des restrictions d'accès sont appliquées sur les documents du serveur. Voir ci-dessous pour des explications plus complètes sur les différentes combinaisons.
Cas 1: Tous les fichiers sont publics
Si votre serveur n'a aucun document dont l'accès est restreint par un mot de passe ou un système de vérification de l'adresse IP, vous n'avez aucun besoin de ce type de configuration. Si votre serveur web ne permet pas les redirections, ou si votre serveur web n'a aucun besoin de communiquer avec le binaire PHP de manière sécurisée, vous pouvez utiliser l'option de compilation LIENHYPERTEXTE "install-unix.html" \l "ENABLE-FORCE-CGI-REDIRECT"--disable-force-cgi-redirect. Vous devez quand même vérifier qu'aucun script ne fait appel au PHP, de manière directe, http://ma.machine/cgi-bin/php/dir/script.php3 ou bien de manière indirecte, par redirection, http://ma.machine/dir/script.php3.
Les redirections peuvent être configurées dans les fichiers de configuration d'Apache en utilisant les directives "AddHandler" et "Action" (voir ci-dessous).
Cas 2: Utilisation de la directive de compilation --enable-force-cgi-redirect
Cette option de compilation prévient quiconque d'appeler directement un script avec l'url http://ma.machine/cgi-bin/php/secretdir/script.php3. Dans ce cas là, PHP parsera le fichier uniquement si il y a eu redirection.
Habituellement, le serveur web Apache réalise une redirection grâce aux directives suivantes :
Action php3-script /cgi-bin/php
AddHandler php3-script .php3
Cette option a uniquement été testée avec Apache; et compte sur Apache pour affecter la variable d'environnement non-standart REDIRECT_STATUS pour les requêtes redirigées. Dans le cas où votre serveur web ne supporte pas le renseignement du PHP, pour savoir si la requête a été redirigée ou non, vous ne pouvez pas utiliser cette option de compilation. Vous devez alors utiliser une des autres manières pour utiliser la version binaire CGI du PHP, comme exposé ci-dessous.
Cas 3: Utilisation du "doc_root" ou du "user_dir"
Ajouter un contenu interactif dans votre serveur web, comme des scripts ou des exécutables, est souvent considéré comme une pratique non-sécurisée. Si, par erreur, le script n'est pas exécuté mais affiché comme une page HTML classique, il peut en résulter un vol de propriété intellectuelle ou des problèmes de sécurité à propos des mots de passe notamment. Donc, la plupart des administrateurs préfèrent mettre en place un répertoire spécial pour les scripts qui est uniquement accessible par le biais du binaire CGI du PHP, et donc, tous les fichiers de ce répertoire seront interprétés et non affichés tels quel.
Aussi, si vous ne pouvez pas utiliser la méthode présentée ci-dessus, il est nécessaire de mettre en place un répertoire "doc_root" différent de votre répertoire "document root" de votre serveur web.
Vous pouvez utiliser la directive LIENHYPERTEXTE "configuration.html" \l "INI.DOC-ROOT"doc_root dans le LIENHYPERTEXTE "configuration.html" \l "CONFIGURATION.FILE"fichier de configuration, ou vous pouvez affecter la variable d'environnement PHP_DOCUMENT_ROOT. Si cette variable d'environnement est affectée, le binaire CGI du PHP construira toujours le nom de fichier à ouvrir avec doc_root et le "path information" de la requête, et donc vous serez sûr qu'aucun script n'est exécuté en dehors du répertoire prédéfinit. (à l'exception du répertoire désigné par la directive user_dir Voir ci-dessous).
Une autre option possible ici est la directive LIENHYPERTEXTE "configuration.html" \l "INI.USER-DIR"user_dir. Lorsque la directive n'est pas activée, seulement les fichiers contenues dans le répertoire doc_root peuvent être ouverts. Ouvrir un fichier possédant l'url http://ma.machine/~user/doc.php3 ne correspond pas à l'ouverture d'un fichier sous le répertoire racine de l'utilisateur mais à l'ouverture du fichier ~user/doc.php3 sous le repertoire "doc_root" (oui, un répertoire comment par un tilde [~]).
Si la directive "user_dir" est activée à la valeur public_php par exemple, une requête du type http://ma.machine/~user/doc.php3 ouvrira un fichier appelé doc.php3 sous le répertoire appelé public_php sous le répertoire racine de l'utilisateur. Si le répertoire racine des utilisateurs est /home/user, le fichier exécuté sera /home/user/public_php/doc.php3.
user_dir et doc_root sont deux directives totalement indépendantes et donc vous pouvez contrôler l'accès au répertoire "document root" séparément des répertoires "user directory".
Cas 4: L'exécutable PHP à l'extérieur de l'arborescence du serveur
Une solution extrêmement sécurisée consiste à mettre l'exécutable PHP à l'extérieur de l'arborescence du serveur web. Dans le répertoire /usr/local/bin, par exemple. Le problème de cette méthode est que vous aurez à rajouter la ligne suivante :
#!/usr/local/bin/php
dans tous les fichiers contenant des tags PHP. Vous devrez aussi rendre le binaire PHP exécutable. Dans ce cas-là, traitez le fichier exactement comme si vous aviez un autre script écrit en Perl ou en sh ou en un autre langage de script qui utilise #! comme mécanisme pour lancer l'interpréteur lui-même.
Pour que l'exécutable PHP prenne en compte les variables d'environnement PATH_INFO et PATH_TRANSLATED correctement avec cette configuration, vous devez utiliser l'option de compilation LIENHYPERTEXTE "install-unix.html" \l "ENABLE-DISCARD-PATH"--enable-discard-path .
Module Apache
Lorsque le PHP est compilé en tant que module Apache, ce module hérite des permissions accordées à l'utilisateur faisant tourner Apache ( par défaut, l'utilisateur "noboby").
II. Le langage PHP
Chapitre 5. La syntaxe de base
Le passage du HTML au PHP
Il y a quatre moyens pour passer du mode HTML au mode PHP :
PRIVATEExemple 5-1. Le passage du HTML au PHP
1.