Utiliser PHP hors connexion

Pour exécuter un script PHP hors connexion ou pour passer d'HTML à PHP et tester son site localement sous Windows ou Linux il faut disposer d'un serveur local (Apache), d'un interpréteur PHP et d'un accès à une base de données (MySQL).

Installer Apache, PHP et MySQL sous Windows

Le plus simple, c'est d'utiliser EasyPHP 1.7 (version 2003) qui installe apache 1.3.27 - php 4.3.3 - mysql 4.0.15 - phpyadmin 2.5.3 (apache 1.3.33 - php 4.3.10 - mysql 4.1.9 et phpmyadmin 2.6.1 avec la version 2005 d'EasyPHP 1.8).
Pas de problème normalement sauf lors de la fermeture de Windows lorsque l'option Démarrer les serveurs en tant que services a été choisie.
répertoire easyphp Plusieurs fichiers ou dossiers importants :
- C:\Program Files\EasyPHP1-7\apache\php.ini
Ce fichier permet de modifier la configuration de PHP.
Les autres fichiers de configuration sont accessibles par un clic droit sur l'icône icône.

- C:\Program Files\EasyPHP1-7\www
Par défaut ce dossier contient votre site local.

Configurer PHP 4 ou 5

Ouvrez php.ini.
Pour trouver les erreurs et les problèmes, il faut remplacer
display_errors = Off par display_errors = On,
display_startup_errors = Off par display_startup_errors = On
et log_errors = Off par log_errors = On en indiquant le nom du fichier où les erreurs seront enregistrées (par exemple error_log = "c:\Program Files\easyphp1-7\php\error_php.log").
Si vous voulez utiliser des scripts PHP 3, il faudra sans doute remplacer register_globals = Off par register_globals = On.
Ce n'est pas une très bonne idée car il vaut mieux s'habituer à PHP 4 et modifier les scripts à l'aide des messages d'erreur.
La modification des autres paramètres ne s'impose pas.

Configurer Apache 1.3

Si tout marche bien et si vous placez votre site local en C:\Program Files\EasyPHP1-7\www, pas de problème.
Si votre site local est ailleurs, deux solutions :
1. Si vous voulez tester votre site local avec un fichier robots.txt, des cookies ou si vous utilisez le "referrer" ("HTTP_REFERER"), remplacez dans le fichier de configuration (clic droit sur l'icône ou C:\Program Files\EasyPHP1-7\apache\conf\httpd.conf)
DocumentRoot "c:/Program Files/EasyPHP1-7/www" par DocumentRoot "c:/site"
et <Directory "c:/Program Files/EasyPHP1-7/www"> par Directory "c:/site">.
Quand vous taperez 127.0.0.1 ou localhost dans la barre d'adresse de votre navigateur, ce sera votre page d'accueil qui sera lancée.

2. Sinon, ajoutez un Alias avec le menu Administration (si MSIE n'est pas votre navigateur par défaut, entrez http://127.0.0.1/home/ dans la barre d'adresse) ou manuellement dans le fichier de configuration (clic droit sur l'icône ou C:\Program Files\EasyPHP1-7\apache\conf\httpd.conf):
Dans la partie Aliases, ajoutez
    Alias /site "c:/site"

    <Directory "c:/site">
        Options FollowSymLinks Indexes
        AllowOverride None
        Order deny,allow
        allow from 127.0.0.1
        deny from all
    </Directory>
Si vous avez un deuxième site, ou des scripts PHP à exécuter, ajoutez
    Alias /site2 "c:/site2"

    <Directory "c:/site2">
        Options FollowSymLinks Indexes
        AllowOverride None
        Order deny,allow
        allow from 127.0.0.1
        deny from all
    </Directory>
Quand vous taperez 127.0.0.1/site ou localhost/site dans la barre d'adresse de votre navigateur, ce sera votre page d'accueil qui sera lancée.
Quand vous taperez 127.0.0.1/site2/votre_script.php, le script sera exécuté.

Configurer MySQL

Si vos données ne doivent pas être placées dans le répertoire par défaut - datadir = c:/Program Files/EasyPHP1-7/mysql/data/ (datadir=${path}/mysql/data avec la version 1.8) -, vous pouvez modifier ce paramètre (clic droit sur l'icône ou effectuez une recherche pour trouver le fichier my.ini - remplacez par exemple par datadir = c:/data/).
Dans tous les cas, phpMyAdmin (127.0.0.1/mysql/) accèdera aux bases de données sans qu'il soit nécessaire de modifier son fichier de configuration.

Avec WampServer, Mov'AMP, XAMP ou d'autres environnements

Avec Apache 1.3, les mêmes fichiers (ils portent parfois un autre nom : mywamp.ini pour WampServer) sont à modifier pour tester et déboguer PHP localement.
Pour Apache 2, procédez comme avec Linux après avoir localisé le fichier de configuration.
hautHaut de la page

Exécuter un script PHP hors connexion

On démarre les serveurs Apache et MySQL.
En fonction de ce qui a été choisi lors de la configuration d'Apache, on tape ensuite http://127.0.0.1/nom_de_l'alias/(nom_du_fichier) dans la barre d'adresse de son navigateur préféré (avec IE6 il faut connecter ou décocher Fichier/travail hors connexion).
Normalement, la page d'accueil (ou nom_du_fichier) est affichée.
hautHaut de la page

Passer d'HTML à PHP

Pour commencer, on peut renommer son fichier index.html en index.php.
On démarre les serveurs Apache et MySQL.
En fonction de ce qui a été choisi lors de la configuration d'Apache, on tape ensuite http://127.0.0.1/ (ou http://127.0.0.1/nom_de_l'alias) dans la barre d'adresse de son navigateur préféré (avec IE6 il faut connecter ou décocher Fichier/travail hors connexion).
Normalement, la page d'accueil est affichée.
Une fois que tout marche, il faut modifier les extensions dans toutes les pages à l'aide d'un utilitaire de recherche et remplacement.
Un outil comme inforapid search and replace est tout à fait adapté.
On remplace donc .html ou .htm
Recherche
par .php pour les pages du site dans toutes les pages du site sauf pour les liens vers la page .html destinée au référencement.
Remplacement
Il faut ensuite renommer toutes les pages (sauf la page .html destinée au référencement).
Reste à tester la validité des liens et rechercher les éventuelles erreurs.
On peut maintenant ajouter les scripts PHP nécessaires.

Afin de vérifier le bon fonctionnement des scripts, on a plusieurs possibilités :

- soit WinHttrack (fonctionnement avec différents navigateurs, syntaxe des fichiers générés, liens et partiellement javascript),

- soit, pour MSIE 6 uniquement, Wysigot qui aspire le site local, ce qui permet de trouver les erreurs ou avertissements lors de l'exécution dans le fichier error_log spécifié lors de la configuration de PHP 4 (ou dans les pages) et les problèmes de liens dans le fichier error.log d'Apache.
A chaque rafraîchissement, comme tout fichier modifié est repéré en gras et toute modification est surlignée, l'incidence d'un ajout ou d'une modification est vite constatée sur l'ensemble du site (la version gratuite ne permet pas de vérifier la syntaxe des fichiers générées).

Pour finir, transférez le site.
hautHaut de la page

Et Linux ?

Les trois distributions que j'ai essayées ont toutes posé problème.
En effet, il faut verifier que le serveur Apache (Apache HTTP Server) soit installé de même que PHP (Server-side, HTML-embedded scripting language), installer tout d'abord le paquetage MySQL (MySQL Server), et celui qui assure les liens entre PHP et MySQL (MySQL module for php5), puis indiquer que les services httpd et mysql doivent être lancés au démarrage. Les distributions récentes permettent l'installation sans difficulté grâce à des outils comme Synaptic Package Manager.
Une fois tout en ordre, il faut installer phpMyAdmin (MySQL web administration tool) ou le télécharger phpMyAdmin dans la version correspondant à celle reconnue par l'hébergeur : php ou php3.
PhpMyAdmin doit être décompressé dans un dossier (dans mon cas /echange/phpMyAdmin-2.6.0). Aujourd'hui, Synaptic Package Manager propose d'installer et configurer PhpMyAdmin.
En fonction de la version d'Apache installée, l'alias n'est pas déclaré dans le même fichier :

- avec Apache 1.3

Le fichier httpd.conf se trouve dans le dossier /etc/httpd/conf/
Normalement la partie Aliases s'y trouve (sinon elle est dans un fichier inclus) et il suffit d'ajouter
    Alias /phpmyadmin/ "/echange/phpmyadmin-2.6.0/"

    <Directory "/echange/phpmyadmin-2.6.0/">
        Options FollowSymLinks Indexes
        AllowOverride None
        Order deny,allow
        allow from 127.0.0.1
        deny from all
    </Directory>
pour gérer les bases de données en tapant http://localhost/phpmyadmin/ dans la barre d'adresse d'un navigateur.
Dans ce fichier on procède comme avec Windows pour l'ajout d'un alias pour le site ou la modification de DocumentRoot.
Dans la partie User, deux solutions :
  1. on remplace apache par son nom d'utilisateur dans le fichier.
  2. on déclare dans le gestionnaire des modifications des comptes utilisateurs qu'on fait partie du groupe apache ou qu'on est autorisé à utiliser apache (et MySQL).
Si AddDefaultCharset a été défini, vérifiez qu'il corresponde au codage souhaité, sinon commentez la ligne pour que le navigateur puisse en utiliser un autre.
La modification des autres paramètres ne s'impose pas.

- avec Apache 2

Le fichier httpd2.conf se trouve dans le dossier /etc/httpd/conf/ ou encore apache2.conf situé dans le dossier /etc/apache2/
Normalement la partie Aliases est dans un fichier inclus (soit /etc/httpd/conf/commonhttpd.conf, soit dans le dossier /etc/httpd/conf.d/ soit /etc/apache2/mods-enabled) et il suffit d'ajouter dans le fichier déclarant les "alias"
    Alias /phpmyadmin/ "/echange/phpmyadmin-2.6.0/"

    <Directory "/echange/phpmyadmin-2.6.0/">
        Options FollowSymLinks Indexes
        AllowOverride None
        Order deny,allow
        allow from 127.0.0.1
        deny from all
    </Directory>
pour gérer les bases de données en tapant http://localhost/phpmyadmin/ dans la barre d'adresse d'un navigateur. Aujourd'hui, Synaptic Package Manager propose d'installer et configurer PhpMyAdmin.
Si on souhaite modifier DocumentRoot il faut le faire ici pour <Directory ... > puis dans le fichier httpd2.conf pour DocumentRoot.
La modification des autres paramètres s'effectue comme avec apache 1.3 soit dans httpd2.conf soit dans commonhttpd.conf.

configurer PHP et MySQL

Comme pour Windows il faut modifier le fichier /etc/php.ini et éventuellement le fichier /etc/my.cnf (obtenu partir d'une copie de /usr/share/mysql/my-medium.cnf ou /usr/share/mysql/my-large.cnf auquel on ajoute datadir = /chemin_complet dans la partie [mysqld]) sans oublier de cocher mysql dans le groupe de l'utilisateur.
hautHaut de la page

Avec javascript

W3C XHTML 1.0
W3C CSS