manuel php.doc

flameluxuriantΔιαχείριση Δεδομένων

16 Δεκ 2012 (πριν από 4 χρόνια και 6 μήνες)

2.025 εμφανίσεις


1

Documentation PHP

Stig Sæther Bakken ,Alexander Aulbach ,Egon Schmid ,Jim Winstead ,Lars Torben Wilson ,Rasmus Lerdorf ,Zeev Suraski

Rélisée par

Stig Sæther Bakken

Copyright

© 1997, 1998, 1999 au groupe de documentation
PHP

Traduit par

Ghislain Seguy (ghislain.seguy@nexen.net)

Date: 1999
-
07
-
19


Table des matières



Préface


A propos de ce manuel



I.
Premie
rs pa
s


1.
Introduction


2.
Installation


3.
Configuration


4.
Séc
urité



II.
Le langage PHP


5.
Syntaxe de base


6.
Types


7.
Variables


8.
Constantes


9.
Expressions


10.
Opérateurs


11.
Structures de contrôle


12.
Fonctions


13.
Classes et Objets



III.
Caractéristiques


14.
Gestion des erreurs


15.
Création
d'images GIF


16.
Authentification HTTP avec PHP


17.
Cookies


18.
Gestion des transferts de fichiers


19.
Utilisation de fichiers à distance


20.
Gestion des connections


21.
Connexions persistantes aux bases de données



IV.
Référence des fonctions PHP


I.
Fonction d'accès aux base de données Adabas D


II.
Fonctions spécifiques à Apache


III.
Manipulation des tableaux


IV.
Fonction Aspell

V.
Fonctions de précision mathématiques


VI.
Calendriers


VII.
Fonctions ClibPDF


VIII.
Fonctions de date et d'heure


IX.
Database (dbm
-
style) abstraction layer functions


X.
Fonction dBase


XI.
Fonctions dbm


XII.
Accès aux dossiers


XIII.
Chargement dynamique de librairies


XIV.
Exécution de programmes externes


XV.
Forms Data Format



2

XVI.
Fonction FilePro


XVII.
Fonctions système


XVIII.
Fonctions HTTP


XIX.
Hyperwave


XX.
Images


XXI.
IMAP


XXII.
Options PHP & informations


XXIII.
Fonctions Informix


XXIV.
Fonctions InterBase


XXV.
Fonctions LDAP


XXVI.
Email


XXVII.
Fonctions mathématiques


XXVIII.
Fonctions de cryptage


XXIX.
Fonctions de hash


XXX.
Fonctions diverses


XXXI.
Fonctions d'accès à mSQL


XXXII.
Fonc
tions d'accès à Microsoft SQL Server


XXXIII.
Fonctions d'accès à MySQL


XXXIV.
Fonctions d'accès Sybase


XXXV.
Fonctions réseau


XXXVI.
Fonctions NIS


XXXVII.
ODBC


XXXVIII.
Fonctions d'accès à Oracle 8


XXXIX.
Fonctions d'accès à Oracle


XL.
Expressions régulières compatibles Perl


XLI.
Fonctions relatives au format PDF


XLII.
Fonctions d'accès à PostgreSQL


XLIII.
Expressions régu
lières


XLIV.
Sémaphores et mémoire partagée


XLV.
Gestion des sessions


XLVI.
Fonctions Solid

=> obsoletes, utiliser les fonctions ODBC

XLVII.
Fonctions SNMP


XLVIII.
Gestion des chaînes de caractères


XLIX.
URL


L.
Fonctions sur les variables


LI.
Fonctions Vmailmgr


LII.
Fonctions WDDX


LIII.
Fonctions de compression


LIV.
Analyseur de syntaxe XML



V.
Annexes


A.
Migration de PHP/FI 2.0 a PHP 3.0


B.
Développement du PHP


C.
Le debuggeur PHP




Préface

Table des matières


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
DocBook DTD
,
DSSSL

(Document Style and Semantics
Specification Language) pour le formatage. Les outils utilisés pour le formatage HTML, TeX et RTF sont
Jade
, écrit par
James
Clark

et
The Modular DocBook Stylesheets

écrit par
Norman Walsh
. L'ensemble de la documentation a été regroupée par
Stig
S¾ther Bakken
.



3

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 sign
ifie ?

Prenons un exemple:


Exemple 1
-
1. Un exemple simple


<html><head><title>Exemple</title>

<body>

<?php echo "Bonjour, je suis un scrpit PHP"; ?>

</body></html>


Il est à noter la différence avec les autres scripts CGI écrit dans d'autres la
ngages 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 u
n
s
cript 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 collect
er
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 interfac
ant une base de donnés; est extrêmement simple. Les bases de donnés;es suivantes sont
supportées par le language PHP:


Adabas D

InterBase

Solid

dBase

mSQL

Sybase

Empress

MySQL

Velocis

FilePro

Oracle

Unix dbm

Informix

PostgreSQL



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 "Perso
nal 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 guestb
ook,
un compteur, etc... Le parseur fut réécri
t 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" av
ec
le "Form Interpreter" et il y aj
outa 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/F
I 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éveloppem
nt 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.

Au
jourd'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 da
ns le
monde ent
ier. 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 l
es qualités de
Zend pour améliorer les performances et améliorera le support des seveurs web autre que Apache.



4




Chapitre 2. Installation



Télécharger la version la plus récente

Le code source ainsi que des binaires pour certaines plates
-
formes (notamme
nt Windows), sont disponibles à l'adresse suivante:
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 pouv
ez é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 configuratio
n 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édu
re 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.


5



Utilisations du scrip
t "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 fichie
r 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 co
mpiler PHP comme un module Apache, répondre "yes" à la question "Build as an Apache module ?" (correspond à l'option
de configuration
--
with
-
apache
=
DIR
) et spécifie la racine de la distribution Apache. Si vous avez déco
mpressé 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
--
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 s
ous
leur UID respectives. Lisez attentivement le
chapitre consacré à la Sécurité

si vous souhaite
z 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'i
nstallation de la base de données
et par défaut /usr/local/adabasd.

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
-
f
ilepro

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 e
t
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
Configuration de mSQL

au chapitre
fichier de configuration
.

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 e
t
par défaut /usr/local. C'est le répertoire par défaut o
ù est installé MySQL.

Voir aussi
Configuration de MySQL

au chapitre
fichier de configuration
.

MyS
QL 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 es
t le répertoire d'installation
de la base de données et par défaut /usr/local.


6

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.

OpenLink Software's home page

Oracle

--
with
-
oracle
=DIR

Compile PHP pour le support des bases de données Or
acle. 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.

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/pgs
ql.

Voir aussi
Configuration de Postgres

au chapitre
fichier de configuration file
.

Post
greSQL 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 e
t par
défaut /usr/local/solid.

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
Config
uration Sybase

au chapitre
fichier de configuration
.

Sybase home page

Sybase
-
CT

--
with
-
sybase
-
ct
=DIR

Compile PHP pour le support des bases de donnés S
ybase
-
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
Configuration Sybase
-
CT

au chapitre
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.

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 opti
on 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 e
t 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 va
riable 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 bas
es 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 Syba
se
SQL, sous tous les types d'OS. Cela implique qu'un et un seule des modules ou l
e module Velocis est utilisé ou bien une librairie

7

personnel ODBC. Cette option n'est valide que si une des options suivantes est utilisée:
--
with
-
iodbc
,
--
with
-
solid
,
--
with
-
adabas
,
-
-
with
-
velocis
, or
--
with
-
custom
-
odbc
,

Voir aussi
Configuration du module ODBC unifié

au ch
apitre
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/lo
cal/ldap.

Plus d'informations à propos de LDAP est disponible dans les
RFC 1777

et
RFC 1778
.

Autres options de configuration

--
with
-
mcrypt
=DIR

--
with
-
mcrypt

Ajoute le support de la librairie mcrypt. Consulter la documentation concernant
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
"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
"Semaphore and Shared Memory"

pour plus d'info
rmation.

--
with
-
xml

--
with
-
xml

Ajoute le support du parseur XML en utilisant la
librairie expat

de James Clark. Voir aussi
les références aux fonctions XML

pour
plus de renseig
nements.

--
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 expression
s 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 par
amètre est utilisé lorque PHP cherche le
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 direct
ive
saf
e_mode_exec_dir

dans le
fichier de configuration
.

--
enable
-
debug

--
enable
-
debug

Ajoute la possibilité d'obtenir des informations complémentaires. Il est alors possible d'obtenir plus d'informa
tions 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 de
s
scripts PHP.)

--
enable
-
safe
-
mode

--
enable
-
safe
-
mode


8

Active le "safe mode" par défaut. Cela imposes de nomb
reuses restrictions sur les fonctionnalités du PHP, concernant notamment
l'ouverture des fichiers. Consultez le
chapitre sur la sécurité

pour avoir plus de renseignements. Si vous compilez PHP comme
CGI, vous devriez toujo
urs activer le "safe mode". Cela active l'option par défaut. Ce mode peut être activé ou désactivé en
utilisant la directive
safe_mode

dans le
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
track_vars

dans le
fichier de configurat
ion
.

--
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Åc
e à la
directive
magic_quotes_runtime

dans le
fichier de configuration
. Voir aussi les directives

magic_quotes_gpc

et
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 directiv
e
Debugger Configuration

dans le fichier
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 p
ar le
fichier ".htaccess". Voir aussi le chapitre conce
rnant
la sécurité

à propos de cette option.

--
enable
-
bcmath

--
enable
-
bcmath

Ajoute les fonctions de précisions mathématiques arbitraires. Voir aussi l'option
bcmath.scale
dans le
fichier de configuration
.

--
enable
-
force
-
cgi
-
redirect

--
enable
-
force
-
cgi
-
redirect

Active une option de sécurité concernant la redirection interne du ser
veur 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 Directiv
es"). 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'authentifi
cation
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édirecti
on
sécurisée a été effectué et si toutes les fichiers sur votre serveur et dans les répertoires utilisateurs peuvent être access
ibl
e de
l'extérieure par tout le monde.

Consultez le chapitre consernant
la sécurité

a propos de cette option.

--
disable
-
short
-
tags

--
disable
-
short
-
tags

Désactive la version courte <? ?> des t
ags 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 <?php ?>. Cette option établie la va
leur
par défaut. Elle peut être activée

ou désactivée ave la directive
short_open_tag

dans le
fichier de configuration
.

--
enable
-
url
-
includes

--
enable
-
url
-
includes

Ajout
e la possibilité d'exécuter du code PHP à partir d'un autre serveur HTTP ou FTP directement grÅce à la fonction
include()
.
Vois aussi l'option
include_pat
h

dans le
fichier de configuration
.

--
disable
-
syntax
-
hl

--
disable
-
syntax
-
hl

Annule la surbrillance de la syntaxe.


9

CPPFLAGS and LDFLAGS

Pour que, lors de la compilation et de l'installation, PH
P 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 CPPF
LAGS=
-
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 correct
ement, vous trouverez dans le
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
set_time_limit()

ne peut pas être utilisé lorsque le "safe mode" est activé. Utilisez la directive
max_execution_time

pour
contrúler le temps d'exécution dans vos scripts. make bench ne tient pas compte du
fichier de
configuration
.




Installation

on

Windows

95/98/NT

systems


This install guide will help you instal
l and configure PHP on your Windows 9x/NT webservers. This guide was compiled by
Bob
Silva
. The latest revision can be found at
ht
tp://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
php3.ini

file and/or any scripts loading extensions with
the
dl()

function (or you could always remove the 'ph
p3_' prefix). This will prevent confusion between php modules and their
supporting libraries.

The
ChangeLog
,
FAQ

and updated documentation can always be f
ound 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:




c:
\
windows for Windows 95/98

c:
\
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 you
r system for the module to work correctly. The PHP
FAQ

has more information on where to get
supporting libraries. You can also load a module dynamically in your script using: dl("php_*.dll");


10



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
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 foll
ow
the steps below to do it manually.

WARNING: These steps involve working directly with the windows registry. One e
rror 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 /Current
ControlSet /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 a
nother 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
tool

from Steven Genusa to configure their
script maps.

Windows NT a
nd 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 selectin
g 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 config
uration 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 scr
ipt file and stick this code in: <?php show_source
("original_php_script.php3"); ?>. Substitute original_php_script.php3 with the name of the file you wish to show the source o
f.
(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:


11

Step 1: Install Omni server

Step 2: Right click on the blue OmniHTTPd icon in th
e system tray and select Properties

Step 3: Click on Web Server Global Settings

Step 4: On the 'External' tab, enter: virtual = .php3 | actual = c:
\
path
-
to
-
php
-
dir
\
php.exe

Step 5: On the Mime tab, enter: virtual = wwwserver/stdcgi | actual = .php3

Step

6: Click OK

Repeat steps 2
-

6 for each extension you want to associate with PHP.

PHP Modules

Table 2
-
1. PHP Modules

php3_calendar.dll

Calendar conversion functions

php3_crypt.dll

Crypt functions

php3_dbase.dll

DBase functions

php3_dbm.dll

G
DBM emulation via Berkely DB2 library

php3_filepro.dll

READ ONLY access to filepro databases

php3_gd.dll

GD Library functions for gif manipulation

php3_hyperwave.dll

HyperWave functions

php3_imap4r2.dll

IMAP 4 functions

php3_ldap.dll

LDAP functions

p
hp3_msql1.dll

mSQL 1 client

php3_msql2.dll

mSQL 2 client

php3_mssql.dll

MSSQL client (requires MSSQL DB
-
Libraries

php3_mysql.dll

MySQL functions

php3_nsmail.dll

Netscape mail functions

php3_oci73.dll

Oracle functions

php3_snmp.dll

SNMP get and walk f
unctions (NT only!)

php3_zlib.dll

ZLib 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
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
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. Le
s
archives sont accessibles à partir de la page

"support" à l'adresse
http://www.php.net/
. Pour s'inscrire sur la liste de diffusion PHP,
envoyer un message vide à l'adresse suivante:
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 CG
I 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.


12

Chapitre 3. Configuration

Table des matières


Le fichier de configurat
ion 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 pa
r 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

c
onfiguration 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
phpinfo()
. Vous pouvez aussi accéder aux valeurs de votre
configuration de manière individuelle en utilisant la fonction
get_cfg_var()
.

Directives de configuration générale

auto_append_fil
e

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
include()
, donc
include_path

est utilisé.

Le mot réservé none désactive auto
-
appending.

Note:
Si le script s'arrête par la fonction
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
include()
, donc
incl
ude_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
safe mode
, aucun fichier en dehors de l'arborescence sous la racine n'est accessible
.

engine

booléen


13

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 sit
es
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 u
ne 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.

Valeur du bit

niveau de reporting

1

erreurs nomrales

2

warnings normals

4

erreurs de parsage

8

warnin
g faible

La 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 para
mè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 fichie
r
. 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é da
ns 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
ignore_user_abort()
.

include_path

chaine de caractères

Spécifie la liste des répertoires où les fonctions
require()
,
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 U
NIX ou des ";"
sous Windows.

Exemple 3
-
1. Include_path sous UNIX


include_path=.:/home/httpd/php
-
lib


Exemple 3
-
2. Include_path sous Windows


include_path=".;c:
\
www
\
phplib"

La valeur par défaut pour cette directive est . (Seulement l
e répertoire courant.

isapi_ext

chaine de caractères


14

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 m
agic_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'u
n 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_ex
ecution_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éri
que

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, (
<?php ?>
).

sql.safe_mode

booléen

track_err
ors

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 lectur
e 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 q
ue
l'opérateur plus.

Configuration des directiv
es 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
mail()

.

sendmail_from

chaine de caractères


15

Valeur du champs "From:" qui doi
t ê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ésulta
t 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,
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
chapitre Sécurité
pour plus d'informations.

safe_mode_exec_dir

chaine de caractères

Si l'option "safe mode" est activée,
system()

et les autres fonctions exécutant des programmes systèmes refusent de se l
ancer
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 act
iver le
chargement dynamique des extensions avec la fonction
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 p
roblè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 e
ffet, il est
alors impossible d'utiliser la fonction
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 cara
ctè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.


16

Directives de configur
ation 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

val
eur 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 don
né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, incluan
t 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 persistante
s à 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éf
aut, 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.


17

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 maxim
um 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 cara
ctères

Hôte par défaut ou se connecter si auxun hôte n'est spécifié par les directives
ifx_connect()

ou
ifx_pconnect()
.

ifx.default_user
chaîne de caractères

User

id par défaut à utiliser lorsque qu'aucun n'est spécifié par les fonctions
ifx_connect()

ou
ifx_pconnect()
.

ifx.default_password

chaîne de caractères

Mot de pass
e par défaut si aucun n'a été spécifié par la fonctions
ifx_connect()

ou
ifx_pconnect()
.

ifx.blobinfile

booléen

Activer cette option si vous voulez que les colonn
es 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
ifx_blobinfile_mod
e()
.

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 cet
te valeur gâce à la
fonction
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ésa
ctivez là si vous voulez utilisez le paramètre "blob id". Vous pouvez modifier dynamiquement cette valeur grâce à la
fonction
ifx_textasvarchar()
.

ifx.charasvarchar

booléen

Acitvez cette option si vous v
oulez 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
ifx_nullformat()
.


18

Directives de configuration de précision mathématique.

bcmath.sc
ale

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 d
u driver ODBC unifié

uodbc.default_db

chaîne de caractères

"ODBC data source" à utiliser dans les fonctions
odbc_connect()

ou
odbc_pconnect()

si aucune n'est sp
écifiée.

uodbc.default_user

chaîne de caractères

Nom d'utilisateur à utiliser dans les fonctions
odbc_connect()

ou
odbc_pconnect()

si aucun n'est spécifié.

uodb
c.default_pw

chaîne de caractères

Mot de passe à utiliser dans les fonctions
odbc_connect()

ou
odbc_pconnect()

si aucun n'est spécifié.

uodbc.allow_persistent

b
oolé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 con
nexions totales (persistantes ou non) par processus à la base de données.




19

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 capa
ble
d'accéder aux fichiers, d'e
xé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élec
tion 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éc
uri
sé.
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 f
ait 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
CA
-
96.11

recommende
effec
tivement 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 fi
chier: 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ée
s 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 re
quê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 fich
ier /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
--
enable
-
force
-
cgi
-
redirect

et les options d'exécution
doc_root

et
user_dir

peuvent
être utilisées pour prévenir ce genre d'atta
ques, 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 es
t 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 serveu
r web
n'a aucun besoin de communiquer avec le binair
e PHP de manière sécurisée, vous pouvez utiliser l'option de compilation
--
disable
-
force
-
cgi
-
redirect
. Vous devez quand même vérifier qu'aucun script ne fait appel au PHP, de manière dire
cte,
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 "AddHandl
er" 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 uniquemen
t é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é re
dirigé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.


20

Cas 3: Utilisation du "doc_root" ou du "user_dir"

Ajouter un co
ntenu 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 pro
prié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 d
u 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 "do
cument root" de votre serveur web.

Vous pouvez utiliser la directive
doc_root

dans le
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
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ép
ertoire
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écur
isé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 fichi
ers 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 la
ncer 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
--
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 tour
ner
Apache ( par défaut, l'utilisateur "noboby").


21

II. Le langage PH
P


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 :

Exemple 5
-
1. Le passage du HTML au PHP


1. <? echo ("Ceci est un exemple d'affichage à l'écran en PHP.
\
n"); ?>



2. <?php e
cho("Si vous voulez afficher du texte, faites comme ce
-
ci.
\
n"); ?>


3. <script language="php">


echo ("Certain éditeur HTML n'accepte pas les délimiteurs ci
-
dessus.");


</script>


4. <% echo ("Vous pouvez aussi utiliser le style ASP comme déli
miteur."); %>


<%= $variable; # ceci est un raccourci pour "<%echo .." %>



La première possibilité n'est valable que si vous l'avez activée. Soit en faisant appel à la
fonction<BCLASS="FUNCTION"short_tags(), soit en utilisant l'option d'exécutio
n "short_tags" dans le fichier de configuration,
soit en utilisant l'option de compilation
--
enable
-
short
-
tags compile
-
time.

La quatrième possibilité est seulement disponible si vous l'avez activée en utilisant soit l'option d'exécution "asp_tags", s
oit en

utilisant l'option de compilation
--
enable
-
asp
-
tags compile
-
time.

Note :
Le support de la quatrième possibilité, ASP
-
style, a été ajoutée dans la version 3.0.4.

La parenthèse fermante pour un block ajoutera automatiquement un retour à la ligne si il y en
a un de présent.


Le séparateur d'instruction

Les instructions sont séparées comme en C ou en Perl par un point virgule à chaque fin d'instruction.

Le tag de fin (?>) implique la fin d'un instruction, et donc ajoute implicitement un point virgule. Les deu
x exemples suivants sont
équivalents.

<?php


echo "Ceci est un test.";

?>


<?php echo "Ceci est un test." ?>



Les commentaires

Le PHP supporte les commentaires comme en C, C++ et Shell Unix. Par exemple:

<?php


echo "Ceci est un test"; // Cec
i est un commentaire sur une ligne comme en C++


/* Ceci est un commentaire sur plusieurs lignes,


comme en C et C++ */


echo "Ceci est encore un test";


echo "Enfin, le test final"; # Ceci est un commentaire comme en Shell Unix

?>



Le

premier type de commentaire ne "commente" que jusqu'à la fin de la ligne ou bien jusqu'à la fin du bloc, cela dépant du premi
er
rencontré.

<h1>Ceci est un <?# echo "simple";?> exemple.</h1>

<p>La ligne du dessus affichera 'Ceci est un exemple'.

Faites at
tention à ne pas emboiter les commentaires de type 'C', ce qui arrive de temps en temps lorsque vous voulez commenter
une grande partie de de code.

<?php


/*


echo "Ceci est un test"; /* Ce commentaire va poser un problème */


*/

?>


22

Chapitre 6. Les t
ypes de données

Définition du type


PHP supporte les types de données suivant :



nombres entiers




nombres à vi
rgule flottante




chaînes de caractères




tableaux




objets


Habituellement, le type d'une variable n'est pas affecté
par le programmeur. Il est décidé au moment de l'exécution par le PHP, en
fonction du contexte dans lequel la variable est utilisée.

Si vous voulez forcer une variable à être convertie en un certain type, vous devez
"caster"

la variable ou utiliser la fonction
settype()
.

Il est à noter qu'une variable peut se comporter de manière différente suivant les situations, en fonction du ty
pe qui lui est affecté.
Pour plus d'informations, voir le paragraphe
Définition du type
.


Nombres entiers

Il est possible de spécifier les nombres entiers (Integers) de la manière suivante :

$a = 1234;
# nombre entier en base 10

$a =
-
123; # nombre entier né

$a = 0123; # nombre entier en base 8, octale (équivalent à 83 en base 10)

$a = 0x12; # nombre entier en base 16, hexadécimale (équivalent à 18 en base 10)


Les nombres à virgule flottante

Les nombres

à virgule flottante ("doubles") peuvent êtres spécifié en utilisant la syntaxe suivante:

$a = 1.234;

$a = 1.2e3;


Les chaînes de caractères

Les chaînes de caractères peuvent être définit en utilisant deux types de délimiteurs.

Si la chaîne de caractères
est délimitée par des double
-
quotes ("), les variables à l'intérieure de la chaîne de caractères seront
remplacées. Comme en C ou en Perl, le caractère backslash (
\
) est utiliser pour "protéger" un caractère spécial.

Tableau 6
-
1. Les caratères d'échappeme
nt.


séquence

signification

\
n

nouvelle ligne

\
r

retour à la ligne

\
t

tabulation horizontale

\
\

backslash

\
$

caractère $

\
"

double
-
quote

Vous pouvez utiliser le caractère d'échappement backslash sur n'importe quel autre caractère, mais cel
a produira un warning
(warning de niveau maximum).

Le deuxième moyen de délimiter une chaîne de caractère est d'utiliser les simple
-
quotes ('). Dans la chaîne de caractère limitée par
des simple
-
quotes, les variables ne seront pas substituées et le caractè
re backslash n'aura aucun effet (à deux exceptions près, pour
"
\
\
" et "
\
'" afin de pouvoir utiliser les caractères simple
-
quote et backslash dans la chaîne de caractère).

Conversion de type

Lorsqu'une chaîne de caractère est évaluée comme une valeur numéri
que, le r&@eacute;sultat et le type de la varialbe sont
d&eacite;terminés comme suit:

La chaîne de caractère est de type "double" si elle contient un des caractère '.', 'e' ou 'E'. Sinon, elle est de type "integ
er".

La valeur est définit par la première pa
rtie de la chaîne. Si la chaîne de caractères débute par une valeur numérique cette valeur
sera celle utilisée. Sinon, la valeur sera égale à 0 (zéro).

Lorsque la première expression est une chaîne de caractères, le type de la variable dépend de la seconde

expression.

$foo = 1 + "10.5"; // $foo est du type "double" (11.5)

$foo = 1 + "
-
1.3e3"; // $foo est du type "double" (
-
1299)

$foo = 1 + "bob
-
1.3e3"; // $foo est du type "integer" (1)

$foo = 1 + "bob3"; // $foo
is est du type "integer" (1)

$foo = 1 + "10 Small Pigs"; // $foo is est du type "integer" (11)


23

$foo = 1 + "10 Little Piggies"; // $foo is est du type "integer" (11)

$foo = "10.0 pigs " + 1; // $foo is est du type "integer" (11)

$foo = "10.0 pigs

" + 1.0; // $foo is est du type "double" (11)




Pour plus d'informations sur les conversions de type, voir les pages de man à propos de la fonction strtod(3)


Les tableaux

Les tableaux ressemblent aux tables de hashage (tableaux associatif
s) et aux tableaux indexés (vecteurs).

Tableaux à une dimension

PHP supporte les talbeaux scalaires et les tableaux associatifs. En fait, il n'y a aucune différence entre les deux. Vous pou
vez créer
un tableaux en utilisant les fonctions
list()

ou
array()
, ou bien en affectant explicitement chacune des valeurs.



$a[0] = "abc";

$a[1] = "def";

$b["foo"] = 13;



Vous pouvez aussi créer un tableau en ajoutant simplement les
valeurs à ce tableau.



$a[] = "hello"; // $a[2] == "hello"

$a[] = "world"; // $a[3] == "world"



Un tableau peut être classé en utilisant les fonctions
asort()
,
arsort(
)
,
ksort()
,
rsort()
,
sort()
,
uasort()
,
usort()
, et
uksort()

en fonction
du type de classement que vous voulez.

Vous pouvez compte le nombre d'éléments qu'il y a dans un tableau en utilisant la fonction
count()
.

Vous pouvez vous dé
placer à l'intéireur d'un tableau en utilisant les fonctions
next()

et
prev()
. Un autre moyen de se déplacer dans
un tableau est d'utiliser la fonction
each()
.


Tableaux à plusieurs dimensions

Les tableaux à plusieurs dimensions sont extrêmement simple. Pour chaque dimension du tableau, vous ajouter une nouvelle [cle
f]
à la fin:



$a[1] = $f; # tableau à une dimension

$a["
foo"] = $f;


$a[1][0] = $f; # tableau à deux dimensions

$a["foo"][2] = $f; # (vous pouvez mélanger les indices associatifs et
numériques)

$a[3]["bar"] = $f; # (vous pouvez mélanger les indices associatifs et
numé
riques)


$a["foo"][4]["bar"][0] = $f; # tableau à quatre dimensions



Vous pouvez remplir un tableau à plusieurs dimensions par de nombreux moyens mais la méthode la plus simple à comprendre est