Erstellen und Ausführen eines CakePHP-Projekts mit ServBay
ServBay ist eine eigens für macOS entwickelte lokale Webentwicklungsumgebung, die PHP, Node.js, Python, Go, Java und weitere Programmiersprachen sowie Datenbankdienste wie MySQL, PostgreSQL, MongoDB und Redis integriert. Ergänzt wird das Ganze durch Caddy oder Nginx als Webserver. ServBay bietet eine bequeme und leistungsstarke Plattform, mit der Entwickler lokale Projekte schnell aufsetzen und verwalten können.
In diesem Artikel zeigen wir Ihnen, wie Sie in der ServBay-Umgebung ein CakePHP-Projekt erstellen, konfigurieren und ausführen. CakePHP ist ein beliebtes Webframework für PHP, das dem MVC-Prinzip (Model-View-Controller) folgt und für seine schnelle Entwicklung, ein leistungsstarkes ORM und eingebaute Sicherheitsfunktionen bekannt ist. Durch die Komfortfunktionen von ServBay starten Sie Ihr CakePHP-Projekt im Handumdrehen.
Was ist CakePHP?
CakePHP ist ein quelloffenes PHP-Webframework, das eine solide Basis für die schnelle und strukturierte Entwicklung von Webanwendungen bietet, ohne dabei Flexibilität einzubüßen. Es folgt dem Prinzip „Convention over Configuration“ und vereinfacht viele typische Aufgaben in der Webentwicklung.
Wichtige Features und Vorteile von CakePHP
- MVC-Architektur: Klare Code-Struktur für einfache Wartung und Erweiterbarkeit.
- Rapid Development: Mit dem Befehlszeilen-Tool "Bake" können Sie Code generieren und Entwicklungsprozesse beschleunigen.
- Leistungsstarkes ORM (Object-Relational Mapping): Vereinfacht den Umgang mit Datenbanken und unterstützt verschiedene Datenbanksysteme.
- Integrierte Sicherheit: Schutzmechanismen wie CSRF-Schutz, Abwehr von SQL-Injektionen sowie Eingabevalidierung.
- Flexibles Template-System: Unterstützung für verschiedene View-Technologien.
- Aktive Community & zahlreiche Plugins: Umfangreiche Erweiterbarkeit sowie schnelle Hilfestellung bei Problemen.
- Umfassende Dokumentation: Ausführliche Anleitungen und Referenzen.
CakePHP eignet sich für Webanwendungen jeder Größenordnung – von einfachen APIs bis hin zu komplexen Enterprise-Systemen.
Einrichten einer CakePHP-Entwicklungsumgebung mit ServBay
ServBay bringt alles mit, was Sie für die CakePHP-Entwicklung benötigen:
- Vorgefertigte PHP-Interpreter mit gängigen Erweiterungen.
- Vorinstallierter Composer.
- Einfach konfigurierbarer Webserver (Caddy/Nginx).
- Integrierte Datenbankdienste (MySQL, PostgreSQL, Redis u.a.).
Dank ServBay entfällt die mühsame Einzelinstallation und Konfiguration dieser Komponenten.
Voraussetzungen
Bevor Sie beginnen, stellen Sie bitte Folgendes sicher:
- ServBay ist installiert: Laden Sie ServBay für macOS herunter und installieren Sie es.
- ServBay-Dienste laufen: Starten Sie die ServBay-App und überprüfen Sie, dass alle benötigten Pakete (wie PHP, die von Ihnen gewählte Datenbank z.B. MySQL oder PostgreSQL sowie Cache-Dienste wie Redis oder Memcached) laufen. Sie können diese Dienste im Reiter „Pakete“ im ServBay-Panel steuern.
- Vertrautheit mit ServBay-Grundfunktionen: Sie wissen, wie Sie in ServBay eine neue Website hinzufügen und konfigurieren. Sind Sie damit nicht vertraut, empfehlen wir die Lektüre der ServBay-Grundanleitung.
CakePHP-Projekt erstellen
ServBay empfiehlt, Ihre Webprojekte einheitlich im Verzeichnis /Applications/ServBay/www
abzulegen. So erkennt und verwaltet ServBay Ihre Projekte automatisch.
Terminal öffnen
Starten Sie die Terminal-App unter macOS.
Zum ServBay-Webprojektverzeichnis wechseln
Wechseln Sie ins von ServBay empfohlene Projektverzeichnis:
bashcd /Applications/ServBay/www
1Projektordner anlegen
Erstellen Sie ein Unterverzeichnis für Ihr CakePHP-Projekt, z. B. mit dem Namen
servbay-cakephp-app
:bashmkdir servbay-cakephp-app cd servbay-cakephp-app
1
2CakePHP-Projekt mit Composer aufsetzen
Composer ist bei ServBay bereits installiert. Im Projektverzeichnis initialisieren Sie das CakePHP-Projekt mit Composer:
bashcomposer create-project --prefer-dist cakephp/app .
1Dieser Befehl lädt die neueste stabile Version von CakePHP samt aller Abhängigkeiten in das aktuelle Verzeichnis (
.
).ORM-Treiber installieren (für PostgreSQL)
Möchten Sie PostgreSQL als Datenbank nutzen, installieren Sie zusätzlich den passenden ORM-Treiber:
bashcomposer require cakephp/orm-pgsql
1Für MySQL ist kein separater Treiber nötig, da dieser bereits in CakePHP enthalten ist.
Grundkonfiguration
Nach dem Anlegen passen Sie die grundlegenden Einstellungen an, insbesondere die Datenbankverbindung.
Umgebungsvariablen und Datenbankverbindung konfigurieren
Die lokale Konfiguration befindet sich in der Regel in der Datei
config/app_local.php
. Bearbeiten Sie darin den AbschnittDatasources
und tragen Sie die Zugangsdaten für Ihre Datenbank ein. Im Standardfall lauten Benutzername und Passwort bei ServBayroot
bzw.password
.Beispiel für MySQL-Konfiguration:
php// config/app_local.php 'Datasources' => [ 'default' => [ 'className' => \Cake\Database\Connection::class, 'driver' => \Cake\Database\Driver\Mysql::class, // oder \Cake\Database\Driver\Postgres::class für PostgreSQL 'persistent' => false, 'host' => '127.0.0.1', // Datenbankserver-Adresse (ServBay läuft lokal) //'port' => '3306', // Standardport MySQL 3306, PostgreSQL Standard 5432 'username' => 'root', // ServBay-Standard 'password' => 'password', // ServBay-Standard 'database' => 'servbay_cakephp_app', // Der Name der von Ihnen angelegten Datenbank 'encoding' => 'utf8mb4', 'timezone' => 'UTC', 'flags' => [], 'cacheMetadata' => true, 'log' => false, /** * Set identifier quoting to true if you are using words like "user" as your table name. * But if you are using words like "cake" you can set it to false. * If you don't know use true. */ 'quoteIdentifiers' => false, /** * Current limitations include the following: * - Most drivers do not support setting isolation levels via PDO options. * Using them will result in an error. * - Not all drivers support setting the charset via PDO options. * Using them will result in an error. * - PDO options are not supported for packaged drivers like Postgres from CakePHP. * For Postgres, you only need to set the encoding. */ 'options' => [], //'url' => env('DATABASE_URL', null), // Aktivieren, wenn Sie DATABASE_URL verwenden möchten ], ],
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38Passen Sie je nach verwendetem Datenbanktyp (
driver
) und evtl.port
-Feld an. Vergewissern Sie sich, dass derdatabase
-Wert mit dem von Ihnen angelegten Datenbanknamen übereinstimmt.
Webserver einrichten (Website in ServBay anlegen)
Um Ihr CakePHP-Projekt per Browser zu erreichen, legen Sie in ServBay eine neue Website an, die auf Ihren Projektordner verweist.
ServBay-Kontrollpanel öffnen
Klicken Sie auf das ServBay-Icon, um das Kontrollpanel zu öffnen.
Zur Registerkarte "Websites" wechseln
Im linken Menü den Navigationspunkt „Websites“ auswählen (früher „Hosts“ genannt).
Neue Website hinzufügen
Unten auf das
+
klicken, um eine neue Website zu erstellen. Tragen Sie Folgendes ein:- Name: Ein für Sie leicht erkennbarer Name, z. B.
My CakePHP Dev Site
. - Domain: Ein lokaler Dev-Domainname, z. B.
servbay-cakephp-test.local
. ServBay verknüpft diese Domain automatisch lokal. - Site-Typ: Wählen Sie
PHP
. - PHP-Version: Wählen Sie eine Version, die zu CakePHP passt (z. B. CakePHP 4+ benötigt mind. PHP 7.4+, CakePHP 5+ mind. 8.1+, etwa
8.3
). - Document Root: Achtung! Der gewünschte Webserver-Stammordner ist nicht das Projektverzeichnis selbst, sondern das
webroot
-Unterverzeichnis darin. Setzen Sie dies auf/Applications/ServBay/www/servbay-cakephp-app/webroot
(ersetzen Sieservbay-cakephp-app
ggf. durch Ihren Ordnernamen).
- Name: Ein für Sie leicht erkennbarer Name, z. B.
Speichern und Änderungen anwenden
Nach dem Ausfüllen unten rechts auf „Speichern“ klicken. Die Änderungen werden übernommen und ServBay richtet den Webserver (Caddy/Nginx) so ein, dass die Domain
servbay-cakephp-test.local
auf daswebroot
-Verzeichnis Ihres Projekts verweist.
Eine detaillierte Anleitung finden Sie in der ServBay-Dokumentation: Erste Website hinzufügen.
Grundlegende Überprüfung
Nun sollten Sie Ihre Website im Browser erreichen können.
Öffnen Sie den Browser und rufen Sie die von Ihnen definierte Domain auf, z. B. https://servbay-cakephp-test.local
.
Erscheint die CakePHP-Begrüßungsseite, funktioniert die PHP-Umgebung, der Webserver und die ServBay-Einbindung korrekt.
Integration von Datenbank- und Caching-Diensten
CakePHP bietet ein mächtiges ORM und ein flexibles Caching-System, mit denen Sie mühelos die von ServBay bereitgestellten Datenbanken und Caches nutzen.
Beispiel: Relationale Datenbank (MySQL / PostgreSQL)
Im Folgenden zeigen wir, wie Sie mit CakePHPs ORM eine MySQL- oder PostgreSQL-Datenbank unter ServBay anbinden, eine einfache Tabelle users
anlegen und Daten abfragen, ergänzen, aktualisieren oder löschen.
Neue Datenbank in ServBay anlegen
Bevor Sie Migrationsdateien anwenden, legen Sie mit dem in ServBay enthaltenen Datenbanktool (phpMyAdmin für MySQL/MariaDB, pgAdmin für PostgreSQL oder Drittanbietertools wie Navicat/DBeaver) eine neue Datenbank namens
servbay_cakephp_app
bei Ihrem Datenbankdienst an. Die Verbindung läuft in der Regel über127.0.0.1
, Benutzerroot
und Passwortpassword
.ORM Model-Datei erstellen
Für das ORM wird eine Model-Klasse für die jeweilige Tabelle benötigt. Legen Sie
UsersTable.php
für die Tabelleusers
an.Datei speichern unter
src/Model/Table/UsersTable.php
:php<?php namespace App\Model\Table; use Cake\ORM\Table; use Cake\Validation\Validator; // Für Validierungsregeln class UsersTable extends Table { /** * Initialize method * * @param array $config The configuration for the Table. * @return void */ public function initialize(array $config): void { parent::initialize($config); $this->setTable('users'); // Name der Datenbanktabelle $this->setDisplayField('name'); // Standard-Anzeigefeld für Relations/Views $this->setPrimaryKey('id'); // Primärschlüssel // Optional: Timestamps // $this->addBehavior('Timestamp'); } /** * Default validation rules. * * @param \Cake\Validation\Validator $validator Validator instance. * @return \Cake\Validation\Validator */ public function validationDefault(Validator $validator): Validator { $validator ->scalar('name') ->maxLength('name', 255) ->requirePresence('name', 'create') ->notEmptyString('name'); $validator ->email('email') ->requirePresence('email', 'create') ->notEmptyString('email') ->add('email', 'unique', ['rule' => 'validateUnique', 'provider' => 'table']); // Eindeutigkeit für Email return $validator; } }
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49Migration mit Bake-Tool erstellen
CakePHP empfiehlt, das Datenbankschema mittels Migrationen zu verwalten. Erstellen Sie im Projektverzeichnis (
/Applications/ServBay/www/servbay-cakephp-app
) mit dem Bake-Tool eine Migration für die users-Tabelle:bashbin/cake bake migration CreateUsers name:string email:string:unique
1Damit entsteht eine Migrationsdatei, mit der die Tabelle
users
mit den Spaltenname
(String) undemail
(String, eindeutig) angelegt wird.Migrationsdateien ausführen
Übertragen Sie die neuen Tabellen in Ihre Datenbank mittels Migration:
bashbin/cake migrations migrate
1Nach erfolgreichem Migrate existiert die Tabelle
users
in Ihrer Datenbank.Datenbankverbindung konfigurieren (falls noch nicht geschehen)
Kontrollieren Sie, dass die Angaben in
config/app_local.php
inDatasources.default
mit Ihrer Datenbank übereinstimmen.Beispiel MySQL:
php'Datasources' => [ 'default' => [ 'className' => \Cake\Database\Connection::class, 'driver' => \Cake\Database\Driver\Mysql::class, 'host' => '127.0.0.1', 'username' => 'root', 'password' => 'password', 'database' => 'servbay_cakephp_app', // ... weitere Einstellungen ], ],
1
2
3
4
5
6
7
8
9
10
11Beispiel PostgreSQL:
php'Datasources' => [ 'default' => [ 'className' => \Cake\Database\Connection::class, 'driver' => \Cake\Database\Driver\Postgres::class, 'host' => '127.0.0.1', // 'port' => '5432', // Standardport 'username' => 'root', // ServBay-Standard 'password' => 'password', // ServBay-Standard 'database' => 'servbay_cakephp_app', // ... weitere Einstellungen ], ],
1
2
3
4
5
6
7
8
9
10
11
12
Beispielrouten und Controller-Methoden anlegen
Öffnen Sie
config/routes.php
und ergänzen Sie Routen für das Hinzufügen und Anzeigen von Nutzern:php// config/routes.php use Cake\Routing\RouteBuilder; use Cake\Routing\Router; use Cake\Routing\Route\DashedRoute; Router::defaultRouteClass(DashedRoute::class); Router::scope('/', function (RouteBuilder $routes) { // ... weitere Routen $routes->connect('/', ['controller' => 'Pages', 'action' => 'display', 'home']); // Datenbank-Beispielrouten $routes->connect('/db-add-user', ['controller' => 'Pages', 'action' => 'dbAddUser']); $routes->connect('/db-list-users', ['controller' => 'Pages', 'action' => 'dbListUsers']); // ... weitere Routen $routes->fallbacks(DashedRoute::class); });
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18Ergänzen Sie in
src/Controller/PagesController.php
Methoden für die Datenbankoperationen:php<?php namespace App\Controller; use Cake\Http\Response; use Cake\ORM\TableRegistry; use Cake\Datasource\Exception\RecordNotFoundException; // Ausnahmebehandlung bei fehlenden Einträgen class PagesController extends AppController { /** * Displays a view * * @param array ...$path Path segments. * @return \Cake\Http\Response|null */ public function display(...$path): ?Response { // ... Standardfunktion display return new Response(['body' => 'Hello ServBay! This is the default page.']); } /** * Datenbank-Beispiel: Nutzer hinzufügen */ public function dbAddUser(): Response { $usersTable = TableRegistry::getTableLocator()->get('Users'); // Users-Table holen // Neues User-Entity erstellen $user = $usersTable->newEntity([ 'name' => 'ServBay Demo User', 'email' => '[email protected]' // ServBay-Markendemo-Email ]); // Versuch, das Entity in die Datenbank zu speichern if ($usersTable->save($user)) { return new Response(['body' => 'User added successfully! User ID: ' . $user->id]); } else { // Fehler beim Speichern, z.B. Validierungsprobleme $errors = $user->getErrors(); // Validierungsfehler holen return new Response(['body' => 'Failed to add user. Errors: ' . json_encode($errors)]); } } /** * Datenbank-Beispiel: Alle Nutzer auflisten */ public function dbListUsers(): Response { $usersTable = TableRegistry::getTableLocator()->get('Users'); // Users-Table holen // Alle Nutzer abrufen $users = $usersTable->find()->all(); // Ergebnis als JSON ausgeben return new Response(['body' => json_encode($users->toArray())]); // Collection zu Array konvertieren } }
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58Zugriff auf die Beispielrouten
Im Browser:
- Rufen Sie
https://servbay-cakephp-test.local/db-add-user
auf, um einen Nutzer hinzuzufügen. Sie erhalten eine Erfolgsmeldung. - Rufen Sie
https://servbay-cakephp-test.local/db-list-users
auf, um alle Nutzer aufzulisten (der eben hinzugefügte Nutzer sollte erscheinen).
- Rufen Sie
Mit diesen Schritten ist Ihr CakePHP-Projekt erfolgreich mit einer relationalen Datenbank in ServBay verbunden, und Sie haben grundlegende ORM-Funktionen umgesetzt.
Beispiel: Caching-Dienste (Memcached / Redis)
CakePHP bietet ein einheitliches Caching-API, mit der Sie nahtlos verschiedene Caching-Engines wie Memcached oder Redis einsetzen können. ServBay liefert die erforderlichen PHP-Extensions für Memcached und Redis bereits mit und stellt die Dienste bereit.
Achten Sie darauf, dass Memcached oder Redis im Reiter „Pakete“ im ServBay-Kontrollpanel aktiviert ist.
Cacheverbindung konfigurieren
Bearbeiten Sie in
config/app_local.php
den AbschnittCache
und stellen Sie die Verbindung zum verwendeten Cache ein.Beispiel Memcached:
php// config/app_local.php 'Cache' => [ 'default' => [ 'className' => \Cake\Cache\Engine\MemcachedEngine::class, 'servers' => ['127.0.0.1:11211'], // Standardadresse und -port von ServBay 'prefix' => 'servbay_cakephp_', // Schlüssel-Präfix ], // ... weitere Cache-Konfigurationen ],
1
2
3
4
5
6
7
8
9Beispiel Redis:
php// config/app_local.php 'Cache' => [ 'default' => [ 'className' => \Cake\Cache\Engine\RedisEngine::class, 'host' => '127.0.0.1', // ServBay Standardadresse 'port' => 6379, // ServBay Standardport 'password' => null, // Bei gesetztem Passwort hier eintragen 'database' => 0, // Redis Datenbank 'prefix' => 'servbay_cakephp_', // Schlüssel-Präfix ], // ... weitere Cache-Konfigurationen ],
1
2
3
4
5
6
7
8
9
10
11
12
Treffen Sie die Einstellung passend zu Ihrem Cache-Dienst.
Beispielrouten und Controller-Methoden für Cache
Ergänzen Sie
config/routes.php
um Caching-Routen:php// config/routes.php // ... weitere Routen $routes->connect('/cache-memcached', ['controller' => 'Pages', 'action' => 'cacheMemcached']); $routes->connect('/cache-redis', ['controller' => 'Pages', 'action' => 'cacheRedis']); // ... weitere Routen
1
2
3
4
5Ergänzen Sie Methoden im Controller:
php<?php namespace App\Controller; use Cake\Http\Response; use Cake\Cache\Cache; // Cache-Klasse importieren // ... weitere use-Anweisungen class PagesController extends AppController { // ... weitere Methoden (display, dbAddUser, dbListUsers) /** * Caching-Beispiel: Memcached */ public function cacheMemcached(): Response { // In app_local.php muss 'default' Cache auf MemcachedEngine stehen $cacheKey = 'servbay_memcached_test_key'; $cachedData = Cache::read($cacheKey); // Versucht Wert aus Cache zu lesen $responseBody = ''; if ($cachedData === false) { // Cache Miss $responseBody = 'Cache miss! Writing "Hello Memcached!" to cache.'; $dataToCache = 'Hello Memcached!'; Cache::write($cacheKey, $dataToCache, 'default'); // Cache schreiben } else { // Cache Hit $responseBody = 'Cache hit! Data from cache: ' . $cachedData; } return new Response(['body' => $responseBody]); } /** * Caching-Beispiel: Redis */ public function cacheRedis(): Response { // In app_local.php muss 'default' Cache auf RedisEngine stehen $cacheKey = 'servbay_redis_test_key'; $cachedData = Cache::read($cacheKey); // Versucht Wert aus Cache zu lesen $responseBody = ''; if ($cachedData === false) { // Cache Miss $responseBody = 'Cache miss! Writing "Hello Redis!" to cache.'; $dataToCache = 'Hello Redis!'; Cache::write($cacheKey, $dataToCache, 'default'); // Cache schreiben } else { // Cache Hit $responseBody = 'Cache hit! Data from cache: ' . $cachedData; } return new Response(['body' => $responseBody]); } }
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61Auf die Beispielrouten zugreifen
Im Browser:
- Für Memcached:
https://servbay-cakephp-test.local/cache-memcached
– beim ersten Aufruf erscheint „Cache miss“, danach „Cache hit“. - Für Redis:
https://servbay-cakephp-test.local/cache-redis
– ebenso.
- Für Memcached:
Damit haben Sie CakePHP erfolgreich mit von ServBay zur Verfügung gestellten Cache-Diensten verbunden und getestet.
Hinweise
- Datenbankzugangsdaten: Die Standard-Zugangsdaten (
root
/password
) von ServBay sind nur für die lokale Entwicklung gedacht. Nutzen Sie in Produktivumgebungen sicherere Passwörter! - Document Root: Der Document Root der Website in ServBay muss immer auf das
webroot
-Verzeichnis des CakePHP-Projekts zeigen – nie auf das Hauptverzeichnis! - PHP-Kompatibilität: Die verwendete PHP-Version in ServBay muss Ihre CakePHP-Version unterstützen. Prüfen Sie dazu die offizielle Dokumentation von CakePHP.
- ServBay-Ports: Belegt ein anderes Programm die Standardports (80/443), passen Sie die Port-Einstellungen in ServBay an und ändern Sie ggf. die hosts-Datei oder fügen Sie Portnummern im Browser hinzu.
Häufige Fragen (FAQ)
- Q: Beim Zugriff auf
servbay-cakephp-test.local
erscheint eine Fehlerseite „Seite nicht gefunden“?- A: Prüfen Sie, ob der Document Root in ServBay korrekt auf
/Applications/ServBay/www/servbay-cakephp-app/webroot
zeigt. - Ist der Webserver (Caddy/Nginx) in ServBay aktiv?
- Löst die hosts-Datei
servbay-cakephp-test.local
auf127.0.0.1
auf? (Normalerweise kümmert sich ServBay darum, aber Kontrolle kann hilfreich sein.) - Sind die
.htaccess
-Dateien von CakePHP oder die Webserver-Regeln korrekt? (Default ist im Unterordnerwebroot/.htaccess
vorhanden.)
- A: Prüfen Sie, ob der Document Root in ServBay korrekt auf
- Q: Datenbankverbindung schlägt fehl?
- A: Läuft der betreffende Datenbankdienst in ServBay (MySQL/PostgreSQL)?
- Stimmen Einstellungen (host, port, username, password, database) in
config/app_local.php
mit Ihrer ServBay-Konfiguration überein? - Existiert die Datenbank
servbay_cakephp_app
?
- Q: Composer/
bin/cake
-Befehle funktionieren nicht?- A: Arbeiten Sie im Terminal im richtigen Verzeichnis (
/Applications/ServBay/www/servbay-cakephp-app
)? - Sind PHP und Composer in ServBay gestartet?
- Ist die PHP-Binary im PATH? (ServBay hinterlegt sie meist, alternativ kann ein speziell konfiguriertes Terminalfenster genutzt werden.)
- A: Arbeiten Sie im Terminal im richtigen Verzeichnis (
Fazit
Mit ServBay können Sie unter macOS effizient und komfortabel eine lokale Entwicklungsumgebung für Ihre CakePHP-Projekte einrichten. Dank der vorinstallierten Komponenten wie PHP, Composer, Webserver und Datenbanken ist der Setup-Prozess stark vereinfacht. In dieser Anleitung haben Sie Schritt für Schritt erfahren, wie Sie ein Projekt anlegen, konfigurieren, den Webserver einrichten und Datenbank- sowie Caching-Anbindung realisieren – so gelingt Ihnen der schnelle Einstieg in die CakePHP-Entwicklung mit ServBay mit Leichtigkeit. Konzentrieren Sie sich auf Ihre Codeentwicklung, ohne sich mit aufwändiger Umgebungskonfiguration aufhalten zu müssen.