#Symfony, #MAMP et #doctrine sont dans un même bateau…

Quand on est sous MacOSX, on utilise souvent MAMP pour gérer son serveur apache et MySQL. Lorsqu’on commence à utiliser Symfony2, il faut parfois faire quelques petits réglages pour que tout se passe bien.

Préambule

Vous avez commencé à créer votre Bundle et désirez utiliser doctrine pour générer vos entités. Mais quand vous faites la commande suivante :

php console doctrine:database:create

Vous avez une belle erreur :

Could not create database for connection named <span class="base64" title="PGNvZGUgY2xhc3M9J3NwaXBfY29kZSBzcGlwX2NvZGVfaW5saW5lJyBkaXI9J2x0cic+c2ZfZm9ybWF0aW9uPC9jb2RlPg=="></span>
SQLSTATE[HY000] [2002] No such file or directory

Il vous faut en fait faire une passerelle de var/mysql/mysql.sock vers /Applications/MAMP/tmp/mysql/mysql.sock

Étape 1

On va se positionner dans le répertoire /var avec la commande :

cd /var

On vérifie le contenu de ce répertoire :

ls -las

Avec cette commande, vous verrez tout le contenu du répertoire, vous verrez aussi bien, les fichiers, les répertoires et aussi les fichiers cachés. Si dans les répertoires affichés, vous avez le répertoire "mysql", passez à l’étape 3.

Étape 2

Le répertoire "mysql" est inexistant. On doit le créer avec la commande suivante :

sudo mkdir mysql

Entrez votre mot de passe puis validez.
Refaites une comande ls -las. Vous devriez voir apparaître le répertoire "mysql" dans la liste.

Étape 3

On se positionne dans le répertoire "mysql" :

cd mysql

La phase importante de cette étape : entrez la commande suivante :

sudo ln -s /Applications/MAMP/tmp/mysql/mysql.sock mysql.sock

N’oubliez pas de mettre sudo. Cela va vous donner les droits du super administrateur. Sans cela, vous aurez un message vous alertant (et interdisant) car vous n’avez pas les permissions adéquates.
La commande Unix ln permet de réaliser un lien avec un autre fichier ou répertoire de 2 façons : matériel ou symbolique. En ajoutant -s, nous utiliserons le lien symbolique.
Et voilà, on a fini avec cela !

Test final

Ré-essayez la commande :

php console doctrine:database:create

Ça devrait fonctionner maintenant.

Info supplémentaire

Est-ce que vous avez changé le timezone de votre php.ini ?
Si vous ne l’avez pas fait, aller dans /Applications/MAMP/bin/php/php5.4.4/conf/php.ini. Recherchez "date.timezone" (aux alentours de la ligne 549). Décommentez la ligne si nécessaire (supprimer le " ;" en début de ligne) Puis mettre "Europe/Paris".
Enregistrez votre modification. And enjoy !
Vous pouvez faire la même chose pour le fichier php.ini dans /etc/php.ini (ça sera à la ligne 998).

 
Langage et développement
PHP
Frameworks
Symfony 2
Catégorie
Lignes de commandes, Notes de développement