Installation

Cette section traite de questions courantes sur la fa�on d'installer PHP. PHP est disponible sur la plupart des syst�mes d'exploitation (sauf les versions de MacOS ant�rieures � Mac OSX) et pour quasiment n'importe quel serveur web.

Pour installer PHP, suivez les instructions pr�sentes dans Installation et configuration.

  1. Pourquoi ne doit-on pas utiliser Apache 2 dans un environnement thread� multiprocesseur de production ?
  2. Unix/Windows : o� doit �tre plac� mon fichier php.ini ?
  3. Unix : j'ai install� PHP, mais � chaque fois que je charge un document, j'obtiens l'erreur 'Document Contains No Data' ! Que se passe-t-il ?
  4. Unix : J'ai install� PHP en utilisant des fichiers sources RPM, mais apache ne traite pas les pages PHP. Que se passe-t-il ?
  5. Unix : J'ai patch� Apache avec l'extension FrontPage et subitement, PHP ne fonctionne plus. Est-ce que PHP est incompatible avec l'extension FrontPage pour Apache ?
  6. Unix/Windows : J'ai install� PHP, mais lorsque je tente d'acc�der � un fichier contenant un script PHP via mon navigateur, j'obtiens un �cran vide.
  7. Unix/Windows : J'ai install� PHP, mais lorsque je tente d'acc�der � un fichier contenant un script PHP via mon navigateur, j'obtiens une erreur de type 'server 500 error'.
  8. Quelques syst�mes d'exploitations : J'ai install� PHP sans erreur, mais lorsque je tente de d�marrer Apache, j'obtiens une erreur du type 'Undefined symbols' : [mybox:user /src/php4] root# apachectl configtest apachectl: /usr/local/apache/bin/httpd Undefined symbols: _compress _uncompress
  9. Windows : J'ai install� PHP, mais lorsque j'acc�de � un fichier contenant un script PHP via mon navigateur, j'obtiens l'erreur : cgi error: The specified CGI application misbehaved by not returning a complete set of HTTP headers. The headers it did return are:
  10. Windows : J'ai suivi toutes les instructions, mais je n'arrive toujours pas � faire fonctionner PHP et IIS ensemble !
  11. Lorsque vous ex�cutez PHP comme CGI avec IIS, PWS, OmniHTTPD ou Xitami, j'obtiens l'erreur suivante : Security Alert! PHP CGI cannot be accessed directly..
  12. Comment puis-je savoir si mon php.ini a bien �t� trouv� et lu ? Cela semble �tre le cas mais aucun de mes changements n'ont eu d'effet.
  13. O� dois-je ajouter mon r�pertoire PHP � la variable PATH sous Windows ?
  14. Comment rendre le fichier php.ini disponible � PHP sous Windows ?
  15. Est-il possible d'utiliser la n�gociation sur le contenu fournie par Apache (option MultiViews) avec PHP ?
  16. Est-ce que PHP est limit� au traitement des m�thodes GET et POST ?

Pourquoi ne doit-on pas utiliser Apache 2 dans un environnement thread� multiprocesseur de production ?

PHP est un mortier. C'est un mortier utilis� pour construire de belles applications web en utilisant beaucoup de biblioth�ques ensemble, apparaissant comme une seule entit� � travers un langage intuitif et facile � apprendre. La flexibilit� et la puissance de PHP se fondent sur la stabilit� et la robustesse de la plate-forme fondamentale. Il a besoin d'un OS qui fonctionne, d'un serveur web qui fonctionne et de biblioth�ques externes pour coller le tout. Lorsqu'un seul de ces �l�ments arr�tent subitement de fonctionner, PHP doit identifier le probl�me et le r�parer au plus vite. En rendant le cadre fondamental plus complexe en ne s�parant pas les ex�cutions des threads, ni les segments m�moires, ni un endroit clos pour traiter chaque requ�te entrante, des pieds d'argile sont introduits dans le syst�me PHP.

Si vous pensez que vous devez utiliser un MPM thread�, regardez du c�t� d'une configuration FastCGI dans lequel PHP s'ex�cute dans son propre espace m�moire.

Et finalement, cette mise en garde contre les environnements MPM thread�s n'est pas aussi forte pour les environnements Windows, o� les biblioth�ques sont mieux thread�es.

Unix/Windows : o� doit �tre plac� mon fichier php.ini ?

Par d�faut sous Unix, il doit �tre plac� dans /usr/local/lib qui est en fait <install-path>/lib. La plupart des personnes voudront changer ceci lors de la compilation avec l'option --with-config-file-path. Vous pouvez par exemple le r�gler de cette fa�on :


--with-config-file-path=/etc

Et alors vous copierez le fichier php.ini-dist livr� avec les sources vers /etc/php.ini et l'�diter pour l'adapter � vos besoins.


--with-config-file-scan-dir=PATH

Sous Windows, le chemin par d�faut de php.ini est le r�pertoire de Windows. Si vous utilisez le serveur web Apache, php.ini est tout d'abord cherch� dans le r�pertoire d'installation de Apache, c'est-�-dire c:\program files\apache group\apache. De cette fa�on, vous pouvez avoir un php.ini diff�rent pour chaque version de Apache install�e.

Consultez aussi le chapitre sur le fichier de configuration.

Unix : j'ai install� PHP, mais � chaque fois que je charge un document, j'obtiens l'erreur 'Document Contains No Data' ! Que se passe-t-il ?

Cela signifie probablement que PHP rencontre un probl�me et g�n�re un fichier core. Consultez vos fichiers de logs de votre serveur pour voir si c'est le cas, et tentez de reproduire le probl�me avec un test simple. Si vous savez utiliser 'gdb', il serait tr�s utile de fournir un backtrace avec votre rapport de bogue, afin d'aider les d�veloppeurs � cerner le probl�me. Si vous utilisez PHP en module Apache, essayez ceci :

  • Stoppez vos processus httpd

  • gdb httpd

  • Stoppez vos processus httpd

  • > run -X -f /path/to/httpd.conf

  • Pointez alors avec votre navigateur vers l'URL posant probl�me.

  • > run -X -f /path/to/httpd.conf

  • Si vous obtenez un fichier core, gdb doit alors vous en informer.

  • tapez : bt

  • Vous devriez inclure votre backtrace dans votre rapport de bogue. Celui-ci doit �tre post� sur » http://bugs.php.net/.

Si votre script utilise les expressions rationnelles (preg_match() et consorts), assurez-vous que PHP et Apache ont �t� compil�s avec les m�me outils d'expression rationnelles. Cela doit �tre automatiquement le cas avec PHP et Apache 1.3.x.

Unix : J'ai install� PHP en utilisant des fichiers sources RPM, mais apache ne traite pas les pages PHP. Que se passe-t-il ?

En supposant que vous avez install� � la fois Apache et PHP � partir de fichiers RPM, vous devrez commenter ou ajouter au moins quelques unes des lignes suivantes dans votre fichier httpd.conf :

# Extra Modules
AddModule mod_php.c
AddModule mod_php.c
AddModule mod_perl.c

# Extra Modules
LoadModule php_module         modules/mod_php.so
LoadModule php5_module        modules/libphp5.so     # pour PHP 5
LoadModule perl_module        modules/libperl.so

Et ajouter :

AddType application/x-httpd-php .php

... aux propri�t�s globales ou aux propri�t�s du VirtualDomain ou vous voulez que PHP officie.

Unix : J'ai patch� Apache avec l'extension FrontPage et subitement, PHP ne fonctionne plus. Est-ce que PHP est incompatible avec l'extension FrontPage pour Apache ?

Non, PHP fonctionne tr�s bien avec l'extension FrontPage. Le souci vient du fait que le patch pour l'installation de FrontPage modifie la structure d'Apache, qui est reli� � PHP. Recompiler PHP (en utilisant 'make clean ; make') apr�s avoir patch� Apache avec l'extension FrontPage devrait r�soudre ce probl�me.

Unix/Windows : J'ai install� PHP, mais lorsque je tente d'acc�der � un fichier contenant un script PHP via mon navigateur, j'obtiens un �cran vide.

Affichez le code source du document dans votre navigateur et vous devriez probablement trouver le code source de votre script PHP. Cela signifie que le serveur web n'a pas envoy� le script � PHP pour interpr�tation. Quelque chose est donc incorrecte dans le fichier de configuration de votre serveur web - re-v�rifier la configuration du serveur web en vous r�f�rant aux instructions d'installations de PHP.

Unix/Windows : J'ai install� PHP, mais lorsque je tente d'acc�der � un fichier contenant un script PHP via mon navigateur, j'obtiens une erreur de type 'server 500 error'.

Quelque chose se passe mal lorsque le serveur tente d'utiliser PHP. Pour tenter de r�cup�rer un message d'erreur, depuis la ligne de commande, placez-vous dans le r�pertoire contenant l'ex�cutable PHP (php.exe sous Windows) et ex�cutez la commande php -i. Si PHP a un probl�me quelconque l'emp�chant de fonctionner, un message d'erreur devrait s'afficher qui devrait expliquer comment r�soudre ce souci. Si un �cran de code HTML appara�t (la sortie de la fonction phpinfo()), cela signifie que PHP fonctionne correctement et que le probl�me doit certainement venir de la configuration de votre serveur web que vous devriez re-v�rifier.

Quelques syst�mes d'exploitations : J'ai install� PHP sans erreur, mais lorsque je tente de d�marrer Apache, j'obtiens une erreur du type 'Undefined symbols' :


[mybox:user /src/php4] root# apachectl configtest
apachectl: /usr/local/apache/bin/httpd Undefined symbols:
_compress
_uncompress

Cela n'a actuellement rien � voir avec PHP mais avec la biblioth�que cliente MySQL. Suivant les versions, elle a besoin que PHP soit compil� avec l'option --with-zlib, d'autre non. Ce probl�me est �galement trait� dans la FAQ de MySQL.

Windows : J'ai install� PHP, mais lorsque j'acc�de � un fichier contenant un script PHP via mon navigateur, j'obtiens l'erreur :


cgi error:
The specified CGI application misbehaved by not
returning a complete set of HTTP headers.
The headers it did return are:

Ce message d'erreur signifie que PHP a �chou� lors de l'affichage. Pour tenter de r�cup�rer un message d'erreur, depuis la ligne de commande, placez-vous dans le r�pertoire contenant l'ex�cutable PHP (php.exe sous Windows) et ex�cutez la commande php -i. Si PHP a un quelconque souci de fonctionnement, alors un message d'erreur le d�crivant s'affichera. Si vous obtenez un �cran de code HTML (le contenu du r�sultat de la fonction phpinfo()), alors PHP fonctionne correctement.

Si PHP fonctionne depuis la ligne de commande, tentez d'acc�der � votre script encore une fois via votre navigateur. S'il �choue toujours, alors, il se peut que ce soit l'un des soucis suivants :

  • Les permissions de votre script PHP des fichiers php.exe, php4ts.dll, php.ini ou de toute extension n�cessaire � PHP que vous tentez de charger, sont telles que l'utilisateur internet anonyme de votre syst�me ISUR_<machinename> ne peut pas y acc�der.
  • Le script PHP n'existe pas (ou n'est pas � l'endroit que vous pensez, relativement au r�pertoire racine de votre serveur web). Notez que pour le serveur web IIS, vous pouvez v�rifier cela en cochant la case 'v�rifier si le fichier existe' lors de la configuration de l'ex�cution des scripts dans le gestionnaire de services Internet. Si un fichier de script n'existe pas, le serveur web retournera une erreur 404. IIS a �galement l'avantage d'effectuer toutes les identifications requises � votre place, bas�s sur les permissions NTLanMan, sur votre fichier de script.

Windows : J'ai suivi toutes les instructions, mais je n'arrive toujours pas � faire fonctionner PHP et IIS ensemble !

Assurez-vous que chaque utilisateur qui a besoin d'ex�cuter un script PHP poss�de les droits requis pour ex�cuter le fichier php.exe ! IIS utilise un utilisateur anonyme qui est ajout� lors de l'installation de IIS. Cet utilisateur doit avoir les droits suffisant sur le fichier php.exe. De m�me, tous les utilisateurs enregistr�s doivent poss�der les droits requis pour ex�cuter le fichier php.exe. Pour IIS4, vous devez lui dire que PHP est un moteur de script. De plus, vous devriez lire cette FAQ.

Lorsque vous ex�cutez PHP comme CGI avec IIS, PWS, OmniHTTPD ou Xitami, j'obtiens l'erreur suivante : Security Alert! PHP CGI cannot be accessed directly..

Vous devez d�finir la directive cgi.force_redirect0. Par d�faut, elle vaut 1, donc, soyez s�rs que cette directive n'est pas comment�e (pr�c�d�e d'un point virgule). Comme toutes les directives, elles sont d�finies dans le php.ini.

Comme la valeur par d�faut vaut 1, il est imp�ratif que vous soyez s�rs � 100% que le bon fichier php.ini a �t� lu. Lisez cette FAQ pour plus de d�tails.

Comment puis-je savoir si mon php.ini a bien �t� trouv� et lu ? Cela semble �tre le cas mais aucun de mes changements n'ont eu d'effet.

Pour �tre s�r que votre php.ini a �t� lu par PHP, effectuez un appel � la fonction phpinfo(). Vers le haut du document r�sultant, il devrait figurer une liste appel�e Configuration File (php.ini). Cela vous indiquera o� PHP a cherch� le php.ini et si oui ou non il l'a lu. S'il n'appara�t qu'un chemin vers un r�pertoire existant, cela signifie que vous devez copier votre php.ini dans ce r�pertoire. Si le php.ini est pr�sent dans le chemin, cela signifie qu'il a bien �t� lu.

Si le php.ini a bien �t� lu et que vous ex�cutez PHP comme module, alors assurez-vous de red�marrer le serveur web apr�s avoir effectu� les modifications � votre php.ini.

Voir aussi la fonction php_ini_loaded_file().

O� dois-je ajouter mon r�pertoire PHP � la variable PATH sous Windows ?

Sous Windows NT, 2000, XP et 2003 :

  • Allez dans le centre de contr�le et ouvrez l'ic�ne syst�me (D�marrer -> Param�tres -> Panneau de configuration -> Syst�me ou juste D�marrer -> centre de contr�le -> Syst�me pour Windows XP/2003)

  • Allez � l'onglet "Avanc�"

  • Cliquez sur le bouton "Variables d'environnements"

  • Regardez dans le panneau "Variables syst�mes"

  • Trouvez l'entr�e Path (vous devriez avoir � faire descendre l'ascenseur pour le trouver)

  • Double cliquez sur l'entr�e Path

  • Entrez votre r�pertoire PHP � la fin, sans oublier le point virgule (;) avant (par exemple ;C:\php)

  • Confirmez en cliquant sur OK et red�marrer votre ordinateur

Sous Windows 98/Me, vous devez �diter le fichier autoexec.bat :

  • Ouvrez Notepad (D�marrer -> Ex�cuter et entrez notepad)

  • Ouvrez le fichier C:\autoexec.bat

  • Rep�rez la ligne contenant PATH=C:\WINDOWS;C:\WINDOWS\COMMAND;..... et ajoutez : ;C:\php � la fin de la ligne.

  • Sauvegardez le fichier et red�marrer l'ordinateur

Note: Assurez-vous de red�marrer l'ordinateur apr�s avoir suivi cette proc�dure afin que les modifications sur la variable PATH soient bien prises en compte.

Le manuel PHP vous encourage � copier les fichiers dans le dossier syst�me de Windows car ce dossier (C:\Windows, C:\WINNT, etc.) se trouve par d�faut dans le PATH syst�me. Copier les fichiers dans le dossier syst�me de Windows est depuis obsol�te et peut causer des probl�mes.

Comment rendre le fichier php.ini disponible � PHP sous Windows ?

Il y a plusieurs fa�ons de faire cela. Si vous utilisez Apache, lisez leurs instructions sp�cifiques d'installation (Apache 1, Apache 2) sinon, vous devez d�finir la variable d'environnement PHPRC :

Sous Windows NT, 2000, XP et 2003:

  • Allez dans le centre de contr�le et ouvrez l'ic�ne syst�me (D�marrer -> Param�tres -> Panneau de configuration -> Syst�me ou juste D�marrer -> centre de contr�le -> Syst�me pour Windows XP/2003)

  • Allez � l'onglet "Avanc�"

  • Cliquez sur le bouton "Variables d'environnements"

  • Regardez dans le panneau "Variables syst�mes"

  • Cliquez sur "Nouveau" et entrez "PHPRC" comme nom de variable et le dossier o� se trouve votre fichier php.ini comme valeur (par exemple C:\php)

  • Confirmez en cliquant sur OK et red�marrer votre ordinateur

Sous Windows 98/Me, vous devez �diter le fichier autoexec.bat :

  • Ouvrez Notepad (D�marrer ->Ex�cuter et entrez notepad)

  • Ouvrez le fichier C:\autoexec.bat

  • Ajouter une nouvelle ligne � la fin du fichier : set PHPRC C:\php (remplacez C:\php avec le dossier o� se trouve le fichier php.ini)

  • Sauvegardez le fichier et red�marrer l'ordinateur

Est-il possible d'utiliser la n�gociation sur le contenu fournie par Apache (option MultiViews) avec PHP ?

Si les liens vers les fichiers PHP incluent l'extension, tout fonctionne parfaitement. Cette entr�e de la FAQ traite uniquement du cas o� les liens vers les fichiers PHP n'incluent pas l'extension et que vous voulez utiliser la n�gociation sur le contenu fourni par Apache pour choisir les fichiers PHP depuis une URL qui ne contient pas d'extension. Dans ce cas, remplacez la ligne AddType application/x-httpd-php .php par :

# PHP 4
AddHandler php-script php
AddType text/html php

# PHP 5
AddHandler php5-script php
AddType text/html php

Cette solution ne fonctionne pas pour Apache 1 car le module PHP ne captura pas le php-script.

Est-ce que PHP est limit� au traitement des m�thodes GET et POST ?

Non, il est possible de g�rer tout type de m�thode, comme CONNECT. Les bons en-t�tes de r�ponse peuvent �tre envoy�s avec la fonction header(). Si seules les m�thodes POST et GET doivent �tre g�r�es, vous pouvez configurer Apache comme ce qui suit :

<LimitExcept GET POST>
Deny from all
</LimitExcept>