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 :
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 :
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 :
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 :
MYSQL
MySql n’est pas intégré dans OSX nativement, il convient donc de le télécharger depuis le site de MysqL.
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.
Installez Mysql puis démarrez le depuis le panneau apparu dans les préférences système.
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 !
Merci pour ce tuto.
Malheureusement quand je vais sur http://localhost/~ChDUP/
j’ai une erreur 403 : You don’t have permission to access /~ChDUP/ on this server.
Ce que je ne comprend pas c’est que tu as donné les droits sur /Users/username/Sites/
et que tu te rends ensuite sur http://localhost/~votre_nom/
Tu ne devrais pas aller sur http://localhost/~votre_nom/Sites/ ?
Dans tous les cas, j’ai la même 403 sur http://localhost/~ChDUP/Sites
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.
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
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
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 ?
Thank you for your blog. It helped me set up apache on OS X 10.10.5
You are very welcome ! :) Thanks for reading !
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
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
C’est exact ! Bizarre que personne ne l’ai signalé avant ! :) merci c’est corrigé.
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)
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?
Problème résolu avec cette commande:
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!
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.
Ouvre ce fameux fichier, ligne 8 qu’il y a-t-il ?
Merci pour le tuto ; tout marche à merveille !
Merci pour le tuto! Je vais pouvoir installer WordPress en local pour tester :-)
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
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…
Petit lien utile ^^:
https://coolestguidesontheplanet.com/forbidden-403-you-dont-have-permission-to-access-username-on-this-server/
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?
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
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 ?
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