MAMP Quickies

From macwrench
Jump to navigation Jump to search


Dies hier sind keine offiziellen Anleitungen und kommen ohne jegliche Gewähr. Da es immer zu Datenverlusten kommen kann ist ein vorheriges Backup aller Daten natürlich selbstverständlich.

Die Verwendung geschieht also AUF EIGENE GEFAHR, es besteht keinerlei Gewährleistung, weder von mir noch von den MAMP/MAMP PRO Entwicklern! Nur weil etwas geht, heisst es nicht dass es auch offiziell unterstützt wird!

MAMP

W21-1a.svg

MAMP PRO

Einige erweiterte Funktionen sind nur über Terminal-Anweisungen verfügbar, ein Neustart von MAMP PRO ist in der Regel nicht erforderlich.

Hidden Preferences

Diese Optionen sollten WIRKLICH NUR DANN verwendet werden, wenn man (a) vom MAMP Support-Team dazu angeleitet und aufgefordert wurde oder (b) man genau weiß was man tut. Da solche Funktionen u.U. noch nicht vollständig implementiert sein können, können diese auch unvorhergesehene Nebeneffekte haben oder gar fehlerhaft sein - incl. möglicher Datenverluste, sowohl remote als auch lokal (z.B. bei Verwendung von mit den Remote Ops in Verbindung stehenden neuen Funktionen). Die Verwendung geschieht also AUF EIGENE GEFAHR, es besteht keinerlei Gewährleistung.

Remote Ops: Temp. Remote-Dateien beibehalten (ab Version 6.0)

Während des Import/Publish/Migrate von hosts erzeugte temporäre Dateien wie ZIP-Archive oder Datenbank-Dumps beibehalten (WICHTIG: sollte nach erfolgreichem Debugging unbedingt wieder deaktiviert werden, damit keine vertraulichen Daten wie Passwörter oder andere sicherheitskritischen Informationen öffentlich verfügbar sind):

defaults write de.appsolute.mamppro remoteDebugging -bool YES

Zum Deaktivieren:

defaults delete de.appsolute.mamppro remoteDebugging

Alternativ kann diese Funktion beim Start einer beliebigen Remote-Operation (z.B. Validierung der Remote-Konfiguration) im zu Beginn der Operation angezeigten Rückfragefenster deaktiviert werden.

Remote Ops: Loglevel des remote PHP-Debuglog erhöhen (ab Version 6.3.1)

Seit Version 6.3.1 wird bei Remote-Operationen (Import/Publish/Migrate) von MAMP PRO hosts der PHP Fehlerlog des Remote Servers im Fehlerfall in das lokale Log-Verzeichnis heruntergeladen, um auch serverseitig eventuelle Fehlersituationen lösen zu können:

~/Applications/MAMP/logs/remote-php.log

Mit der folgenden Option eird hierfür das Loglevel erhöht, so dass signifikant mehr Informationen protokolliert werden als sonst. Sensitive Daten wie Passwörter o.ä. werden natürlich trotzdem nicht protokolliert, aber andere Informationen wie Pfadangaben könnten dennoch für Angreifer hilfreich sein. Daher sollte diese Option nach erfolgtem Import sofort wieder deaktiviert werden.

defaults write de.appsolute.mamppro remoteVerboseDebugging -bool YES

Zum Deaktivieren:

defaults delete de.appsolute.mamppro remoteVerboseDebugging

Wichtiger Hinweis: Diese Logdatei wird bei jeder Remote-Operation neu erstellt und überschreibt damit die Protokollinformationen der vorherigen Operation. Daher sollte diese Datei nach erfolgtem Import mit erhöhtem Loglevel an einem anderen Ort gesichert werden, bevor wieder zur Standardkonfiguration zurückgewechselt wird.

Remote Ops: die zu verwendenden Dateizugriffsrechte anpassen= (ab Version 6.3.2)

Standardmäßig werden von MAMP PRO bei der Ausführung von Remote Ops (Import/Publish von Remote Hosts) die von den jeweiligen Serverdiensten vorgegebenen Standardzugriffsrechte verwendet, was u.U. zur Folge haben kann, dass nur der Eigentümer der Dateien Vollzugriff (also lesend und schreibend) auf alle Dateien und Verzeichnissehat hat. Mit Hilfe folgender Terminalanweisung kann dieser Wert geändert werden, beispielsweise auf 777 (Vollzugriff für alle):

   defaults write de.appsolute.mamppro permsString -string "777"

Der aktuell verwendete Wert kann mit folgender Terminal-Anweidung kontrolliert werden:

   defaults read de.appsolute.mamppro permsString

Falls diese Option gar nicht gesetzt sein sollte, wird statt dessen eine Fehlermeldung wie diese hier ausgegeben:

   The domain/default pair of (de.appsolute.mamppro, permsString) does not exist

Wichtig: die Angabe erfolgt in Oktalschreibweise OHNE führende 0, andere Schreibweisen werden ignoriert. Ebenso werden Werte < 600 ignoriert, da diese im vorliegenden Kontext ohnehin keinen Sinn ergeben würden (keine Lese- und/oder Schreibrechte für den Eigentümer). In diesen Fällen wird ein Defaultwert von "755" verwendet.

deaktiviert wird diese Option hiermit (wiederum gefolgt von einem Neustart der App):

   defaults delete de.appsolute.mamppro permsString

Troubleshooting

Crash nach Downgrade

Wenn nach dem Start einer aktuelleren Version eine ältere gestartet werden soll und diese bei der Installation der Hilfsprogramme crasht, sind folgende beiden Dateien zu löschen. Anschließend sollte sich die ältere Version wieder problemlos starten lassen:

/Library/LaunchDaemons/de.appsolute.mampprohelper.plist
/Library/PrivilegedHelperTools/de.appsolute.mampprohelper

Freeze (SBOD) beim App-Start

Ein freeze beim Start von MAMP PRO kann u.U. dadurch verursacht werden, dass die Kommunikation mit dem MAMP PRO Helper Tool nicht mehr funktioniert. In diesem Fall wartet MAMP PRO dann solange auf den Helper bis es zu einem timeout kommt. Der Helper lässt sich mit folgenden Terminal-Anweisungen deinstallieren (MAMP PRO unbedingt vorher beenden!):

  sudo launchctl unload /Library/LaunchDaemons/de.appsolute.mampprohelper.plist
  sudo rm /Library/LaunchDaemons/de.appsolute.mampprohelper.plist
  sudo rm /Library/PrivilegedHelperTools/de.appsolute.mampprohelper

Die erste Anweisung beendet den Helper (falls dieser läuft; falls nicht erscheint eine Fehlermeldung), die zweite löscht die Definition für den Helper (also wann und wie der Helper genau vom System gestartet werden soll) und die dritte Anweisung löscht dann letztlich den Helper selber - also dessen Programmcode.

Beim nachfolgenden Start von MAMP PRO müsste dieser dann erneut nach einem Benutzer mit Admin-Berechtigung fragen um dieses Helper Too reinstallieren zu können (Gültig ab MAMP PRO Version 6)

Falls diese Anweisungen mit Fehlermeldungen quittiert werden (insbes. die erste) ist das ok, das bedeutet lediglich dass der Helper gar nicht läuft bzw. installiert ist. In dem Fall ist der Helper dann aber auch nicht die Ursache für den Hänger...

Vorab überprüfen lässt sich die Existens des Helper Tools beispielsweise mit folgenden Anweisungen:

  sudo launchctl list de.appsolute.mampprohelper
  sudo ls /Library/LaunchDaemons/de.appsolute.mampprohelper.plist
  sudo ls /Library/PrivilegedHelperTools/de.appsolute.mampprohelper

Dies und das

MySQL datadir Einschränkung umgehen

Standardmäßig legt MAMP PRO alle MySQL-Datenbanken in einem fest vorgegebenen Verzeichnis ab, dessen Pfad sich dank eines in der Applikation fest eingebauten Pfades leider nicht ändern lässt:

/Library/Application Support/appsolute/MAMP PRO/db/mysql

bzw. bei älteren Versionen

/Library/Application Support/living-e/MAMP PRO/db/mysql

Das bedeutet, der --datadir Parameter zur Angabe eines alternativen Verzeichnisses kann nicht zur Verwendung kommen, da das Aufrufkommando nicht zur Verfügung steht. Allerdings scheint der der verwendete MySQL daemon symlinks zu folgen (Stand: MAMP PRO 2.0).

Es genügt als, das o.g. Verzeichnis mysql an eine beliebige Stelle im Dateisystem zu verschieben und in obigem Verzeichnis einen Symlink (Alias) zu setzen. Dies erfolgt entweder per Finder oder im Terminal:

ln -s /path/to/my/new/mysql /Library/Application\ Support/appsolute/MAMP\ PRO/db/mysql
  Logo informations.svg
Alternativ können auch hardlinks verwendet werden, bei denen sich jedoch prinzipbedingt Ursprung und Ziel auf derselben Partition befinden müssen. Symlinks dagegen erlauben auch Verweise auf ein Zielverzeichnis, das auf einer anderen Partition oder Festplatte liegt.
Sinnigerweise sollte dieses Laufwerk während des Serverstarts verfügbar sein, daher scheiden Netzwerklaufwerke (AFP oder SMB) für den Fall aus, wenn die MAMP-Server bereits beim Booten des Systems gestartet werden.