Apache, MySQL, PHP natif sur macOS

apache

Cet article est obsolète et les astuces présentées ici ne fonctionnent pas sur sur des machines équipées d’un OS supérieur à macOS El Capitan

L’auteur

Bien qu’il soit possible d’utiliser des solutions packagées pour un AMP sur Mac, il est possible et assez simple d’utiliser ce qui est déjà inclus dans OSX pour développer sur son Mac. En effet, Apache et PHP sont disponibles dans l’OS de la marque à la pomme. Il suffit de tout paramétrer correctement pour y avoir accès.

Attention, ce tutoriel nécessite l’utilisation sommaire de la ligne de commande. Je pars du principe que vous savez un minimum l’utiliser.

Apache & PHP

OSX El Capitan inclus Apache 2.4.16, ainsi que PHP 5.5.27, voici comment les activer.

Quelques commandes pour commencer (celles-ci sont à entrer dans votre terminal)

Pour démarrer Apache :

sudo apachectl start

Pour arrêter Apache :

sudo apachectl stop

Pour relancer Apache :

sudo apachectl restart

Une fois Apache lancé, rendez-vous sur : http://localhost pour vérifier qu’il fonctionne bien. Vous devriez être accueilli par ceci :

apache_itworks

De base, le répertoire de stockage des fichiers lisibles par Apache se trouve dans

/Library/WebServer/Documents/

Pas très pratique, car il nécessite, pour y écrire, des droits d’administration, ce qui fait que vous, simple utilisateur, ne serez pas aussi libre que ça, et devrez entrer votre mot de passe root toutes les 2s. La solution consiste à utiliser un répertoire accessible pour l’utilisateur, typiquement dans son dossier d’accueil, OSX utilise le dossier Sites. Créez ce dossier dans l’explorateur.

/Users/votre_nom/Sites/

Pour ce faire, il suffit d’autoriser Apache à lire et exécuter du code dans ce répertoire.
Direction le terminal :

cd /etc/apache2/users
sudo nano username.conf

Puis copiez le code suivant, en modifiant votre « username » pour correspondre au nom de votre dossier d’accueil.

<Directory "/Users/username/Sites/">
AllowOverride All
Options Indexes MultiViews FollowSymLinks
Require all granted
</Directory>

Les permissions du fichier devraient être les suivantes :

-rw-r--r--   1 root  wheel  298 Jun 28 16:47 username.conf

Si vous devez les changer :

sudo chmod 644 username.conf

Ouvrez maintenant le fichier httpd.conf

sudo nano /etc/apache2/httpd.conf

Et vérifiez que les modules suivants sont décommentés :

LoadModule authz_core_module libexec/apache2/mod_authz_core.so
LoadModule authz_host_module libexec/apache2/mod_authz_host.so
LoadModule userdir_module libexec/apache2/mod_userdir.so
LoadModule include_module libexec/apache2/mod_include.so
LoadModule rewrite_module libexec/apache2/mod_rewrite.so
LoadModule php5_module libexec/apache2/libphp5.so
Include /private/etc/apache2/extra/httpd-userdir.conf

Enlevez aussi le check devant la ligne :

√#Listen 12.34.56.78:80

pour qu’elle ressemble à :

#Listen 12.34.56.78:80

Sauvegardez vos changements et modifications.

Ouvrez après le fichier suivant : 

sudo nano /etc/apache2/extra/httpd-userdir.conf

et décommentez :

Include /private/etc/apache2/users/*.conf

Sauvegardez vos changements et redémarrez Apache pour que ces paramètres soient pris en compte.

sudo apachectl restart

Vous pouvez maintenant vous rendre sur : http://localhost/~votre_nom/

Vous devriez voir : 

apache_userdir

Permettre le rewriting d’url et les modifications via .htaccess

Direction httpd.conf

sudo nano /etc/apache2/httpd.conf

Et changez la ligne suivante pour qu’elle ressemble à ceci : 

apache_allowoverride

Décommentez aussi la ligne (normalement fait plus haut): 

LoadModule rewrite_module libexec/apache2/mod_rewrite.so

Pour vérifier que PHP fonctionne, créez un fichier phpinfo.php dans votre répertoire

/Users/votre_nom/Sites/phpinfo.php

avec pour contenu :

<?php phpinfo(); ?>

Puis, rendez-vous dans votre navigateur :

http://localhost/~votre_nom/phpinfo.php

Vous devriez voir ceci : 

apache_php_elcapitan

MYSQL

MySql n’est pas intégré dans OSX nativement, il convient donc de le télécharger depuis le site de MysqL.

mysql_el_capitan

Choisissez la version la plus à jour en DMG, cliquez sur « download« , puis sur la page suivante « No thanks, just start my download », tout en bas de la page.

no_thanks_mysql

Installez Mysql puis démarrez le depuis le panneau apparu dans les préférences système. 

mysql_el_capitan_preference_panel

Ou via le terminal : 

sudo /usr/local/mysql/support-files/mysql.server start

Pour trouver la version de Mysql depuis le terminal, tapez :

/usr/local/mysql/bin/mysql -v

Dernière étape, définissez le mot de passe root pour mysql à l’aide de la commande suivante : 

/usr/local/mysql/bin/mysqladmin -u root password 'yourpasswordhere'

Attention ! il faut utiliser les ‘quotes’ ici.

Voilà ! Tout est en place ! Pour vous connecter et gérer vos bases Mysql je ne peux que vous conseiller l’excellent et très gratuit SequelPro.

Bon développement !

24 réflexions sur « Apache, MySQL, PHP natif sur macOS »

    1. Il n’y a pas d’erreurs dans le tuto.
      Tu définis bien dans le fichier /etc/apache2/users/username.conf le répertoire /Users/ChDUP/Sites
      As-tu crée le répertoire /Users/ChDUP/Sites à l’aide de la commande sudo ? Si oui, supprimes le et récrée le normalement.

      1. En fait ce répertoire existait déjà.
        Pour être précis, j’utilisais le répertoire /Users/ChDUP/Sites/apache sur Yosemite
        Mais le fonctionnement était différent, http://localhost m’amenait directement dans ce répertoire
        (je ne sais plus quel tuto j’avais suivi à l’époque mais j’aimerai bien retrouver ce comportement)

        Je viens de réessayer en créant un dossier apache dans /Users/ChDUP/ par le finder
        J’ai suivi ton tuto en remplaçant Sites par apache
        Même erreur au final

  1. Tu dois avoir réglé dans ce cas des paramètres différents, notamment au niveau du fichier /etc/hosts qui peut provoquer ce genre de soucis. Ou avoir défini des vhosts… Si tu as une redirection de faite ton erreur est normale, car il va chercher des fichiers qui n’existent pas.
    Sans plus d’infos sur le tutoriel que tu as suivi, je ne pourrais pas t’aider. La configuration apache est une chose assez complexe, et comporte beaucoup d’éléments. Comme je l’explique dans mon article, http://localhost/ va classiquement chercher les fichiers dans /Library/WebServer/Documents/
    Pour utiliser /Users/ChDUP/Sites/apache, il faut que tu mettes dans ton fichier /etc/apache2/users/username.conf
    le répertoire suivant :
    Directory « /Users/ChDUP/Sites/apache »
    N’oublies pas de redémarrer apache entre les changements effectués.
    Puis te rendre dans ton navigateur sur : http://localhost/~ChDUP/Sites/apache

    1. En fait j’avais suivi le tuto de grafikart
      http://www.grafikart.fr/tutoriels/mac-os/yosemite-apache-php-mysql-524

      J’ai modifié mon chemin de DocumentRoot dans httpd.conf pour le faire pointer vers ChDUP/Sites/apache et du coup mon http://localhost pointe directement vers ce dossier maintenant, et ça fonctionne
      Quelques modifs dans bash_profile pour refaire fonctionner mysql et tout est ok maintenant

      grand merci !

      juste une chose : quand je vais dans les préférences systèmes, MySQL, le service est toujours actif
      J’ai beau faire « stop MySQL Server », ça ne l’éteint pas
      une idée la-dessus ?

  2. Bonjour,

    super et merci pour le tuto
    je ne comprends pas bien pourquoi le php n’arrive pas à se lancer (le test échoue) pourtant les instructions précédentes sont bonnes, j’ai bien vérifié que libphp est bien décoché

    avez-vous une piste pour m’orienter vers un prb?
    D’avance merci

  3. Bonjour,
    Je ne suis pas un spécialiste mais il me semble qu’il y a une erreur dans votre tuto :
    Pour arrêter Apache :
    sudo apachectl stop et non pas
    sudo apachectl start

  4. je ne comprends pas j’ai tout paramètre normalement pour configurer le fichier confond de phpmyadmin avec le root et le mot de passe de mysql et j’ai invariablement la meme erreur : #1045 – Access denied for user ‘root’@’localhost’ (using password: YES)

    1. J’ai le même problème que toi et aucunes solutions proposées ailleurs ne fonctionnent.
      Sequel Pro me retourne cette erreur de connexion quand je tente de me connecter avec le mot de passe générer par MySQL à l’installation:
      « Your password has expired. To log in you must change it using a client that supports expired passwords. »
      Ma config: El Capitan + MySQL 5.7.10
      Quelqu’un a une idée?

    2. Problème résolu avec cette commande:

      sudo /usr/local/mysql/bin/mysqladmin -u root -p password « mot de passe »
      Le mot de passe, sans les guillemets, est celui qui est généré par MySQL à l’installation.
      Puis à l’invitation « Enter password: », tu rentres ton mot de passe définitif.

      Tu as confirmation que l’accès root est correct quand MySQL te renvoi ce message:
      « [Warning] Using a password on the command line interface can be insecure.
      Warning: Since password will be sent to server in plain text, use ssl connection to ensure password safety. »

      Enjoy!

  5. Bonjour et merci pour ce tuto.
    De mon côté j’ai un problème qui ne découle pas de votre tuto, je tiens à le préciser.
    Mon « localtest » ne fonctionne plus.
    Lorsque je réalise dans le terminal un « apachectl configtest », j’ai le message suivant:
    httpd: Syntax error on line 527 of /private/etc/apache2/httpd.conf: Syntax error on line 8 of /private/etc/apache2/other/+php-osx.conf: Cannot load /usr/local/php5/libphp5.so into server: dlopen(/usr/local/php5/libphp5.so, 10): Symbol not found: _unixd_config\n Referenced from: /usr/local/php5/libphp5.so\n Expected in: /usr/sbin/httpd\n in /usr/local/php5/libphp5.so
    TOKYO:~ tokyo$

    Je vois bien des erreurs de syntaxes. Pouvez-vous m’aider à réparer ces erreurs ou m’aider à réinstaller apache. Merci d’avance.

  6. Bonjour,

    Je suis débutant dans la gestion de Apache. J’ai suivi votre tuto à la lettre. Apache se lance bien (« It works! »).
    Mais ensuite impossible d’accéder à http://localhost/~sommer.j

    J’ai repassé plusieurs fois les étapes, sans succès. Pouvez-vous m’aiguiller svp ?

    Merci d’avance

  7. Bonjour,

    Un tout grand merci pour ce tuto ( pas encore fini j’attaque my sql) Pour info j’ai cherché une soluce supplémentaire car j’avais Forbidden error 403 sur localhost/~mynameuser.

    Il faut alors ajouter dans le httpd.conf sous les lignes user =www et group=www les lignes
    user= mynameuser ( votre nom d’utilisateur)
    group= staff

    petite info : pour être sûr de l’orthographe de votre nom d’utilisateur tapez dans terminal whoami

    Encore merci pour ce tuto je continue…

  8. Bonjour, j’ai bien suivi le suivi le tuto (nickel au passage !). j’ai réussi une première connexion à MySQL sans problème. Je me reconnecte aujourd’hui et j’ai un « access denied » pour mon utilisateur root. Help?

  9. Salut,

    perso ça ne fonctionne pas chez moi

    Ce site est inaccessible

    localhost n’autorise pas la connexion.
    Effectuez une recherche Google sur localhost ~xxxx.
    ERR_CONNECTION_REFUSED

    je suis sous sierra hight

  10. Hello,
    Merci pour ce tuto.

    Est-ce normal qu’après un « sudo apachectl stop » j’ai toujours mon localhost qui fonctionne ave marqué It’s works ! sur la page ?

  11. Bonjour, Bravo et merci pour votre tuto très explicite ! Je rencontre cependant un pb. Lorsque je fais localhost/~username/ il me renvoie « Forbidden – You don’t have permission to access this resource.Server unable to read htaccess file, denying access to be safe ». Je pense que cela vient des permissions. Dans votre tuto vous dites qu’il faut vérifier les permissions (-rw-r–r– 1 root wheel 298 Jun 28 16:47 username.conf) et préciser pour les changer « sudo chmod 644 username.conf ». Comment fait-on pour vérifier les permissions effectives ? Merci pour votre réponse. Cordialement. Alain

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *