Krijg Drush werkend in Mac OSX | Onmisbare Drupal toolkit

15 Jul 2016

Thomas Dik - Lead Developer
+31 (0)20 - 261 14 99

Drush, de toolkit waar geen enkele Drupal developer zonder kan. Drush installeren hoeft geen probleem te zijn als je via Composer werkt. Zoals bij de meeste applicaties die afhankelijk zijn van andere applicaties kan het echter wel fout gaan. Vooral na het upgraden van je systeem of het upgraden van je MAMP / AMPPS / XAMPP / ... stack.

Drush is afhankelijk van een aantal kleinere applicaties: PHP, MYSQL en natuurlijk Drush zelf. Zodra het fout gaat gaan de meeste developers (Althans dat hoop ik) zoeken via Google naar het probleem.

Veel voorkomende meldingen zijn:

  • No Drupal site found, only 'Drush' cache was cleared.
  • Drush was not able to start (bootstrap) the Drupal database.

Deze meldingen kunnen zelfs voorkomen als je vanuit de root van de Drupal omgeving werkt.

  • Waarom gebeurt dit?
  • En welke oplossing is de juiste?

Waarom gebeurt dit?

Beide meldingen kan de gebruiker ook krijgen als de settings.php nog niet correct is ingevuld.
Dit is tevens de meest voorkomende melding die je met Drush kan hebben als het out of the box fout gaat. De oorzaak is dat de verkeerde PHP of MySQL wordt aangeroepen. (Meestal MySQL).

Als je de foutmeldingen in Google invoert tussen aanhalingstekens dan vind je een aantal oplossingen:

  • Het veranderen van het woord localhost in de settings.php naar 127.0.0.1
  • Het aanmaken van een symbolic link van het pad naar je mysql.sock naar /var/mysql/mysql.sock
  • Sommigen geven zelfs als advies om Drush 6.0 te gebruiken.

Bijna alle tips die gegeven worden zijn afhankelijk van de situatie en werken niet voor iedereen.
Het belangrijkste voor Drush is dat de juiste MySQL en PHP worden aangeroepen.

Standaard wordt op OSX de PHP vanuit het volgende pad aangeroepen: /usr/bin/php
Dit kan je vrij snel controleren door in de commandline which php in te voeren.

Meestal is dit niet de PHP uit de stack die je gebruikt voor je Drupal install.

Dit kan je snel controleren door het versienummer te vergelijken met de PHP versie die je voor Drupal gebruikt. De kans dat de PHP versie van jouw OS gelijk is aan die van je stack is vrij klein. Voer php -v in de terminal en PHP geeft je het versienummer.

Welke oplossing is de juiste?

Om er voor te zorgen dat elke instance van de terminal dezelfde versies van PHP en MySQL gebruikt kan je gebruik maken van een bash_profile. Dit is een verborgen bestand in het /~ path ofwel de home directory. Hierin gaan we aangeven welke PHP / MySQL en Drush we gaan meegeven aan het bash profiel.

Opzoeken van de te gebruiken paden.

De gebruikte paden zijn afhankelijk van de stack die je gebruikt. Als voorbeeld gebruik ik AMPPS, XAMPP en MAMP gebruiken soortgelijke paden.

Drush

Allereerst is het handig om het Drush path te achterhalen. Als je de instructies van docs.drush.org hebt gebruikt, dan zal dit "/usr/local/bin/drush" zijn. Om hier zeker van te zijn kan je which drush invoeren in de terminal.

Tip
Mocht hier geen pad uit voort komen dan raad ik aan de instructies van Drush.org te doorlopen.

PHP

Nadat we Drush hebben gevonden is het tijd voor PHP. De meeste apache stacks bevatten meer dan één PHP versie. Zodra je wisselt van PHP versie veranderen sommige stacks automatisch een symbolic link naar de folder waar de actieve versie in staat.

Tip
Doordat dit niet bij elke stack gebeurd gebruik ik zelf een variabele voor de foldernaam van PHP.

Hier zet je dan de naam van de folder in waar de PHP versie in staat die je gebruikt voor de Drupal install. Om te controleren of dit het geval is kan je ls -la invoeren in de terminal binnen de applicatie folder van je stack. (zoals in de screenshot te zien is).

De directory van php binnen AMPPS is /Applications/AMPPS/"PHPVERSIE"/bin in mijn geval "php-5.6" waardoor het volledige path: "/Applications/AMPPS/php-5.6/bin" word.

MySQL

Als laatste hebben we de MySQL nodig. Ook deze is afhankelijk van de gebruikte stack.
Voor AMPPS is het "/Applications/AMPPS/mysql/bin". (zie vorige screenshot)

Aanmaken van het bash profile.

De drie paden die we gevonden hebben in de vorige stap gaan we toevoegen aan het bash profiel van OSX.

Het bashprofiel is een bestand welke applicaties kan toevoegen aan de path variable van OSX.

Hiervoor gaan we met een tekstverwerker het .bash_profile in de home directory aanpassen.

De home directory is snel te bereiken door cd ~ in te voeren in terminal. Afhankelijk van de instellingen van je terminal kan het ook voldoende zijn om een nieuw scherm te openen.

Standaard is de home directory open als je een nieuwe instantie van de terminal opent.

Vanaf de home directory gaan met een willekeurige text editor het .bash_profile bewerken / aanmaken.

Zelf gebruik ik hiervoor Nano, andere mensen zullen Vim of Textedit gebruiken. Voor Nano hoef je alleen ‘nano’ in te voeren gevolgd door de bestandsnaam (in de terminal): nano .bash_profile.

In dit bestand gaan we onze paden toevoegen aan de $PATH variabele. Als voorbeeld voor het eenvoudig wisselen van PHP versies heb ik de naam van deze folder toegevoegd als losse variabele.

Voer hiervoor het volgende in:

export PHP_ID="php-5.6"

Waarbij “php-5.6” de naam van de folder is. Daarna kan je PHP_ID gebruiken in de rest van het profiel.

Vervolgens gaan we alle paden aan de Path variabele toevoegen:

export PATH="/Applications/AMPPS/$PHP_ID/bin:/Applications/AMPPS/mysql/bin:/usr/local/bin/drush:$PATH"

Als het goed is heb je nu twee regels toegevoegd / aangemaakt in het profiel.

Om te gaan schrijven naar het profiel gebruik je CTRL + O gevolgd door CTRL + X om nano te sluiten.

Je krijgt nu een waarschuwing of je wilt gaan schrijven druk op enter om deze te bevestigen.
Mocht je een permission denied krijgen dan kan het zijn dat je sudo rechten nodig hebt om naar dit bestand te schrijven / het aan te maken.

Voer dan sudo su - gevolgd door het admin wachtwoord en voer de stappen opnieuw uit.

Nadat de regels zijn toegevoegd en opgeslagen dienen alle open terminals gesloten te worden (of ververst voer hiervoor source .bash_profile in.)

Als alles goed is verlopen kan je nu Drush weer gebruiken, proficiat :)

Comments

Nóg meer
kennis nodig?

Check ons ons blog archief >