Activer Apache2/Php5 sous Mac Os X 10.5

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:



    This website uses IntenseDebate comments, but they are not currently loaded because either your browser doesn't support JavaScript, or they didn't load fast enough.

    21 responses so far, want to say something?

    1. 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

    2. Adri 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 !
      Adrien.

    3. 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)…

    4. Adri says:

      pouvez vous entrer cette commande dans un Terminal, svp:

      $ httpd -V

    5. Jean-Luc says:

      Merci pour votre réponse rapide…voici le retour:

      Server version: Apache/2.2.9 (Unix)
      Server 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 »

    6. Adri says:

      ok, maintenant nous allons vérifier la présence de vos fichiers de config tapez:

      ls -l /private/etc/apache2/

    7. Jean-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
      -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

    8. 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 !

    9. Jean-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]
      [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

    10. Adri says:

      ok, maintenant:
      $ cat /private/etc/apache2/mime.types | head -n 15

    11. 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
      application/activemessage
      application/andrew-inset ez
      application/applefile
      application/atom+xml atom

    12. 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

    13. Fred 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

    14. Fred 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.

    15. Mathilde 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

    16. Adri 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:
      $ 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 !

    17. 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…

    18. Mathilde 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/ »
      et le nouveau : « /Library/WebServer/Documents/ »

    19. 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…)

    20. Adri says:

      @Mathilde: En fait le fichier de configuration nommé « mathilde.conf » est uniquement utilisé pour les répertoires virtuels des utilisateur, ex:
      http://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..

    21. 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 ;-)

    Laisser un commentaire

    IMGP2023IMGP1900IMGP1873IMGP2032IMGP1849IMGP1817IMGP1570IMGP1572IMGP1469IMGP1342IMGP1272IMGP1226