Donnerstag, 14. Juli 2011

CakePHP unter Sites in Mac OS X

Wie schon in dem vorherigen Post angekündigt, bin ich noch auf ein paar Problem gestoßen, als ich CakePHP versucht habe ans Laufen zu bringen. Die Lösung brachte dann folgender Link:

Mod_rewrite (CakePHP routing functionality) forbidden after Snow Leopard upgrade

Unter Mac OS X gibt es zwei Verzeichnisse, über die Webseiten freigegeben werden können:

/Libary/WebServer/Documents/
~/Sites/

Bei dem letztern Verzeichnis handelt es sich um eins innerhalb des Userverzeichnisses (erkennbar an ~). Innerhalb von Sites habe ich nun CakePHP entpackt. Damit CakePHP das Userverzeichnis richtig erkennt, sind noch 2 Schritte notwendig:

In /etc/apache2/users/{user}.conf muß folgendes stehen:

<Directory "/Users/{user}/Sites/">

  Options Indexes MultiViews FollowSymlinks
  AllowOverride all
  Order allow,deny
  Allow from all
</Directory>

Zusätzlich müssen die drei .htaccess Dateien, die CakePHP verwendet (im CakePHP root Verzeichnis, /app/ und /app/webroot/ um eine Angabe zu RewriteBase ergänzt werden. Z.B. sieht meine root .htaccess Datei dann folgendermaßen aus:

<IfModule mod_rewrite.c>
  RewriteEngine on
  RewriteBase /~{user}/cakephp/
  RewriteRule ^$ app/webroot/ [L]
  RewriteRule (.*) app/webroot/$1 [L]
</IfModule>

Mittwoch, 13. Juli 2011

Hinzufügen zu PATH in Mac OS X

Auch unter Mac OS X kommt man ab und zu in die Verlegenheit, etwas zu PATH hinzuzufügen. Um zu prüfen, was sich aktuell in PATH befindet, gibt man in der Konsole folgendes ein:

echo $PATH

Dieser Befehl zeigt bei mir /usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin:/usr/X11/bin: an. Um z.B. mysql und CakePHP ohne die Pfade auf der Konsole aufrufen zu können, habe ich eine Datei .profile mit folgendem Inhalt in meinem Userverzeichnis erzeugt:

PATH=$PATH\:~/Sites/cakephp/cake/console;
PATH=$PATH\:/usr/local/mysql/bin;

Wie man dem Pfad für CakePHP entnehmen kann, habe ich CakePHP in meinem Userverzeichnis entpackt. Diese Entscheidung hat noch ein paar zusätzliche Konsequenzen, über die ich in einem späteren Post schreiben werde.