Léopard intègre « d’usine » Apache 2.2.6 et Php 5, mais ils ne sont pas activés par défaut, je vais essayer de vous expliquer comment faire pour en profiter.
Installer apache
Si vous ne l’avez pas déjà, récupérez TexteMate ici (la version d’évaluation de 30 jours fera largement l’affaire) puis dans le menu « Fichier » choisissez « Ouvrir ». Dans la fenêtre qui vous est présentée sélectionnez « Affichez les fichiers cachés / Show hidden files » et ouvrez le fichier: « /HD/private/etc/apache2/httpd.conf ».
Voilà, nous avons ouvert le fichier de configuration de apache. Notez que – si vous faites une bêtise – il existe une copie de ce fichier dans le sous-dossier nommé « original ».
Rendez-vous a la ligne 113 ( Menu « Navigation / Go to line… » ou menu « View / Gutter / Line numbers » ) et retirez le commentaire en début de ligne (#) comme dans les captures suivantes:
Ce qui peut se traduire par « Charger le module php5 pour apache ». Maintenant nous allons configurer apache pour qu’il accepte les index.php en plus des traditionnels .html. Pour cela allons à la ligne 224 et faites comme indiqué sur cette capture:
Ok, maintenant sauvegardez – Il vous sera sûrement demandé un mot de passe, c’est normal, c’est un fichier dont le propriétaire est le « root » – vous pouvez maintenant quitter TextMate.
Nous avons fait la configuration de « base ». Si vous êtes pressé allez dans les Préférences systèmes / Partage: Désactiver et réactiver le partage web pour relancer apache avec php5.. Félicitations.
Configuration de php
Maintenant si vous avez un peu de temps devant vous, nous allons nous pencher sur la configuration de ce dernier: le php.ini qui n’est pas utilisé pour le moment et dans lequel nous pourrons spécifier pas mal d’options.
Ouvrez un Terminal (Applications/Utilitaires) et entrez cette ligne (ce qui aura pour but de copier le fichier php.ini.default en php.ini) – Une fois encore il vous sera demandé votre mot de passe:
$ sudo cp /private/etc/php.ini.default /private/etc/php.ini
Ouvrez maintenant le php.ini avec TextEdit (de la même manière qu’avec le httpd.conf, show hidden files). Vous le trouverez dans « HD/private/etc/ ».
Le fichier est plutôt bien commenté (toutes les lignes commençant par un ; est un commentaire). Mais en anglais, pour les anglophobes vous trouverez de la documentation sur fr.php.net.
La première chose que je conseillerais de modifier est la gestion des erreurs: error_reporting.
Le réglage par défaut (ligne 305) est:
error_reporting = E_ALL & ~E_NOTICE
Ce qui aura pour effet d’afficher seulement les erreurs Php les plus graves, si ce serveur vous sert uniquement pour la « production » il est judicieux de le laisser ainsi. Mais si vous en avez un usage développement vous devriez la modifier comme ça (pour éliminer toutes les erreurs de votre code):
error_reporting = E_ALL
Quand vous aurez fini vos modifications, sauvegardez et allez dans vos préférences système pour relancer apache en cliquant sur « Partage web ». Important: si la case est déjà cochée veillez à la décocher puis à la sélectionner à nouveau pour relancer Apache sinon vos modification de ne serais pas prises en compte..
Cliquez sur le lien « Votre site web personnel » ce qui lancera votre navigateur préféré qui affichera la page contenue dans le dossier « Sites » de votre répertoire Personnel. ex: /Users/~crashdump/Sites/ pour moi.
Rendez vous dans ce répertoire supprimez les fichiers qu’il contient (index.html..) et créez y un fichier index.php avec le code suivant à l’intérieur:
<?php phpinfo(); ?>
Sauvegardez et actualisez le navigateur.. Félicitions (oui, encore) ça fonctionne.
Problèmes recontrés
Si vous avez fait une mise à jour de Léopard depuis une version précédente 1.x.x vous pouvez rencontrer un problème avec l’accès a vos pages personnelles (par exemple: « Forbiden, You don’t have permission to access /~user on this server. ») pour régler cela une petite manipulation est nécessaire, car des fichiers indispensables au bon fonctionnement de la chose sont manquants.
Ouvrez un Terminal:
$ cd /private/etc/httpd/users
$ ls
Vous devriez voir un fichier de la forme: votreLogin.conf, par exemple chez moi il s’appelle crashdump.conf, nous allons donc les copier dans le répertoire aproprié:
$ sudo cp *.conf /private/etc/apache2/users
Redémarrez apache à nouveau, (Préférences système, partage..) tout devrait fonctionner maintenant. Vous pouvez aussi avoir des informations sur les erreurs potentielles en tapant:
$ tail -n 30 /var/log/apache2/error_log
Possibly Related Posts:
- Créer un RamDisk sous OS X
- ECiD/ iBEC & iBSS Grabber for Mac
- Du load-balancing avec vyatta
- ARP Spoofing (ARP Cache poisoning)
- Serveur HTTP Python en une ligne..
















Mathilde says:
Salut,
tout d’abord, un grand merci pour ce tuto vraiment bien écrit et bien détaillé!!
J’ai juste noté une petite coquille : l’étape finale pour tester que notre index.php marche bien, tu as mis :
il y a un espace en trop (oui, c’est vraiement du détail pour les adeptes du copier coller comme moi ;), il faut mettre :
pour obtenir ce que tu montres en impression d’écran…
Juste un autre détail : sous FF 3.0.3, la couleur que tu utilises pour le code est pas très lisible. Ou alors faudrait le mettre en gras…
Enfin, encore une fois c’est du pinaillage, du détail, car ton article est vraiment bien fait !
Encore merci
Mathilde
sept 10, 2008, 11:18Adri says:
J’ai corrigé la coquille et mis le code en gras, ça devrait être bien plus lisible maintenant ;)
Merci pour le commentaire, c’est très encouragent !
sept 10, 2008, 17:06Adrien.
Jean-Luc says:
bonjour et merci pour ce tuto…mais cela ne fonctionne tjrs pas, la page test n’est pas interprétée en php. J’ai essayé une multitude de tutos et sites mais rien n’y fait!
Apache et PHP ont été installés en compilation (xcode), j’ai ensuite suivi vos tutos…
Le seul indice que j’ai:
%tail -n 30 /var/log/apache2/error_log
Configuration Failed
[Sat Jan 10 10:24:08 2009] [warn] Init: Session Cache is not configured [hint: SSLSessionCache]
[Sat Jan 10 10:24:08 2009] [error] (2)No such file or directory: could not open mime types config file /private/etc/apache2/mime.types.
Merci si vous pouvez m’aider…(mac léopard)…
sept 10, 2008, 19:09Adri says:
pouvez vous entrer cette commande dans un Terminal, svp:
$ httpd -V
sept 10, 2008, 19:19Jean-Luc says:
Merci pour votre réponse rapide…voici le retour:
Server version: Apache/2.2.9 (Unix)
sept 10, 2008, 20:27Server built: Sep 19 2008 10:58:54
Server’s Module Magic Number: 20051115:15
Server loaded: APR 1.2.7, APR-Util 1.2.7
Compiled using: APR 1.2.7, APR-Util 1.2.7
Architecture: 32-bit
Server MPM: Prefork
threaded: no
forked: yes (variable process count)
Server compiled with….
-D APACHE_MPM_DIR= »server/mpm/prefork »
-D APR_HAS_SENDFILE
-D APR_HAS_MMAP
-D APR_HAVE_IPV6 (IPv4-mapped addresses enabled)
-D APR_USE_FLOCK_SERIALIZE
-D APR_USE_PTHREAD_SERIALIZE
-D SINGLE_LISTEN_UNSERIALIZED_ACCEPT
-D APR_HAS_OTHER_CHILD
-D AP_HAVE_RELIABLE_PIPED_LOGS
-D DYNAMIC_MODULE_LIMIT=128
-D HTTPD_ROOT= »/usr »
-D SUEXEC_BIN= »/usr/bin/suexec »
-D DEFAULT_PIDLOG= »/private/var/run/httpd.pid »
-D DEFAULT_SCOREBOARD= »logs/apache_runtime_status »
-D DEFAULT_LOCKFILE= »/private/var/run/accept.lock »
-D DEFAULT_ERRORLOG= »logs/error_log »
-D AP_TYPES_CONFIG_FILE= »/private/etc/apache2/mime.types »
-D SERVER_CONFIG_FILE= »/private/etc/apache2/httpd.conf »
Adri says:
ok, maintenant nous allons vérifier la présence de vos fichiers de config tapez:
ls -l /private/etc/apache2/
sept 10, 2008, 9:25Jean-Luc says:
Je n’ai pas de répertoire apache2 dans private/etc/ (début de piste?) mais une série de fichiers + répertoires dont httpd tel que:
-rw-r–r– 1 root wheel 37417 25 déc 2005 httpd.conf.bak
sept 10, 2008, 10:36-rw-r–r– 1 root wheel 38334 25 déc 2005 httpd.conf.default
-rw-r–r– 1 jean-lucransac jean-lucransac 38334 12 jan 12:31 httpd.conf.entropy.backup
-rw——- 1 root wheel 38334 12 jan 11:17 httpd.conf.save
-rw-r–r– 1 root wheel 12965 25 déc 2005 magic
-rw-r–r– 1 root wheel 12965 25 déc 2005 magic.default
-rw-r–r– 1 root wheel 29598 22 fév 2008 mime.types
-rw-r–r– 1 root wheel 29598 22 fév 2008 mime.types.default
Adri says:
tiens, c’est très étrange.. d’autant plus que grâce au httpd -V, nous voyons bien que apache est compilé de la sorte qu’il va chercher ses fichiers de configuration dans /private/etc/apache2/*
pourriez vous créer ce dossier apache2 et y placer les fichiers que vous avez listé ci-dessus .. et tester ?
$ cd private/etc/
$ mkdir apache2
$ mv mime.types apache2/
$ mv httpd.conf apache2/
$ mv magic.default apache2/
- relancez le serveur web dans les préférences système. testez.. si cela ne fonctionne pas postez ici a nouveau le log d’erreurs apache:
$ tail -n 30 /var/log/apache2/error_log
ça avance !
sept 10, 2008, 11:56Jean-Luc says:
Effectivement on avance …mais ça bloque tjrs…argh
j’ai créee le repertoire apache2 et transféré le contenu…etc
Firefox me ressort toujours les fichiers php en ligne de code.
voici le retour de tail:
Sat Jan 10 10:17:18 2009] [warn] Init: Session Cache is not configured [hint: SSLSessionCache]
sept 10, 2008, 12:26[Sat Jan 10 10:17:18 2009] [error] (2)No such file or directory: could not open mime types config file /private/etc/apache2/mime.types.
Configuration Failed
[Sat Jan 10 10:17:24 2009] [warn] Init: Session Cache is not configured [hint: SSLSessionCache]
[Sat Jan 10 10:17:24 2009] [error] (2)No such file or directory: could not open mime types config file /private/etc/apache2/mime.types.
Configuration Failed
[Sat Jan 10 10:24:08 2009] [warn] Init: Session Cache is not configured [hint: SSLSessionCache]
[Sat Jan 10 10:24:08 2009] [error] (2)No such file or directory: could not open mime types config file /private/etc/apache2/mime.types.
Configuration Failed
[Sat Jan 10 12:59:17 2009] [warn] Init: Session Cache is not configured [hint: SSLSessionCache]
[Sat Jan 10 12:59:17 2009] [error] (2)No such file or directory: could not open mime types config file /private/etc/apache2/mime.types.
Configuration Failed
[Sat Jan 10 12:59:20 2009] [warn] Init: Session Cache is not configured [hint: SSLSessionCache]
[Sat Jan 10 12:59:20 2009] [error] (2)No such file or directory: could not open mime types config file /private/etc/apache2/mime.types.
Configuration Failed
[Sat Jan 10 12:59:21 2009] [warn] Init: Session Cache is not configured [hint: SSLSessionCache]
[Sat Jan 10 12:59:21 2009] [error] (2)No such file or directory: could not open mime types config file /private/etc/apache2/mime.types.
Configuration Failed
[Sat Jan 10 18:01:03 2009] [warn] Init: Session Cache is not configured [hint: SSLSessionCache]
[Sat Jan 10 18:01:03 2009] [error] (2)No such file or directory: could not open mime types config file /private/etc/apache2/mime.types.
Configuration Failed
[Sat Jan 10 20:34:09 2009] [warn] Init: Session Cache is not configured [hint: SSLSessionCache]
[Sat Jan 10 20:34:09 2009] [error] (2)No such file or directory: could not open mime types config file /private/etc/apache2/mime.types.
Configuration Failed
[Sat Jan 10 20:34:13 2009] [warn] Init: Session Cache is not configured [hint: SSLSessionCache]
[Sat Jan 10 20:34:13 2009] [error] (2)No such file or directory: could not open mime types config file /private/etc/apache2/mime.types.
Configuration Failed
[Sat Jan 10 20:34:52 2009] [warn] Init: Session Cache is not configured [hint: SSLSessionCache]
[Sat Jan 10 20:34:52 2009] [error] (2)No such file or directory: could not open mime types config file /private/etc/apache2/mime.types.
Configuration Failed
Adri says:
ok, maintenant:
sept 10, 2008, 12:47$ cat /private/etc/apache2/mime.types | head -n 15
Jean-Luc says:
# This is a comment. I love comments.
# This file controls what Internet media types are sent to the client for
# given file extension(s). Sending the correct media type to the client
# is important so they know how to handle the content of the file.
# Extra types can either be added here or by using an AddType directive
# in your config files. For more information about Internet media types,
# please read RFC 2045, 2046, 2047, 2048, and 2077. The Internet media type
# registry is at .
# MIME type Extensions
sept 10, 2008, 13:12application/activemessage
application/andrew-inset ez
application/applefile
application/atom+xml atom
Adri says:
bon, le problème a l’air un peu complexe, auriez vous un compte Jabber ou autre pour que nous puissions essayer différentes choses en direct ? Je ferais ensuite un résumé ici pour en faire profiter les autres ! Vous pouvez m’envoyer vôtre adresse de contact par mail. adrien.pujol[at]crashdump.fr
sept 10, 2008, 13:17Fred says:
Un grand merci ;-)
Je commençais à désespérer de pouvoir accéder à mes sites en local.
Je t’ai mis en signet, je crois que je reviendrai régulièrement.
Beau boulot
sept 10, 2008, 10:58Fred says:
Re-salut,
j’ai un problème ;-(
J’ai fait toutes les manips recommandées, j’ai accès à mon repertoire site.
Tant que je garde la page index.html , ça va, j’ai accès à la page « votre site web ici ».
Quand je tente d’activer PHPInfo dans le fichier index.php (ça marchait sous mon vieux portable G4 OSX 10.3.9) voici le message d’erreur :
Warning: Unknown: failed to open stream: Permission denied in Unknown on line 0
Fatal error: Unknown: Failed opening required ‘/Users/Fred/Sites/index.php’ (include_path=’.:’) in Unknown on line 0
J’ai repris plusieurs fois la manoeuvre et je ne vois pas …….
Merci de prendre le temps de me répondre, je ne comprends pas du tout ce qui se passe.
sept 10, 2008, 11:58Mathilde says:
Salut,
je reviens vers toi car j’ai un souci : tout marchais bien jusqu’à ce que je tente d’installer php4 pour faire tourner en local un site que je dois reprendre (un module perl pour les CGI nécessite PHP4). J’ai installé php4 via macport. Après un paquet d’essai, php4 ne fonctionnant toujours pas, j’ai fini par le désinstaller via macport, puis par désinstaller macport (pour être sur qu’il ne reste rien car macport m’avais aussi installer une autre instance d’apache).
Sauf que maintenant, mon instance d’apache de base ne marche plus : j’obtiens l’erreur « Forbidden : You don’t have permission to access / on this server. » alors qu’il y a bien le fichier mathilde.conf dans /etc/apache2/users/
Je ne comprends pas ce qui se passe, alors si tu as la moindre idée de ce qui fait que ça ne fonctionne plus, je suis preneuse. Merci d’avance.
Mathilde
sept 10, 2008, 15:51Adri says:
@Fred: Désolé d’avoir raté ton commentaire.. j’espère tu as réussi a régler le problème. Si ce n’est pas le cas, lis ma réponse à Mathilde.. j’espère ça t’aidera aussi.
@Mathilde: Comme pour Fred, la première chose a faire dans ce cas, c’est de vérifier les logs de apache, voir si il y a une remontée de l’erreur, ça peut être fait avec cette commande dans ton terminal:
sept 10, 2008, 17:38$ tail -n 30 /var/log/apache2/error_log
Suite à ça, vérifie bien ton /etc/apache2/users/utilisateur.conf (surtout si le chemin indiqué dans la première ligne est correct, par exemple chez moi: Directory « /Users/adri/Sites/ » )
Quand a Macport.. c’est très bien pour les applis linux « standelone », mais quand a les intégrer a des services, c’est un peu la misère.. il faut préférer des pkg prévus pour notre os favori !
Mathilde says:
J’avais déjà regardé le log en fait, et je ne vois rien d’anormal :
mathilde@cgmc134:~$ tail -n 30 /var/log/apache2/error_log
…
[Wed Jun 24 09:24:49 2009] [notice] caught SIGTERM, shutting down
[Wed Jun 24 09:24:58 2009] [warn] Init: Session Cache is not configured [hint: SSLSessionCache]
mod_bonjour: Skipping user ‘mathilde’ – cannot read index file ‘/Users/mathilde/Sites/index.html’.
[Wed Jun 24 09:24:58 2009] [notice] Digest: generating secret for digest authentication …
[Wed Jun 24 09:24:58 2009] [notice] Digest: done
[Wed Jun 24 09:24:58 2009] [notice] Apache/2.2.11 (Unix) mod_ssl/2.2.11 OpenSSL/0.9.7l DAV/2 PHP/5.2.8 configured — resuming normal operations
[Wed Jun 24 09:32:32 2009] [notice] Graceful restart requested, doing restart
mod_bonjour: Skipping user ‘mathilde’ – cannot read index file ‘/Users/mathilde/Sites/index.html’.
[Wed Jun 24 09:32:32 2009] [notice] Digest: generating secret for digest authentication …
[Wed Jun 24 09:32:32 2009] [notice] Digest: done
[Wed Jun 24 09:32:32 2009] [notice] Apache/2.2.11 (Unix) mod_ssl/2.2.11 OpenSSL/0.9.7l DAV/2 PHP/5.2.8 configured — resuming normal operations
De ce que je vois, seul le module « bonjour » ne se lance pas, mais ça ne me semble pas primordiale.
J’ai vérifié mon /etc/apache2/users/mathilde.conf
au départ, il était fait ainsi :
Options Indexes MultiViews
AllowOverride None
Order allow,deny
Allow from all
Quand j’ai configuré apache au départ, c’est bien le dossier que j’utilisais pour le site. et tout fonctionnait bien. en cours de route, pour des raisons de chemins d’accès du site en question, je l’ai déplacé dans le dossier /Librairy/WebServer/Documents/, sans changé le fichier mathilde.conf et tout marchait bien quand même.
Depuis, il y a eu cette histoire de macport et php4 installé (tout fonctionnait bien sauf que php4 n’était pas activé), puis désinstallation de php4 puis macport et depuis ça ne marche plus.
Du coup, j’ai testé en modifiant mon mathilde.conf ainsi :
Options Indexes MultiViews
AllowOverride None
Order allow,deny
Allow from all
Mais ça ne change absolument rien…
sept 10, 2008, 8:41Mathilde says:
Bon, désolée pour l’envoie multiple mes les balises directory ne veulent visiblement pas passer.
Donc le chemin de la première version était « /Users/mathilde/Sites/ »
sept 10, 2008, 8:46et le nouveau : « /Library/WebServer/Documents/ »
Mathilde says:
petitde précision, je viens de remarquer un truc bizarre : il n’y a pas de problème quand au lieu de mettre http://localhost/ dans l’url, je mets l’adresse du site web de l’ordinateur donnée par « Préférences Système » (avec /Users/mathilde/Sites/ dans mathilde.conf)…
C’est à n’y rien comprendre
(encore désolée du nombre de commentaire du coup…)
sept 10, 2008, 9:01Adri says:
@Mathilde: En fait le fichier de configuration nommé « mathilde.conf » est uniquement utilisé pour les répertoires virtuels des utilisateur, ex:
sept 10, 2008, 16:43http://10.0.0.1/~mathilde/ —> sert en fait le dossier /Users/mathilde/Sites/
et http://10.0.0.1/ —> sert le dossier /Library/WebServer/Documents/
On peut d’ailleurs créer autant de dossiers virtuels que l’on veux en ajoutant des .conf dans ce dossier, auquel on accédera via ~quelquechose – c’est très utile lorsqu’il y a plusieurs utilisateurs (qui n’ont pas les droits pour modifier les fichiers systèmes) et qui veulent publier leurs pages sur le serveur local.
D’après ce que je vois tu as accès au fichiers racines, donc tu peux directement mettre tes fichiers dans le /Library/WebServer/Documents il seront accessibles à la racine de ton serveur. (Je te conseille d’ailleurs de remettre ton fichier de conf original avec le /Users/mathilde/Sites/).
Voir: http://httpd.apache.org/docs/2.0/howto/public_html.html
–
Pour ce qui est du problème d’accès différent entre http://localhost/ et (par exemple) http://10.0.0.01/
Une idée: Apache2 est peut être configuré d’une sorte pour écouter sur l’@IP de ton interface réseau (10.0.0.1) et pas de la même manière pour le loopback (localhost ou 127.0.0.1), ça se configure dans le /etc/apache2/httpd.conf – Vérifie les lignes suivantes:
Listen 12.34.56.78:80
ServerName http://www.example.com:80
(d’ailleurs on retrouve le DocumentRoot général juste en dessous, vérifie le lui aussi..)
–
Note personelle: trouver une manière de rendre les commentaires plus propres/lisibles..
Mathilde says:
Je viens de vérifier mon httpd.conf :
J’ai les lignes :
Listen 80
et la ligne ServerName n’est pas décommenté :
#
# ServerName gives the name and port that the server uses to identify itself.
# This can often be determined automatically, but we recommend you specify
# it explicitly to prevent problems during startup.
#
# If your host doesn’t have a registered DNS name, enter its IP address here.
#
#ServerName http://www.example.com:80
Vu les commentaires de Listen et de ServerName, ça me donne l’impression que c’est configurer pour écouter tout le monde pareil, non?
PS : j’ai l’impression qu’il y a un souci avec les dates sur ton sites : ton commentaire précédent est daté au mois de septembre 2008, alors qu’il me semble que nous sommes au mois de juin ;-)
sept 10, 2008, 13:35