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.
- Pourquoi ne doit-on pas utiliser Apache 2 dans un environnement thread� multiprocesseur de production ?
- Unix/Windows : o� doit �tre plac� mon fichier php.ini ?
- 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 ?
- Unix : J'ai install� PHP en utilisant des fichiers sources RPM, mais apache ne traite pas les pages PHP. Que se passe-t-il ?
- 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 ?
- 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.
- 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'.
- 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
- 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:
- Windows : J'ai suivi toutes les instructions, mais je n'arrive toujours pas � faire fonctionner PHP et IIS ensemble !
- 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..
- 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.
- O� dois-je ajouter mon r�pertoire PHP � la variable PATH sous Windows ?
- Comment rendre le fichier php.ini disponible � PHP sous Windows ?
- Est-il possible d'utiliser la n�gociation sur le contenu fournie par Apache (option MultiViews) avec PHP ?
- 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_redirect � 0. 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>