<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="de">
	<id>https://wiki.opencaching.de/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Fraggle</id>
	<title>Opencaching-Wiki - Benutzerbeiträge [de]</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.opencaching.de/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Fraggle"/>
	<link rel="alternate" type="text/html" href="https://wiki.opencaching.de/index.php/Spezial:Beitr%C3%A4ge/Fraggle"/>
	<updated>2026-05-15T11:56:40Z</updated>
	<subtitle>Benutzerbeiträge</subtitle>
	<generator>MediaWiki 1.41.0</generator>
	<entry>
		<id>https://wiki.opencaching.de/index.php?title=Entwicklungsumgebung_einrichten&amp;diff=8083</id>
		<title>Entwicklungsumgebung einrichten</title>
		<link rel="alternate" type="text/html" href="https://wiki.opencaching.de/index.php?title=Entwicklungsumgebung_einrichten&amp;diff=8083"/>
		<updated>2026-04-29T08:58:57Z</updated>

		<summary type="html">&lt;p&gt;Fraggle: + docker-Socket-Datei prüfen&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Das Einrichten der Testumgebung erfolgt in mehreren Schritten, die im folgenden beschrieben sind. Falls es dabei zu unerwarteten Fehlermeldungen kommt, bitte die letzten Schritte noch einmal genau anschauen und gegebenenfalls wiederholen. Auch ein Blick ins Fehlerhandbuch hilft meistens, da bereits viele Fallstricke entdeckt und beschrieben wurden.&lt;br /&gt;
&lt;br /&gt;
== 1. Das Betriebssystem vorbereiten, entweder Linux oder Windows ==&lt;br /&gt;
=== Windows 10 ===&lt;br /&gt;
==== Programme installieren ====&lt;br /&gt;
Unter Windows ist es standardmäßig nicht möglich, “einfach“ die Linux Distribution Ubuntu zu installieren. Dazu muss vorab erst das WSL2 aktiviert / installiert werden werden (Punkt 1). Im Anschluss ist eine Installation von Ubuntu (18.04 oder höher) möglich. Zudem muss DDEV installiert werden, in welchem dann die Entwicklungsumgebung laufen kann (Punkt 2).&lt;br /&gt;
&lt;br /&gt;
# WSL2 unter Windows10 aktivieren und Ubuntu installieren: &lt;br /&gt;
## Aus dem Microsoft-Store: https://aka.ms/wslstorepage (verfügbar seit Nov. 2022) &lt;br /&gt;
## Manuell unter [https://learn.microsoft.com/de-de/windows/wsl/install#manual-installation-steps|Installieren von WSL]&lt;br /&gt;
# DDEV für Windows installieren: [https://docs.ddev.com/en/stable/#system-requirements-windows-wsl2|Install DDEV WSL2]&lt;br /&gt;
&lt;br /&gt;
Danach kann Ubuntu gestartet werden (z.B. im “Such“-Menü nach Ubuntu suchen und anklicken). Beim erstmaligen Starten von Ubuntu müssen ein Benutzername und ein Passwort festgelegt werden.&lt;br /&gt;
&lt;br /&gt;
Im Anschluss den Punkten folgen und ausführen, die im nächsten Schritt “Linux” beschrieben werden.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Linux ===&lt;br /&gt;
Der Linuxartikel wurde erstellt auf Lubuntu 22.04 und erweitert mit Debian 12&lt;br /&gt;
&lt;br /&gt;
==== Programme installieren ====&lt;br /&gt;
Folgende Programme sind notwendig und müssen vorab installiert werden:&lt;br /&gt;
PHP (aktuell mindestens PHP8.2), diverse PHP-Erweiterungen, ddev, mariadb-client. Für die PHP-Erweiterungen ist eventuell ein zusätzliches PPA-Repository notwendig. Dessen Installation erfordert je nach Betriebssystem ein unterschiedliches Vorgehen.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;Ubuntu:&lt;br /&gt;
sudo apt install software-properties-common&lt;br /&gt;
sudo add-apt-repository ppa:ondrej/php&lt;br /&gt;
&lt;br /&gt;
Debian:&lt;br /&gt;
sudo apt install software-properties-common ca-certificates lsb-release apt-transport-https&lt;br /&gt;
curl -sSL https://packages.sury.org/php/README.txt | sudo bash -x&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Die Pakete lassen sich mit folgenden Befehlen installieren (Versionsnummer kann abweichen).&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;sudo apt update&lt;br /&gt;
sudo apt install php8.2 php8.2-mbstring php8.2-curl php8.2-xml php8.2-mysql&lt;br /&gt;
sudo apt install mariadb-client&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Die docker-Installation ist ebenfalls notwendig. Die Anweisungen sind hier zu finden:&lt;br /&gt;
[https://docs.docker.com/engine/install/ubuntu/|https://docs.docker.com/engine/install/ubuntu/]&lt;br /&gt;
&lt;br /&gt;
Die ddev-Installation ist ebenfalls notwendig. Die Anweisungen sind hier zu finden:&lt;br /&gt;
[https://ddev.com/get-started/|https://ddev.com/get-started/]&lt;br /&gt;
&lt;br /&gt;
Sollten beim Installieren der Pakete Fehlermeldungen auftreten, ist es empfehlenswert, die Pakete einzeln zu installieren und auftretende Fehler/Abhängigkeiten einzeln zu lösen.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Nutzer in docker-Gruppe aufnehmen ====&lt;br /&gt;
Der aktuelle Benutzer muss in die Gruppe “docker” aufgenommen werden, sonst kann es passieren, dass dieser keinen Zugriff auf die Dockercontainer bekommt.&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;sudo usermod -aG docker $(id -un)&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Die Änderung wird aber erst nach einem Ab-/Anmelden des Nutzers wirksam. Überprüft werden kann dies danach mittels&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;id&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Hier muss die “docker”-Gruppe aufgelistet sein. Beispiel:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;uid=1000(user) gid=1000(user) groups=1000(user),4(adm),24(cdrom),..,128(docker)&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Eigenschaften der Docker Socket-Datei prüfen ====&lt;br /&gt;
Den folgenden Befehl ausführen, um die Eigenschaften der Datei anzeigen zu lassen:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;sudo ls -la /var/run/docker.sock&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Die Datei muss dabei ‘docker’ zugewiesen sein:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;rw-rw---- 1 root docker 0 Dec 21 19:16 /var/run/docker.sock&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ist dies nicht der Fall, muss die Zugehörigkeit geändert werden:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;chgrp docker /var/run/docker.sock&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== 2. Sourcecode von Git laden ==&lt;br /&gt;
=== Github ===&lt;br /&gt;
Zwar ist zum Herunterlden des Sourcecodes keine Account auf GitHub notwendig, aber zum Hochladen wird einer benötigt. Daher sollte zuerst einen Account auf https://github.com/ angelegt werden.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== optional: SSH-Keys für Repositorys anlegen und in Github eintragen ===&lt;br /&gt;
siehe https://docs.github.com/en/free-pro-team@latest/github/authenticating-to-github/connecting-to-github-with-ssh&amp;lt;br /&amp;gt;&lt;br /&gt;
oder: https://www.heise.de/tipps-tricks/SSH-Key-fuer-GitHub-Repositories-einrichten-4627459.html&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Git lokal installieren ===&lt;br /&gt;
Windows:&amp;lt;br /&amp;gt;&lt;br /&gt;
siehe: https://github.com/git-for-windows/git/releases&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Linux:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;sudo apt install git&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Sourcecode lokal herunterladen ===&lt;br /&gt;
Ein Terminal öffnen, folgende Kommandos ausführen und dabei Namen und Email-Adresse des Git-Accounts eintragen:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;git config --local user.name &amp;quot;Your Name Here&amp;quot;&lt;br /&gt;
git config --local user.email &amp;quot;your_email@youremail.com&amp;quot;&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Im Verzeichnis &amp;quot;home&amp;quot; einen Ordner &amp;quot;opencaching&amp;quot; (Name beliebig) anlegen. Dort folgenden Code ausführen. Dies legt einen Ordner mit dem Namen “oc-server3“ an, lädt den OC-Code aus deinem Github-Fork herunter und kopiert ihn in diesen Ordner.&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;git clone git@github.com:&amp;lt;DeinGithubBenutzername&amp;gt;/oc-server3&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Im Anschluss in den Ordner “oc-server3“ wechseln und den folgenden Befehl ausführen, um bei einem Update den neuesten Sourcecode aus dem Opencaching.de-Repository erhalten zu können:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;cd oc-server3&lt;br /&gt;
git remote add upstream git@github.com:OpencachingDeutschland/oc-server3&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Mit folgendem Befehl gibt es eine Übersicht über die verknüpften Repositorys, die (abgesehen vom Nutzernamen ‘Slini11’) wie in der Grafik aussehen müssen:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;git remote -v&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
[[Image:Testumgebung Git 01.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Nun den Branch “development“ auschecken:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;git checkout development&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Und den Development-Branch auf aktuellen Stand bringen:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;git pull --rebase upstream development &amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Weiterführende Informationen zu Git ===&lt;br /&gt;
Diese sind unter anderem im [[Entwicklung/Git|OC-Wiki]] zu finden&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== 3. DDEV Entwicklungsumgebung initalisieren ==&lt;br /&gt;
=== Entwicklungsumgebung zum ersten Mal starten ===&lt;br /&gt;
Zuerst in den Projektordner “oc-server3“ navigieren und dort die Installation der Testumgebung starten.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Scripte einzeln und (auch nur einmal!) ausführen ====&lt;br /&gt;
* ddev anstarten. Im Laufe dieses Prozesses wird die hosts-Datei automatisch angepasst.&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;ddev start&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Starten der Initialisierung der Testumgebung und der Datenbank. &lt;br /&gt;
 &amp;lt;nowiki&amp;gt;ddev init&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Die Entwicklungsumgebung steht nun über den Browser bereit unter:&lt;br /&gt;
  https://opencaching.ddev.site&lt;br /&gt;
  bzw.&lt;br /&gt;
  https://try-opencaching.ddev.site&lt;br /&gt;
&lt;br /&gt;
Das Passwort für den Benutzer &#039;&#039;root&#039;&#039; lautet &#039;&#039;developer&#039;&#039;. Das Passwort der anderen Benutzer (Benutzernamen siehe Datenbank) lautet &#039;&#039;password&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* Ein Mailpit steht nun über den Browser bereit (zumindest für den Legacy-Teil, für OC4 ist es noch nicht bestätigt) unter:&lt;br /&gt;
  https://opencaching.ddev.site:8026/&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Entwicklungsumgebung ein weiteres Mal starten ===&lt;br /&gt;
Eine bereits per &#039;ddev init&#039; initialisierte Testumgebung kann gestartet werden mit:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;ddev start&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Die Testumgebung kann neugestartet werden mit:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;ddev restart&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Entwicklungsumgebung stoppen ===&lt;br /&gt;
Die Testumgebung kann gestoppt werden mit:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;ddev stop&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Entwicklungsumgebung löschen ===&lt;br /&gt;
Die Testumgebung kann im Projektordner gelöscht werden mit:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;ddev delete --omit-snapshot&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Danach sind ein erneutes &#039;&#039;ddev start&#039;&#039; und &#039;&#039;ddev init&#039;&#039; notwendig.&lt;br /&gt;
&lt;br /&gt;
=== von DDEV angelegte Objekte löschen und Projekte aus der globalen DDEV-Liste löschen ===&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;ddev clean --all&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;ddev stop --unlist opencaching&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== xdebug in der Entwicklungsumgebung starten ===&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;ddev xdebug&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Ein &#039;&#039;ddev start&#039;&#039; oder &#039;&#039;ddev restart&#039;&#039; deaktiviert das xdebug wieder.&lt;br /&gt;
&lt;br /&gt;
=== Weitere ddev-Optionen.. ===&lt;br /&gt;
&#039;&#039;ddev&#039;&#039; ohne Parameter aufrufen gibt eine Liste weiterer Optionen aus.&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;ddev&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 4. Die  Testdatenbank füllen ==&lt;br /&gt;
Während der Installation wird eine Testdatenbank importiert, die bereits eine kleine Menge an Caches und Nutzern beinhaltet. Ein manueller Import des Datenbankdumps ist somit (seit März 2021) nicht mehr notwendig. &lt;br /&gt;
&lt;br /&gt;
Für den Fall, dass trotzdem Daten exportiert / importiert werden sollen, können folgende Abschnitte berücksichtigt werden:&lt;br /&gt;
&lt;br /&gt;
=== Login auf der Test-Datenbank im ddev-Container ===&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;mysql -uroot -proot -hopencaching-db opencaching&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Datenbank innerhalb des ddev-Containers exportieren ===&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;mysqldump -uroot -proot -hopencaching-db opencaching &amp;gt; file.sql&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Datenbank außerhalb des ddev-Containers exportieren ===&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;mysqldump --complete-insert --user root -proot --host 0.0.0.0 opencaching &amp;gt; dump.sql&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Datenbank im phpStorm exportieren ===&lt;br /&gt;
Auf der rechten Bildschirmseite den Databasedialog ausklappen&lt;br /&gt;
rechte Maustaste auf die zu exportierende Datenbank “opencaching” =&amp;gt; “Export with ‘mysqldump’”&lt;br /&gt;
&lt;br /&gt;
[[Image:Testumgebung DB 01.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Im Exportmenü die Zeile “Statements” umstellen auf “Insert with columns” und eventuell den Ausgabepfad “Out Path” anpassen. Im Kommandofeld den Parameter “--routines“ ergänzen und dann “Run” drücken&lt;br /&gt;
&lt;br /&gt;
[[Image:Testumgebung DB 02.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Datenbank-Dump im phpStorm importieren ===&lt;br /&gt;
Auf der rechten Bildschirmseite den Databasedialog ausklappen&lt;br /&gt;
rechte Maustaste auf die Datenbank =&amp;gt; “Restore with ‘mysql’”&lt;br /&gt;
&lt;br /&gt;
[[Image:Testumgebung DB 03.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Im Importmenü den Eingabepfad “Path to dump” anpassen, dann “Run” drücken&lt;br /&gt;
&lt;br /&gt;
[[Image:Testumgebung DB 04.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== 5. Die Entwicklungs-IDE vorbereiten ==&lt;br /&gt;
Gegebenenfalls sind an der Programmierumgebung Änderungen vorzunehmen, um zum Beispiel [[OC Coding Style|einheitlich formatierten Code]] zu schreiben. &lt;br /&gt;
&lt;br /&gt;
=== Einrichtung des PHP Coding Styles am Beispiel von phpStorm ===&lt;br /&gt;
Unter Settings / Code Style / PHP rechts auf “Set from…” klicken und “PSR-12” auswählen. Die Einstellung mit “Apply” bestätigen.&lt;br /&gt;
(Weitere Informationen zum Coding Style sind [[OC Coding Style|hier im Wiki]] zu finden.)&lt;br /&gt;
&lt;br /&gt;
[[Image:Testumgebung IDE 01.png|500px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Symfony Pfade am Beispiel phpStorm anpassen ===&lt;br /&gt;
[[Image:Testumgebung IDE 04.jpeg]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Terminalanpassung am Beispiel phpStorm (für Windows-Nutzer) ===&lt;br /&gt;
[[Image:Testumgebung IDE 05.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Datenbankanbindung in phpStorm aktivieren ===&lt;br /&gt;
Seit ddev als Umgebung genutzt wird, bietet sich das ddev-Plugin im phpStorm an. Es richtet z.B. den Zugang zur opencaching-Datenbank in der Testumgebung sowie weitere Einstellungen automatisch ein.&lt;br /&gt;
Hierzu im phpStorm im Menü Datei/Einstellungen.. zum Abschnitt &#039;&#039;Plugins&#039;&#039; navigieren, im Suchfeld &#039;&#039;ddev&#039;&#039; eintippen und das Plugin installieren.&lt;br /&gt;
[[Image:Testumgebung IDE 06.jpg]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Synchronisieren/Wiederherstellen der Benutzereinstellungen mittels JetBrains-Server ===&lt;br /&gt;
Sofern man bei JetBrains einen Account hat, kann man mit diesem die Einstellungen der lokalen IDE synchronisieren und z.B. nach einer Neuinstallation von dort wiederherstellen.&lt;br /&gt;
&lt;br /&gt;
Hierzu in der IDE rechts oben auf das Zahnrad klicken und “Settings Sync is off” auswählen.&amp;lt;/br&amp;gt;&lt;br /&gt;
[[Image:Testumgebung IDE 02.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Im folgenden Fenster den Button “Enable Settings Sync” klicken und danach alle Einstellungen auswählen, die man sichern möchte. Ein Klick auf “Push Settings to Account” sichert die Einstellungen. Ein Klick auf “Get Settings from Account” stellt sie wieder her, sofern sie vorher dorthin gesichert wurden.&lt;br /&gt;
[[Image:Testumgebung IDE 03.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== 6. Das Fehlerhandbuch lesen (gilt insbesondere für die Schritte #1-#4 :wink:) ==&lt;br /&gt;
&lt;br /&gt;
Beireits bekannte Fehler werden im [[Entwicklungsumgebung/Fehlerhandbuch|Fehlerhandbuch]] beschrieben.&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Entwicklung|Entwicklungsumgebung ]]&lt;/div&gt;</summary>
		<author><name>Fraggle</name></author>
	</entry>
	<entry>
		<id>https://wiki.opencaching.de/index.php?title=Entwicklungsumgebung_einrichten&amp;diff=8082</id>
		<title>Entwicklungsumgebung einrichten</title>
		<link rel="alternate" type="text/html" href="https://wiki.opencaching.de/index.php?title=Entwicklungsumgebung_einrichten&amp;diff=8082"/>
		<updated>2026-04-29T08:57:51Z</updated>

		<summary type="html">&lt;p&gt;Fraggle: docker + docker-Gruppe wieder ergänzt&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Das Einrichten der Testumgebung erfolgt in mehreren Schritten, die im folgenden beschrieben sind. Falls es dabei zu unerwarteten Fehlermeldungen kommt, bitte die letzten Schritte noch einmal genau anschauen und gegebenenfalls wiederholen. Auch ein Blick ins Fehlerhandbuch hilft meistens, da bereits viele Fallstricke entdeckt und beschrieben wurden.&lt;br /&gt;
&lt;br /&gt;
== 1. Das Betriebssystem vorbereiten, entweder Linux oder Windows ==&lt;br /&gt;
=== Windows 10 ===&lt;br /&gt;
==== Programme installieren ====&lt;br /&gt;
Unter Windows ist es standardmäßig nicht möglich, “einfach“ die Linux Distribution Ubuntu zu installieren. Dazu muss vorab erst das WSL2 aktiviert / installiert werden werden (Punkt 1). Im Anschluss ist eine Installation von Ubuntu (18.04 oder höher) möglich. Zudem muss DDEV installiert werden, in welchem dann die Entwicklungsumgebung laufen kann (Punkt 2).&lt;br /&gt;
&lt;br /&gt;
# WSL2 unter Windows10 aktivieren und Ubuntu installieren: &lt;br /&gt;
## Aus dem Microsoft-Store: https://aka.ms/wslstorepage (verfügbar seit Nov. 2022) &lt;br /&gt;
## Manuell unter [https://learn.microsoft.com/de-de/windows/wsl/install#manual-installation-steps|Installieren von WSL]&lt;br /&gt;
# DDEV für Windows installieren: [https://docs.ddev.com/en/stable/#system-requirements-windows-wsl2|Install DDEV WSL2]&lt;br /&gt;
&lt;br /&gt;
Danach kann Ubuntu gestartet werden (z.B. im “Such“-Menü nach Ubuntu suchen und anklicken). Beim erstmaligen Starten von Ubuntu müssen ein Benutzername und ein Passwort festgelegt werden.&lt;br /&gt;
&lt;br /&gt;
Im Anschluss den Punkten folgen und ausführen, die im nächsten Schritt “Linux” beschrieben werden.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Linux ===&lt;br /&gt;
Der Linuxartikel wurde erstellt auf Lubuntu 22.04 und erweitert mit Debian 12&lt;br /&gt;
&lt;br /&gt;
==== Programme installieren ====&lt;br /&gt;
Folgende Programme sind notwendig und müssen vorab installiert werden:&lt;br /&gt;
PHP (aktuell mindestens PHP8.2), diverse PHP-Erweiterungen, ddev, mariadb-client. Für die PHP-Erweiterungen ist eventuell ein zusätzliches PPA-Repository notwendig. Dessen Installation erfordert je nach Betriebssystem ein unterschiedliches Vorgehen.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;Ubuntu:&lt;br /&gt;
sudo apt install software-properties-common&lt;br /&gt;
sudo add-apt-repository ppa:ondrej/php&lt;br /&gt;
&lt;br /&gt;
Debian:&lt;br /&gt;
sudo apt install software-properties-common ca-certificates lsb-release apt-transport-https&lt;br /&gt;
curl -sSL https://packages.sury.org/php/README.txt | sudo bash -x&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Die Pakete lassen sich mit folgenden Befehlen installieren (Versionsnummer kann abweichen).&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;sudo apt update&lt;br /&gt;
sudo apt install php8.2 php8.2-mbstring php8.2-curl php8.2-xml php8.2-mysql&lt;br /&gt;
sudo apt install mariadb-client&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Die docker-Installation ist ebenfalls notwendig. Die Anweisungen sind hier zu finden:&lt;br /&gt;
[https://docs.docker.com/engine/install/ubuntu/|https://docs.docker.com/engine/install/ubuntu/]&lt;br /&gt;
&lt;br /&gt;
Die ddev-Installation ist ebenfalls notwendig. Die Anweisungen sind hier zu finden:&lt;br /&gt;
[https://ddev.com/get-started/|https://ddev.com/get-started/]&lt;br /&gt;
&lt;br /&gt;
Sollten beim Installieren der Pakete Fehlermeldungen auftreten, ist es empfehlenswert, die Pakete einzeln zu installieren und auftretende Fehler/Abhängigkeiten einzeln zu lösen.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Nutzer in docker-Gruppe aufnehmen ====&lt;br /&gt;
Der aktuelle Benutzer muss in die Gruppe “docker” aufgenommen werden, sonst kann es passieren, dass dieser keinen Zugriff auf die Dockercontainer bekommt.&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;sudo usermod -aG docker $(id -un)&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Die Änderung wird aber erst nach einem Ab-/Anmelden des Nutzers wirksam. Überprüft werden kann dies danach mittels&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;id&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Hier muss die “docker”-Gruppe aufgelistet sein. Beispiel:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;uid=1000(user) gid=1000(user) groups=1000(user),4(adm),24(cdrom),..,128(docker)&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== 2. Sourcecode von Git laden ==&lt;br /&gt;
=== Github ===&lt;br /&gt;
Zwar ist zum Herunterlden des Sourcecodes keine Account auf GitHub notwendig, aber zum Hochladen wird einer benötigt. Daher sollte zuerst einen Account auf https://github.com/ angelegt werden.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== optional: SSH-Keys für Repositorys anlegen und in Github eintragen ===&lt;br /&gt;
siehe https://docs.github.com/en/free-pro-team@latest/github/authenticating-to-github/connecting-to-github-with-ssh&amp;lt;br /&amp;gt;&lt;br /&gt;
oder: https://www.heise.de/tipps-tricks/SSH-Key-fuer-GitHub-Repositories-einrichten-4627459.html&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Git lokal installieren ===&lt;br /&gt;
Windows:&amp;lt;br /&amp;gt;&lt;br /&gt;
siehe: https://github.com/git-for-windows/git/releases&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Linux:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;sudo apt install git&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Sourcecode lokal herunterladen ===&lt;br /&gt;
Ein Terminal öffnen, folgende Kommandos ausführen und dabei Namen und Email-Adresse des Git-Accounts eintragen:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;git config --local user.name &amp;quot;Your Name Here&amp;quot;&lt;br /&gt;
git config --local user.email &amp;quot;your_email@youremail.com&amp;quot;&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Im Verzeichnis &amp;quot;home&amp;quot; einen Ordner &amp;quot;opencaching&amp;quot; (Name beliebig) anlegen. Dort folgenden Code ausführen. Dies legt einen Ordner mit dem Namen “oc-server3“ an, lädt den OC-Code aus deinem Github-Fork herunter und kopiert ihn in diesen Ordner.&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;git clone git@github.com:&amp;lt;DeinGithubBenutzername&amp;gt;/oc-server3&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Im Anschluss in den Ordner “oc-server3“ wechseln und den folgenden Befehl ausführen, um bei einem Update den neuesten Sourcecode aus dem Opencaching.de-Repository erhalten zu können:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;cd oc-server3&lt;br /&gt;
git remote add upstream git@github.com:OpencachingDeutschland/oc-server3&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Mit folgendem Befehl gibt es eine Übersicht über die verknüpften Repositorys, die (abgesehen vom Nutzernamen ‘Slini11’) wie in der Grafik aussehen müssen:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;git remote -v&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
[[Image:Testumgebung Git 01.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Nun den Branch “development“ auschecken:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;git checkout development&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Und den Development-Branch auf aktuellen Stand bringen:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;git pull --rebase upstream development &amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Weiterführende Informationen zu Git ===&lt;br /&gt;
Diese sind unter anderem im [[Entwicklung/Git|OC-Wiki]] zu finden&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== 3. DDEV Entwicklungsumgebung initalisieren ==&lt;br /&gt;
=== Entwicklungsumgebung zum ersten Mal starten ===&lt;br /&gt;
Zuerst in den Projektordner “oc-server3“ navigieren und dort die Installation der Testumgebung starten.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Scripte einzeln und (auch nur einmal!) ausführen ====&lt;br /&gt;
* ddev anstarten. Im Laufe dieses Prozesses wird die hosts-Datei automatisch angepasst.&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;ddev start&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Starten der Initialisierung der Testumgebung und der Datenbank. &lt;br /&gt;
 &amp;lt;nowiki&amp;gt;ddev init&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Die Entwicklungsumgebung steht nun über den Browser bereit unter:&lt;br /&gt;
  https://opencaching.ddev.site&lt;br /&gt;
  bzw.&lt;br /&gt;
  https://try-opencaching.ddev.site&lt;br /&gt;
&lt;br /&gt;
Das Passwort für den Benutzer &#039;&#039;root&#039;&#039; lautet &#039;&#039;developer&#039;&#039;. Das Passwort der anderen Benutzer (Benutzernamen siehe Datenbank) lautet &#039;&#039;password&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* Ein Mailpit steht nun über den Browser bereit (zumindest für den Legacy-Teil, für OC4 ist es noch nicht bestätigt) unter:&lt;br /&gt;
  https://opencaching.ddev.site:8026/&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Entwicklungsumgebung ein weiteres Mal starten ===&lt;br /&gt;
Eine bereits per &#039;ddev init&#039; initialisierte Testumgebung kann gestartet werden mit:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;ddev start&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Die Testumgebung kann neugestartet werden mit:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;ddev restart&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Entwicklungsumgebung stoppen ===&lt;br /&gt;
Die Testumgebung kann gestoppt werden mit:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;ddev stop&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Entwicklungsumgebung löschen ===&lt;br /&gt;
Die Testumgebung kann im Projektordner gelöscht werden mit:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;ddev delete --omit-snapshot&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Danach sind ein erneutes &#039;&#039;ddev start&#039;&#039; und &#039;&#039;ddev init&#039;&#039; notwendig.&lt;br /&gt;
&lt;br /&gt;
=== von DDEV angelegte Objekte löschen und Projekte aus der globalen DDEV-Liste löschen ===&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;ddev clean --all&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;ddev stop --unlist opencaching&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== xdebug in der Entwicklungsumgebung starten ===&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;ddev xdebug&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Ein &#039;&#039;ddev start&#039;&#039; oder &#039;&#039;ddev restart&#039;&#039; deaktiviert das xdebug wieder.&lt;br /&gt;
&lt;br /&gt;
=== Weitere ddev-Optionen.. ===&lt;br /&gt;
&#039;&#039;ddev&#039;&#039; ohne Parameter aufrufen gibt eine Liste weiterer Optionen aus.&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;ddev&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 4. Die  Testdatenbank füllen ==&lt;br /&gt;
Während der Installation wird eine Testdatenbank importiert, die bereits eine kleine Menge an Caches und Nutzern beinhaltet. Ein manueller Import des Datenbankdumps ist somit (seit März 2021) nicht mehr notwendig. &lt;br /&gt;
&lt;br /&gt;
Für den Fall, dass trotzdem Daten exportiert / importiert werden sollen, können folgende Abschnitte berücksichtigt werden:&lt;br /&gt;
&lt;br /&gt;
=== Login auf der Test-Datenbank im ddev-Container ===&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;mysql -uroot -proot -hopencaching-db opencaching&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Datenbank innerhalb des ddev-Containers exportieren ===&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;mysqldump -uroot -proot -hopencaching-db opencaching &amp;gt; file.sql&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Datenbank außerhalb des ddev-Containers exportieren ===&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;mysqldump --complete-insert --user root -proot --host 0.0.0.0 opencaching &amp;gt; dump.sql&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Datenbank im phpStorm exportieren ===&lt;br /&gt;
Auf der rechten Bildschirmseite den Databasedialog ausklappen&lt;br /&gt;
rechte Maustaste auf die zu exportierende Datenbank “opencaching” =&amp;gt; “Export with ‘mysqldump’”&lt;br /&gt;
&lt;br /&gt;
[[Image:Testumgebung DB 01.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Im Exportmenü die Zeile “Statements” umstellen auf “Insert with columns” und eventuell den Ausgabepfad “Out Path” anpassen. Im Kommandofeld den Parameter “--routines“ ergänzen und dann “Run” drücken&lt;br /&gt;
&lt;br /&gt;
[[Image:Testumgebung DB 02.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Datenbank-Dump im phpStorm importieren ===&lt;br /&gt;
Auf der rechten Bildschirmseite den Databasedialog ausklappen&lt;br /&gt;
rechte Maustaste auf die Datenbank =&amp;gt; “Restore with ‘mysql’”&lt;br /&gt;
&lt;br /&gt;
[[Image:Testumgebung DB 03.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Im Importmenü den Eingabepfad “Path to dump” anpassen, dann “Run” drücken&lt;br /&gt;
&lt;br /&gt;
[[Image:Testumgebung DB 04.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== 5. Die Entwicklungs-IDE vorbereiten ==&lt;br /&gt;
Gegebenenfalls sind an der Programmierumgebung Änderungen vorzunehmen, um zum Beispiel [[OC Coding Style|einheitlich formatierten Code]] zu schreiben. &lt;br /&gt;
&lt;br /&gt;
=== Einrichtung des PHP Coding Styles am Beispiel von phpStorm ===&lt;br /&gt;
Unter Settings / Code Style / PHP rechts auf “Set from…” klicken und “PSR-12” auswählen. Die Einstellung mit “Apply” bestätigen.&lt;br /&gt;
(Weitere Informationen zum Coding Style sind [[OC Coding Style|hier im Wiki]] zu finden.)&lt;br /&gt;
&lt;br /&gt;
[[Image:Testumgebung IDE 01.png|500px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Symfony Pfade am Beispiel phpStorm anpassen ===&lt;br /&gt;
[[Image:Testumgebung IDE 04.jpeg]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Terminalanpassung am Beispiel phpStorm (für Windows-Nutzer) ===&lt;br /&gt;
[[Image:Testumgebung IDE 05.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Datenbankanbindung in phpStorm aktivieren ===&lt;br /&gt;
Seit ddev als Umgebung genutzt wird, bietet sich das ddev-Plugin im phpStorm an. Es richtet z.B. den Zugang zur opencaching-Datenbank in der Testumgebung sowie weitere Einstellungen automatisch ein.&lt;br /&gt;
Hierzu im phpStorm im Menü Datei/Einstellungen.. zum Abschnitt &#039;&#039;Plugins&#039;&#039; navigieren, im Suchfeld &#039;&#039;ddev&#039;&#039; eintippen und das Plugin installieren.&lt;br /&gt;
[[Image:Testumgebung IDE 06.jpg]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Synchronisieren/Wiederherstellen der Benutzereinstellungen mittels JetBrains-Server ===&lt;br /&gt;
Sofern man bei JetBrains einen Account hat, kann man mit diesem die Einstellungen der lokalen IDE synchronisieren und z.B. nach einer Neuinstallation von dort wiederherstellen.&lt;br /&gt;
&lt;br /&gt;
Hierzu in der IDE rechts oben auf das Zahnrad klicken und “Settings Sync is off” auswählen.&amp;lt;/br&amp;gt;&lt;br /&gt;
[[Image:Testumgebung IDE 02.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Im folgenden Fenster den Button “Enable Settings Sync” klicken und danach alle Einstellungen auswählen, die man sichern möchte. Ein Klick auf “Push Settings to Account” sichert die Einstellungen. Ein Klick auf “Get Settings from Account” stellt sie wieder her, sofern sie vorher dorthin gesichert wurden.&lt;br /&gt;
[[Image:Testumgebung IDE 03.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== 6. Das Fehlerhandbuch lesen (gilt insbesondere für die Schritte #1-#4 :wink:) ==&lt;br /&gt;
&lt;br /&gt;
Beireits bekannte Fehler werden im [[Entwicklungsumgebung/Fehlerhandbuch|Fehlerhandbuch]] beschrieben.&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Entwicklung|Entwicklungsumgebung ]]&lt;/div&gt;</summary>
		<author><name>Fraggle</name></author>
	</entry>
	<entry>
		<id>https://wiki.opencaching.de/index.php?title=Entwicklungsumgebung_einrichten&amp;diff=8081</id>
		<title>Entwicklungsumgebung einrichten</title>
		<link rel="alternate" type="text/html" href="https://wiki.opencaching.de/index.php?title=Entwicklungsumgebung_einrichten&amp;diff=8081"/>
		<updated>2026-04-29T08:49:34Z</updated>

		<summary type="html">&lt;p&gt;Fraggle: ddev Installationslink&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Das Einrichten der Testumgebung erfolgt in mehreren Schritten, die im folgenden beschrieben sind. Falls es dabei zu unerwarteten Fehlermeldungen kommt, bitte die letzten Schritte noch einmal genau anschauen und gegebenenfalls wiederholen. Auch ein Blick ins Fehlerhandbuch hilft meistens, da bereits viele Fallstricke entdeckt und beschrieben wurden.&lt;br /&gt;
&lt;br /&gt;
== 1. Das Betriebssystem vorbereiten, entweder Linux oder Windows ==&lt;br /&gt;
=== Windows 10 ===&lt;br /&gt;
==== Programme installieren ====&lt;br /&gt;
Unter Windows ist es standardmäßig nicht möglich, “einfach“ die Linux Distribution Ubuntu zu installieren. Dazu muss vorab erst das WSL2 aktiviert / installiert werden werden (Punkt 1). Im Anschluss ist eine Installation von Ubuntu (18.04 oder höher) möglich. Zudem muss DDEV installiert werden, in welchem dann die Entwicklungsumgebung laufen kann (Punkt 2).&lt;br /&gt;
&lt;br /&gt;
# WSL2 unter Windows10 aktivieren und Ubuntu installieren: &lt;br /&gt;
## Aus dem Microsoft-Store: https://aka.ms/wslstorepage (verfügbar seit Nov. 2022) &lt;br /&gt;
## Manuell unter [https://learn.microsoft.com/de-de/windows/wsl/install#manual-installation-steps|Installieren von WSL]&lt;br /&gt;
# DDEV für Windows installieren: [https://docs.ddev.com/en/stable/#system-requirements-windows-wsl2|Install DDEV WSL2]&lt;br /&gt;
&lt;br /&gt;
Danach kann Ubuntu gestartet werden (z.B. im “Such“-Menü nach Ubuntu suchen und anklicken). Beim erstmaligen Starten von Ubuntu müssen ein Benutzername und ein Passwort festgelegt werden.&lt;br /&gt;
&lt;br /&gt;
Im Anschluss den Punkten folgen und ausführen, die im nächsten Schritt “Linux” beschrieben werden.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Linux ===&lt;br /&gt;
Der Linuxartikel wurde erstellt auf Lubuntu 22.04 und erweitert mit Debian 12&lt;br /&gt;
&lt;br /&gt;
==== Programme installieren ====&lt;br /&gt;
Folgende Programme sind notwendig und müssen vorab installiert werden:&lt;br /&gt;
PHP (aktuell mindestens PHP8.2), diverse PHP-Erweiterungen, ddev, mariadb-client. Für die PHP-Erweiterungen ist eventuell ein zusätzliches PPA-Repository notwendig. Dessen Installation erfordert je nach Betriebssystem ein unterschiedliches Vorgehen.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;Ubuntu:&lt;br /&gt;
sudo apt install software-properties-common&lt;br /&gt;
sudo add-apt-repository ppa:ondrej/php&lt;br /&gt;
&lt;br /&gt;
Debian:&lt;br /&gt;
sudo apt install software-properties-common ca-certificates lsb-release apt-transport-https&lt;br /&gt;
curl -sSL https://packages.sury.org/php/README.txt | sudo bash -x&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Die Pakete lassen sich mit folgenden Befehlen installieren (Versionsnummer kann abweichen).&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;sudo apt update&lt;br /&gt;
sudo apt install php8.2 php8.2-mbstring php8.2-curl php8.2-xml php8.2-mysql&lt;br /&gt;
sudo apt install mariadb-client&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Die ddev-Installation ist ebenfalls notwendig. Die Anweisungen sind hier zu finden:&lt;br /&gt;
[https://ddev.com/get-started/|https://ddev.com/get-started/]&lt;br /&gt;
&lt;br /&gt;
Sollten beim Installieren der Pakete Fehlermeldungen auftreten, ist es empfehlenswert, die Pakete einzeln zu installieren und auftretende Fehler/Abhängigkeiten einzeln zu lösen.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== 2. Sourcecode von Git laden ==&lt;br /&gt;
=== Github ===&lt;br /&gt;
Zwar ist zum Herunterlden des Sourcecodes keine Account auf GitHub notwendig, aber zum Hochladen wird einer benötigt. Daher sollte zuerst einen Account auf https://github.com/ angelegt werden.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== optional: SSH-Keys für Repositorys anlegen und in Github eintragen ===&lt;br /&gt;
siehe https://docs.github.com/en/free-pro-team@latest/github/authenticating-to-github/connecting-to-github-with-ssh&amp;lt;br /&amp;gt;&lt;br /&gt;
oder: https://www.heise.de/tipps-tricks/SSH-Key-fuer-GitHub-Repositories-einrichten-4627459.html&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Git lokal installieren ===&lt;br /&gt;
Windows:&amp;lt;br /&amp;gt;&lt;br /&gt;
siehe: https://github.com/git-for-windows/git/releases&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Linux:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;sudo apt install git&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Sourcecode lokal herunterladen ===&lt;br /&gt;
Ein Terminal öffnen, folgende Kommandos ausführen und dabei Namen und Email-Adresse des Git-Accounts eintragen:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;git config --local user.name &amp;quot;Your Name Here&amp;quot;&lt;br /&gt;
git config --local user.email &amp;quot;your_email@youremail.com&amp;quot;&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Im Verzeichnis &amp;quot;home&amp;quot; einen Ordner &amp;quot;opencaching&amp;quot; (Name beliebig) anlegen. Dort folgenden Code ausführen. Dies legt einen Ordner mit dem Namen “oc-server3“ an, lädt den OC-Code aus deinem Github-Fork herunter und kopiert ihn in diesen Ordner.&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;git clone git@github.com:&amp;lt;DeinGithubBenutzername&amp;gt;/oc-server3&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Im Anschluss in den Ordner “oc-server3“ wechseln und den folgenden Befehl ausführen, um bei einem Update den neuesten Sourcecode aus dem Opencaching.de-Repository erhalten zu können:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;cd oc-server3&lt;br /&gt;
git remote add upstream git@github.com:OpencachingDeutschland/oc-server3&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Mit folgendem Befehl gibt es eine Übersicht über die verknüpften Repositorys, die (abgesehen vom Nutzernamen ‘Slini11’) wie in der Grafik aussehen müssen:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;git remote -v&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
[[Image:Testumgebung Git 01.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Nun den Branch “development“ auschecken:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;git checkout development&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Und den Development-Branch auf aktuellen Stand bringen:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;git pull --rebase upstream development &amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Weiterführende Informationen zu Git ===&lt;br /&gt;
Diese sind unter anderem im [[Entwicklung/Git|OC-Wiki]] zu finden&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== 3. DDEV Entwicklungsumgebung initalisieren ==&lt;br /&gt;
=== Entwicklungsumgebung zum ersten Mal starten ===&lt;br /&gt;
Zuerst in den Projektordner “oc-server3“ navigieren und dort die Installation der Testumgebung starten.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Scripte einzeln und (auch nur einmal!) ausführen ====&lt;br /&gt;
* ddev anstarten. Im Laufe dieses Prozesses wird die hosts-Datei automatisch angepasst.&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;ddev start&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Starten der Initialisierung der Testumgebung und der Datenbank. &lt;br /&gt;
 &amp;lt;nowiki&amp;gt;ddev init&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Die Entwicklungsumgebung steht nun über den Browser bereit unter:&lt;br /&gt;
  https://opencaching.ddev.site&lt;br /&gt;
  bzw.&lt;br /&gt;
  https://try-opencaching.ddev.site&lt;br /&gt;
&lt;br /&gt;
Das Passwort für den Benutzer &#039;&#039;root&#039;&#039; lautet &#039;&#039;developer&#039;&#039;. Das Passwort der anderen Benutzer (Benutzernamen siehe Datenbank) lautet &#039;&#039;password&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* Ein Mailpit steht nun über den Browser bereit (zumindest für den Legacy-Teil, für OC4 ist es noch nicht bestätigt) unter:&lt;br /&gt;
  https://opencaching.ddev.site:8026/&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Entwicklungsumgebung ein weiteres Mal starten ===&lt;br /&gt;
Eine bereits per &#039;ddev init&#039; initialisierte Testumgebung kann gestartet werden mit:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;ddev start&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Die Testumgebung kann neugestartet werden mit:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;ddev restart&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Entwicklungsumgebung stoppen ===&lt;br /&gt;
Die Testumgebung kann gestoppt werden mit:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;ddev stop&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Entwicklungsumgebung löschen ===&lt;br /&gt;
Die Testumgebung kann im Projektordner gelöscht werden mit:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;ddev delete --omit-snapshot&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Danach sind ein erneutes &#039;&#039;ddev start&#039;&#039; und &#039;&#039;ddev init&#039;&#039; notwendig.&lt;br /&gt;
&lt;br /&gt;
=== von DDEV angelegte Objekte löschen und Projekte aus der globalen DDEV-Liste löschen ===&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;ddev clean --all&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;ddev stop --unlist opencaching&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== xdebug in der Entwicklungsumgebung starten ===&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;ddev xdebug&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Ein &#039;&#039;ddev start&#039;&#039; oder &#039;&#039;ddev restart&#039;&#039; deaktiviert das xdebug wieder.&lt;br /&gt;
&lt;br /&gt;
=== Weitere ddev-Optionen.. ===&lt;br /&gt;
&#039;&#039;ddev&#039;&#039; ohne Parameter aufrufen gibt eine Liste weiterer Optionen aus.&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;ddev&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 4. Die  Testdatenbank füllen ==&lt;br /&gt;
Während der Installation wird eine Testdatenbank importiert, die bereits eine kleine Menge an Caches und Nutzern beinhaltet. Ein manueller Import des Datenbankdumps ist somit (seit März 2021) nicht mehr notwendig. &lt;br /&gt;
&lt;br /&gt;
Für den Fall, dass trotzdem Daten exportiert / importiert werden sollen, können folgende Abschnitte berücksichtigt werden:&lt;br /&gt;
&lt;br /&gt;
=== Login auf der Test-Datenbank im ddev-Container ===&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;mysql -uroot -proot -hopencaching-db opencaching&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Datenbank innerhalb des ddev-Containers exportieren ===&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;mysqldump -uroot -proot -hopencaching-db opencaching &amp;gt; file.sql&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Datenbank außerhalb des ddev-Containers exportieren ===&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;mysqldump --complete-insert --user root -proot --host 0.0.0.0 opencaching &amp;gt; dump.sql&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Datenbank im phpStorm exportieren ===&lt;br /&gt;
Auf der rechten Bildschirmseite den Databasedialog ausklappen&lt;br /&gt;
rechte Maustaste auf die zu exportierende Datenbank “opencaching” =&amp;gt; “Export with ‘mysqldump’”&lt;br /&gt;
&lt;br /&gt;
[[Image:Testumgebung DB 01.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Im Exportmenü die Zeile “Statements” umstellen auf “Insert with columns” und eventuell den Ausgabepfad “Out Path” anpassen. Im Kommandofeld den Parameter “--routines“ ergänzen und dann “Run” drücken&lt;br /&gt;
&lt;br /&gt;
[[Image:Testumgebung DB 02.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Datenbank-Dump im phpStorm importieren ===&lt;br /&gt;
Auf der rechten Bildschirmseite den Databasedialog ausklappen&lt;br /&gt;
rechte Maustaste auf die Datenbank =&amp;gt; “Restore with ‘mysql’”&lt;br /&gt;
&lt;br /&gt;
[[Image:Testumgebung DB 03.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Im Importmenü den Eingabepfad “Path to dump” anpassen, dann “Run” drücken&lt;br /&gt;
&lt;br /&gt;
[[Image:Testumgebung DB 04.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== 5. Die Entwicklungs-IDE vorbereiten ==&lt;br /&gt;
Gegebenenfalls sind an der Programmierumgebung Änderungen vorzunehmen, um zum Beispiel [[OC Coding Style|einheitlich formatierten Code]] zu schreiben. &lt;br /&gt;
&lt;br /&gt;
=== Einrichtung des PHP Coding Styles am Beispiel von phpStorm ===&lt;br /&gt;
Unter Settings / Code Style / PHP rechts auf “Set from…” klicken und “PSR-12” auswählen. Die Einstellung mit “Apply” bestätigen.&lt;br /&gt;
(Weitere Informationen zum Coding Style sind [[OC Coding Style|hier im Wiki]] zu finden.)&lt;br /&gt;
&lt;br /&gt;
[[Image:Testumgebung IDE 01.png|500px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Symfony Pfade am Beispiel phpStorm anpassen ===&lt;br /&gt;
[[Image:Testumgebung IDE 04.jpeg]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Terminalanpassung am Beispiel phpStorm (für Windows-Nutzer) ===&lt;br /&gt;
[[Image:Testumgebung IDE 05.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Datenbankanbindung in phpStorm aktivieren ===&lt;br /&gt;
Seit ddev als Umgebung genutzt wird, bietet sich das ddev-Plugin im phpStorm an. Es richtet z.B. den Zugang zur opencaching-Datenbank in der Testumgebung sowie weitere Einstellungen automatisch ein.&lt;br /&gt;
Hierzu im phpStorm im Menü Datei/Einstellungen.. zum Abschnitt &#039;&#039;Plugins&#039;&#039; navigieren, im Suchfeld &#039;&#039;ddev&#039;&#039; eintippen und das Plugin installieren.&lt;br /&gt;
[[Image:Testumgebung IDE 06.jpg]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Synchronisieren/Wiederherstellen der Benutzereinstellungen mittels JetBrains-Server ===&lt;br /&gt;
Sofern man bei JetBrains einen Account hat, kann man mit diesem die Einstellungen der lokalen IDE synchronisieren und z.B. nach einer Neuinstallation von dort wiederherstellen.&lt;br /&gt;
&lt;br /&gt;
Hierzu in der IDE rechts oben auf das Zahnrad klicken und “Settings Sync is off” auswählen.&amp;lt;/br&amp;gt;&lt;br /&gt;
[[Image:Testumgebung IDE 02.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Im folgenden Fenster den Button “Enable Settings Sync” klicken und danach alle Einstellungen auswählen, die man sichern möchte. Ein Klick auf “Push Settings to Account” sichert die Einstellungen. Ein Klick auf “Get Settings from Account” stellt sie wieder her, sofern sie vorher dorthin gesichert wurden.&lt;br /&gt;
[[Image:Testumgebung IDE 03.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== 6. Das Fehlerhandbuch lesen (gilt insbesondere für die Schritte #1-#4 :wink:) ==&lt;br /&gt;
&lt;br /&gt;
Beireits bekannte Fehler werden im [[Entwicklungsumgebung/Fehlerhandbuch|Fehlerhandbuch]] beschrieben.&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Entwicklung|Entwicklungsumgebung ]]&lt;/div&gt;</summary>
		<author><name>Fraggle</name></author>
	</entry>
	<entry>
		<id>https://wiki.opencaching.de/index.php?title=Entwicklungsumgebung_einrichten&amp;diff=8079</id>
		<title>Entwicklungsumgebung einrichten</title>
		<link rel="alternate" type="text/html" href="https://wiki.opencaching.de/index.php?title=Entwicklungsumgebung_einrichten&amp;diff=8079"/>
		<updated>2026-04-09T18:52:17Z</updated>

		<summary type="html">&lt;p&gt;Fraggle: ddev-Anweisungen erweitert&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Das Einrichten der Testumgebung erfolgt in mehreren Schritten, die im folgenden beschrieben sind. Falls es dabei zu unerwarteten Fehlermeldungen kommt, bitte die letzten Schritte noch einmal genau anschauen und gegebenenfalls wiederholen. Auch ein Blick ins Fehlerhandbuch hilft meistens, da bereits viele Fallstricke entdeckt und beschrieben wurden.&lt;br /&gt;
&lt;br /&gt;
== 1. Das Betriebssystem vorbereiten, entweder Linux oder Windows ==&lt;br /&gt;
=== Windows 10 ===&lt;br /&gt;
==== Programme installieren ====&lt;br /&gt;
Unter Windows ist es standardmäßig nicht möglich, “einfach“ die Linux Distribution Ubuntu zu installieren. Dazu muss vorab erst das WSL2 aktiviert / installiert werden werden (Punkt 1). Im Anschluss ist eine Installation von Ubuntu (18.04 oder höher) möglich. Zudem muss DDEV installiert werden, in welchem dann die Entwicklungsumgebung laufen kann (Punkt 2).&lt;br /&gt;
&lt;br /&gt;
# WSL2 unter Windows10 aktivieren und Ubuntu installieren: &lt;br /&gt;
## Aus dem Microsoft-Store: https://aka.ms/wslstorepage (verfügbar seit Nov. 2022) &lt;br /&gt;
## Manuell unter [https://learn.microsoft.com/de-de/windows/wsl/install#manual-installation-steps|Installieren von WSL]&lt;br /&gt;
# DDEV für Windows installieren: [https://docs.ddev.com/en/stable/#system-requirements-windows-wsl2|Install DDEV WSL2]&lt;br /&gt;
&lt;br /&gt;
Danach kann Ubuntu gestartet werden (z.B. im “Such“-Menü nach Ubuntu suchen und anklicken). Beim erstmaligen Starten von Ubuntu müssen ein Benutzername und ein Passwort festgelegt werden.&lt;br /&gt;
&lt;br /&gt;
Im Anschluss den Punkten folgen und ausführen, die im nächsten Schritt “Linux” beschrieben werden.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Linux ===&lt;br /&gt;
Der Linuxartikel wurde erstellt auf Lubuntu 22.04 und erweitert mit Debian 12&lt;br /&gt;
&lt;br /&gt;
==== Programme installieren ====&lt;br /&gt;
Folgende Programme sind notwendig und müssen vorab installiert werden:&lt;br /&gt;
PHP (aktuell mindestens PHP8.2), diverse PHP-Erweiterungen, ddev, mariadb-client. Für die PHP-Erweiterungen ist eventuell ein zusätzliches PPA-Repository notwendig. Dessen Installation erfordert je nach Betriebssystem ein unterschiedliches Vorgehen.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;Ubuntu:&lt;br /&gt;
sudo apt install software-properties-common&lt;br /&gt;
sudo add-apt-repository ppa:ondrej/php&lt;br /&gt;
&lt;br /&gt;
Debian:&lt;br /&gt;
sudo apt install software-properties-common ca-certificates lsb-release apt-transport-https&lt;br /&gt;
curl -sSL https://packages.sury.org/php/README.txt | sudo bash -x&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Die Pakete lassen sich mit folgenden Befehlen installieren (Versionsnummer kann abweichen).&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;sudo apt update&lt;br /&gt;
sudo apt install php8.2 php8.2-mbstring php8.2-curl php8.2-xml php8.2-mysql&lt;br /&gt;
sudo apt install mariadb-client&lt;br /&gt;
sudo apt install ddev&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Sollten beim Installieren der Pakete Fehlermeldungen auftreten, ist es empfehlenswert, die Pakete einzeln zu installieren und auftretende Fehler/Abhängigkeiten einzeln zu lösen.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== 2. Sourcecode von Git laden ==&lt;br /&gt;
=== Github ===&lt;br /&gt;
Zwar ist zum Herunterlden des Sourcecodes keine Account auf GitHub notwendig, aber zum Hochladen wird einer benötigt. Daher sollte zuerst einen Account auf https://github.com/ angelegt werden.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== optional: SSH-Keys für Repositorys anlegen und in Github eintragen ===&lt;br /&gt;
siehe https://docs.github.com/en/free-pro-team@latest/github/authenticating-to-github/connecting-to-github-with-ssh&amp;lt;br /&amp;gt;&lt;br /&gt;
oder: https://www.heise.de/tipps-tricks/SSH-Key-fuer-GitHub-Repositories-einrichten-4627459.html&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Git lokal installieren ===&lt;br /&gt;
Windows:&amp;lt;br /&amp;gt;&lt;br /&gt;
siehe: https://github.com/git-for-windows/git/releases&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Linux:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;sudo apt install git&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Sourcecode lokal herunterladen ===&lt;br /&gt;
Ein Terminal öffnen, folgende Kommandos ausführen und dabei Namen und Email-Adresse des Git-Accounts eintragen:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;git config --local user.name &amp;quot;Your Name Here&amp;quot;&lt;br /&gt;
git config --local user.email &amp;quot;your_email@youremail.com&amp;quot;&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Im Verzeichnis &amp;quot;home&amp;quot; einen Ordner &amp;quot;opencaching&amp;quot; (Name beliebig) anlegen. Dort folgenden Code ausführen. Dies legt einen Ordner mit dem Namen “oc-server3“ an, lädt den OC-Code aus deinem Github-Fork herunter und kopiert ihn in diesen Ordner.&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;git clone git@github.com:&amp;lt;DeinGithubBenutzername&amp;gt;/oc-server3&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Im Anschluss in den Ordner “oc-server3“ wechseln und den folgenden Befehl ausführen, um bei einem Update den neuesten Sourcecode aus dem Opencaching.de-Repository erhalten zu können:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;cd oc-server3&lt;br /&gt;
git remote add upstream git@github.com:OpencachingDeutschland/oc-server3&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Mit folgendem Befehl gibt es eine Übersicht über die verknüpften Repositorys, die (abgesehen vom Nutzernamen ‘Slini11’) wie in der Grafik aussehen müssen:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;git remote -v&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
[[Image:Testumgebung Git 01.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Nun den Branch “development“ auschecken:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;git checkout development&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Und den Development-Branch auf aktuellen Stand bringen:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;git pull --rebase upstream development &amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Weiterführende Informationen zu Git ===&lt;br /&gt;
Diese sind unter anderem im [[Entwicklung/Git|OC-Wiki]] zu finden&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== 3. DDEV Entwicklungsumgebung initalisieren ==&lt;br /&gt;
=== Entwicklungsumgebung zum ersten Mal starten ===&lt;br /&gt;
Zuerst in den Projektordner “oc-server3“ navigieren und dort die Installation der Testumgebung starten.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Scripte einzeln und (auch nur einmal!) ausführen ====&lt;br /&gt;
* ddev anstarten. Im Laufe dieses Prozesses wird die hosts-Datei automatisch angepasst.&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;ddev start&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Starten der Initialisierung der Testumgebung und der Datenbank. &lt;br /&gt;
 &amp;lt;nowiki&amp;gt;ddev init&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Die Entwicklungsumgebung steht nun über den Browser bereit unter:&lt;br /&gt;
  https://opencaching.ddev.site&lt;br /&gt;
  bzw.&lt;br /&gt;
  https://try-opencaching.ddev.site&lt;br /&gt;
&lt;br /&gt;
Das Passwort für den Benutzer &#039;&#039;root&#039;&#039; lautet &#039;&#039;developer&#039;&#039;. Das Passwort der anderen Benutzer (Benutzernamen siehe Datenbank) lautet &#039;&#039;password&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* Ein Mailpit steht nun über den Browser bereit (zumindest für den Legacy-Teil, für OC4 ist es noch nicht bestätigt) unter:&lt;br /&gt;
  https://opencaching.ddev.site:8026/&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Entwicklungsumgebung ein weiteres Mal starten ===&lt;br /&gt;
Eine bereits per &#039;ddev init&#039; initialisierte Testumgebung kann gestartet werden mit:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;ddev start&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Die Testumgebung kann neugestartet werden mit:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;ddev restart&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Entwicklungsumgebung stoppen ===&lt;br /&gt;
Die Testumgebung kann gestoppt werden mit:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;ddev stop&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Entwicklungsumgebung löschen ===&lt;br /&gt;
Die Testumgebung kann im Projektordner gelöscht werden mit:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;ddev delete --omit-snapshot&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Danach sind ein erneutes &#039;&#039;ddev start&#039;&#039; und &#039;&#039;ddev init&#039;&#039; notwendig.&lt;br /&gt;
&lt;br /&gt;
=== von DDEV angelegte Objekte löschen und Projekte aus der globalen DDEV-Liste löschen ===&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;ddev clean --all&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;ddev stop --unlist opencaching&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== xdebug in der Entwicklungsumgebung starten ===&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;ddev xdebug&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Ein &#039;&#039;ddev start&#039;&#039; oder &#039;&#039;ddev restart&#039;&#039; deaktiviert das xdebug wieder.&lt;br /&gt;
&lt;br /&gt;
=== Weitere ddev-Optionen.. ===&lt;br /&gt;
&#039;&#039;ddev&#039;&#039; ohne Parameter aufrufen gibt eine Liste weiterer Optionen aus.&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;ddev&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 4. Die  Testdatenbank füllen ==&lt;br /&gt;
Während der Installation wird eine Testdatenbank importiert, die bereits eine kleine Menge an Caches und Nutzern beinhaltet. Ein manueller Import des Datenbankdumps ist somit (seit März 2021) nicht mehr notwendig. &lt;br /&gt;
&lt;br /&gt;
Für den Fall, dass trotzdem Daten exportiert / importiert werden sollen, können folgende Abschnitte berücksichtigt werden:&lt;br /&gt;
&lt;br /&gt;
=== Login auf der Test-Datenbank im ddev-Container ===&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;mysql -uroot -proot -hopencaching-db opencaching&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Datenbank innerhalb des ddev-Containers exportieren ===&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;mysqldump -uroot -proot -hopencaching-db opencaching &amp;gt; file.sql&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Datenbank außerhalb des ddev-Containers exportieren ===&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;mysqldump --complete-insert --user root -proot --host 0.0.0.0 opencaching &amp;gt; dump.sql&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Datenbank im phpStorm exportieren ===&lt;br /&gt;
Auf der rechten Bildschirmseite den Databasedialog ausklappen&lt;br /&gt;
rechte Maustaste auf die zu exportierende Datenbank “opencaching” =&amp;gt; “Export with ‘mysqldump’”&lt;br /&gt;
&lt;br /&gt;
[[Image:Testumgebung DB 01.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Im Exportmenü die Zeile “Statements” umstellen auf “Insert with columns” und eventuell den Ausgabepfad “Out Path” anpassen. Im Kommandofeld den Parameter “--routines“ ergänzen und dann “Run” drücken&lt;br /&gt;
&lt;br /&gt;
[[Image:Testumgebung DB 02.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Datenbank-Dump im phpStorm importieren ===&lt;br /&gt;
Auf der rechten Bildschirmseite den Databasedialog ausklappen&lt;br /&gt;
rechte Maustaste auf die Datenbank =&amp;gt; “Restore with ‘mysql’”&lt;br /&gt;
&lt;br /&gt;
[[Image:Testumgebung DB 03.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Im Importmenü den Eingabepfad “Path to dump” anpassen, dann “Run” drücken&lt;br /&gt;
&lt;br /&gt;
[[Image:Testumgebung DB 04.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== 5. Die Entwicklungs-IDE vorbereiten ==&lt;br /&gt;
Gegebenenfalls sind an der Programmierumgebung Änderungen vorzunehmen, um zum Beispiel [[OC Coding Style|einheitlich formatierten Code]] zu schreiben. &lt;br /&gt;
&lt;br /&gt;
=== Einrichtung des PHP Coding Styles am Beispiel von phpStorm ===&lt;br /&gt;
Unter Settings / Code Style / PHP rechts auf “Set from…” klicken und “PSR-12” auswählen. Die Einstellung mit “Apply” bestätigen.&lt;br /&gt;
(Weitere Informationen zum Coding Style sind [[OC Coding Style|hier im Wiki]] zu finden.)&lt;br /&gt;
&lt;br /&gt;
[[Image:Testumgebung IDE 01.png|500px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Symfony Pfade am Beispiel phpStorm anpassen ===&lt;br /&gt;
[[Image:Testumgebung IDE 04.jpeg]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Terminalanpassung am Beispiel phpStorm (für Windows-Nutzer) ===&lt;br /&gt;
[[Image:Testumgebung IDE 05.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Datenbankanbindung in phpStorm aktivieren ===&lt;br /&gt;
Seit ddev als Umgebung genutzt wird, bietet sich das ddev-Plugin im phpStorm an. Es richtet z.B. den Zugang zur opencaching-Datenbank in der Testumgebung sowie weitere Einstellungen automatisch ein.&lt;br /&gt;
Hierzu im phpStorm im Menü Datei/Einstellungen.. zum Abschnitt &#039;&#039;Plugins&#039;&#039; navigieren, im Suchfeld &#039;&#039;ddev&#039;&#039; eintippen und das Plugin installieren.&lt;br /&gt;
[[Image:Testumgebung IDE 06.jpg]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Synchronisieren/Wiederherstellen der Benutzereinstellungen mittels JetBrains-Server ===&lt;br /&gt;
Sofern man bei JetBrains einen Account hat, kann man mit diesem die Einstellungen der lokalen IDE synchronisieren und z.B. nach einer Neuinstallation von dort wiederherstellen.&lt;br /&gt;
&lt;br /&gt;
Hierzu in der IDE rechts oben auf das Zahnrad klicken und “Settings Sync is off” auswählen.&amp;lt;/br&amp;gt;&lt;br /&gt;
[[Image:Testumgebung IDE 02.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Im folgenden Fenster den Button “Enable Settings Sync” klicken und danach alle Einstellungen auswählen, die man sichern möchte. Ein Klick auf “Push Settings to Account” sichert die Einstellungen. Ein Klick auf “Get Settings from Account” stellt sie wieder her, sofern sie vorher dorthin gesichert wurden.&lt;br /&gt;
[[Image:Testumgebung IDE 03.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== 6. Das Fehlerhandbuch lesen (gilt insbesondere für die Schritte #1-#4 :wink:) ==&lt;br /&gt;
&lt;br /&gt;
Beireits bekannte Fehler werden im [[Entwicklungsumgebung/Fehlerhandbuch|Fehlerhandbuch]] beschrieben.&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Entwicklung|Entwicklungsumgebung ]]&lt;/div&gt;</summary>
		<author><name>Fraggle</name></author>
	</entry>
	<entry>
		<id>https://wiki.opencaching.de/index.php?title=Entwicklungsumgebung/Fehlerhandbuch&amp;diff=8078</id>
		<title>Entwicklungsumgebung/Fehlerhandbuch</title>
		<link rel="alternate" type="text/html" href="https://wiki.opencaching.de/index.php?title=Entwicklungsumgebung/Fehlerhandbuch&amp;diff=8078"/>
		<updated>2026-03-30T06:14:25Z</updated>

		<summary type="html">&lt;p&gt;Fraggle: neu: webpack-encore Meldung&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Während der Installation der Programme oder Einrichtung der Testumgebung kann es zu diversen Fehlern und Meldungen kommen. Im Folgenden sind bereits bekannte Meldungen aufgelistet, die bei einer schnellen Behebung helfen sollen.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Fehlermeldungen während der Paketinstallation ==&lt;br /&gt;
==== Während der Installation der benötigten Pakete, kommt es zu einer Meldung, dass Abhängigkeiten mit dem ‘libdvd-pkg’ Paket nicht aufgelöst werden können ====&lt;br /&gt;
&lt;br /&gt;
Eine Rekonfiguration des Pakets schafft Abhilfe:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;sudo dpkg-reconfigure libdvd-pkg&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Fehlermeldungen in Zusammenhang mit der DDEV-Testumgebung ==&lt;br /&gt;
==== Fehler “ERROR: for opencaching-mariadb  Cannot start service mariadb: driver failed programming external connectivity on endpoint opencaching-mariadb [..] Error starting userland proxy: listen tcp 0.0.0.0:3306: bind: address already in use” ====&lt;br /&gt;
Wenn beim &#039;ddev start&#039; diese Fehlermeldung kommt, läuft im Hintergrund bereits ein anderer Webservice (z.B. mysql) auf Port 3306.&lt;br /&gt;
&lt;br /&gt;
Prüfen kann man das mit:&lt;br /&gt;
 netstat -tanp | grep :3306&lt;br /&gt;
&lt;br /&gt;
Zum Beispiel ein mysql-Webserver kann gestoppt werden mit:&lt;br /&gt;
 sudo mysqladmin -u root shutdown&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== [symfony/webpack-encore 4.x] Meldung “webpack-dev-server &amp;gt; rimraf@3.0.2: Rimraf versions prior to v4 are no longer supported” (.. und ähnliche) ====&lt;br /&gt;
Diese Meldungen haben keine funktionelle Einschränkung und können aktuell ignoriert werden. Abhilfe ist das Upgrade auf symfony/webpack-encore 5.x oder höher.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== [Yarn 1.x] Meldung “[DEP0169] DeprecationWarning: `url.parse()` behavior is not standardized and prone to errors that have security implications. Use the WHATWG URL API instead. CVEs are not issued for `url.parse()` vulnerabilities.” ====&lt;br /&gt;
Diese Meldung hat keine funktionelle Einschränkung und kann aktuell ignoriert werden. Abhilfe ist das Upgrade auf Yarn 2.x oder höher.&lt;br /&gt;
&lt;br /&gt;
Hintergrund: Seit nodejs Version 22 wird die Funktion url.parse() als veraltet markiert. Yarn 1.xx nutzt sie, wird wohl aber kein Update mehr erhalten. In Yarn 2+ ist das Problem behoben, allerdings ist ein Umstieg mit größeren Aufwänden verbunden und wird aktuell nicht forciert.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Fehlermeldungen beim Zugriff auf die Datenbank ==&lt;br /&gt;
==== Fehlermeldung “ERROR 2002 (HY000): Can&#039;t connect to local MySQL server through socket &#039;/var/run/mysqld/mysqld.sock&#039; (2)” ====&lt;br /&gt;
Es wurde vergessen, den Namen der Datenbank in der Kommandozeile zu übergeben.&lt;br /&gt;
 mysql -uroot -proot -hopencaching-db opencaching&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Fehlermeldungen beim Zugriff auf die Testserverdomain(s) ==&lt;br /&gt;
==== Beim Anlegen/Editieren eines Listings funktioniert die Attributeauswahl nicht (betrifft Legacy-Testsystem) ====&lt;br /&gt;
Editiert man ein Listing, stehen nicht alle Attribute zur Verfügung bzw. es können nicht alle Attribute ausgewählt werden. &lt;br /&gt;
&lt;br /&gt;
Abhilfe: (noch) keine Ahnung.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Ein neu angelegter Benutzer kann sich nicht einloggen und wird immer wieder ohne Meldung auf die Login-Seite geleitet (betrifft Legacy-Testsystem) ====&lt;br /&gt;
Die exakte Ursache ist nicht bekannt. Abhilfe kann geschaffen werden, wenn beim entsprechenden Nutzer in der Datenbank in der Tabelle &#039;&#039;user&#039;&#039; das Feld &#039;&#039;permanent_login_flag&#039;&#039; auf &#039;&#039;1&#039;&#039; gesetzt wird.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Es kann kein Logbild hochgeladen werden (betrifft Legacy-Testsystem) ====&lt;br /&gt;
Sobald man ein Logbild hochladen möchte, erscheint eine Fehlermeldung&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;Warning: move_uploaded_file(): Unable to move &#039;/tmp/phpGmSzpi&#039; to &#039;/application/htdocs/config2/../images/uploads/700770A6-C101-11EA-BA77-0242AC120005.jpg&#039; in /application/htdocs/lib2/logic/picture.class.php on line 856&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Abhilfe: (noch) keine Ahnung. Die Bilder wurden aber trotzdem hochgeladen.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Es kann nicht auf die Domains opencaching.ddev.site oder try-opencaching.ddev.site zugegriffen werden. ====&lt;br /&gt;
Normalerweise sollte der Zugriff nach Installation der Testumgebung automatisch funktionieren. Sollte das nicht der Fall sein, kann mittels Anpassung der hosts-Datei ein Workaround geschaffen werden:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;127.0.0.1	opencaching.ddev.site&lt;br /&gt;
127.0.0.1	try-opencaching.ddev.site&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Abschalten von “NOTICE”-Meldungen. (betrifft Legacy-Testsystem) ====&lt;br /&gt;
Aufgrund diverser (Smarty- und PHP-)Updates werden vormals ignorierte Probleme nun mit einer “NOTICE”-Meldung kenntlich gemacht. Um die Meldungen zu unterdrücken, kann in das error_reporting Level geändert werden.&lt;br /&gt;
&lt;br /&gt;
Beispiele für Fehlermeldungen:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;Notice: Undefined index: error_password_not_ok in /app/htdocs/var/cache2/smarty/compiled/..&lt;br /&gt;
Notice: Trying to get property &#039;value&#039; of non-object in /app/..&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Abhilfe:&lt;br /&gt;
Bis Smarty 3.x: In der Datei /htdocs/vendor/smarty/smarty/libs/Smarty.class.php die Zeile mit $error_reporting ändern auf den nachfolgenden Code. Die Änderung ist nicht git-relevant und geht nach jedem “ddev init” verloren.&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;public $error_reporting = E_ALL &amp;amp; ~E_NOTICE;&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ab Smarty 3.x und 4.x: In der Datei /htdocs/lib2/common.inc.php die obere Zeile (PHP_DEBUG_ON) mit $error_reporting ändern auf den nachfolgenden Code. Die Änderung ist permanent und muss vor einem Commit rückgängig gemacht werden, da sie sonst im github Repository landet.&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;ini_set(&#039;error_reporting&#039;, E_ALL &amp;amp; ~E_NOTICE);&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Vorgehen zum Anlegen eines weiteren Benutzers (betrifft Legacy-Testsystem) ====&lt;br /&gt;
Zuerst via https://opencaching.ddev.site/register.php einen neuen Nutzer registrieren. Zwar kommt dann die Meldung, dass der Aktivierungscode per Mail zugsandt wurde, dies passiert aber nie. Der Aktivierungscode muss aus der Test-Datenbank ausgelesen werden.&lt;br /&gt;
Der Code steht in Tabelle &#039;&#039;user&#039;&#039; im Feld &#039;&#039;activation_code&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Mit https://opencaching.ddev.site/activation.php gelangt man zur Account-Aktivierungsseite. Hier die E-Mail-Adresse und den aus der Datenbank kopierten Aktivierungscode eingeben. Der Account ist nun aktiviert, aber falls der Login nicht funktioniert: siehe andere Fehlermeldung hier auf der Seite weiter unten.&lt;br /&gt;
&lt;br /&gt;
Info: Eventuell wird in Zukunft der MailHog zum Laufen gebracht. Dann werden die vom Server verschickten Emails von diesem abgefangen und man kann die Informationen darin lesen.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== gelöste und veraltete Fehlermeldungen ==&lt;br /&gt;
==== [veraltet] Beim Anlegen des &#039;&#039;zweiten&#039;&#039; Cachelistings kommt eine Fehlermeldung (betrifft Legacy-Testsystem) ====&lt;br /&gt;
Bei einer &#039;&#039;leeren&#039;&#039; Datenbank funktioniert das Setzen und Hochzählen der OC-Codes nicht. Es muss einmal ein OC-Code von Hand gesetzt werden.&lt;br /&gt;
&lt;br /&gt;
Hierzu auf dem Testserver ein Listing anlegen. Dann für diesen Cache in der Datenbank in der Tabelle &#039;&#039;caches&#039;&#039; das Feld &#039;&#039;wp_oc&#039;&#039; auf einen initialen Wert ändern, z.B. &#039;&#039;OC1234&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== [veraltet] Beim Erstellen/Speichern eines Cachelistings kommen mehrere  Fehlermeldungen, u.a. &amp;quot;Warning: A non-numeric value encountered in /app/htdocs/newcache.php on line 1025&amp;quot; (betrifft Legacy-Testsystem) ====&lt;br /&gt;
[[Image:Fehlerhandbuch Domain 01.png|500px]]&lt;br /&gt;
&lt;br /&gt;
Zuerst muss geschaut werden, ob eventuell der vorige Abschnitt (&amp;quot;Beim Anlegen des zweiten Cachelistings kommt eine Fehlermeldung&amp;quot;) zutrifft. Wurden die dort beschriebenen Maßnahmen bereits umgesetzt, kommt es zwar trotzdem zur Fehlermeldung, das Listing wurde aber erfolgreich angelegt bzw. gespeichert. (Seite neu laden)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== [gelöst] Beim Löschen von Logs kommt eine Fehlermeldung &amp;quot;This log entry has been created on another Opencaching website. The cache can only be edited there.&amp;quot; ====&lt;br /&gt;
Auf dem Testserver werden die Logs laut Datenbank (Tabelle &#039;&#039;cache_logs&#039;&#039;, Spalte &#039;&#039;nodes&#039;&#039;) als &#039;&#039;node=5&#039;&#039; gespeichert, obwohl es laut Tabelle &#039;&#039;nodes&#039;&#039; diese Ziffer gar nicht gibt.&lt;br /&gt;
&lt;br /&gt;
Um Logs wieder über die normale Loglöschenfunktion löschen zu können, gibt es mehrere Möglichkeiten:&lt;br /&gt;
# In der Datenbanktabelle &#039;cache_logs&#039; den Eintrag in Spalte &#039;nodes&#039; auf 4 ändern. (Dies entspricht der &#039;Local Development&#039;-Umgebung (siehe Tabelle &#039;nodes&#039;)).&lt;br /&gt;
# In der Datei &#039;/dev-ops/local.team-opencaching.de/templates/config2-settings.inc.tpl.php&#039; den Eintrag &#039;$opt[&#039;logic&#039;][&#039;node&#039;][&#039;id&#039;] = 5;&#039; ändern auf &#039;$opt[&#039;logic&#039;][&#039;node&#039;][&#039;id&#039;] = 4;&#039; und das docker:init Script ausführen&lt;br /&gt;
# Der Pull [[https://github.com/OpencachingDeutschland/oc-server3/pull/830|Pull Request #830 changed node information from 5 to 4]]  behebt das Problem.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== [veraltet] Das Länderauswahlfeld rechts oben auf der Seite ist leer und funktioniert nicht. (betrifft Legacy-Testsystem) ====&lt;br /&gt;
Alle php-Dateien im Cacheverzeichnis htdocs/var/cache2 müssen gelöscht werden.&lt;br /&gt;
&lt;br /&gt;
Das Vorgehen Unter Linux:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;./psh.phar docker:stop&lt;br /&gt;
rm htdocs/var/cache2/*.inc.php&lt;br /&gt;
./psh.phar docker:start&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== [gelöst] Die Übersetzungen funktionieren nicht. Meist wird nur Englischer Text angezeigt. (betrifft Legacy-Testsystem) ====&lt;br /&gt;
Die vorhandenen Fremdsprachen werden auf dem Testsystem nicht korrekt dargestellt. Meistens wird nur der Englische Text oder ein Mischmasch aus Englisch und eingestellter Sprache angezeigt.&lt;br /&gt;
&lt;br /&gt;
Abhilfe: im docker:start Skript wurde eine fehlende Komponente ergänzt, welche nun automatisch mitinstalliert wird. Dadurch werden die Sprachdateien korrekt erzeugt und die Übersetzungen funktionieren.&lt;br /&gt;
&lt;br /&gt;
Siehe auch: [[https://opencaching.atlassian.net/browse/RED-1278|RED-1278: Die Übersetzungen funktionieren auf dem Testserver nicht]]&lt;br /&gt;
Dieser Fehler sollte somit nicht mehr auftauchen.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== [veraltet] Docker Services neu initialisieren, z.B. bei &amp;quot;&#039;&#039;W: GPG error:  stable InRelease: The following signatures were invalid: EXPKEYSIG 23E7166788B63E1E Yarn Packaging &amp;lt;yarn@dan.cx&amp;gt;&#039;&#039;&amp;quot; ====&lt;br /&gt;
Treten während eines docker:init neue, merkwürdige und nicht näher spezifizierbare Fehler auf, kann es helfen, die Dockercontainer neu zu initialisieren mittels:&lt;br /&gt;
 docker-compose build --pull&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== [veraltet] Fehler &amp;quot;The stream or file &amp;quot;/application/htdocs/var/logs/dev/dev.log&amp;quot; could not be opened: failed to open stream: Permission denied&amp;quot; oder ähnlich (betrifft Legacy-Testsystem) ====&lt;br /&gt;
==== [veraltet] Oder: Fehler &amp;quot;Permission denied&amp;quot; beim Zugriff auf /htdocs/var/cache (betrifft Legacy-Testsystem) ====&lt;br /&gt;
==== [veraltet] Oder: Fehler 500 (ohne weitere Angaben, warum) (betrifft Legacy-Testsystem) ====&lt;br /&gt;
Hier scheint der Webserver keine Zugriffsberechtigung auf bestimmte Pfade/Dateien zu haben. Von einem Ändern der Zugriffsberechtigungen, z. B. mittels sudo chmod -R 777 ./var/log, sollte aus Sicherheitsgründen aber Abstand genommen werden.&lt;br /&gt;
&lt;br /&gt;
Helfen kann, die Befehlsfolge&lt;br /&gt;
 ./psh.phar docker:ssh&lt;br /&gt;
 ./psh.phar docker:init&lt;br /&gt;
 exit&lt;br /&gt;
ein weiteres Mal auszuführen.&lt;br /&gt;
&lt;br /&gt;
Falls dies weiterhin keinen Erfolg bringt, können folgende Schritte zum Ändern der Zugriffsberechtigungen angewandt werden:&lt;br /&gt;
# Ermitteln der ID des Containers oc-server3_php-fpm mittels sudo docker ps.&lt;br /&gt;
# Öffnen einer Shell im Container: sudo docker exec -it 45b6e4994fac /bin/bash, wobei 45b6e4994fac die ID des Containers ist.&lt;br /&gt;
# In der Container-Shell chmod -R 777 /application/htdocs/var/logs/dev/ ausführen.&lt;br /&gt;
# Die Container-Shell regulär mittels exit verlassen.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== [veraltet] Fehler &amp;quot;starting opencaching-webserver .. error&amp;quot; oder &amp;quot;Starting webserver ... error&amp;quot; ====&lt;br /&gt;
Vermutlich läuft im Hintergrund bereits ein anderer Webservice auf Port 80.&lt;br /&gt;
&lt;br /&gt;
Prüfen kann man das mit:&lt;br /&gt;
 netstat -tanp | grep :80&lt;br /&gt;
&lt;br /&gt;
Zum Beispiel ein apache2-Webserver kann gestoppt werden mit:&lt;br /&gt;
 sudo systemctl stop apache2&lt;br /&gt;
&lt;br /&gt;
Damit der apache2 nach einem Rechnerneustart nicht erneut aktiviert wird, kann man ihn generell deaktivieren:&lt;br /&gt;
 sudo systemctl disable apache2&lt;br /&gt;
&lt;br /&gt;
Alternativ lässt sich auch eine [[https://docs.docker.com/compose/extends/|Override-Datei]] für die betroffenen Ports verwenden, was allerdings weitere Komplikationen mit sich führen kann (wie beispielsweise eine nicht funktionierende OKAPI). Aus diesem Grund sollte nach Möglichkeit das Stoppen der Standard-Services für Apache und einen Datenbank-Server vorgezogen werden.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== [veraltet] Fehler &amp;quot;W: GPG error: https://dl.yarnpkg.com/debian stable InRelease: The following signatures were invalid: EXPKEYSIG&amp;quot; ====&lt;br /&gt;
Nach dem Ausführen von ./psh.phar docker:start kommt der Fehler. Hier ist das Zertifikat veraltet. Folgender Befehl löscht das Docker-Image. &lt;br /&gt;
 docker-compose build --pull&lt;br /&gt;
&lt;br /&gt;
Mit einen erneuten ./psh.phar docker:start läuft es wieder durch.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== [veraltet] Host-Mismatch bei Aufruf der OKAPI mit Port-Override ====&lt;br /&gt;
Falls in einer Override-Datei Ports überschrieben werden (siehe oben), funktioniert die OKAPI möglicherweise nicht richtig - stattdessen erscheint ein Hinweis auf einen Port-Mismatch. Dies kann auf folgende Art und Weise behoben werden:&lt;br /&gt;
# Ermitteln der ID des Containers &#039;&#039;oc-server3_php-fpm&#039;&#039; mittels &#039;&#039;sudo docker ps&#039;&#039;.&lt;br /&gt;
# Öffnen einer Shell im Container: &#039;&#039;sudo docker exec -it 45b6e4994fac /bin/bash&#039;&#039;, wobei 45b6e4994fac die ID des Containers ist.&lt;br /&gt;
# Im Container einen Editor installieren, beispielsweise nano. Da der Container auf Ubuntu basiert, funktioniert dies mittels &#039;&#039;apt-get update &amp;amp;&amp;amp; apt-get install nano&#039;&#039;.&lt;br /&gt;
# Die passende Konfigurationsdatei mittels des Editors im Container öffnen, beispielsweise mittels &#039;&#039;nano /application/htdocs/config2/settings.inc.php.&#039;&#039;&lt;br /&gt;
# Setzen von &#039;&#039;$dev_baseurl = &#039;http://docker.team-opencaching.de:2200&#039;;&#039;&#039; und anschließendes Speichern der Datei. Hierbei ist 2200 der Port, der statt Port 80 für den Webserver in der Override-Datei konfiguriert worden ist.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== [veraltet] Meldung &amp;quot;DEPRECATED: The legacy builder is deprecated and will be removed in a future release. Install the buildx component to build images with [[https://docs.docker.com/go/buildx/|BuildKit]]&amp;quot; ====&lt;br /&gt;
Der Docker build Prozess wurde geändert. Die bisherige Methode wurde ab Dockerversion 23 als &amp;quot;deprecated&amp;quot; markiert und wird in einer zukünftigen Version entfernt. Siehe [[https://docs.docker.com/engine/deprecated/#legacy-builder-for-linux-images|Deprecated Engine Features]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== [veraltet] Meldung &amp;quot;ERROR: BuildKit is enabled but the buildx component is missing or broken.&amp;quot; ====&lt;br /&gt;
Docker Buildkit/buildx soll verwendet werden (DOCKER_BUILDKIT=1), wurde aber nicht installiert.&lt;br /&gt;
&lt;br /&gt;
Abhilfe: Buildkit/buildx Komponente installieren. Vorher müssen aber einige bereits installierte Pakete entfernt werden. Je nach OS gibt es unterschiedliche Anweisungen und Installationswege, siehe hier: [[https://docs.docker.com/engine/install/|Install Docker Engine]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== [veraltet] Während docker:init kommt es im Abschnitt (3/31) zu einer Meldung &amp;quot;&amp;gt; mysql -uroot -proot -hmariadb -e &amp;quot;DROP DATABASE IF EXISTS opencaching&amp;quot; ERROR 2005 (HY000): Unknown MySQL server host &#039;mariadb&#039; (-3).&amp;quot; ====&lt;br /&gt;
Abhilfe: &#039;&#039;./psh.phar docker:init&#039;&#039; darf nicht außerhalb des Dockercontainers aufgerufen werden.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== [veraltet] Während docker:init kommt es im Abschnitt (13/31) zu einer Meldung &amp;quot;PHP Fatal error: .. __toString() must not throw an exception ..&amp;quot; ====&lt;br /&gt;
Die Ursache ist nicht bekannt. Hier hilft aktuell nur ein Workaround, in dem die Exception im Script auskommentiert wird.&lt;br /&gt;
&lt;br /&gt;
Hierzu in der Datei &#039;&#039;../htdocs/vendor/symfony/symfony/src/Symfony/Component/DependencyInjection/Compiler/AutowirePass.php&#039;&#039; die Zeile 236 &#039;&#039;throw new AutoWiringFailedException&#039;&#039; auskommentieren. Die Datei ist allerdings erst nach dem Ausführens von docker:init vorhanden.&lt;br /&gt;
&lt;br /&gt;
Siehe auch Ticket: [[https://opencaching.atlassian.net/browse/OCC-90|OCC-90: Exception error during docker:init]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== [veraltet] Während docker:start-clean: &#039;&#039;&amp;quot;\Doctrine\Common\Persistence\Mapping\Driver\MappingDriverChain()&amp;quot; not found&#039;&#039; ====&lt;br /&gt;
Dies ist ein Fehler in einem der &#039;&#039;doctrine/*&#039;&#039; Pakete (vermutlich &#039;&#039;doctrine/persistence&#039;&#039;) in bestimmten Paketversionen. Hier hilft, die Datei &#039;&#039;/htdocs/vendor/doctrine/doctrine-bundle/Resources/config/orm.xml&#039;&#039; Zeile 32 zu editieren:&lt;br /&gt;
 &amp;lt;parameter key=&amp;quot;doctrine.orm.metadata.driver_chain.class&amp;quot;&amp;gt;Doctrine\Common\Persistence\Mapping\Driver\MappingDriverChain&amp;lt;/parameter&amp;gt;&lt;br /&gt;
zu&lt;br /&gt;
 &amp;lt;parameter key=&amp;quot;doctrine.orm.metadata.driver_chain.class&amp;quot;&amp;gt;Doctrine\Persistence\Mapping\Driver\MappingDriverChain&amp;lt;/parameter&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Allerdings muss dies zum richtigen Zeitpunkt passieren. Nachdem &#039;&#039;docker:start-clean&#039;&#039; aufgerufen wurde, kurz warten, bis die Pakete heruntergeladen wurden und noch bevor Abschnitt 13/32 anfängt, muss die Datei korrigiert und gespeichert worden sein.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== [veraltet] Während docker:start-clean: &#039;&#039;&amp;quot;Browserslist: caniuse-lite is outdated.&amp;quot;&#039;&#039; ====&lt;br /&gt;
Scheinbar wird die &amp;quot;browserslist&amp;quot; nicht automatisch aktualisiert. (Grund? k.A.)&lt;br /&gt;
&lt;br /&gt;
Zum manuellen Update im Docker:ssh eingeben:&lt;br /&gt;
 npx browserslist@latest --update-db&lt;br /&gt;
bzw.&lt;br /&gt;
 npx update-browserslist-db@latest&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== [veraltet] z.B. bei Update auf Symfony 5.2 kommt während docker:start-clean der Fehler &#039;&#039;&amp;quot;mv: cannot stat &#039;/root/.symfony/bin/symfony&#039;: No such file or directory Service &#039;webserver&#039; failed to build: The command &#039;/bin/sh -c mv /root/.symfony/bin/symfony /usr/local/bin/symfony&#039; returned a non-zero code: 1&amp;quot;&#039;&#039; ====&lt;br /&gt;
In diesem Fall in der Datei &#039;&#039;docker/httpd/Dockerfile&#039;&#039; die fehlerverursachende Zeile &lt;br /&gt;
  RUN mv /root/.symfony/bin/symfony /usr/local/bin/symfony&lt;br /&gt;
auskommentieren und docker:start-clean erneut laufen lassen.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Entwicklung|Fehlerhandbuch ]]&lt;/div&gt;</summary>
		<author><name>Fraggle</name></author>
	</entry>
	<entry>
		<id>https://wiki.opencaching.de/index.php?title=Entwicklungsumgebung/Fehlerhandbuch&amp;diff=8077</id>
		<title>Entwicklungsumgebung/Fehlerhandbuch</title>
		<link rel="alternate" type="text/html" href="https://wiki.opencaching.de/index.php?title=Entwicklungsumgebung/Fehlerhandbuch&amp;diff=8077"/>
		<updated>2026-03-30T06:06:49Z</updated>

		<summary type="html">&lt;p&gt;Fraggle: Umsortierung und neu: yarn-Meldung&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Während der Installation der Programme oder Einrichtung der Testumgebung kann es zu diversen Fehlern und Meldungen kommen. Im Folgenden sind bereits bekannte Meldungen aufgelistet, die bei einer schnellen Behebung helfen sollen.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Fehlermeldungen während der Paketinstallation ==&lt;br /&gt;
==== Während der Installation der benötigten Pakete, kommt es zu einer Meldung, dass Abhängigkeiten mit dem ‘libdvd-pkg’ Paket nicht aufgelöst werden können ====&lt;br /&gt;
&lt;br /&gt;
Eine Rekonfiguration des Pakets schafft Abhilfe:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;sudo dpkg-reconfigure libdvd-pkg&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Fehlermeldungen in Zusammenhang mit der DDEV-Testumgebung ==&lt;br /&gt;
==== Fehler “ERROR: for opencaching-mariadb  Cannot start service mariadb: driver failed programming external connectivity on endpoint opencaching-mariadb [..] Error starting userland proxy: listen tcp 0.0.0.0:3306: bind: address already in use” ====&lt;br /&gt;
Wenn beim &#039;ddev start&#039; diese Fehlermeldung kommt, läuft im Hintergrund bereits ein anderer Webservice (z.B. mysql) auf Port 3306.&lt;br /&gt;
&lt;br /&gt;
Prüfen kann man das mit:&lt;br /&gt;
 netstat -tanp | grep :3306&lt;br /&gt;
&lt;br /&gt;
Zum Beispiel ein mysql-Webserver kann gestoppt werden mit:&lt;br /&gt;
 sudo mysqladmin -u root shutdown&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Yarn Fehlermeldung “[DEP0169] DeprecationWarning: `url.parse()` behavior is not standardized and prone to errors that have security implications. Use the WHATWG URL API instead. CVEs are not issued for `url.parse()` vulnerabilities.” ====&lt;br /&gt;
Diese Meldung hat keine funktionelle Einschränkung und kann aktuell ignoriert werden.&lt;br /&gt;
&lt;br /&gt;
Hintergrund: Seit nodejs Version 22 wird die Funktion url.parse() als veraltet markiert. Yarn 1.xx nutzt sie, wird wohl aber kein Update mehr erhalten. In Yarn 2+ ist das Problem behoben, allerdings ist ein Umstieg mit größeren Aufwänden verbunden und wird aktuell nicht forciert.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Fehlermeldungen beim Zugriff auf die Datenbank ==&lt;br /&gt;
==== Fehlermeldung “ERROR 2002 (HY000): Can&#039;t connect to local MySQL server through socket &#039;/var/run/mysqld/mysqld.sock&#039; (2)” ====&lt;br /&gt;
Es wurde vergessen, den Namen der Datenbank in der Kommandozeile zu übergeben.&lt;br /&gt;
 mysql -uroot -proot -hopencaching-db opencaching&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Fehlermeldungen beim Zugriff auf die Testserverdomain(s) ==&lt;br /&gt;
==== Beim Anlegen/Editieren eines Listings funktioniert die Attributeauswahl nicht (betrifft Legacy-Testsystem) ====&lt;br /&gt;
Editiert man ein Listing, stehen nicht alle Attribute zur Verfügung bzw. es können nicht alle Attribute ausgewählt werden. &lt;br /&gt;
&lt;br /&gt;
Abhilfe: (noch) keine Ahnung.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Ein neu angelegter Benutzer kann sich nicht einloggen und wird immer wieder ohne Meldung auf die Login-Seite geleitet (betrifft Legacy-Testsystem) ====&lt;br /&gt;
Die exakte Ursache ist nicht bekannt. Abhilfe kann geschaffen werden, wenn beim entsprechenden Nutzer in der Datenbank in der Tabelle &#039;&#039;user&#039;&#039; das Feld &#039;&#039;permanent_login_flag&#039;&#039; auf &#039;&#039;1&#039;&#039; gesetzt wird.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Es kann kein Logbild hochgeladen werden (betrifft Legacy-Testsystem) ====&lt;br /&gt;
Sobald man ein Logbild hochladen möchte, erscheint eine Fehlermeldung&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;Warning: move_uploaded_file(): Unable to move &#039;/tmp/phpGmSzpi&#039; to &#039;/application/htdocs/config2/../images/uploads/700770A6-C101-11EA-BA77-0242AC120005.jpg&#039; in /application/htdocs/lib2/logic/picture.class.php on line 856&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Abhilfe: (noch) keine Ahnung. Die Bilder wurden aber trotzdem hochgeladen.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Es kann nicht auf die Domains opencaching.ddev.site oder try-opencaching.ddev.site zugegriffen werden. ====&lt;br /&gt;
Normalerweise sollte der Zugriff nach Installation der Testumgebung automatisch funktionieren. Sollte das nicht der Fall sein, kann mittels Anpassung der hosts-Datei ein Workaround geschaffen werden:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;127.0.0.1	opencaching.ddev.site&lt;br /&gt;
127.0.0.1	try-opencaching.ddev.site&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Abschalten von “NOTICE”-Meldungen. (betrifft Legacy-Testsystem) ====&lt;br /&gt;
Aufgrund diverser (Smarty- und PHP-)Updates werden vormals ignorierte Probleme nun mit einer “NOTICE”-Meldung kenntlich gemacht. Um die Meldungen zu unterdrücken, kann in das error_reporting Level geändert werden.&lt;br /&gt;
&lt;br /&gt;
Beispiele für Fehlermeldungen:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;Notice: Undefined index: error_password_not_ok in /app/htdocs/var/cache2/smarty/compiled/..&lt;br /&gt;
Notice: Trying to get property &#039;value&#039; of non-object in /app/..&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Abhilfe:&lt;br /&gt;
Bis Smarty 3.x: In der Datei /htdocs/vendor/smarty/smarty/libs/Smarty.class.php die Zeile mit $error_reporting ändern auf den nachfolgenden Code. Die Änderung ist nicht git-relevant und geht nach jedem “ddev init” verloren.&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;public $error_reporting = E_ALL &amp;amp; ~E_NOTICE;&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ab Smarty 3.x und 4.x: In der Datei /htdocs/lib2/common.inc.php die obere Zeile (PHP_DEBUG_ON) mit $error_reporting ändern auf den nachfolgenden Code. Die Änderung ist permanent und muss vor einem Commit rückgängig gemacht werden, da sie sonst im github Repository landet.&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;ini_set(&#039;error_reporting&#039;, E_ALL &amp;amp; ~E_NOTICE);&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Vorgehen zum Anlegen eines weiteren Benutzers (betrifft Legacy-Testsystem) ====&lt;br /&gt;
Zuerst via https://opencaching.ddev.site/register.php einen neuen Nutzer registrieren. Zwar kommt dann die Meldung, dass der Aktivierungscode per Mail zugsandt wurde, dies passiert aber nie. Der Aktivierungscode muss aus der Test-Datenbank ausgelesen werden.&lt;br /&gt;
Der Code steht in Tabelle &#039;&#039;user&#039;&#039; im Feld &#039;&#039;activation_code&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Mit https://opencaching.ddev.site/activation.php gelangt man zur Account-Aktivierungsseite. Hier die E-Mail-Adresse und den aus der Datenbank kopierten Aktivierungscode eingeben. Der Account ist nun aktiviert, aber falls der Login nicht funktioniert: siehe andere Fehlermeldung hier auf der Seite weiter unten.&lt;br /&gt;
&lt;br /&gt;
Info: Eventuell wird in Zukunft der MailHog zum Laufen gebracht. Dann werden die vom Server verschickten Emails von diesem abgefangen und man kann die Informationen darin lesen.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== gelöste und veraltete Fehlermeldungen ==&lt;br /&gt;
==== [veraltet] Beim Anlegen des &#039;&#039;zweiten&#039;&#039; Cachelistings kommt eine Fehlermeldung (betrifft Legacy-Testsystem) ====&lt;br /&gt;
Bei einer &#039;&#039;leeren&#039;&#039; Datenbank funktioniert das Setzen und Hochzählen der OC-Codes nicht. Es muss einmal ein OC-Code von Hand gesetzt werden.&lt;br /&gt;
&lt;br /&gt;
Hierzu auf dem Testserver ein Listing anlegen. Dann für diesen Cache in der Datenbank in der Tabelle &#039;&#039;caches&#039;&#039; das Feld &#039;&#039;wp_oc&#039;&#039; auf einen initialen Wert ändern, z.B. &#039;&#039;OC1234&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== [veraltet] Beim Erstellen/Speichern eines Cachelistings kommen mehrere  Fehlermeldungen, u.a. &amp;quot;Warning: A non-numeric value encountered in /app/htdocs/newcache.php on line 1025&amp;quot; (betrifft Legacy-Testsystem) ====&lt;br /&gt;
[[Image:Fehlerhandbuch Domain 01.png|500px]]&lt;br /&gt;
&lt;br /&gt;
Zuerst muss geschaut werden, ob eventuell der vorige Abschnitt (&amp;quot;Beim Anlegen des zweiten Cachelistings kommt eine Fehlermeldung&amp;quot;) zutrifft. Wurden die dort beschriebenen Maßnahmen bereits umgesetzt, kommt es zwar trotzdem zur Fehlermeldung, das Listing wurde aber erfolgreich angelegt bzw. gespeichert. (Seite neu laden)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== [gelöst] Beim Löschen von Logs kommt eine Fehlermeldung &amp;quot;This log entry has been created on another Opencaching website. The cache can only be edited there.&amp;quot; ====&lt;br /&gt;
Auf dem Testserver werden die Logs laut Datenbank (Tabelle &#039;&#039;cache_logs&#039;&#039;, Spalte &#039;&#039;nodes&#039;&#039;) als &#039;&#039;node=5&#039;&#039; gespeichert, obwohl es laut Tabelle &#039;&#039;nodes&#039;&#039; diese Ziffer gar nicht gibt.&lt;br /&gt;
&lt;br /&gt;
Um Logs wieder über die normale Loglöschenfunktion löschen zu können, gibt es mehrere Möglichkeiten:&lt;br /&gt;
# In der Datenbanktabelle &#039;cache_logs&#039; den Eintrag in Spalte &#039;nodes&#039; auf 4 ändern. (Dies entspricht der &#039;Local Development&#039;-Umgebung (siehe Tabelle &#039;nodes&#039;)).&lt;br /&gt;
# In der Datei &#039;/dev-ops/local.team-opencaching.de/templates/config2-settings.inc.tpl.php&#039; den Eintrag &#039;$opt[&#039;logic&#039;][&#039;node&#039;][&#039;id&#039;] = 5;&#039; ändern auf &#039;$opt[&#039;logic&#039;][&#039;node&#039;][&#039;id&#039;] = 4;&#039; und das docker:init Script ausführen&lt;br /&gt;
# Der Pull [[https://github.com/OpencachingDeutschland/oc-server3/pull/830|Pull Request #830 changed node information from 5 to 4]]  behebt das Problem.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== [veraltet] Das Länderauswahlfeld rechts oben auf der Seite ist leer und funktioniert nicht. (betrifft Legacy-Testsystem) ====&lt;br /&gt;
Alle php-Dateien im Cacheverzeichnis htdocs/var/cache2 müssen gelöscht werden.&lt;br /&gt;
&lt;br /&gt;
Das Vorgehen Unter Linux:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;./psh.phar docker:stop&lt;br /&gt;
rm htdocs/var/cache2/*.inc.php&lt;br /&gt;
./psh.phar docker:start&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== [gelöst] Die Übersetzungen funktionieren nicht. Meist wird nur Englischer Text angezeigt. (betrifft Legacy-Testsystem) ====&lt;br /&gt;
Die vorhandenen Fremdsprachen werden auf dem Testsystem nicht korrekt dargestellt. Meistens wird nur der Englische Text oder ein Mischmasch aus Englisch und eingestellter Sprache angezeigt.&lt;br /&gt;
&lt;br /&gt;
Abhilfe: im docker:start Skript wurde eine fehlende Komponente ergänzt, welche nun automatisch mitinstalliert wird. Dadurch werden die Sprachdateien korrekt erzeugt und die Übersetzungen funktionieren.&lt;br /&gt;
&lt;br /&gt;
Siehe auch: [[https://opencaching.atlassian.net/browse/RED-1278|RED-1278: Die Übersetzungen funktionieren auf dem Testserver nicht]]&lt;br /&gt;
Dieser Fehler sollte somit nicht mehr auftauchen.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== [veraltet] Docker Services neu initialisieren, z.B. bei &amp;quot;&#039;&#039;W: GPG error:  stable InRelease: The following signatures were invalid: EXPKEYSIG 23E7166788B63E1E Yarn Packaging &amp;lt;yarn@dan.cx&amp;gt;&#039;&#039;&amp;quot; ====&lt;br /&gt;
Treten während eines docker:init neue, merkwürdige und nicht näher spezifizierbare Fehler auf, kann es helfen, die Dockercontainer neu zu initialisieren mittels:&lt;br /&gt;
 docker-compose build --pull&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== [veraltet] Fehler &amp;quot;The stream or file &amp;quot;/application/htdocs/var/logs/dev/dev.log&amp;quot; could not be opened: failed to open stream: Permission denied&amp;quot; oder ähnlich (betrifft Legacy-Testsystem) ====&lt;br /&gt;
==== [veraltet] Oder: Fehler &amp;quot;Permission denied&amp;quot; beim Zugriff auf /htdocs/var/cache (betrifft Legacy-Testsystem) ====&lt;br /&gt;
==== [veraltet] Oder: Fehler 500 (ohne weitere Angaben, warum) (betrifft Legacy-Testsystem) ====&lt;br /&gt;
Hier scheint der Webserver keine Zugriffsberechtigung auf bestimmte Pfade/Dateien zu haben. Von einem Ändern der Zugriffsberechtigungen, z. B. mittels sudo chmod -R 777 ./var/log, sollte aus Sicherheitsgründen aber Abstand genommen werden.&lt;br /&gt;
&lt;br /&gt;
Helfen kann, die Befehlsfolge&lt;br /&gt;
 ./psh.phar docker:ssh&lt;br /&gt;
 ./psh.phar docker:init&lt;br /&gt;
 exit&lt;br /&gt;
ein weiteres Mal auszuführen.&lt;br /&gt;
&lt;br /&gt;
Falls dies weiterhin keinen Erfolg bringt, können folgende Schritte zum Ändern der Zugriffsberechtigungen angewandt werden:&lt;br /&gt;
# Ermitteln der ID des Containers oc-server3_php-fpm mittels sudo docker ps.&lt;br /&gt;
# Öffnen einer Shell im Container: sudo docker exec -it 45b6e4994fac /bin/bash, wobei 45b6e4994fac die ID des Containers ist.&lt;br /&gt;
# In der Container-Shell chmod -R 777 /application/htdocs/var/logs/dev/ ausführen.&lt;br /&gt;
# Die Container-Shell regulär mittels exit verlassen.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== [veraltet] Fehler &amp;quot;starting opencaching-webserver .. error&amp;quot; oder &amp;quot;Starting webserver ... error&amp;quot; ====&lt;br /&gt;
Vermutlich läuft im Hintergrund bereits ein anderer Webservice auf Port 80.&lt;br /&gt;
&lt;br /&gt;
Prüfen kann man das mit:&lt;br /&gt;
 netstat -tanp | grep :80&lt;br /&gt;
&lt;br /&gt;
Zum Beispiel ein apache2-Webserver kann gestoppt werden mit:&lt;br /&gt;
 sudo systemctl stop apache2&lt;br /&gt;
&lt;br /&gt;
Damit der apache2 nach einem Rechnerneustart nicht erneut aktiviert wird, kann man ihn generell deaktivieren:&lt;br /&gt;
 sudo systemctl disable apache2&lt;br /&gt;
&lt;br /&gt;
Alternativ lässt sich auch eine [[https://docs.docker.com/compose/extends/|Override-Datei]] für die betroffenen Ports verwenden, was allerdings weitere Komplikationen mit sich führen kann (wie beispielsweise eine nicht funktionierende OKAPI). Aus diesem Grund sollte nach Möglichkeit das Stoppen der Standard-Services für Apache und einen Datenbank-Server vorgezogen werden.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== [veraltet] Fehler &amp;quot;W: GPG error: https://dl.yarnpkg.com/debian stable InRelease: The following signatures were invalid: EXPKEYSIG&amp;quot; ====&lt;br /&gt;
Nach dem Ausführen von ./psh.phar docker:start kommt der Fehler. Hier ist das Zertifikat veraltet. Folgender Befehl löscht das Docker-Image. &lt;br /&gt;
 docker-compose build --pull&lt;br /&gt;
&lt;br /&gt;
Mit einen erneuten ./psh.phar docker:start läuft es wieder durch.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== [veraltet] Host-Mismatch bei Aufruf der OKAPI mit Port-Override ====&lt;br /&gt;
Falls in einer Override-Datei Ports überschrieben werden (siehe oben), funktioniert die OKAPI möglicherweise nicht richtig - stattdessen erscheint ein Hinweis auf einen Port-Mismatch. Dies kann auf folgende Art und Weise behoben werden:&lt;br /&gt;
# Ermitteln der ID des Containers &#039;&#039;oc-server3_php-fpm&#039;&#039; mittels &#039;&#039;sudo docker ps&#039;&#039;.&lt;br /&gt;
# Öffnen einer Shell im Container: &#039;&#039;sudo docker exec -it 45b6e4994fac /bin/bash&#039;&#039;, wobei 45b6e4994fac die ID des Containers ist.&lt;br /&gt;
# Im Container einen Editor installieren, beispielsweise nano. Da der Container auf Ubuntu basiert, funktioniert dies mittels &#039;&#039;apt-get update &amp;amp;&amp;amp; apt-get install nano&#039;&#039;.&lt;br /&gt;
# Die passende Konfigurationsdatei mittels des Editors im Container öffnen, beispielsweise mittels &#039;&#039;nano /application/htdocs/config2/settings.inc.php.&#039;&#039;&lt;br /&gt;
# Setzen von &#039;&#039;$dev_baseurl = &#039;http://docker.team-opencaching.de:2200&#039;;&#039;&#039; und anschließendes Speichern der Datei. Hierbei ist 2200 der Port, der statt Port 80 für den Webserver in der Override-Datei konfiguriert worden ist.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== [veraltet] Meldung &amp;quot;DEPRECATED: The legacy builder is deprecated and will be removed in a future release. Install the buildx component to build images with [[https://docs.docker.com/go/buildx/|BuildKit]]&amp;quot; ====&lt;br /&gt;
Der Docker build Prozess wurde geändert. Die bisherige Methode wurde ab Dockerversion 23 als &amp;quot;deprecated&amp;quot; markiert und wird in einer zukünftigen Version entfernt. Siehe [[https://docs.docker.com/engine/deprecated/#legacy-builder-for-linux-images|Deprecated Engine Features]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== [veraltet] Meldung &amp;quot;ERROR: BuildKit is enabled but the buildx component is missing or broken.&amp;quot; ====&lt;br /&gt;
Docker Buildkit/buildx soll verwendet werden (DOCKER_BUILDKIT=1), wurde aber nicht installiert.&lt;br /&gt;
&lt;br /&gt;
Abhilfe: Buildkit/buildx Komponente installieren. Vorher müssen aber einige bereits installierte Pakete entfernt werden. Je nach OS gibt es unterschiedliche Anweisungen und Installationswege, siehe hier: [[https://docs.docker.com/engine/install/|Install Docker Engine]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== [veraltet] Während docker:init kommt es im Abschnitt (3/31) zu einer Meldung &amp;quot;&amp;gt; mysql -uroot -proot -hmariadb -e &amp;quot;DROP DATABASE IF EXISTS opencaching&amp;quot; ERROR 2005 (HY000): Unknown MySQL server host &#039;mariadb&#039; (-3).&amp;quot; ====&lt;br /&gt;
Abhilfe: &#039;&#039;./psh.phar docker:init&#039;&#039; darf nicht außerhalb des Dockercontainers aufgerufen werden.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== [veraltet] Während docker:init kommt es im Abschnitt (13/31) zu einer Meldung &amp;quot;PHP Fatal error: .. __toString() must not throw an exception ..&amp;quot; ====&lt;br /&gt;
Die Ursache ist nicht bekannt. Hier hilft aktuell nur ein Workaround, in dem die Exception im Script auskommentiert wird.&lt;br /&gt;
&lt;br /&gt;
Hierzu in der Datei &#039;&#039;../htdocs/vendor/symfony/symfony/src/Symfony/Component/DependencyInjection/Compiler/AutowirePass.php&#039;&#039; die Zeile 236 &#039;&#039;throw new AutoWiringFailedException&#039;&#039; auskommentieren. Die Datei ist allerdings erst nach dem Ausführens von docker:init vorhanden.&lt;br /&gt;
&lt;br /&gt;
Siehe auch Ticket: [[https://opencaching.atlassian.net/browse/OCC-90|OCC-90: Exception error during docker:init]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== [veraltet] Während docker:start-clean: &#039;&#039;&amp;quot;\Doctrine\Common\Persistence\Mapping\Driver\MappingDriverChain()&amp;quot; not found&#039;&#039; ====&lt;br /&gt;
Dies ist ein Fehler in einem der &#039;&#039;doctrine/*&#039;&#039; Pakete (vermutlich &#039;&#039;doctrine/persistence&#039;&#039;) in bestimmten Paketversionen. Hier hilft, die Datei &#039;&#039;/htdocs/vendor/doctrine/doctrine-bundle/Resources/config/orm.xml&#039;&#039; Zeile 32 zu editieren:&lt;br /&gt;
 &amp;lt;parameter key=&amp;quot;doctrine.orm.metadata.driver_chain.class&amp;quot;&amp;gt;Doctrine\Common\Persistence\Mapping\Driver\MappingDriverChain&amp;lt;/parameter&amp;gt;&lt;br /&gt;
zu&lt;br /&gt;
 &amp;lt;parameter key=&amp;quot;doctrine.orm.metadata.driver_chain.class&amp;quot;&amp;gt;Doctrine\Persistence\Mapping\Driver\MappingDriverChain&amp;lt;/parameter&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Allerdings muss dies zum richtigen Zeitpunkt passieren. Nachdem &#039;&#039;docker:start-clean&#039;&#039; aufgerufen wurde, kurz warten, bis die Pakete heruntergeladen wurden und noch bevor Abschnitt 13/32 anfängt, muss die Datei korrigiert und gespeichert worden sein.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== [veraltet] Während docker:start-clean: &#039;&#039;&amp;quot;Browserslist: caniuse-lite is outdated.&amp;quot;&#039;&#039; ====&lt;br /&gt;
Scheinbar wird die &amp;quot;browserslist&amp;quot; nicht automatisch aktualisiert. (Grund? k.A.)&lt;br /&gt;
&lt;br /&gt;
Zum manuellen Update im Docker:ssh eingeben:&lt;br /&gt;
 npx browserslist@latest --update-db&lt;br /&gt;
bzw.&lt;br /&gt;
 npx update-browserslist-db@latest&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== [veraltet] z.B. bei Update auf Symfony 5.2 kommt während docker:start-clean der Fehler &#039;&#039;&amp;quot;mv: cannot stat &#039;/root/.symfony/bin/symfony&#039;: No such file or directory Service &#039;webserver&#039; failed to build: The command &#039;/bin/sh -c mv /root/.symfony/bin/symfony /usr/local/bin/symfony&#039; returned a non-zero code: 1&amp;quot;&#039;&#039; ====&lt;br /&gt;
In diesem Fall in der Datei &#039;&#039;docker/httpd/Dockerfile&#039;&#039; die fehlerverursachende Zeile &lt;br /&gt;
  RUN mv /root/.symfony/bin/symfony /usr/local/bin/symfony&lt;br /&gt;
auskommentieren und docker:start-clean erneut laufen lassen.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Entwicklung|Fehlerhandbuch ]]&lt;/div&gt;</summary>
		<author><name>Fraggle</name></author>
	</entry>
	<entry>
		<id>https://wiki.opencaching.de/index.php?title=Entwicklungsumgebung_einrichten&amp;diff=8073</id>
		<title>Entwicklungsumgebung einrichten</title>
		<link rel="alternate" type="text/html" href="https://wiki.opencaching.de/index.php?title=Entwicklungsumgebung_einrichten&amp;diff=8073"/>
		<updated>2026-03-04T17:15:08Z</updated>

		<summary type="html">&lt;p&gt;Fraggle: Ergänzung Mailpit&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Das Einrichten der Testumgebung erfolgt in mehreren Schritten, die im folgenden beschrieben sind. Falls es dabei zu unerwarteten Fehlermeldungen kommt, bitte die letzten Schritte noch einmal genau anschauen und gegebenenfalls wiederholen. Auch ein Blick ins Fehlerhandbuch hilft meistens, da bereits viele Fallstricke entdeckt und beschrieben wurden.&lt;br /&gt;
&lt;br /&gt;
== 1. Das Betriebssystem vorbereiten, entweder Linux oder Windows ==&lt;br /&gt;
=== Windows 10 ===&lt;br /&gt;
==== Programme installieren ====&lt;br /&gt;
Unter Windows ist es standardmäßig nicht möglich, “einfach“ die Linux Distribution Ubuntu zu installieren. Dazu muss vorab erst das WSL2 aktiviert / installiert werden werden (Punkt 1). Im Anschluss ist eine Installation von Ubuntu (18.04 oder höher) möglich. Zudem muss DDEV installiert werden, in welchem dann die Entwicklungsumgebung laufen kann (Punkt 2).&lt;br /&gt;
&lt;br /&gt;
# WSL2 unter Windows10 aktivieren und Ubuntu installieren: &lt;br /&gt;
## Aus dem Microsoft-Store: https://aka.ms/wslstorepage (verfügbar seit Nov. 2022) &lt;br /&gt;
## Manuell unter [https://learn.microsoft.com/de-de/windows/wsl/install#manual-installation-steps|Installieren von WSL]&lt;br /&gt;
# DDEV für Windows installieren: [https://docs.ddev.com/en/stable/#system-requirements-windows-wsl2|Install DDEV WSL2]&lt;br /&gt;
&lt;br /&gt;
Danach kann Ubuntu gestartet werden (z.B. im “Such“-Menü nach Ubuntu suchen und anklicken). Beim erstmaligen Starten von Ubuntu müssen ein Benutzername und ein Passwort festgelegt werden.&lt;br /&gt;
&lt;br /&gt;
Im Anschluss den Punkten folgen und ausführen, die im nächsten Schritt “Linux” beschrieben werden.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Linux ===&lt;br /&gt;
Der Linuxartikel wurde erstellt auf Lubuntu 22.04 und erweitert mit Debian 12&lt;br /&gt;
&lt;br /&gt;
==== Programme installieren ====&lt;br /&gt;
Folgende Programme sind notwendig und müssen vorab installiert werden:&lt;br /&gt;
PHP (aktuell mindestens PHP8.2), diverse PHP-Erweiterungen, ddev, mariadb-client. Für die PHP-Erweiterungen ist eventuell ein zusätzliches PPA-Repository notwendig. Dessen Installation erfordert je nach Betriebssystem ein unterschiedliches Vorgehen.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;Ubuntu:&lt;br /&gt;
sudo apt install software-properties-common&lt;br /&gt;
sudo add-apt-repository ppa:ondrej/php&lt;br /&gt;
&lt;br /&gt;
Debian:&lt;br /&gt;
sudo apt install software-properties-common ca-certificates lsb-release apt-transport-https&lt;br /&gt;
curl -sSL https://packages.sury.org/php/README.txt | sudo bash -x&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Die Pakete lassen sich mit folgenden Befehlen installieren (Versionsnummer kann abweichen).&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;sudo apt update&lt;br /&gt;
sudo apt install php8.2 php8.2-mbstring php8.2-curl php8.2-xml php8.2-mysql&lt;br /&gt;
sudo apt install mariadb-client&lt;br /&gt;
sudo apt install ddev&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Sollten beim Installieren der Pakete Fehlermeldungen auftreten, ist es empfehlenswert, die Pakete einzeln zu installieren und auftretende Fehler/Abhängigkeiten einzeln zu lösen.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== 2. Sourcecode von Git laden ==&lt;br /&gt;
=== Github ===&lt;br /&gt;
Zwar ist zum Herunterlden des Sourcecodes keine Account auf GitHub notwendig, aber zum Hochladen wird einer benötigt. Daher sollte zuerst einen Account auf https://github.com/ angelegt werden.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== optional: SSH-Keys für Repositorys anlegen und in Github eintragen ===&lt;br /&gt;
siehe https://docs.github.com/en/free-pro-team@latest/github/authenticating-to-github/connecting-to-github-with-ssh&amp;lt;br /&amp;gt;&lt;br /&gt;
oder: https://www.heise.de/tipps-tricks/SSH-Key-fuer-GitHub-Repositories-einrichten-4627459.html&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Git lokal installieren ===&lt;br /&gt;
Windows:&amp;lt;br /&amp;gt;&lt;br /&gt;
siehe: https://github.com/git-for-windows/git/releases&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Linux:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;sudo apt install git&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Sourcecode lokal herunterladen ===&lt;br /&gt;
Ein Terminal öffnen, folgende Kommandos ausführen und dabei Namen und Email-Adresse des Git-Accounts eintragen:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;git config --local user.name &amp;quot;Your Name Here&amp;quot;&lt;br /&gt;
git config --local user.email &amp;quot;your_email@youremail.com&amp;quot;&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Im Verzeichnis &amp;quot;home&amp;quot; einen Ordner &amp;quot;opencaching&amp;quot; (Name beliebig) anlegen. Dort folgenden Code ausführen. Dies legt einen Ordner mit dem Namen “oc-server3“ an, lädt den OC-Code aus deinem Github-Fork herunter und kopiert ihn in diesen Ordner.&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;git clone git@github.com:&amp;lt;DeinGithubBenutzername&amp;gt;/oc-server3&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Im Anschluss in den Ordner “oc-server3“ wechseln und den folgenden Befehl ausführen, um bei einem Update den neuesten Sourcecode aus dem Opencaching.de-Repository erhalten zu können:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;cd oc-server3&lt;br /&gt;
git remote add upstream git@github.com:OpencachingDeutschland/oc-server3&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Mit folgendem Befehl gibt es eine Übersicht über die verknüpften Repositorys, die (abgesehen vom Nutzernamen ‘Slini11’) wie in der Grafik aussehen müssen:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;git remote -v&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
[[Image:Testumgebung Git 01.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Nun den Branch “development“ auschecken:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;git checkout development&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Und den Development-Branch auf aktuellen Stand bringen:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;git pull --rebase upstream development &amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Weiterführende Informationen zu Git ===&lt;br /&gt;
Diese sind unter anderem im [[Entwicklung/Git|OC-Wiki]] zu finden&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== 3. DDEV Entwicklungsumgebung initalisieren ==&lt;br /&gt;
=== Entwicklungsumgebung zum ersten Mal starten ===&lt;br /&gt;
Zuerst in den Projektordner “oc-server3“ navigieren und dort die Installation der Testumgebung starten.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Scripte einzeln ausführen ====&lt;br /&gt;
* ddev anstarten. Im Laufe dieses Prozesses wird die hosts-Datei automatisch angepasst.&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;ddev start&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Starten der Initialisierung der Testumgebung und der Datenbank:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;ddev init&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Die Entwicklungsumgebung steht nun über den Browser bereit unter:&lt;br /&gt;
  https://opencaching.ddev.site&lt;br /&gt;
  bzw.&lt;br /&gt;
  https://try-opencaching.ddev.site&lt;br /&gt;
&lt;br /&gt;
Das Passwort für den Benutzer &#039;&#039;root&#039;&#039; lautet &#039;&#039;developer&#039;&#039;. Das Passwort der anderen Benutzer (Benutzernamen siehe Datenbank) lautet &#039;&#039;password&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* Ein Mailpit steht nun über den Browser bereit (zumindest für den Legacy-Teil, für OC4 ist es noch nicht bestätigt) unter:&lt;br /&gt;
  https://opencaching.ddev.site:8026/&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Entwicklungsumgebung ein weiteres Mal starten ===&lt;br /&gt;
Die Testumgebung kann neugestartet werden mit:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;ddev restart&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Entwicklungsumgebung stoppen ===&lt;br /&gt;
Die Testumgebung kann gestoppt werden mit:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;ddev stop&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Entwicklungsumgebung löschen ===&lt;br /&gt;
Die Testumgebung kann im Projektordner gelöscht werden mit:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;ddev delete --omit-snapshot&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Danach sind ein erneutes &#039;&#039;ddev start&#039;&#039; und &#039;&#039;ddev init&#039;&#039; notwendig.&lt;br /&gt;
&lt;br /&gt;
=== von DDEV angelegte Objekte löschen und Projekte aus der globalen DDEV-Liste löschen ===&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;ddev clean --all&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;ddev stop --unlist opencaching&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== xdebug in der Entwicklungsumgebung starten ===&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;ddev xdebug&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Ein &#039;&#039;ddev start&#039;&#039; oder &#039;&#039;ddev restart&#039;&#039; deaktiviert das xdebug wieder.&lt;br /&gt;
&lt;br /&gt;
=== Weitere ddev-Optionen.. ===&lt;br /&gt;
&#039;&#039;ddev&#039;&#039; ohne Parameter aufrufen gibt eine Liste weiterer Optionen aus.&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;ddev&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 4. Die  Testdatenbank füllen ==&lt;br /&gt;
Während der Installation wird eine Testdatenbank importiert, die bereits eine kleine Menge an Caches und Nutzern beinhaltet. Ein manueller Import des Datenbankdumps ist somit (seit März 2021) nicht mehr notwendig. &lt;br /&gt;
&lt;br /&gt;
Für den Fall, dass trotzdem Daten exportiert / importiert werden sollen, können folgende Abschnitte berücksichtigt werden:&lt;br /&gt;
&lt;br /&gt;
=== Login auf der Test-Datenbank im ddev-Container ===&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;mysql -uroot -proot -hopencaching-db opencaching&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Datenbank innerhalb des ddev-Containers exportieren ===&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;mysqldump -uroot -proot -hopencaching-db opencaching &amp;gt; file.sql&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Datenbank außerhalb des ddev-Containers exportieren ===&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;mysqldump --complete-insert --user root -proot --host 0.0.0.0 opencaching &amp;gt; dump.sql&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Datenbank im phpStorm exportieren ===&lt;br /&gt;
Auf der rechten Bildschirmseite den Databasedialog ausklappen&lt;br /&gt;
rechte Maustaste auf die zu exportierende Datenbank “opencaching” =&amp;gt; “Export with ‘mysqldump’”&lt;br /&gt;
&lt;br /&gt;
[[Image:Testumgebung DB 01.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Im Exportmenü die Zeile “Statements” umstellen auf “Insert with columns” und eventuell den Ausgabepfad “Out Path” anpassen. Im Kommandofeld den Parameter “--routines“ ergänzen und dann “Run” drücken&lt;br /&gt;
&lt;br /&gt;
[[Image:Testumgebung DB 02.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Datenbank-Dump im phpStorm importieren ===&lt;br /&gt;
Auf der rechten Bildschirmseite den Databasedialog ausklappen&lt;br /&gt;
rechte Maustaste auf die Datenbank =&amp;gt; “Restore with ‘mysql’”&lt;br /&gt;
&lt;br /&gt;
[[Image:Testumgebung DB 03.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Im Importmenü den Eingabepfad “Path to dump” anpassen, dann “Run” drücken&lt;br /&gt;
&lt;br /&gt;
[[Image:Testumgebung DB 04.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== 5. Die Entwicklungs-IDE vorbereiten ==&lt;br /&gt;
Gegebenenfalls sind an der Programmierumgebung Änderungen vorzunehmen, um zum Beispiel [[OC Coding Style|einheitlich formatierten Code]] zu schreiben. &lt;br /&gt;
&lt;br /&gt;
=== Einrichtung des PHP Coding Styles am Beispiel von phpStorm ===&lt;br /&gt;
Unter Settings / Code Style / PHP rechts auf “Set from…” klicken und “PSR-12” auswählen. Die Einstellung mit “Apply” bestätigen.&lt;br /&gt;
(Weitere Informationen zum Coding Style sind [[OC Coding Style|hier im Wiki]] zu finden.)&lt;br /&gt;
&lt;br /&gt;
[[Image:Testumgebung IDE 01.png|500px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Symfony Pfade am Beispiel phpStorm anpassen ===&lt;br /&gt;
[[Image:Testumgebung IDE 04.jpeg]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Terminalanpassung am Beispiel phpStorm (für Windows-Nutzer) ===&lt;br /&gt;
[[Image:Testumgebung IDE 05.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Datenbankanbindung in phpStorm aktivieren ===&lt;br /&gt;
Seit ddev als Umgebung genutzt wird, bietet sich das ddev-Plugin im phpStorm an. Es richtet z.B. den Zugang zur opencaching-Datenbank in der Testumgebung sowie weitere Einstellungen automatisch ein.&lt;br /&gt;
Hierzu im phpStorm im Menü Datei/Einstellungen.. zum Abschnitt &#039;&#039;Plugins&#039;&#039; navigieren, im Suchfeld &#039;&#039;ddev&#039;&#039; eintippen und das Plugin installieren.&lt;br /&gt;
[[Image:Testumgebung IDE 06.jpg]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Synchronisieren/Wiederherstellen der Benutzereinstellungen mittels JetBrains-Server ===&lt;br /&gt;
Sofern man bei JetBrains einen Account hat, kann man mit diesem die Einstellungen der lokalen IDE synchronisieren und z.B. nach einer Neuinstallation von dort wiederherstellen.&lt;br /&gt;
&lt;br /&gt;
Hierzu in der IDE rechts oben auf das Zahnrad klicken und “Settings Sync is off” auswählen.&amp;lt;/br&amp;gt;&lt;br /&gt;
[[Image:Testumgebung IDE 02.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Im folgenden Fenster den Button “Enable Settings Sync” klicken und danach alle Einstellungen auswählen, die man sichern möchte. Ein Klick auf “Push Settings to Account” sichert die Einstellungen. Ein Klick auf “Get Settings from Account” stellt sie wieder her, sofern sie vorher dorthin gesichert wurden.&lt;br /&gt;
[[Image:Testumgebung IDE 03.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== 6. Das Fehlerhandbuch lesen (gilt insbesondere für die Schritte #1-#4 :wink:) ==&lt;br /&gt;
&lt;br /&gt;
Beireits bekannte Fehler werden im [[Entwicklungsumgebung/Fehlerhandbuch|Fehlerhandbuch]] beschrieben.&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Entwicklung|Entwicklungsumgebung ]]&lt;/div&gt;</summary>
		<author><name>Fraggle</name></author>
	</entry>
	<entry>
		<id>https://wiki.opencaching.de/index.php?title=Entwicklungsumgebung_einrichten&amp;diff=8072</id>
		<title>Entwicklungsumgebung einrichten</title>
		<link rel="alternate" type="text/html" href="https://wiki.opencaching.de/index.php?title=Entwicklungsumgebung_einrichten&amp;diff=8072"/>
		<updated>2026-03-04T14:10:09Z</updated>

		<summary type="html">&lt;p&gt;Fraggle: Linux: ddev fehlte als Paket&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Das Einrichten der Testumgebung erfolgt in mehreren Schritten, die im folgenden beschrieben sind. Falls es dabei zu unerwarteten Fehlermeldungen kommt, bitte die letzten Schritte noch einmal genau anschauen und gegebenenfalls wiederholen. Auch ein Blick ins Fehlerhandbuch hilft meistens, da bereits viele Fallstricke entdeckt und beschrieben wurden.&lt;br /&gt;
&lt;br /&gt;
== 1. Das Betriebssystem vorbereiten, entweder Linux oder Windows ==&lt;br /&gt;
=== Windows 10 ===&lt;br /&gt;
==== Programme installieren ====&lt;br /&gt;
Unter Windows ist es standardmäßig nicht möglich, “einfach“ die Linux Distribution Ubuntu zu installieren. Dazu muss vorab erst das WSL2 aktiviert / installiert werden werden (Punkt 1). Im Anschluss ist eine Installation von Ubuntu (18.04 oder höher) möglich. Zudem muss DDEV installiert werden, in welchem dann die Entwicklungsumgebung laufen kann (Punkt 2).&lt;br /&gt;
&lt;br /&gt;
# WSL2 unter Windows10 aktivieren und Ubuntu installieren: &lt;br /&gt;
## Aus dem Microsoft-Store: https://aka.ms/wslstorepage (verfügbar seit Nov. 2022) &lt;br /&gt;
## Manuell unter [https://learn.microsoft.com/de-de/windows/wsl/install#manual-installation-steps|Installieren von WSL]&lt;br /&gt;
# DDEV für Windows installieren: [https://docs.ddev.com/en/stable/#system-requirements-windows-wsl2|Install DDEV WSL2]&lt;br /&gt;
&lt;br /&gt;
Danach kann Ubuntu gestartet werden (z.B. im “Such“-Menü nach Ubuntu suchen und anklicken). Beim erstmaligen Starten von Ubuntu müssen ein Benutzername und ein Passwort festgelegt werden.&lt;br /&gt;
&lt;br /&gt;
Im Anschluss den Punkten folgen und ausführen, die im nächsten Schritt “Linux” beschrieben werden.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Linux ===&lt;br /&gt;
Der Linuxartikel wurde erstellt auf Lubuntu 22.04 und erweitert mit Debian 12&lt;br /&gt;
&lt;br /&gt;
==== Programme installieren ====&lt;br /&gt;
Folgende Programme sind notwendig und müssen vorab installiert werden:&lt;br /&gt;
PHP (aktuell mindestens PHP8.2), diverse PHP-Erweiterungen, ddev, mariadb-client. Für die PHP-Erweiterungen ist eventuell ein zusätzliches PPA-Repository notwendig. Dessen Installation erfordert je nach Betriebssystem ein unterschiedliches Vorgehen.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;Ubuntu:&lt;br /&gt;
sudo apt install software-properties-common&lt;br /&gt;
sudo add-apt-repository ppa:ondrej/php&lt;br /&gt;
&lt;br /&gt;
Debian:&lt;br /&gt;
sudo apt install software-properties-common ca-certificates lsb-release apt-transport-https&lt;br /&gt;
curl -sSL https://packages.sury.org/php/README.txt | sudo bash -x&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Die Pakete lassen sich mit folgenden Befehlen installieren (Versionsnummer kann abweichen).&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;sudo apt update&lt;br /&gt;
sudo apt install php8.2 php8.2-mbstring php8.2-curl php8.2-xml php8.2-mysql&lt;br /&gt;
sudo apt install mariadb-client&lt;br /&gt;
sudo apt install ddev&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Sollten beim Installieren der Pakete Fehlermeldungen auftreten, ist es empfehlenswert, die Pakete einzeln zu installieren und auftretende Fehler/Abhängigkeiten einzeln zu lösen.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== 2. Sourcecode von Git laden ==&lt;br /&gt;
=== Github ===&lt;br /&gt;
Zwar ist zum Herunterlden des Sourcecodes keine Account auf GitHub notwendig, aber zum Hochladen wird einer benötigt. Daher sollte zuerst einen Account auf https://github.com/ angelegt werden.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== optional: SSH-Keys für Repositorys anlegen und in Github eintragen ===&lt;br /&gt;
siehe https://docs.github.com/en/free-pro-team@latest/github/authenticating-to-github/connecting-to-github-with-ssh&amp;lt;br /&amp;gt;&lt;br /&gt;
oder: https://www.heise.de/tipps-tricks/SSH-Key-fuer-GitHub-Repositories-einrichten-4627459.html&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Git lokal installieren ===&lt;br /&gt;
Windows:&amp;lt;br /&amp;gt;&lt;br /&gt;
siehe: https://github.com/git-for-windows/git/releases&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Linux:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;sudo apt install git&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Sourcecode lokal herunterladen ===&lt;br /&gt;
Ein Terminal öffnen, folgende Kommandos ausführen und dabei Namen und Email-Adresse des Git-Accounts eintragen:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;git config --local user.name &amp;quot;Your Name Here&amp;quot;&lt;br /&gt;
git config --local user.email &amp;quot;your_email@youremail.com&amp;quot;&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Im Verzeichnis &amp;quot;home&amp;quot; einen Ordner &amp;quot;opencaching&amp;quot; (Name beliebig) anlegen. Dort folgenden Code ausführen. Dies legt einen Ordner mit dem Namen “oc-server3“ an, lädt den OC-Code aus deinem Github-Fork herunter und kopiert ihn in diesen Ordner.&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;git clone git@github.com:&amp;lt;DeinGithubBenutzername&amp;gt;/oc-server3&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Im Anschluss in den Ordner “oc-server3“ wechseln und den folgenden Befehl ausführen, um bei einem Update den neuesten Sourcecode aus dem Opencaching.de-Repository erhalten zu können:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;cd oc-server3&lt;br /&gt;
git remote add upstream git@github.com:OpencachingDeutschland/oc-server3&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Mit folgendem Befehl gibt es eine Übersicht über die verknüpften Repositorys, die (abgesehen vom Nutzernamen ‘Slini11’) wie in der Grafik aussehen müssen:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;git remote -v&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
[[Image:Testumgebung Git 01.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Nun den Branch “development“ auschecken:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;git checkout development&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Und den Development-Branch auf aktuellen Stand bringen:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;git pull --rebase upstream development &amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Weiterführende Informationen zu Git ===&lt;br /&gt;
Diese sind unter anderem im [[Entwicklung/Git|OC-Wiki]] zu finden&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== 3. DDEV Entwicklungsumgebung initalisieren ==&lt;br /&gt;
=== Entwicklungsumgebung zum ersten Mal starten ===&lt;br /&gt;
Zuerst in den Projektordner “oc-server3“ navigieren und dort die Installation der Testumgebung starten.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Scripte einzeln ausführen ====&lt;br /&gt;
* ddev anstarten. Im Laufe dieses Prozesses wird die hosts-Datei automatisch angepasst.&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;ddev start&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Starten der Initialisierung der Testumgebung und der Datenbank:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;ddev init&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Die Entwicklungsumgebung steht nun über den Browser bereit unter:&lt;br /&gt;
  https://opencaching.ddev.site&lt;br /&gt;
  bzw.&lt;br /&gt;
  https://try-opencaching.ddev.site&lt;br /&gt;
&lt;br /&gt;
* Das Passwort für den Benutzer &#039;&#039;root&#039;&#039; lautet &#039;&#039;developer&#039;&#039;. Das Passwort der anderen Benutzer (Benutzernamen siehe Datenbank) lautet &#039;&#039;password&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Entwicklungsumgebung ein weiteres Mal starten ===&lt;br /&gt;
Die Testumgebung kann neugestartet werden mit:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;ddev restart&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Entwicklungsumgebung stoppen ===&lt;br /&gt;
Die Testumgebung kann gestoppt werden mit:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;ddev stop&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Entwicklungsumgebung löschen ===&lt;br /&gt;
Die Testumgebung kann im Projektordner gelöscht werden mit:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;ddev delete --omit-snapshot&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Danach sind ein erneutes &#039;&#039;ddev start&#039;&#039; und &#039;&#039;ddev init&#039;&#039; notwendig.&lt;br /&gt;
&lt;br /&gt;
=== von DDEV angelegte Objekte löschen und Projekte aus der globalen DDEV-Liste löschen ===&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;ddev clean --all&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;ddev stop --unlist opencaching&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== xdebug in der Entwicklungsumgebung starten ===&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;ddev xdebug&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Ein &#039;&#039;ddev start&#039;&#039; oder &#039;&#039;ddev restart&#039;&#039; deaktiviert das xdebug wieder.&lt;br /&gt;
&lt;br /&gt;
=== Weitere ddev-Optionen.. ===&lt;br /&gt;
&#039;&#039;ddev&#039;&#039; ohne Parameter aufrufen gibt eine Liste weiterer Optionen aus.&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;ddev&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 4. Die  Testdatenbank füllen ==&lt;br /&gt;
Während der Installation wird eine Testdatenbank importiert, die bereits eine kleine Menge an Caches und Nutzern beinhaltet. Ein manueller Import des Datenbankdumps ist somit (seit März 2021) nicht mehr notwendig. &lt;br /&gt;
&lt;br /&gt;
Für den Fall, dass trotzdem Daten exportiert / importiert werden sollen, können folgende Abschnitte berücksichtigt werden:&lt;br /&gt;
&lt;br /&gt;
=== Login auf der Test-Datenbank im ddev-Container ===&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;mysql -uroot -proot -hopencaching-db opencaching&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Datenbank innerhalb des ddev-Containers exportieren ===&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;mysqldump -uroot -proot -hopencaching-db opencaching &amp;gt; file.sql&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Datenbank außerhalb des ddev-Containers exportieren ===&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;mysqldump --complete-insert --user root -proot --host 0.0.0.0 opencaching &amp;gt; dump.sql&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Datenbank im phpStorm exportieren ===&lt;br /&gt;
Auf der rechten Bildschirmseite den Databasedialog ausklappen&lt;br /&gt;
rechte Maustaste auf die zu exportierende Datenbank “opencaching” =&amp;gt; “Export with ‘mysqldump’”&lt;br /&gt;
&lt;br /&gt;
[[Image:Testumgebung DB 01.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Im Exportmenü die Zeile “Statements” umstellen auf “Insert with columns” und eventuell den Ausgabepfad “Out Path” anpassen. Im Kommandofeld den Parameter “--routines“ ergänzen und dann “Run” drücken&lt;br /&gt;
&lt;br /&gt;
[[Image:Testumgebung DB 02.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Datenbank-Dump im phpStorm importieren ===&lt;br /&gt;
Auf der rechten Bildschirmseite den Databasedialog ausklappen&lt;br /&gt;
rechte Maustaste auf die Datenbank =&amp;gt; “Restore with ‘mysql’”&lt;br /&gt;
&lt;br /&gt;
[[Image:Testumgebung DB 03.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Im Importmenü den Eingabepfad “Path to dump” anpassen, dann “Run” drücken&lt;br /&gt;
&lt;br /&gt;
[[Image:Testumgebung DB 04.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== 5. Die Entwicklungs-IDE vorbereiten ==&lt;br /&gt;
Gegebenenfalls sind an der Programmierumgebung Änderungen vorzunehmen, um zum Beispiel [[OC Coding Style|einheitlich formatierten Code]] zu schreiben. &lt;br /&gt;
&lt;br /&gt;
=== Einrichtung des PHP Coding Styles am Beispiel von phpStorm ===&lt;br /&gt;
Unter Settings / Code Style / PHP rechts auf “Set from…” klicken und “PSR-12” auswählen. Die Einstellung mit “Apply” bestätigen.&lt;br /&gt;
(Weitere Informationen zum Coding Style sind [[OC Coding Style|hier im Wiki]] zu finden.)&lt;br /&gt;
&lt;br /&gt;
[[Image:Testumgebung IDE 01.png|500px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Symfony Pfade am Beispiel phpStorm anpassen ===&lt;br /&gt;
[[Image:Testumgebung IDE 04.jpeg]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Terminalanpassung am Beispiel phpStorm (für Windows-Nutzer) ===&lt;br /&gt;
[[Image:Testumgebung IDE 05.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Datenbankanbindung in phpStorm aktivieren ===&lt;br /&gt;
Seit ddev als Umgebung genutzt wird, bietet sich das ddev-Plugin im phpStorm an. Es richtet z.B. den Zugang zur opencaching-Datenbank in der Testumgebung sowie weitere Einstellungen automatisch ein.&lt;br /&gt;
Hierzu im phpStorm im Menü Datei/Einstellungen.. zum Abschnitt &#039;&#039;Plugins&#039;&#039; navigieren, im Suchfeld &#039;&#039;ddev&#039;&#039; eintippen und das Plugin installieren.&lt;br /&gt;
[[Image:Testumgebung IDE 06.jpg]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Synchronisieren/Wiederherstellen der Benutzereinstellungen mittels JetBrains-Server ===&lt;br /&gt;
Sofern man bei JetBrains einen Account hat, kann man mit diesem die Einstellungen der lokalen IDE synchronisieren und z.B. nach einer Neuinstallation von dort wiederherstellen.&lt;br /&gt;
&lt;br /&gt;
Hierzu in der IDE rechts oben auf das Zahnrad klicken und “Settings Sync is off” auswählen.&amp;lt;/br&amp;gt;&lt;br /&gt;
[[Image:Testumgebung IDE 02.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Im folgenden Fenster den Button “Enable Settings Sync” klicken und danach alle Einstellungen auswählen, die man sichern möchte. Ein Klick auf “Push Settings to Account” sichert die Einstellungen. Ein Klick auf “Get Settings from Account” stellt sie wieder her, sofern sie vorher dorthin gesichert wurden.&lt;br /&gt;
[[Image:Testumgebung IDE 03.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== 6. Das Fehlerhandbuch lesen (gilt insbesondere für die Schritte #1-#4 :wink:) ==&lt;br /&gt;
&lt;br /&gt;
Beireits bekannte Fehler werden im [[Entwicklungsumgebung/Fehlerhandbuch|Fehlerhandbuch]] beschrieben.&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Entwicklung|Entwicklungsumgebung ]]&lt;/div&gt;</summary>
		<author><name>Fraggle</name></author>
	</entry>
	<entry>
		<id>https://wiki.opencaching.de/index.php?title=Entwicklungsumgebung_einrichten&amp;diff=8071</id>
		<title>Entwicklungsumgebung einrichten</title>
		<link rel="alternate" type="text/html" href="https://wiki.opencaching.de/index.php?title=Entwicklungsumgebung_einrichten&amp;diff=8071"/>
		<updated>2026-02-25T12:34:33Z</updated>

		<summary type="html">&lt;p&gt;Fraggle: +ddev --unlist&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Das Einrichten der Testumgebung erfolgt in mehreren Schritten, die im folgenden beschrieben sind. Falls es dabei zu unerwarteten Fehlermeldungen kommt, bitte die letzten Schritte noch einmal genau anschauen und gegebenenfalls wiederholen. Auch ein Blick ins Fehlerhandbuch hilft meistens, da bereits viele Fallstricke entdeckt und beschrieben wurden.&lt;br /&gt;
&lt;br /&gt;
== 1. Das Betriebssystem vorbereiten, entweder Linux oder Windows ==&lt;br /&gt;
=== Windows 10 ===&lt;br /&gt;
==== Programme installieren ====&lt;br /&gt;
Unter Windows ist es standardmäßig nicht möglich, “einfach“ die Linux Distribution Ubuntu zu installieren. Dazu muss vorab erst das WSL2 aktiviert / installiert werden werden (Punkt 1). Im Anschluss ist eine Installation von Ubuntu (18.04 oder höher) möglich. Zudem muss DDEV installiert werden, in welchem dann die Entwicklungsumgebung laufen kann (Punkt 2).&lt;br /&gt;
&lt;br /&gt;
# WSL2 unter Windows10 aktivieren und Ubuntu installieren: &lt;br /&gt;
## Aus dem Microsoft-Store: https://aka.ms/wslstorepage (verfügbar seit Nov. 2022) &lt;br /&gt;
## Manuell unter [https://learn.microsoft.com/de-de/windows/wsl/install#manual-installation-steps|Installieren von WSL]&lt;br /&gt;
# DDEV für Windows installieren: [https://docs.ddev.com/en/stable/#system-requirements-windows-wsl2|Install DDEV WSL2]&lt;br /&gt;
&lt;br /&gt;
Danach kann Ubuntu gestartet werden (z.B. im “Such“-Menü nach Ubuntu suchen und anklicken). Beim erstmaligen Starten von Ubuntu müssen ein Benutzername und ein Passwort festgelegt werden.&lt;br /&gt;
&lt;br /&gt;
Im Anschluss den Punkten folgen und ausführen, die im nächsten Schritt “Linux” beschrieben werden.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Linux ===&lt;br /&gt;
Der Linuxartikel wurde erstellt auf Lubuntu 22.04 und erweitert mit Debian 12&lt;br /&gt;
&lt;br /&gt;
==== Programme installieren ====&lt;br /&gt;
Folgende Programme sind notwendig und müssen vorab installiert werden:&lt;br /&gt;
PHP (aktuell mindestens PHP8.2), diverse PHP-Erweiterungen, ddev, mariadb-client. Für die PHP-Erweiterungen ist eventuell ein zusätzliches PPA-Repository notwendig. Dessen Installation erfordert je nach Betriebssystem ein unterschiedliches Vorgehen.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;Ubuntu:&lt;br /&gt;
sudo apt install software-properties-common&lt;br /&gt;
sudo add-apt-repository ppa:ondrej/php&lt;br /&gt;
&lt;br /&gt;
Debian:&lt;br /&gt;
sudo apt install software-properties-common ca-certificates lsb-release apt-transport-https&lt;br /&gt;
curl -sSL https://packages.sury.org/php/README.txt | sudo bash -x&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Die Pakete lassen sich mit folgenden Befehlen installieren (Versionsnummer kann abweichen).&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;sudo apt update&lt;br /&gt;
sudo apt install php8.2 php8.2-mbstring php8.2-curl php8.2-xml php8.2-mysql&lt;br /&gt;
sudo apt install mariadb-client&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Sollten beim Installieren der Pakete Fehlermeldungen auftreten, ist es empfehlenswert, die Pakete einzeln zu installieren und auftretende Fehler/Abhängigkeiten einzeln zu lösen.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== 2. Sourcecode von Git laden ==&lt;br /&gt;
=== Github ===&lt;br /&gt;
Zwar ist zum Herunterlden des Sourcecodes keine Account auf GitHub notwendig, aber zum Hochladen wird einer benötigt. Daher sollte zuerst einen Account auf https://github.com/ angelegt werden.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== optional: SSH-Keys für Repositorys anlegen und in Github eintragen ===&lt;br /&gt;
siehe https://docs.github.com/en/free-pro-team@latest/github/authenticating-to-github/connecting-to-github-with-ssh&amp;lt;br /&amp;gt;&lt;br /&gt;
oder: https://www.heise.de/tipps-tricks/SSH-Key-fuer-GitHub-Repositories-einrichten-4627459.html&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Git lokal installieren ===&lt;br /&gt;
Windows:&amp;lt;br /&amp;gt;&lt;br /&gt;
siehe: https://github.com/git-for-windows/git/releases&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Linux:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;sudo apt install git&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Sourcecode lokal herunterladen ===&lt;br /&gt;
Ein Terminal öffnen, folgende Kommandos ausführen und dabei Namen und Email-Adresse des Git-Accounts eintragen:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;git config --global user.name &amp;quot;Your Name Here&amp;quot;&lt;br /&gt;
git config --global user.email &amp;quot;your_email@youremail.com&amp;quot;&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Im Verzeichnis &amp;quot;home&amp;quot; einen Ordner &amp;quot;opencaching&amp;quot; (Name beliebig) anlegen. Dort folgenden Code ausführen. Dies legt einen Ordner mit dem Namen “oc-server3“ an, lädt den OC-Code aus deinem Github-Fork herunter und kopiert ihn in diesen Ordner.&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;git clone git@github.com:&amp;lt;DeinGithubBenutzername&amp;gt;/oc-server3&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Im Anschluss in den Ordner “oc-server3“ wechseln und den folgenden Befehl ausführen, um bei einem Update den neuesten Sourcecode aus dem Opencaching.de-Repository erhalten zu können:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;cd oc-server3&lt;br /&gt;
git remote add upstream git@github.com:OpencachingDeutschland/oc-server3&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Mit folgendem Befehl gibt es eine Übersicht über die verknüpften Repositorys, die (abgesehen vom Nutzernamen ‘Slini11’) wie in der Grafik aussehen müssen:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;git remote -v&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
[[Image:Testumgebung Git 01.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Nun den Branch “development“ auschecken:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;git checkout development&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Und den Development-Branch auf aktuellen Stand bringen:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;git pull --rebase upstream development &amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Weiterführende Informationen zu Git ===&lt;br /&gt;
Diese sind unter anderem im [[Entwicklung/Git|OC-Wiki]] zu finden&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== 3. DDEV Entwicklungsumgebung initalisieren ==&lt;br /&gt;
=== Entwicklungsumgebung zum ersten Mal starten ===&lt;br /&gt;
Zuerst in den Projektordner “oc-server3“ navigieren und dort die Installation der Testumgebung starten.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Scripte einzeln ausführen ====&lt;br /&gt;
* ddev anstarten. Im Laufe dieses Prozesses wird die hosts-Datei automatisch angepasst.&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;ddev start&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Starten der Initialisierung der Testumgebung und der Datenbank:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;ddev init&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Die Entwicklungsumgebung steht nun über den Browser bereit unter:&lt;br /&gt;
  https://opencaching.ddev.site&lt;br /&gt;
  bzw.&lt;br /&gt;
  https://try-opencaching.ddev.site&lt;br /&gt;
&lt;br /&gt;
* Das Passwort für den Benutzer &#039;&#039;root&#039;&#039; lautet &#039;&#039;developer&#039;&#039;. Das Passwort der anderen Benutzer (Benutzernamen siehe Datenbank) lautet &#039;&#039;password&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Entwicklungsumgebung ein weiteres Mal starten ===&lt;br /&gt;
Die Testumgebung kann neugestartet werden mit:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;ddev restart&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Entwicklungsumgebung stoppen ===&lt;br /&gt;
Die Testumgebung kann gestoppt werden mit:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;ddev stop&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Entwicklungsumgebung löschen ===&lt;br /&gt;
Die Testumgebung kann im Projektordner gelöscht werden mit:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;ddev delete --omit-snapshot&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Danach sind ein erneutes &#039;&#039;ddev start&#039;&#039; und &#039;&#039;ddev init&#039;&#039; notwendig.&lt;br /&gt;
&lt;br /&gt;
=== von DDEV angelegte Objekte löschen und Projekte aus der globalen DDEV-Liste löschen ===&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;ddev clean --all&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;ddev stop --unlist opencaching&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== xdebug in der Entwicklungsumgebung starten ===&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;ddev xdebug&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Ein &#039;&#039;ddev start&#039;&#039; oder &#039;&#039;ddev restart&#039;&#039; deaktiviert das xdebug wieder.&lt;br /&gt;
&lt;br /&gt;
=== Weitere ddev-Optionen.. ===&lt;br /&gt;
&#039;&#039;ddev&#039;&#039; ohne Parameter aufrufen gibt eine Liste weiterer Optionen aus.&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;ddev&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 4. Die  Testdatenbank füllen ==&lt;br /&gt;
Während der Installation wird eine Testdatenbank importiert, die bereits eine kleine Menge an Caches und Nutzern beinhaltet. Ein manueller Import des Datenbankdumps ist somit (seit März 2021) nicht mehr notwendig. &lt;br /&gt;
&lt;br /&gt;
Für den Fall, dass trotzdem Daten exportiert / importiert werden sollen, können folgende Abschnitte berücksichtigt werden:&lt;br /&gt;
&lt;br /&gt;
=== Login auf der Test-Datenbank im ddev-Container ===&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;mysql -uroot -proot -hopencaching-db opencaching&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Datenbank innerhalb des ddev-Containers exportieren ===&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;mysqldump -uroot -proot -hopencaching-db opencaching &amp;gt; file.sql&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Datenbank außerhalb des ddev-Containers exportieren ===&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;mysqldump --complete-insert --user root -proot --host 0.0.0.0 opencaching &amp;gt; dump.sql&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Datenbank im phpStorm exportieren ===&lt;br /&gt;
Auf der rechten Bildschirmseite den Databasedialog ausklappen&lt;br /&gt;
rechte Maustaste auf die zu exportierende Datenbank “opencaching” =&amp;gt; “Export with ‘mysqldump’”&lt;br /&gt;
&lt;br /&gt;
[[Image:Testumgebung DB 01.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Im Exportmenü die Zeile “Statements” umstellen auf “Insert with columns” und eventuell den Ausgabepfad “Out Path” anpassen. Im Kommandofeld den Parameter “--routines“ ergänzen und dann “Run” drücken&lt;br /&gt;
&lt;br /&gt;
[[Image:Testumgebung DB 02.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Datenbank-Dump im phpStorm importieren ===&lt;br /&gt;
Auf der rechten Bildschirmseite den Databasedialog ausklappen&lt;br /&gt;
rechte Maustaste auf die Datenbank =&amp;gt; “Restore with ‘mysql’”&lt;br /&gt;
&lt;br /&gt;
[[Image:Testumgebung DB 03.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Im Importmenü den Eingabepfad “Path to dump” anpassen, dann “Run” drücken&lt;br /&gt;
&lt;br /&gt;
[[Image:Testumgebung DB 04.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== 5. Die Entwicklungs-IDE vorbereiten ==&lt;br /&gt;
Gegebenenfalls sind an der Programmierumgebung Änderungen vorzunehmen, um zum Beispiel [[OC Coding Style|einheitlich formatierten Code]] zu schreiben. &lt;br /&gt;
&lt;br /&gt;
=== Einrichtung des PHP Coding Styles am Beispiel von phpStorm ===&lt;br /&gt;
Unter Settings / Code Style / PHP rechts auf “Set from…” klicken und “PSR-12” auswählen. Die Einstellung mit “Apply” bestätigen.&lt;br /&gt;
(Weitere Informationen zum Coding Style sind [[OC Coding Style|hier im Wiki]] zu finden.)&lt;br /&gt;
&lt;br /&gt;
[[Image:Testumgebung IDE 01.png|500px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Symfony Pfade am Beispiel phpStorm anpassen ===&lt;br /&gt;
[[Image:Testumgebung IDE 04.jpeg]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Terminalanpassung am Beispiel phpStorm (für Windows-Nutzer) ===&lt;br /&gt;
[[Image:Testumgebung IDE 05.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Datenbankanbindung in phpStorm aktivieren ===&lt;br /&gt;
Seit ddev als Umgebung genutzt wird, bietet sich das ddev-Plugin im phpStorm an. Es richtet z.B. den Zugang zur opencaching-Datenbank in der Testumgebung sowie weitere Einstellungen automatisch ein.&lt;br /&gt;
Hierzu im phpStorm im Menü Datei/Einstellungen.. zum Abschnitt &#039;&#039;Plugins&#039;&#039; navigieren, im Suchfeld &#039;&#039;ddev&#039;&#039; eintippen und das Plugin installieren.&lt;br /&gt;
[[Image:Testumgebung IDE 06.jpg]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Synchronisieren/Wiederherstellen der Benutzereinstellungen mittels JetBrains-Server ===&lt;br /&gt;
Sofern man bei JetBrains einen Account hat, kann man mit diesem die Einstellungen der lokalen IDE synchronisieren und z.B. nach einer Neuinstallation von dort wiederherstellen.&lt;br /&gt;
&lt;br /&gt;
Hierzu in der IDE rechts oben auf das Zahnrad klicken und “Settings Sync is off” auswählen.&amp;lt;/br&amp;gt;&lt;br /&gt;
[[Image:Testumgebung IDE 02.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Im folgenden Fenster den Button “Enable Settings Sync” klicken und danach alle Einstellungen auswählen, die man sichern möchte. Ein Klick auf “Push Settings to Account” sichert die Einstellungen. Ein Klick auf “Get Settings from Account” stellt sie wieder her, sofern sie vorher dorthin gesichert wurden.&lt;br /&gt;
[[Image:Testumgebung IDE 03.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== 6. Das Fehlerhandbuch lesen (gilt insbesondere für die Schritte #1-#4 :wink:) ==&lt;br /&gt;
&lt;br /&gt;
Beireits bekannte Fehler werden im [[Entwicklungsumgebung/Fehlerhandbuch|Fehlerhandbuch]] beschrieben.&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Entwicklung|Entwicklungsumgebung ]]&lt;/div&gt;</summary>
		<author><name>Fraggle</name></author>
	</entry>
	<entry>
		<id>https://wiki.opencaching.de/index.php?title=Entwicklungsumgebung_einrichten&amp;diff=8070</id>
		<title>Entwicklungsumgebung einrichten</title>
		<link rel="alternate" type="text/html" href="https://wiki.opencaching.de/index.php?title=Entwicklungsumgebung_einrichten&amp;diff=8070"/>
		<updated>2026-02-25T12:31:12Z</updated>

		<summary type="html">&lt;p&gt;Fraggle: +ddev clean&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Das Einrichten der Testumgebung erfolgt in mehreren Schritten, die im folgenden beschrieben sind. Falls es dabei zu unerwarteten Fehlermeldungen kommt, bitte die letzten Schritte noch einmal genau anschauen und gegebenenfalls wiederholen. Auch ein Blick ins Fehlerhandbuch hilft meistens, da bereits viele Fallstricke entdeckt und beschrieben wurden.&lt;br /&gt;
&lt;br /&gt;
== 1. Das Betriebssystem vorbereiten, entweder Linux oder Windows ==&lt;br /&gt;
=== Windows 10 ===&lt;br /&gt;
==== Programme installieren ====&lt;br /&gt;
Unter Windows ist es standardmäßig nicht möglich, “einfach“ die Linux Distribution Ubuntu zu installieren. Dazu muss vorab erst das WSL2 aktiviert / installiert werden werden (Punkt 1). Im Anschluss ist eine Installation von Ubuntu (18.04 oder höher) möglich. Zudem muss DDEV installiert werden, in welchem dann die Entwicklungsumgebung laufen kann (Punkt 2).&lt;br /&gt;
&lt;br /&gt;
# WSL2 unter Windows10 aktivieren und Ubuntu installieren: &lt;br /&gt;
## Aus dem Microsoft-Store: https://aka.ms/wslstorepage (verfügbar seit Nov. 2022) &lt;br /&gt;
## Manuell unter [https://learn.microsoft.com/de-de/windows/wsl/install#manual-installation-steps|Installieren von WSL]&lt;br /&gt;
# DDEV für Windows installieren: [https://docs.ddev.com/en/stable/#system-requirements-windows-wsl2|Install DDEV WSL2]&lt;br /&gt;
&lt;br /&gt;
Danach kann Ubuntu gestartet werden (z.B. im “Such“-Menü nach Ubuntu suchen und anklicken). Beim erstmaligen Starten von Ubuntu müssen ein Benutzername und ein Passwort festgelegt werden.&lt;br /&gt;
&lt;br /&gt;
Im Anschluss den Punkten folgen und ausführen, die im nächsten Schritt “Linux” beschrieben werden.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Linux ===&lt;br /&gt;
Der Linuxartikel wurde erstellt auf Lubuntu 22.04 und erweitert mit Debian 12&lt;br /&gt;
&lt;br /&gt;
==== Programme installieren ====&lt;br /&gt;
Folgende Programme sind notwendig und müssen vorab installiert werden:&lt;br /&gt;
PHP (aktuell mindestens PHP8.2), diverse PHP-Erweiterungen, ddev, mariadb-client. Für die PHP-Erweiterungen ist eventuell ein zusätzliches PPA-Repository notwendig. Dessen Installation erfordert je nach Betriebssystem ein unterschiedliches Vorgehen.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;Ubuntu:&lt;br /&gt;
sudo apt install software-properties-common&lt;br /&gt;
sudo add-apt-repository ppa:ondrej/php&lt;br /&gt;
&lt;br /&gt;
Debian:&lt;br /&gt;
sudo apt install software-properties-common ca-certificates lsb-release apt-transport-https&lt;br /&gt;
curl -sSL https://packages.sury.org/php/README.txt | sudo bash -x&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Die Pakete lassen sich mit folgenden Befehlen installieren (Versionsnummer kann abweichen).&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;sudo apt update&lt;br /&gt;
sudo apt install php8.2 php8.2-mbstring php8.2-curl php8.2-xml php8.2-mysql&lt;br /&gt;
sudo apt install mariadb-client&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Sollten beim Installieren der Pakete Fehlermeldungen auftreten, ist es empfehlenswert, die Pakete einzeln zu installieren und auftretende Fehler/Abhängigkeiten einzeln zu lösen.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== 2. Sourcecode von Git laden ==&lt;br /&gt;
=== Github ===&lt;br /&gt;
Zwar ist zum Herunterlden des Sourcecodes keine Account auf GitHub notwendig, aber zum Hochladen wird einer benötigt. Daher sollte zuerst einen Account auf https://github.com/ angelegt werden.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== optional: SSH-Keys für Repositorys anlegen und in Github eintragen ===&lt;br /&gt;
siehe https://docs.github.com/en/free-pro-team@latest/github/authenticating-to-github/connecting-to-github-with-ssh&amp;lt;br /&amp;gt;&lt;br /&gt;
oder: https://www.heise.de/tipps-tricks/SSH-Key-fuer-GitHub-Repositories-einrichten-4627459.html&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Git lokal installieren ===&lt;br /&gt;
Windows:&amp;lt;br /&amp;gt;&lt;br /&gt;
siehe: https://github.com/git-for-windows/git/releases&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Linux:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;sudo apt install git&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Sourcecode lokal herunterladen ===&lt;br /&gt;
Ein Terminal öffnen, folgende Kommandos ausführen und dabei Namen und Email-Adresse des Git-Accounts eintragen:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;git config --global user.name &amp;quot;Your Name Here&amp;quot;&lt;br /&gt;
git config --global user.email &amp;quot;your_email@youremail.com&amp;quot;&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Im Verzeichnis &amp;quot;home&amp;quot; einen Ordner &amp;quot;opencaching&amp;quot; (Name beliebig) anlegen. Dort folgenden Code ausführen. Dies legt einen Ordner mit dem Namen “oc-server3“ an, lädt den OC-Code aus deinem Github-Fork herunter und kopiert ihn in diesen Ordner.&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;git clone git@github.com:&amp;lt;DeinGithubBenutzername&amp;gt;/oc-server3&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Im Anschluss in den Ordner “oc-server3“ wechseln und den folgenden Befehl ausführen, um bei einem Update den neuesten Sourcecode aus dem Opencaching.de-Repository erhalten zu können:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;cd oc-server3&lt;br /&gt;
git remote add upstream git@github.com:OpencachingDeutschland/oc-server3&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Mit folgendem Befehl gibt es eine Übersicht über die verknüpften Repositorys, die (abgesehen vom Nutzernamen ‘Slini11’) wie in der Grafik aussehen müssen:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;git remote -v&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
[[Image:Testumgebung Git 01.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Nun den Branch “development“ auschecken:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;git checkout development&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Und den Development-Branch auf aktuellen Stand bringen:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;git pull --rebase upstream development &amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Weiterführende Informationen zu Git ===&lt;br /&gt;
Diese sind unter anderem im [[Entwicklung/Git|OC-Wiki]] zu finden&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== 3. DDEV Entwicklungsumgebung initalisieren ==&lt;br /&gt;
=== Entwicklungsumgebung zum ersten Mal starten ===&lt;br /&gt;
Zuerst in den Projektordner “oc-server3“ navigieren und dort die Installation der Testumgebung starten.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Scripte einzeln ausführen ====&lt;br /&gt;
* ddev anstarten. Im Laufe dieses Prozesses wird die hosts-Datei automatisch angepasst.&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;ddev start&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Starten der Initialisierung der Testumgebung und der Datenbank:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;ddev init&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Die Entwicklungsumgebung steht nun über den Browser bereit unter:&lt;br /&gt;
  https://opencaching.ddev.site&lt;br /&gt;
  bzw.&lt;br /&gt;
  https://try-opencaching.ddev.site&lt;br /&gt;
&lt;br /&gt;
* Das Passwort für den Benutzer &#039;&#039;root&#039;&#039; lautet &#039;&#039;developer&#039;&#039;. Das Passwort der anderen Benutzer (Benutzernamen siehe Datenbank) lautet &#039;&#039;password&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Entwicklungsumgebung ein weiteres Mal starten ===&lt;br /&gt;
Die Testumgebung kann neugestartet werden mit:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;ddev restart&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Entwicklungsumgebung stoppen ===&lt;br /&gt;
Die Testumgebung kann gestoppt werden mit:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;ddev stop&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Entwicklungsumgebung löschen ===&lt;br /&gt;
Die Testumgebung kann im Projektordner gelöscht werden mit:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;ddev delete --omit-snapshot&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Danach sind ein erneutes &#039;&#039;ddev start&#039;&#039; und &#039;&#039;ddev init&#039;&#039; notwendig.&lt;br /&gt;
&lt;br /&gt;
Alle von ddev angelegten Objekte können gelöscht werden mit:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;ddev clean --all&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== xdebug in der Entwicklungsumgebung starten ===&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;ddev xdebug&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Ein &#039;&#039;ddev start&#039;&#039; oder &#039;&#039;ddev restart&#039;&#039; deaktiviert das xdebug wieder.&lt;br /&gt;
&lt;br /&gt;
=== Weitere ddev-Optionen.. ===&lt;br /&gt;
&#039;&#039;ddev&#039;&#039; ohne Parameter aufrufen gibt eine Liste weiterer Optionen aus.&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;ddev&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 4. Die  Testdatenbank füllen ==&lt;br /&gt;
Während der Installation wird eine Testdatenbank importiert, die bereits eine kleine Menge an Caches und Nutzern beinhaltet. Ein manueller Import des Datenbankdumps ist somit (seit März 2021) nicht mehr notwendig. &lt;br /&gt;
&lt;br /&gt;
Für den Fall, dass trotzdem Daten exportiert / importiert werden sollen, können folgende Abschnitte berücksichtigt werden:&lt;br /&gt;
&lt;br /&gt;
=== Login auf der Test-Datenbank im ddev-Container ===&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;mysql -uroot -proot -hopencaching-db opencaching&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Datenbank innerhalb des ddev-Containers exportieren ===&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;mysqldump -uroot -proot -hopencaching-db opencaching &amp;gt; file.sql&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Datenbank außerhalb des ddev-Containers exportieren ===&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;mysqldump --complete-insert --user root -proot --host 0.0.0.0 opencaching &amp;gt; dump.sql&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Datenbank im phpStorm exportieren ===&lt;br /&gt;
Auf der rechten Bildschirmseite den Databasedialog ausklappen&lt;br /&gt;
rechte Maustaste auf die zu exportierende Datenbank “opencaching” =&amp;gt; “Export with ‘mysqldump’”&lt;br /&gt;
&lt;br /&gt;
[[Image:Testumgebung DB 01.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Im Exportmenü die Zeile “Statements” umstellen auf “Insert with columns” und eventuell den Ausgabepfad “Out Path” anpassen. Im Kommandofeld den Parameter “--routines“ ergänzen und dann “Run” drücken&lt;br /&gt;
&lt;br /&gt;
[[Image:Testumgebung DB 02.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Datenbank-Dump im phpStorm importieren ===&lt;br /&gt;
Auf der rechten Bildschirmseite den Databasedialog ausklappen&lt;br /&gt;
rechte Maustaste auf die Datenbank =&amp;gt; “Restore with ‘mysql’”&lt;br /&gt;
&lt;br /&gt;
[[Image:Testumgebung DB 03.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Im Importmenü den Eingabepfad “Path to dump” anpassen, dann “Run” drücken&lt;br /&gt;
&lt;br /&gt;
[[Image:Testumgebung DB 04.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== 5. Die Entwicklungs-IDE vorbereiten ==&lt;br /&gt;
Gegebenenfalls sind an der Programmierumgebung Änderungen vorzunehmen, um zum Beispiel [[OC Coding Style|einheitlich formatierten Code]] zu schreiben. &lt;br /&gt;
&lt;br /&gt;
=== Einrichtung des PHP Coding Styles am Beispiel von phpStorm ===&lt;br /&gt;
Unter Settings / Code Style / PHP rechts auf “Set from…” klicken und “PSR-12” auswählen. Die Einstellung mit “Apply” bestätigen.&lt;br /&gt;
(Weitere Informationen zum Coding Style sind [[OC Coding Style|hier im Wiki]] zu finden.)&lt;br /&gt;
&lt;br /&gt;
[[Image:Testumgebung IDE 01.png|500px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Symfony Pfade am Beispiel phpStorm anpassen ===&lt;br /&gt;
[[Image:Testumgebung IDE 04.jpeg]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Terminalanpassung am Beispiel phpStorm (für Windows-Nutzer) ===&lt;br /&gt;
[[Image:Testumgebung IDE 05.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Datenbankanbindung in phpStorm aktivieren ===&lt;br /&gt;
Seit ddev als Umgebung genutzt wird, bietet sich das ddev-Plugin im phpStorm an. Es richtet z.B. den Zugang zur opencaching-Datenbank in der Testumgebung sowie weitere Einstellungen automatisch ein.&lt;br /&gt;
Hierzu im phpStorm im Menü Datei/Einstellungen.. zum Abschnitt &#039;&#039;Plugins&#039;&#039; navigieren, im Suchfeld &#039;&#039;ddev&#039;&#039; eintippen und das Plugin installieren.&lt;br /&gt;
[[Image:Testumgebung IDE 06.jpg]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Synchronisieren/Wiederherstellen der Benutzereinstellungen mittels JetBrains-Server ===&lt;br /&gt;
Sofern man bei JetBrains einen Account hat, kann man mit diesem die Einstellungen der lokalen IDE synchronisieren und z.B. nach einer Neuinstallation von dort wiederherstellen.&lt;br /&gt;
&lt;br /&gt;
Hierzu in der IDE rechts oben auf das Zahnrad klicken und “Settings Sync is off” auswählen.&amp;lt;/br&amp;gt;&lt;br /&gt;
[[Image:Testumgebung IDE 02.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Im folgenden Fenster den Button “Enable Settings Sync” klicken und danach alle Einstellungen auswählen, die man sichern möchte. Ein Klick auf “Push Settings to Account” sichert die Einstellungen. Ein Klick auf “Get Settings from Account” stellt sie wieder her, sofern sie vorher dorthin gesichert wurden.&lt;br /&gt;
[[Image:Testumgebung IDE 03.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== 6. Das Fehlerhandbuch lesen (gilt insbesondere für die Schritte #1-#4 :wink:) ==&lt;br /&gt;
&lt;br /&gt;
Beireits bekannte Fehler werden im [[Entwicklungsumgebung/Fehlerhandbuch|Fehlerhandbuch]] beschrieben.&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Entwicklung|Entwicklungsumgebung ]]&lt;/div&gt;</summary>
		<author><name>Fraggle</name></author>
	</entry>
	<entry>
		<id>https://wiki.opencaching.de/index.php?title=Entwicklungsumgebung_einrichten&amp;diff=8069</id>
		<title>Entwicklungsumgebung einrichten</title>
		<link rel="alternate" type="text/html" href="https://wiki.opencaching.de/index.php?title=Entwicklungsumgebung_einrichten&amp;diff=8069"/>
		<updated>2026-02-23T08:21:18Z</updated>

		<summary type="html">&lt;p&gt;Fraggle: DB-Anbindung in phpStorm&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Das Einrichten der Testumgebung erfolgt in mehreren Schritten, die im folgenden beschrieben sind. Falls es dabei zu unerwarteten Fehlermeldungen kommt, bitte die letzten Schritte noch einmal genau anschauen und gegebenenfalls wiederholen. Auch ein Blick ins Fehlerhandbuch hilft meistens, da bereits viele Fallstricke entdeckt und beschrieben wurden.&lt;br /&gt;
&lt;br /&gt;
== 1. Das Betriebssystem vorbereiten, entweder Linux oder Windows ==&lt;br /&gt;
=== Windows 10 ===&lt;br /&gt;
==== Programme installieren ====&lt;br /&gt;
Unter Windows ist es standardmäßig nicht möglich, “einfach“ die Linux Distribution Ubuntu zu installieren. Dazu muss vorab erst das WSL2 aktiviert / installiert werden werden (Punkt 1). Im Anschluss ist eine Installation von Ubuntu (18.04 oder höher) möglich. Zudem muss DDEV installiert werden, in welchem dann die Entwicklungsumgebung laufen kann (Punkt 2).&lt;br /&gt;
&lt;br /&gt;
# WSL2 unter Windows10 aktivieren und Ubuntu installieren: &lt;br /&gt;
## Aus dem Microsoft-Store: https://aka.ms/wslstorepage (verfügbar seit Nov. 2022) &lt;br /&gt;
## Manuell unter [https://learn.microsoft.com/de-de/windows/wsl/install#manual-installation-steps|Installieren von WSL]&lt;br /&gt;
# DDEV für Windows installieren: [https://docs.ddev.com/en/stable/#system-requirements-windows-wsl2|Install DDEV WSL2]&lt;br /&gt;
&lt;br /&gt;
Danach kann Ubuntu gestartet werden (z.B. im “Such“-Menü nach Ubuntu suchen und anklicken). Beim erstmaligen Starten von Ubuntu müssen ein Benutzername und ein Passwort festgelegt werden.&lt;br /&gt;
&lt;br /&gt;
Im Anschluss den Punkten folgen und ausführen, die im nächsten Schritt “Linux” beschrieben werden.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Linux ===&lt;br /&gt;
Der Linuxartikel wurde erstellt auf Lubuntu 22.04 und erweitert mit Debian 12&lt;br /&gt;
&lt;br /&gt;
==== Programme installieren ====&lt;br /&gt;
Folgende Programme sind notwendig und müssen vorab installiert werden:&lt;br /&gt;
PHP (aktuell mindestens PHP8.2), diverse PHP-Erweiterungen, ddev, mariadb-client. Für die PHP-Erweiterungen ist eventuell ein zusätzliches PPA-Repository notwendig. Dessen Installation erfordert je nach Betriebssystem ein unterschiedliches Vorgehen.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;Ubuntu:&lt;br /&gt;
sudo apt install software-properties-common&lt;br /&gt;
sudo add-apt-repository ppa:ondrej/php&lt;br /&gt;
&lt;br /&gt;
Debian:&lt;br /&gt;
sudo apt install software-properties-common ca-certificates lsb-release apt-transport-https&lt;br /&gt;
curl -sSL https://packages.sury.org/php/README.txt | sudo bash -x&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Die Pakete lassen sich mit folgenden Befehlen installieren (Versionsnummer kann abweichen).&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;sudo apt update&lt;br /&gt;
sudo apt install php8.2 php8.2-mbstring php8.2-curl php8.2-xml php8.2-mysql&lt;br /&gt;
sudo apt install mariadb-client&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Sollten beim Installieren der Pakete Fehlermeldungen auftreten, ist es empfehlenswert, die Pakete einzeln zu installieren und auftretende Fehler/Abhängigkeiten einzeln zu lösen.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== 2. Sourcecode von Git laden ==&lt;br /&gt;
=== Github ===&lt;br /&gt;
Zwar ist zum Herunterlden des Sourcecodes keine Account auf GitHub notwendig, aber zum Hochladen wird einer benötigt. Daher sollte zuerst einen Account auf https://github.com/ angelegt werden.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== optional: SSH-Keys für Repositorys anlegen und in Github eintragen ===&lt;br /&gt;
siehe https://docs.github.com/en/free-pro-team@latest/github/authenticating-to-github/connecting-to-github-with-ssh&amp;lt;br /&amp;gt;&lt;br /&gt;
oder: https://www.heise.de/tipps-tricks/SSH-Key-fuer-GitHub-Repositories-einrichten-4627459.html&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Git lokal installieren ===&lt;br /&gt;
Windows:&amp;lt;br /&amp;gt;&lt;br /&gt;
siehe: https://github.com/git-for-windows/git/releases&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Linux:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;sudo apt install git&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Sourcecode lokal herunterladen ===&lt;br /&gt;
Ein Terminal öffnen, folgende Kommandos ausführen und dabei Namen und Email-Adresse des Git-Accounts eintragen:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;git config --global user.name &amp;quot;Your Name Here&amp;quot;&lt;br /&gt;
git config --global user.email &amp;quot;your_email@youremail.com&amp;quot;&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Im Verzeichnis &amp;quot;home&amp;quot; einen Ordner &amp;quot;opencaching&amp;quot; (Name beliebig) anlegen. Dort folgenden Code ausführen. Dies legt einen Ordner mit dem Namen “oc-server3“ an, lädt den OC-Code aus deinem Github-Fork herunter und kopiert ihn in diesen Ordner.&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;git clone git@github.com:&amp;lt;DeinGithubBenutzername&amp;gt;/oc-server3&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Im Anschluss in den Ordner “oc-server3“ wechseln und den folgenden Befehl ausführen, um bei einem Update den neuesten Sourcecode aus dem Opencaching.de-Repository erhalten zu können:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;cd oc-server3&lt;br /&gt;
git remote add upstream git@github.com:OpencachingDeutschland/oc-server3&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Mit folgendem Befehl gibt es eine Übersicht über die verknüpften Repositorys, die (abgesehen vom Nutzernamen ‘Slini11’) wie in der Grafik aussehen müssen:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;git remote -v&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
[[Image:Testumgebung Git 01.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Nun den Branch “development“ auschecken:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;git checkout development&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Und den Development-Branch auf aktuellen Stand bringen:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;git pull --rebase upstream development &amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Weiterführende Informationen zu Git ===&lt;br /&gt;
Diese sind unter anderem im [[Entwicklung/Git|OC-Wiki]] zu finden&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== 3. DDEV Entwicklungsumgebung initalisieren ==&lt;br /&gt;
=== Entwicklungsumgebung zum ersten Mal starten ===&lt;br /&gt;
Zuerst in den Projektordner “oc-server3“ navigieren und dort die Installation der Testumgebung starten.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Scripte einzeln ausführen ====&lt;br /&gt;
* ddev anstarten. Im Laufe dieses Prozesses wird die hosts-Datei automatisch angepasst.&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;ddev start&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Starten der Initialisierung der Testumgebung und der Datenbank:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;ddev init&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Die Entwicklungsumgebung steht nun über den Browser bereit unter:&lt;br /&gt;
  https://opencaching.ddev.site&lt;br /&gt;
  bzw.&lt;br /&gt;
  https://try-opencaching.ddev.site&lt;br /&gt;
&lt;br /&gt;
* Das Passwort für den Benutzer &#039;&#039;root&#039;&#039; lautet &#039;&#039;developer&#039;&#039;. Das Passwort der anderen Benutzer (Benutzernamen siehe Datenbank) lautet &#039;&#039;password&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Entwicklungsumgebung ein weiteres Mal starten ===&lt;br /&gt;
Die Testumgebung kann neugestartet werden mit:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;ddev restart&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Entwicklungsumgebung stoppen ===&lt;br /&gt;
Die Testumgebung kann gestoppt werden mit:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;ddev stop&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Entwicklungsumgebung löschen ===&lt;br /&gt;
Die Testumgebung kann im Projektordner gelöscht werden mit:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;ddev delete --omit-snapshot&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Danach sind ein erneutes &#039;&#039;ddev start&#039;&#039; und &#039;&#039;ddev init&#039;&#039; notwendig.&lt;br /&gt;
&lt;br /&gt;
=== xdebug in der Entwicklungsumgebung starten ===&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;ddev xdebug&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Ein &#039;&#039;ddev start&#039;&#039; oder &#039;&#039;ddev restart&#039;&#039; deaktiviert das xdebug wieder.&lt;br /&gt;
&lt;br /&gt;
=== Weitere ddev-Optionen.. ===&lt;br /&gt;
&#039;&#039;ddev&#039;&#039; ohne Parameter aufrufen gibt eine Liste weiterer Optionen aus.&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;ddev&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 4. Die  Testdatenbank füllen ==&lt;br /&gt;
Während der Installation wird eine Testdatenbank importiert, die bereits eine kleine Menge an Caches und Nutzern beinhaltet. Ein manueller Import des Datenbankdumps ist somit (seit März 2021) nicht mehr notwendig. &lt;br /&gt;
&lt;br /&gt;
Für den Fall, dass trotzdem Daten exportiert / importiert werden sollen, können folgende Abschnitte berücksichtigt werden:&lt;br /&gt;
&lt;br /&gt;
=== Login auf der Test-Datenbank im ddev-Container ===&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;mysql -uroot -proot -hopencaching-db opencaching&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Datenbank innerhalb des ddev-Containers exportieren ===&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;mysqldump -uroot -proot -hopencaching-db opencaching &amp;gt; file.sql&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Datenbank außerhalb des ddev-Containers exportieren ===&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;mysqldump --complete-insert --user root -proot --host 0.0.0.0 opencaching &amp;gt; dump.sql&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Datenbank im phpStorm exportieren ===&lt;br /&gt;
Auf der rechten Bildschirmseite den Databasedialog ausklappen&lt;br /&gt;
rechte Maustaste auf die zu exportierende Datenbank “opencaching” =&amp;gt; “Export with ‘mysqldump’”&lt;br /&gt;
&lt;br /&gt;
[[Image:Testumgebung DB 01.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Im Exportmenü die Zeile “Statements” umstellen auf “Insert with columns” und eventuell den Ausgabepfad “Out Path” anpassen. Im Kommandofeld den Parameter “--routines“ ergänzen und dann “Run” drücken&lt;br /&gt;
&lt;br /&gt;
[[Image:Testumgebung DB 02.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Datenbank-Dump im phpStorm importieren ===&lt;br /&gt;
Auf der rechten Bildschirmseite den Databasedialog ausklappen&lt;br /&gt;
rechte Maustaste auf die Datenbank =&amp;gt; “Restore with ‘mysql’”&lt;br /&gt;
&lt;br /&gt;
[[Image:Testumgebung DB 03.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Im Importmenü den Eingabepfad “Path to dump” anpassen, dann “Run” drücken&lt;br /&gt;
&lt;br /&gt;
[[Image:Testumgebung DB 04.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== 5. Die Entwicklungs-IDE vorbereiten ==&lt;br /&gt;
Gegebenenfalls sind an der Programmierumgebung Änderungen vorzunehmen, um zum Beispiel [[OC Coding Style|einheitlich formatierten Code]] zu schreiben. &lt;br /&gt;
&lt;br /&gt;
=== Einrichtung des PHP Coding Styles am Beispiel von phpStorm ===&lt;br /&gt;
Unter Settings / Code Style / PHP rechts auf “Set from…” klicken und “PSR-12” auswählen. Die Einstellung mit “Apply” bestätigen.&lt;br /&gt;
(Weitere Informationen zum Coding Style sind [[OC Coding Style|hier im Wiki]] zu finden.)&lt;br /&gt;
&lt;br /&gt;
[[Image:Testumgebung IDE 01.png|500px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Symfony Pfade am Beispiel phpStorm anpassen ===&lt;br /&gt;
[[Image:Testumgebung IDE 04.jpeg]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Terminalanpassung am Beispiel phpStorm (für Windows-Nutzer) ===&lt;br /&gt;
[[Image:Testumgebung IDE 05.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Datenbankanbindung in phpStorm aktivieren ===&lt;br /&gt;
Seit ddev als Umgebung genutzt wird, bietet sich das ddev-Plugin im phpStorm an. Es richtet z.B. den Zugang zur opencaching-Datenbank in der Testumgebung sowie weitere Einstellungen automatisch ein.&lt;br /&gt;
Hierzu im phpStorm im Menü Datei/Einstellungen.. zum Abschnitt &#039;&#039;Plugins&#039;&#039; navigieren, im Suchfeld &#039;&#039;ddev&#039;&#039; eintippen und das Plugin installieren.&lt;br /&gt;
[[Image:Testumgebung IDE 06.jpg]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Synchronisieren/Wiederherstellen der Benutzereinstellungen mittels JetBrains-Server ===&lt;br /&gt;
Sofern man bei JetBrains einen Account hat, kann man mit diesem die Einstellungen der lokalen IDE synchronisieren und z.B. nach einer Neuinstallation von dort wiederherstellen.&lt;br /&gt;
&lt;br /&gt;
Hierzu in der IDE rechts oben auf das Zahnrad klicken und “Settings Sync is off” auswählen.&amp;lt;/br&amp;gt;&lt;br /&gt;
[[Image:Testumgebung IDE 02.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Im folgenden Fenster den Button “Enable Settings Sync” klicken und danach alle Einstellungen auswählen, die man sichern möchte. Ein Klick auf “Push Settings to Account” sichert die Einstellungen. Ein Klick auf “Get Settings from Account” stellt sie wieder her, sofern sie vorher dorthin gesichert wurden.&lt;br /&gt;
[[Image:Testumgebung IDE 03.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== 6. Das Fehlerhandbuch lesen (gilt insbesondere für die Schritte #1-#4 :wink:) ==&lt;br /&gt;
&lt;br /&gt;
Beireits bekannte Fehler werden im [[Entwicklungsumgebung/Fehlerhandbuch|Fehlerhandbuch]] beschrieben.&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Entwicklung|Entwicklungsumgebung ]]&lt;/div&gt;</summary>
		<author><name>Fraggle</name></author>
	</entry>
	<entry>
		<id>https://wiki.opencaching.de/index.php?title=Entwicklungsumgebung_einrichten&amp;diff=8068</id>
		<title>Entwicklungsumgebung einrichten</title>
		<link rel="alternate" type="text/html" href="https://wiki.opencaching.de/index.php?title=Entwicklungsumgebung_einrichten&amp;diff=8068"/>
		<updated>2026-02-23T07:30:48Z</updated>

		<summary type="html">&lt;p&gt;Fraggle: veralteter Abschnitt entfernt&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Das Einrichten der Testumgebung erfolgt in mehreren Schritten, die im folgenden beschrieben sind. Falls es dabei zu unerwarteten Fehlermeldungen kommt, bitte die letzten Schritte noch einmal genau anschauen und gegebenenfalls wiederholen. Auch ein Blick ins Fehlerhandbuch hilft meistens, da bereits viele Fallstricke entdeckt und beschrieben wurden.&lt;br /&gt;
&lt;br /&gt;
== 1. Das Betriebssystem vorbereiten, entweder Linux oder Windows ==&lt;br /&gt;
=== Windows 10 ===&lt;br /&gt;
==== Programme installieren ====&lt;br /&gt;
Unter Windows ist es standardmäßig nicht möglich, “einfach“ die Linux Distribution Ubuntu zu installieren. Dazu muss vorab erst das WSL2 aktiviert / installiert werden werden (Punkt 1). Im Anschluss ist eine Installation von Ubuntu (18.04 oder höher) möglich. Zudem muss DDEV installiert werden, in welchem dann die Entwicklungsumgebung laufen kann (Punkt 2).&lt;br /&gt;
&lt;br /&gt;
# WSL2 unter Windows10 aktivieren und Ubuntu installieren: &lt;br /&gt;
## Aus dem Microsoft-Store: https://aka.ms/wslstorepage (verfügbar seit Nov. 2022) &lt;br /&gt;
## Manuell unter [https://learn.microsoft.com/de-de/windows/wsl/install#manual-installation-steps|Installieren von WSL]&lt;br /&gt;
# DDEV für Windows installieren: [https://docs.ddev.com/en/stable/#system-requirements-windows-wsl2|Install DDEV WSL2]&lt;br /&gt;
&lt;br /&gt;
Danach kann Ubuntu gestartet werden (z.B. im “Such“-Menü nach Ubuntu suchen und anklicken). Beim erstmaligen Starten von Ubuntu müssen ein Benutzername und ein Passwort festgelegt werden.&lt;br /&gt;
&lt;br /&gt;
Im Anschluss den Punkten folgen und ausführen, die im nächsten Schritt “Linux” beschrieben werden.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Linux ===&lt;br /&gt;
Der Linuxartikel wurde erstellt auf Lubuntu 22.04 und erweitert mit Debian 12&lt;br /&gt;
&lt;br /&gt;
==== Programme installieren ====&lt;br /&gt;
Folgende Programme sind notwendig und müssen vorab installiert werden:&lt;br /&gt;
PHP (aktuell mindestens PHP8.2), diverse PHP-Erweiterungen, ddev, mariadb-client. Für die PHP-Erweiterungen ist eventuell ein zusätzliches PPA-Repository notwendig. Dessen Installation erfordert je nach Betriebssystem ein unterschiedliches Vorgehen.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;Ubuntu:&lt;br /&gt;
sudo apt install software-properties-common&lt;br /&gt;
sudo add-apt-repository ppa:ondrej/php&lt;br /&gt;
&lt;br /&gt;
Debian:&lt;br /&gt;
sudo apt install software-properties-common ca-certificates lsb-release apt-transport-https&lt;br /&gt;
curl -sSL https://packages.sury.org/php/README.txt | sudo bash -x&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Die Pakete lassen sich mit folgenden Befehlen installieren (Versionsnummer kann abweichen).&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;sudo apt update&lt;br /&gt;
sudo apt install php8.2 php8.2-mbstring php8.2-curl php8.2-xml php8.2-mysql&lt;br /&gt;
sudo apt install mariadb-client&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Sollten beim Installieren der Pakete Fehlermeldungen auftreten, ist es empfehlenswert, die Pakete einzeln zu installieren und auftretende Fehler/Abhängigkeiten einzeln zu lösen.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== 2. Sourcecode von Git laden ==&lt;br /&gt;
=== Github ===&lt;br /&gt;
Zwar ist zum Herunterlden des Sourcecodes keine Account auf GitHub notwendig, aber zum Hochladen wird einer benötigt. Daher sollte zuerst einen Account auf https://github.com/ angelegt werden.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== optional: SSH-Keys für Repositorys anlegen und in Github eintragen ===&lt;br /&gt;
siehe https://docs.github.com/en/free-pro-team@latest/github/authenticating-to-github/connecting-to-github-with-ssh&amp;lt;br /&amp;gt;&lt;br /&gt;
oder: https://www.heise.de/tipps-tricks/SSH-Key-fuer-GitHub-Repositories-einrichten-4627459.html&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Git lokal installieren ===&lt;br /&gt;
Windows:&amp;lt;br /&amp;gt;&lt;br /&gt;
siehe: https://github.com/git-for-windows/git/releases&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Linux:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;sudo apt install git&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Sourcecode lokal herunterladen ===&lt;br /&gt;
Ein Terminal öffnen, folgende Kommandos ausführen und dabei Namen und Email-Adresse des Git-Accounts eintragen:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;git config --global user.name &amp;quot;Your Name Here&amp;quot;&lt;br /&gt;
git config --global user.email &amp;quot;your_email@youremail.com&amp;quot;&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Im Verzeichnis &amp;quot;home&amp;quot; einen Ordner &amp;quot;opencaching&amp;quot; (Name beliebig) anlegen. Dort folgenden Code ausführen. Dies legt einen Ordner mit dem Namen “oc-server3“ an, lädt den OC-Code aus deinem Github-Fork herunter und kopiert ihn in diesen Ordner.&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;git clone git@github.com:&amp;lt;DeinGithubBenutzername&amp;gt;/oc-server3&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Im Anschluss in den Ordner “oc-server3“ wechseln und den folgenden Befehl ausführen, um bei einem Update den neuesten Sourcecode aus dem Opencaching.de-Repository erhalten zu können:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;cd oc-server3&lt;br /&gt;
git remote add upstream git@github.com:OpencachingDeutschland/oc-server3&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Mit folgendem Befehl gibt es eine Übersicht über die verknüpften Repositorys, die (abgesehen vom Nutzernamen ‘Slini11’) wie in der Grafik aussehen müssen:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;git remote -v&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
[[Image:Testumgebung Git 01.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Nun den Branch “development“ auschecken:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;git checkout development&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Und den Development-Branch auf aktuellen Stand bringen:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;git pull --rebase upstream development &amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Weiterführende Informationen zu Git ===&lt;br /&gt;
Diese sind unter anderem im [[Entwicklung/Git|OC-Wiki]] zu finden&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== 3. DDEV Entwicklungsumgebung initalisieren ==&lt;br /&gt;
=== Entwicklungsumgebung zum ersten Mal starten ===&lt;br /&gt;
Zuerst in den Projektordner “oc-server3“ navigieren und dort die Installation der Testumgebung starten.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Scripte einzeln ausführen ====&lt;br /&gt;
* ddev anstarten. Im Laufe dieses Prozesses wird die hosts-Datei automatisch angepasst.&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;ddev start&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Starten der Initialisierung der Testumgebung und der Datenbank:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;ddev init&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Die Entwicklungsumgebung steht nun über den Browser bereit unter:&lt;br /&gt;
  https://opencaching.ddev.site&lt;br /&gt;
  bzw.&lt;br /&gt;
  https://try-opencaching.ddev.site&lt;br /&gt;
&lt;br /&gt;
* Das Passwort für den Benutzer &#039;&#039;root&#039;&#039; lautet &#039;&#039;developer&#039;&#039;. Das Passwort der anderen Benutzer (Benutzernamen siehe Datenbank) lautet &#039;&#039;password&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Entwicklungsumgebung ein weiteres Mal starten ===&lt;br /&gt;
Die Testumgebung kann neugestartet werden mit:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;ddev restart&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Entwicklungsumgebung stoppen ===&lt;br /&gt;
Die Testumgebung kann gestoppt werden mit:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;ddev stop&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Entwicklungsumgebung löschen ===&lt;br /&gt;
Die Testumgebung kann im Projektordner gelöscht werden mit:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;ddev delete --omit-snapshot&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Danach sind ein erneutes &#039;&#039;ddev start&#039;&#039; und &#039;&#039;ddev init&#039;&#039; notwendig.&lt;br /&gt;
&lt;br /&gt;
=== xdebug in der Entwicklungsumgebung starten ===&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;ddev xdebug&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Ein &#039;&#039;ddev start&#039;&#039; oder &#039;&#039;ddev restart&#039;&#039; deaktiviert das xdebug wieder.&lt;br /&gt;
&lt;br /&gt;
=== Weitere ddev-Optionen.. ===&lt;br /&gt;
&#039;&#039;ddev&#039;&#039; ohne Parameter aufrufen gibt eine Liste weiterer Optionen aus.&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;ddev&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 4. Die  Testdatenbank füllen ==&lt;br /&gt;
Während der Installation wird eine Testdatenbank importiert, die bereits eine kleine Menge an Caches und Nutzern beinhaltet. Ein manueller Import des Datenbankdumps ist somit (seit März 2021) nicht mehr notwendig. &lt;br /&gt;
&lt;br /&gt;
Für den Fall, dass trotzdem Daten exportiert / importiert werden sollen, können folgende Abschnitte berücksichtigt werden:&lt;br /&gt;
&lt;br /&gt;
=== Login auf der Test-Datenbank im ddev-Container ===&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;mysql -uroot -proot -hopencaching-db opencaching&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Datenbank innerhalb des ddev-Containers exportieren ===&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;mysqldump -uroot -proot -hopencaching-db opencaching &amp;gt; file.sql&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Datenbank außerhalb des ddev-Containers exportieren ===&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;mysqldump --complete-insert --user root -proot --host 0.0.0.0 opencaching &amp;gt; dump.sql&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Datenbank im phpStorm exportieren ===&lt;br /&gt;
Auf der rechten Bildschirmseite den Databasedialog ausklappen&lt;br /&gt;
rechte Maustaste auf die zu exportierende Datenbank “opencaching” =&amp;gt; “Export with ‘mysqldump’”&lt;br /&gt;
&lt;br /&gt;
[[Image:Testumgebung DB 01.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Im Exportmenü die Zeile “Statements” umstellen auf “Insert with columns” und eventuell den Ausgabepfad “Out Path” anpassen. Im Kommandofeld den Parameter “--routines“ ergänzen und dann “Run” drücken&lt;br /&gt;
&lt;br /&gt;
[[Image:Testumgebung DB 02.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Datenbank-Dump im phpStorm importieren ===&lt;br /&gt;
Auf der rechten Bildschirmseite den Databasedialog ausklappen&lt;br /&gt;
rechte Maustaste auf die Datenbank =&amp;gt; “Restore with ‘mysql’”&lt;br /&gt;
&lt;br /&gt;
[[Image:Testumgebung DB 03.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Im Importmenü den Eingabepfad “Path to dump” anpassen, dann “Run” drücken&lt;br /&gt;
&lt;br /&gt;
[[Image:Testumgebung DB 04.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== 5. Die Entwicklungs-IDE vorbereiten ==&lt;br /&gt;
Gegebenenfalls sind an der Programmierumgebung Änderungen vorzunehmen, um zum Beispiel [[OC Coding Style|einheitlich formatierten Code]] zu schreiben. &lt;br /&gt;
&lt;br /&gt;
=== Einrichtung des PHP Coding Styles am Beispiel von phpStorm ===&lt;br /&gt;
Unter Settings / Code Style / PHP rechts auf “Set from…” klicken und “PSR-12” auswählen. Die Einstellung mit “Apply” bestätigen.&lt;br /&gt;
(Weitere Informationen zum Coding Style sind [[OC Coding Style|hier im Wiki]] zu finden.)&lt;br /&gt;
&lt;br /&gt;
[[Image:Testumgebung IDE 01.png|500px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Symfony Pfade am Beispiel phpStorm anpassen ===&lt;br /&gt;
[[Image:Testumgebung IDE 04.jpeg]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Terminalanpassung am Beispiel phpStorm (für Windows-Nutzer) ===&lt;br /&gt;
[[Image:Testumgebung IDE 05.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== hilfreiche Plugins für phpStorm ===&lt;br /&gt;
Seit ddev als Umgebung genutzt wird, bietet sich das ddev-Plugin im phpStorm an. Es richtet z.B. den Zugang zur opencaching-Datenbank in der Testumgebung sowie weitere Einstellungen automatisch ein.&lt;br /&gt;
Hierzu im phpStorm im Menü Datei/Einstellungen.. zum Abschnitt &#039;&#039;Plugins&#039;&#039; navigieren, im Suchfeld &#039;&#039;ddev&#039;&#039; eintippen und das Plugin installieren.&lt;br /&gt;
[[Image:Testumgebung IDE 06.jpg]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Synchronisieren/Wiederherstellen der Benutzereinstellungen mittels JetBrains-Server ===&lt;br /&gt;
Sofern man bei JetBrains einen Account hat, kann man mit diesem die Einstellungen der lokalen IDE synchronisieren und z.B. nach einer Neuinstallation von dort wiederherstellen.&lt;br /&gt;
&lt;br /&gt;
Hierzu in der IDE rechts oben auf das Zahnrad klicken und “Settings Sync is off” auswählen.&amp;lt;/br&amp;gt;&lt;br /&gt;
[[Image:Testumgebung IDE 02.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Im folgenden Fenster den Button “Enable Settings Sync” klicken und danach alle Einstellungen auswählen, die man sichern möchte. Ein Klick auf “Push Settings to Account” sichert die Einstellungen. Ein Klick auf “Get Settings from Account” stellt sie wieder her, sofern sie vorher dorthin gesichert wurden.&lt;br /&gt;
[[Image:Testumgebung IDE 03.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== 6. Das Fehlerhandbuch lesen (gilt insbesondere für die Schritte #1-#4 :wink:) ==&lt;br /&gt;
&lt;br /&gt;
Beireits bekannte Fehler werden im [[Entwicklungsumgebung/Fehlerhandbuch|Fehlerhandbuch]] beschrieben.&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Entwicklung|Entwicklungsumgebung ]]&lt;/div&gt;</summary>
		<author><name>Fraggle</name></author>
	</entry>
	<entry>
		<id>https://wiki.opencaching.de/index.php?title=Entwicklungsumgebung_einrichten&amp;diff=8066</id>
		<title>Entwicklungsumgebung einrichten</title>
		<link rel="alternate" type="text/html" href="https://wiki.opencaching.de/index.php?title=Entwicklungsumgebung_einrichten&amp;diff=8066"/>
		<updated>2026-02-15T18:07:20Z</updated>

		<summary type="html">&lt;p&gt;Fraggle: ddev Plugin für phpStorm&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Das Einrichten der Testumgebung erfolgt in mehreren Schritten, die im folgenden beschrieben sind. Falls es dabei zu unerwarteten Fehlermeldungen kommt, bitte die letzten Schritte noch einmal genau anschauen und gegebenenfalls wiederholen. Auch ein Blick ins Fehlerhandbuch hilft meistens, da bereits viele Fallstricke entdeckt und beschrieben wurden.&lt;br /&gt;
&lt;br /&gt;
== 1. Das Betriebssystem vorbereiten, entweder Linux oder Windows ==&lt;br /&gt;
=== Windows 10 ===&lt;br /&gt;
==== Programme installieren ====&lt;br /&gt;
Unter Windows ist es standardmäßig nicht möglich, “einfach“ die Linux Distribution Ubuntu zu installieren. Dazu muss vorab erst das WSL2 aktiviert / installiert werden werden (Punkt 1). Im Anschluss ist eine Installation von Ubuntu (18.04 oder höher) möglich. Zudem muss DDEV installiert werden, in welchem dann die Entwicklungsumgebung laufen kann (Punkt 2).&lt;br /&gt;
&lt;br /&gt;
# WSL2 unter Windows10 aktivieren und Ubuntu installieren: &lt;br /&gt;
## Aus dem Microsoft-Store: https://aka.ms/wslstorepage (verfügbar seit Nov. 2022) &lt;br /&gt;
## Manuell unter [https://learn.microsoft.com/de-de/windows/wsl/install#manual-installation-steps|Installieren von WSL]&lt;br /&gt;
# DDEV für Windows installieren: [https://docs.ddev.com/en/stable/#system-requirements-windows-wsl2|Install DDEV WSL2]&lt;br /&gt;
&lt;br /&gt;
Danach kann Ubuntu gestartet werden (z.B. im “Such“-Menü nach Ubuntu suchen und anklicken). Beim erstmaligen Starten von Ubuntu müssen ein Benutzername und ein Passwort festgelegt werden.&lt;br /&gt;
&lt;br /&gt;
Im Anschluss den Punkten folgen und ausführen, die im nächsten Schritt “Linux” beschrieben werden.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Linux ===&lt;br /&gt;
Der Linuxartikel wurde erstellt auf Lubuntu 22.04 und erweitert mit Debian 12&lt;br /&gt;
&lt;br /&gt;
==== Programme installieren ====&lt;br /&gt;
Folgende Programme sind notwendig und müssen vorab installiert werden:&lt;br /&gt;
PHP (aktuell mindestens PHP8.2), diverse PHP-Erweiterungen, ddev, mariadb-client. Für die PHP-Erweiterungen ist eventuell ein zusätzliches PPA-Repository notwendig. Dessen Installation erfordert je nach Betriebssystem ein unterschiedliches Vorgehen.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;Ubuntu:&lt;br /&gt;
sudo apt install software-properties-common&lt;br /&gt;
sudo add-apt-repository ppa:ondrej/php&lt;br /&gt;
&lt;br /&gt;
Debian:&lt;br /&gt;
sudo apt install software-properties-common ca-certificates lsb-release apt-transport-https&lt;br /&gt;
curl -sSL https://packages.sury.org/php/README.txt | sudo bash -x&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Die Pakete lassen sich mit folgenden Befehlen installieren (Versionsnummer kann abweichen).&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;sudo apt update&lt;br /&gt;
sudo apt install php8.2 php8.2-mbstring php8.2-curl php8.2-xml php8.2-mysql&lt;br /&gt;
sudo apt install mariadb-client&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Sollten beim Installieren der Pakete Fehlermeldungen auftreten, ist es empfehlenswert, die Pakete einzeln zu installieren und auftretende Fehler/Abhängigkeiten einzeln zu lösen.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== 2. Sourcecode von Git laden ==&lt;br /&gt;
=== Github ===&lt;br /&gt;
Zwar ist zum Herunterlden des Sourcecodes keine Account auf GitHub notwendig, aber zum Hochladen wird einer benötigt. Daher sollte zuerst einen Account auf https://github.com/ angelegt werden.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== optional: SSH-Keys für Repositorys anlegen und in Github eintragen ===&lt;br /&gt;
siehe https://docs.github.com/en/free-pro-team@latest/github/authenticating-to-github/connecting-to-github-with-ssh&amp;lt;br /&amp;gt;&lt;br /&gt;
oder: https://www.heise.de/tipps-tricks/SSH-Key-fuer-GitHub-Repositories-einrichten-4627459.html&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Git lokal installieren ===&lt;br /&gt;
Windows:&amp;lt;br /&amp;gt;&lt;br /&gt;
siehe: https://github.com/git-for-windows/git/releases&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Linux:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;sudo apt install git&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Sourcecode lokal herunterladen ===&lt;br /&gt;
Ein Terminal öffnen, folgende Kommandos ausführen und dabei Namen und Email-Adresse des Git-Accounts eintragen:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;git config --global user.name &amp;quot;Your Name Here&amp;quot;&lt;br /&gt;
git config --global user.email &amp;quot;your_email@youremail.com&amp;quot;&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Im Verzeichnis &amp;quot;home&amp;quot; einen Ordner &amp;quot;opencaching&amp;quot; (Name beliebig) anlegen. Dort folgenden Code ausführen. Dies legt einen Ordner mit dem Namen “oc-server3“ an, lädt den OC-Code aus deinem Github-Fork herunter und kopiert ihn in diesen Ordner.&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;git clone git@github.com:&amp;lt;DeinGithubBenutzername&amp;gt;/oc-server3&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Im Anschluss in den Ordner “oc-server3“ wechseln und den folgenden Befehl ausführen, um bei einem Update den neuesten Sourcecode aus dem Opencaching.de-Repository erhalten zu können:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;cd oc-server3&lt;br /&gt;
git remote add upstream git@github.com:OpencachingDeutschland/oc-server3&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Mit folgendem Befehl gibt es eine Übersicht über die verknüpften Repositorys, die (abgesehen vom Nutzernamen ‘Slini11’) wie in der Grafik aussehen müssen:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;git remote -v&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
[[Image:Testumgebung Git 01.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Nun den Branch “development“ auschecken:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;git checkout development&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Und den Development-Branch auf aktuellen Stand bringen:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;git pull --rebase upstream development &amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Weiterführende Informationen zu Git ===&lt;br /&gt;
Diese sind unter anderem im [[Entwicklung/Git|OC-Wiki]] zu finden&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== 3. DDEV Entwicklungsumgebung initalisieren ==&lt;br /&gt;
=== Entwicklungsumgebung zum ersten Mal starten ===&lt;br /&gt;
Zuerst in den Projektordner “oc-server3“ navigieren und dort die Installation der Testumgebung starten.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Scripte einzeln ausführen ====&lt;br /&gt;
* ddev anstarten. Im Laufe dieses Prozesses wird die hosts-Datei automatisch angepasst.&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;ddev start&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Starten der Initialisierung der Testumgebung und der Datenbank:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;ddev init&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Die Entwicklungsumgebung steht nun über den Browser bereit unter:&lt;br /&gt;
  https://opencaching.ddev.site&lt;br /&gt;
  bzw.&lt;br /&gt;
  https://try-opencaching.ddev.site&lt;br /&gt;
&lt;br /&gt;
* Das Passwort für den Benutzer &#039;&#039;root&#039;&#039; lautet &#039;&#039;developer&#039;&#039;. Das Passwort der anderen Benutzer (Benutzernamen siehe Datenbank) lautet &#039;&#039;password&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Entwicklungsumgebung ein weiteres Mal starten ===&lt;br /&gt;
Die Testumgebung kann neugestartet werden mit:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;ddev restart&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Entwicklungsumgebung stoppen ===&lt;br /&gt;
Die Testumgebung kann gestoppt werden mit:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;ddev stop&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Entwicklungsumgebung löschen ===&lt;br /&gt;
Die Testumgebung kann im Projektordner gelöscht werden mit:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;ddev delete --omit-snapshot&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Danach sind ein erneutes &#039;&#039;ddev start&#039;&#039; und &#039;&#039;ddev init&#039;&#039; notwendig.&lt;br /&gt;
&lt;br /&gt;
=== xdebug in der Entwicklungsumgebung starten ===&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;ddev xdebug&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Ein &#039;&#039;ddev start&#039;&#039; oder &#039;&#039;ddev restart&#039;&#039; deaktiviert das xdebug wieder.&lt;br /&gt;
&lt;br /&gt;
=== Weitere ddev-Optionen.. ===&lt;br /&gt;
&#039;&#039;ddev&#039;&#039; ohne Parameter aufrufen gibt eine Liste weiterer Optionen aus.&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;ddev&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 4. Die  Testdatenbank füllen ==&lt;br /&gt;
Während der Installation wird eine Testdatenbank importiert, die bereits eine kleine Menge an Caches und Nutzern beinhaltet. Ein manueller Import des Datenbankdumps ist somit (seit März 2021) nicht mehr notwendig. &lt;br /&gt;
&lt;br /&gt;
Für den Fall, dass trotzdem Daten exportiert / importiert werden sollen, können folgende Abschnitte berücksichtigt werden:&lt;br /&gt;
&lt;br /&gt;
=== Login auf der Test-Datenbank im ddev-Container ===&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;mysql -uroot -proot -hopencaching-db opencaching&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Datenbank innerhalb des ddev-Containers exportieren ===&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;mysqldump -uroot -proot -hopencaching-db opencaching &amp;gt; file.sql&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Datenbank außerhalb des ddev-Containers exportieren ===&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;mysqldump --complete-insert --user root -proot --host 0.0.0.0 opencaching &amp;gt; dump.sql&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Datenbank im phpStorm exportieren ===&lt;br /&gt;
Auf der rechten Bildschirmseite den Databasedialog ausklappen&lt;br /&gt;
rechte Maustaste auf die zu exportierende Datenbank “opencaching” =&amp;gt; “Export with ‘mysqldump’”&lt;br /&gt;
&lt;br /&gt;
[[Image:Testumgebung DB 01.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Im Exportmenü die Zeile “Statements” umstellen auf “Insert with columns” und eventuell den Ausgabepfad “Out Path” anpassen. Im Kommandofeld den Parameter “--routines“ ergänzen und dann “Run” drücken&lt;br /&gt;
&lt;br /&gt;
[[Image:Testumgebung DB 02.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Datenbank-Dump im phpStorm importieren ===&lt;br /&gt;
Auf der rechten Bildschirmseite den Databasedialog ausklappen&lt;br /&gt;
rechte Maustaste auf die Datenbank =&amp;gt; “Restore with ‘mysql’”&lt;br /&gt;
&lt;br /&gt;
[[Image:Testumgebung DB 03.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Im Importmenü den Eingabepfad “Path to dump” anpassen, dann “Run” drücken&lt;br /&gt;
&lt;br /&gt;
[[Image:Testumgebung DB 04.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Datenbank in phpStorm anzeigen ===&lt;br /&gt;
Ggf. kann es passieren, dass die Datenbank nicht automatisch in phpStorm angezeigt wird. Dazu muss eine neue MariaDB im Datenbank-Menü angelegt werden.&lt;br /&gt;
&lt;br /&gt;
[[Image:Testumgebung DB 05.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Im Anschluss sind die Daten wie im folgenden Screenshot einzutragen. User: “root“ Password: “root“&lt;br /&gt;
&lt;br /&gt;
[[Image:Testumgebung DB 06.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== 5. Die Entwicklungs-IDE vorbereiten ==&lt;br /&gt;
Gegebenenfalls sind an der Programmierumgebung Änderungen vorzunehmen, um zum Beispiel [[OC Coding Style|einheitlich formatierten Code]] zu schreiben. &lt;br /&gt;
&lt;br /&gt;
=== Einrichtung des PHP Coding Styles am Beispiel von phpStorm ===&lt;br /&gt;
Unter Settings / Code Style / PHP rechts auf “Set from…” klicken und “PSR-12” auswählen. Die Einstellung mit “Apply” bestätigen.&lt;br /&gt;
(Weitere Informationen zum Coding Style sind [[OC Coding Style|hier im Wiki]] zu finden.)&lt;br /&gt;
&lt;br /&gt;
[[Image:Testumgebung IDE 01.png|500px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Symfony Pfade am Beispiel phpStorm anpassen ===&lt;br /&gt;
[[Image:Testumgebung IDE 04.jpeg]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Terminalanpassung am Beispiel phpStorm (für Windows-Nutzer) ===&lt;br /&gt;
[[Image:Testumgebung IDE 05.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== hilfreiche Plugins für phpStorm ===&lt;br /&gt;
Seit ddev als Umgebung genutzt wird, bietet sich das ddev-Plugin im phpStorm an. Es richtet z.B. den Zugang zur opencaching-Datenbank in der Testumgebung sowie weitere Einstellungen automatisch ein.&lt;br /&gt;
Hierzu im phpStorm im Menü Datei/Einstellungen.. zum Abschnitt &#039;&#039;Plugins&#039;&#039; navigieren, im Suchfeld &#039;&#039;ddev&#039;&#039; eintippen und das Plugin installieren.&lt;br /&gt;
[[Image:Testumgebung IDE 06.jpg]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Synchronisieren/Wiederherstellen der Benutzereinstellungen mittels JetBrains-Server ===&lt;br /&gt;
Sofern man bei JetBrains einen Account hat, kann man mit diesem die Einstellungen der lokalen IDE synchronisieren und z.B. nach einer Neuinstallation von dort wiederherstellen.&lt;br /&gt;
&lt;br /&gt;
Hierzu in der IDE rechts oben auf das Zahnrad klicken und “Settings Sync is off” auswählen.&amp;lt;/br&amp;gt;&lt;br /&gt;
[[Image:Testumgebung IDE 02.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Im folgenden Fenster den Button “Enable Settings Sync” klicken und danach alle Einstellungen auswählen, die man sichern möchte. Ein Klick auf “Push Settings to Account” sichert die Einstellungen. Ein Klick auf “Get Settings from Account” stellt sie wieder her, sofern sie vorher dorthin gesichert wurden.&lt;br /&gt;
[[Image:Testumgebung IDE 03.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== 6. Das Fehlerhandbuch lesen (gilt insbesondere für die Schritte #1-#4 :wink:) ==&lt;br /&gt;
&lt;br /&gt;
Beireits bekannte Fehler werden im [[Entwicklungsumgebung/Fehlerhandbuch|Fehlerhandbuch]] beschrieben.&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Entwicklung|Entwicklungsumgebung ]]&lt;/div&gt;</summary>
		<author><name>Fraggle</name></author>
	</entry>
	<entry>
		<id>https://wiki.opencaching.de/index.php?title=Datei:Testumgebung_IDE_06.jpg&amp;diff=8065</id>
		<title>Datei:Testumgebung IDE 06.jpg</title>
		<link rel="alternate" type="text/html" href="https://wiki.opencaching.de/index.php?title=Datei:Testumgebung_IDE_06.jpg&amp;diff=8065"/>
		<updated>2026-02-15T18:05:56Z</updated>

		<summary type="html">&lt;p&gt;Fraggle: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Fraggle</name></author>
	</entry>
	<entry>
		<id>https://wiki.opencaching.de/index.php?title=Entwicklungsumgebung_einrichten&amp;diff=8064</id>
		<title>Entwicklungsumgebung einrichten</title>
		<link rel="alternate" type="text/html" href="https://wiki.opencaching.de/index.php?title=Entwicklungsumgebung_einrichten&amp;diff=8064"/>
		<updated>2026-02-15T14:29:37Z</updated>

		<summary type="html">&lt;p&gt;Fraggle: keine manuelle Anpassung der host-Datei unter Windows notwendig&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Das Einrichten der Testumgebung erfolgt in mehreren Schritten, die im folgenden beschrieben sind. Falls es dabei zu unerwarteten Fehlermeldungen kommt, bitte die letzten Schritte noch einmal genau anschauen und gegebenenfalls wiederholen. Auch ein Blick ins Fehlerhandbuch hilft meistens, da bereits viele Fallstricke entdeckt und beschrieben wurden.&lt;br /&gt;
&lt;br /&gt;
== 1. Das Betriebssystem vorbereiten, entweder Linux oder Windows ==&lt;br /&gt;
=== Windows 10 ===&lt;br /&gt;
==== Programme installieren ====&lt;br /&gt;
Unter Windows ist es standardmäßig nicht möglich, “einfach“ die Linux Distribution Ubuntu zu installieren. Dazu muss vorab erst das WSL2 aktiviert / installiert werden werden (Punkt 1). Im Anschluss ist eine Installation von Ubuntu (18.04 oder höher) möglich. Zudem muss DDEV installiert werden, in welchem dann die Entwicklungsumgebung laufen kann (Punkt 2).&lt;br /&gt;
&lt;br /&gt;
# WSL2 unter Windows10 aktivieren und Ubuntu installieren: &lt;br /&gt;
## Aus dem Microsoft-Store: https://aka.ms/wslstorepage (verfügbar seit Nov. 2022) &lt;br /&gt;
## Manuell unter [https://learn.microsoft.com/de-de/windows/wsl/install#manual-installation-steps|Installieren von WSL]&lt;br /&gt;
# DDEV für Windows installieren: [https://docs.ddev.com/en/stable/#system-requirements-windows-wsl2|Install DDEV WSL2]&lt;br /&gt;
&lt;br /&gt;
Danach kann Ubuntu gestartet werden (z.B. im “Such“-Menü nach Ubuntu suchen und anklicken). Beim erstmaligen Starten von Ubuntu müssen ein Benutzername und ein Passwort festgelegt werden.&lt;br /&gt;
&lt;br /&gt;
Im Anschluss den Punkten folgen und ausführen, die im nächsten Schritt “Linux” beschrieben werden.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Linux ===&lt;br /&gt;
Der Linuxartikel wurde erstellt auf Lubuntu 22.04 und erweitert mit Debian 12&lt;br /&gt;
&lt;br /&gt;
==== Programme installieren ====&lt;br /&gt;
Folgende Programme sind notwendig und müssen vorab installiert werden:&lt;br /&gt;
PHP (aktuell mindestens PHP8.2), diverse PHP-Erweiterungen, ddev, mariadb-client. Für die PHP-Erweiterungen ist eventuell ein zusätzliches PPA-Repository notwendig. Dessen Installation erfordert je nach Betriebssystem ein unterschiedliches Vorgehen.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;Ubuntu:&lt;br /&gt;
sudo apt install software-properties-common&lt;br /&gt;
sudo add-apt-repository ppa:ondrej/php&lt;br /&gt;
&lt;br /&gt;
Debian:&lt;br /&gt;
sudo apt install software-properties-common ca-certificates lsb-release apt-transport-https&lt;br /&gt;
curl -sSL https://packages.sury.org/php/README.txt | sudo bash -x&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Die Pakete lassen sich mit folgenden Befehlen installieren (Versionsnummer kann abweichen).&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;sudo apt update&lt;br /&gt;
sudo apt install php8.2 php8.2-mbstring php8.2-curl php8.2-xml php8.2-mysql&lt;br /&gt;
sudo apt install mariadb-client&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Sollten beim Installieren der Pakete Fehlermeldungen auftreten, ist es empfehlenswert, die Pakete einzeln zu installieren und auftretende Fehler/Abhängigkeiten einzeln zu lösen.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== 2. Sourcecode von Git laden ==&lt;br /&gt;
=== Github ===&lt;br /&gt;
Zwar ist zum Herunterlden des Sourcecodes keine Account auf GitHub notwendig, aber zum Hochladen wird einer benötigt. Daher sollte zuerst einen Account auf https://github.com/ angelegt werden.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== optional: SSH-Keys für Repositorys anlegen und in Github eintragen ===&lt;br /&gt;
siehe https://docs.github.com/en/free-pro-team@latest/github/authenticating-to-github/connecting-to-github-with-ssh&amp;lt;br /&amp;gt;&lt;br /&gt;
oder: https://www.heise.de/tipps-tricks/SSH-Key-fuer-GitHub-Repositories-einrichten-4627459.html&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Git lokal installieren ===&lt;br /&gt;
Windows:&amp;lt;br /&amp;gt;&lt;br /&gt;
siehe: https://github.com/git-for-windows/git/releases&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Linux:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;sudo apt install git&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Sourcecode lokal herunterladen ===&lt;br /&gt;
Ein Terminal öffnen, folgende Kommandos ausführen und dabei Namen und Email-Adresse des Git-Accounts eintragen:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;git config --global user.name &amp;quot;Your Name Here&amp;quot;&lt;br /&gt;
git config --global user.email &amp;quot;your_email@youremail.com&amp;quot;&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Im Verzeichnis &amp;quot;home&amp;quot; einen Ordner &amp;quot;opencaching&amp;quot; (Name beliebig) anlegen. Dort folgenden Code ausführen. Dies legt einen Ordner mit dem Namen “oc-server3“ an, lädt den OC-Code aus deinem Github-Fork herunter und kopiert ihn in diesen Ordner.&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;git clone git@github.com:&amp;lt;DeinGithubBenutzername&amp;gt;/oc-server3&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Im Anschluss in den Ordner “oc-server3“ wechseln und den folgenden Befehl ausführen, um bei einem Update den neuesten Sourcecode aus dem Opencaching.de-Repository erhalten zu können:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;cd oc-server3&lt;br /&gt;
git remote add upstream git@github.com:OpencachingDeutschland/oc-server3&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Mit folgendem Befehl gibt es eine Übersicht über die verknüpften Repositorys, die (abgesehen vom Nutzernamen ‘Slini11’) wie in der Grafik aussehen müssen:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;git remote -v&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
[[Image:Testumgebung Git 01.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Nun den Branch “development“ auschecken:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;git checkout development&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Und den Development-Branch auf aktuellen Stand bringen:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;git pull --rebase upstream development &amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Weiterführende Informationen zu Git ===&lt;br /&gt;
Diese sind unter anderem im [[Entwicklung/Git|OC-Wiki]] zu finden&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== 3. DDEV Entwicklungsumgebung initalisieren ==&lt;br /&gt;
=== Entwicklungsumgebung zum ersten Mal starten ===&lt;br /&gt;
Zuerst in den Projektordner “oc-server3“ navigieren und dort die Installation der Testumgebung starten.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Scripte einzeln ausführen ====&lt;br /&gt;
* ddev anstarten. Im Laufe dieses Prozesses wird die hosts-Datei automatisch angepasst.&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;ddev start&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Starten der Initialisierung der Testumgebung und der Datenbank:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;ddev init&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Die Entwicklungsumgebung steht nun über den Browser bereit unter:&lt;br /&gt;
  https://opencaching.ddev.site&lt;br /&gt;
  bzw.&lt;br /&gt;
  https://try-opencaching.ddev.site&lt;br /&gt;
&lt;br /&gt;
* Das Passwort für den Benutzer &#039;&#039;root&#039;&#039; lautet &#039;&#039;developer&#039;&#039;. Das Passwort der anderen Benutzer (Benutzernamen siehe Datenbank) lautet &#039;&#039;password&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Entwicklungsumgebung ein weiteres Mal starten ===&lt;br /&gt;
Die Testumgebung kann neugestartet werden mit:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;ddev restart&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Entwicklungsumgebung stoppen ===&lt;br /&gt;
Die Testumgebung kann gestoppt werden mit:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;ddev stop&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Entwicklungsumgebung löschen ===&lt;br /&gt;
Die Testumgebung kann im Projektordner gelöscht werden mit:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;ddev delete --omit-snapshot&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Danach sind ein erneutes &#039;&#039;ddev start&#039;&#039; und &#039;&#039;ddev init&#039;&#039; notwendig.&lt;br /&gt;
&lt;br /&gt;
== 4. Die  Testdatenbank füllen ==&lt;br /&gt;
Während der Installation wird eine Testdatenbank importiert, die bereits eine kleine Menge an Caches und Nutzern beinhaltet. Ein manueller Import des Datenbankdumps ist somit (seit März 2021) nicht mehr notwendig. &lt;br /&gt;
&lt;br /&gt;
Für den Fall, dass trotzdem Daten exportiert / importiert werden sollen, können folgende Abschnitte berücksichtigt werden:&lt;br /&gt;
&lt;br /&gt;
=== Login auf der Test-Datenbank im ddev-Container ===&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;mysql -uroot -proot -hopencaching-db opencaching&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Datenbank innerhalb des ddev-Containers exportieren ===&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;mysqldump -uroot -proot -hopencaching-db opencaching &amp;gt; file.sql&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Datenbank außerhalb des ddev-Containers exportieren ===&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;mysqldump --complete-insert --user root -proot --host 0.0.0.0 opencaching &amp;gt; dump.sql&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Datenbank im phpStorm exportieren ===&lt;br /&gt;
Auf der rechten Bildschirmseite den Databasedialog ausklappen&lt;br /&gt;
rechte Maustaste auf die zu exportierende Datenbank “opencaching” =&amp;gt; “Export with ‘mysqldump’”&lt;br /&gt;
&lt;br /&gt;
[[Image:Testumgebung DB 01.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Im Exportmenü die Zeile “Statements” umstellen auf “Insert with columns” und eventuell den Ausgabepfad “Out Path” anpassen. Im Kommandofeld den Parameter “--routines“ ergänzen und dann “Run” drücken&lt;br /&gt;
&lt;br /&gt;
[[Image:Testumgebung DB 02.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Datenbank-Dump im phpStorm importieren ===&lt;br /&gt;
Auf der rechten Bildschirmseite den Databasedialog ausklappen&lt;br /&gt;
rechte Maustaste auf die Datenbank =&amp;gt; “Restore with ‘mysql’”&lt;br /&gt;
&lt;br /&gt;
[[Image:Testumgebung DB 03.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Im Importmenü den Eingabepfad “Path to dump” anpassen, dann “Run” drücken&lt;br /&gt;
&lt;br /&gt;
[[Image:Testumgebung DB 04.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Datenbank in phpStorm anzeigen ===&lt;br /&gt;
Ggf. kann es passieren, dass die Datenbank nicht automatisch in phpStorm angezeigt wird. Dazu muss eine neue MariaDB im Datenbank-Menü angelegt werden.&lt;br /&gt;
&lt;br /&gt;
[[Image:Testumgebung DB 05.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Im Anschluss sind die Daten wie im folgenden Screenshot einzutragen. User: “root“ Password: “root“&lt;br /&gt;
&lt;br /&gt;
[[Image:Testumgebung DB 06.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== 5. Die Entwicklungs-IDE vorbereiten ==&lt;br /&gt;
Gegebenenfalls sind an der Programmierumgebung Änderungen vorzunehmen, um zum Beispiel [[OC Coding Style|einheitlich formatierten Code]] zu schreiben. &lt;br /&gt;
&lt;br /&gt;
=== Einrichtung des PHP Coding Styles am Beispiel von phpStorm ===&lt;br /&gt;
Unter Settings / Code Style / PHP rechts auf “Set from…” klicken und “PSR-12” auswählen. Die Einstellung mit “Apply” bestätigen.&lt;br /&gt;
(Weitere Informationen zum Coding Style sind [[OC Coding Style|hier im Wiki]] zu finden.)&lt;br /&gt;
&lt;br /&gt;
[[Image:Testumgebung IDE 01.png|500px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Symfony Pfade am Beispiel phpStorm anpassen ===&lt;br /&gt;
[[Image:Testumgebung IDE 04.jpeg]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Terminalanpassung am Beispiel phpStorm (für Windows-Nutzer) ===&lt;br /&gt;
[[Image:Testumgebung IDE 05.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== hilfreiche Plugins für phpStorm ===&lt;br /&gt;
-&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Synchronisieren/Wiederherstellen der Benutzereinstellungen mittels JetBrains-Server ===&lt;br /&gt;
Sofern man bei JetBrains einen Account hat, kann man mit diesem die Einstellungen der lokalen IDE synchronisieren und z.B. nach einer Neuinstallation von dort wiederherstellen.&lt;br /&gt;
&lt;br /&gt;
Hierzu in der IDE rechts oben auf das Zahnrad klicken und “Settings Sync is off” auswählen.&amp;lt;/br&amp;gt;&lt;br /&gt;
[[Image:Testumgebung IDE 02.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Im folgenden Fenster den Button “Enable Settings Sync” klicken und danach alle Einstellungen auswählen, die man sichern möchte. Ein Klick auf “Push Settings to Account” sichert die Einstellungen. Ein Klick auf “Get Settings from Account” stellt sie wieder her, sofern sie vorher dorthin gesichert wurden.&lt;br /&gt;
[[Image:Testumgebung IDE 03.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== 6. Das Fehlerhandbuch lesen (gilt insbesondere für die Schritte #1-#4 :wink:) ==&lt;br /&gt;
&lt;br /&gt;
Beireits bekannte Fehler werden im [[Entwicklungsumgebung/Fehlerhandbuch|Fehlerhandbuch]] beschrieben.&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Entwicklung|Entwicklungsumgebung ]]&lt;/div&gt;</summary>
		<author><name>Fraggle</name></author>
	</entry>
	<entry>
		<id>https://wiki.opencaching.de/index.php?title=Entwicklung/Betatest&amp;diff=8060</id>
		<title>Entwicklung/Betatest</title>
		<link rel="alternate" type="text/html" href="https://wiki.opencaching.de/index.php?title=Entwicklung/Betatest&amp;diff=8060"/>
		<updated>2026-02-11T13:17:16Z</updated>

		<summary type="html">&lt;p&gt;Fraggle: Kategorie:Überarbeiten&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Neue Funktionen der [[Entwicklung|Opencaching-Software]] werden vor Veröffentlichung meist auf einer eigenen Test-Website getestet. Dieses Testsystem ist nicht öffentlich, aus zwei Gründen:&lt;br /&gt;
&lt;br /&gt;
Zum Einen könnte der ungetestete Code noch Fehler enthalten, die die Systemsicherheit oder -Stabilität gefährden. Zum Anderen ist bislang nicht sichergestellt, dass auf Opencaching.de [[Cachestatus#Gesperrt + Versteckt|gesperrte und versteckte]] Caches auch auf dem Testsystem gesperrt und versteckt sind. Solche Caches dürfen oft aus rechtlichen Gründen nicht veröffentlicht werden.&lt;br /&gt;
&lt;br /&gt;
Alle Mitglieder des Opencaching-Teams haben Zugang zum Testsystem. Wer regelmäßig beim Testen helfen möchte, kann sich gerne im [http://forum.opencaching.de/index.php?board=43.0 Entwicklerforum] melden und erhält dann die Zugangsdaten.&lt;br /&gt;
&lt;br /&gt;
== Auf dem eigenen Entwicklersystem testen ==&lt;br /&gt;
&lt;br /&gt;
Wer sich ein [[Entwicklung/Entwicklersystem|Opencaching-Entwicklersystem]] installiert hat, kann den aktuellen Stand auch direkt auf dem eigenen Rechner testen. Dazu ist der &#039;&#039;next&#039;&#039;-Branch auszuchecken – er ist identisch mit dem Inhalt des Testsystems:&lt;br /&gt;
&lt;br /&gt;
 cd /var/www/html/oc-server/server-3.0&lt;br /&gt;
 sudo -u apache git checkout next&lt;br /&gt;
 sudo -u apache git pull upstream next&lt;br /&gt;
 php bin/dbupdate.php&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Entwicklung|Betatest]]&lt;br /&gt;
[[Kategorie:Überarbeiten]]&lt;/div&gt;</summary>
		<author><name>Fraggle</name></author>
	</entry>
	<entry>
		<id>https://wiki.opencaching.de/index.php?title=Entwicklung/Entwicklersystem&amp;diff=8059</id>
		<title>Entwicklung/Entwicklersystem</title>
		<link rel="alternate" type="text/html" href="https://wiki.opencaching.de/index.php?title=Entwicklung/Entwicklersystem&amp;diff=8059"/>
		<updated>2026-02-11T13:14:35Z</updated>

		<summary type="html">&lt;p&gt;Fraggle: Update 2026&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Datei:Tux.png|thumb|hochkant=0.75]]&lt;br /&gt;
Das &#039;&#039;&#039;Entwicklersystem&#039;&#039;&#039; von Opencaching.de ist (Stand 2026) eine dockerbasierte, virtuelle Linux-Maschine. Hierauf laufen ein [[wikipedia:Apache HTTP Server|Apache]]- und ein [[wikipedia:MySQL|MySQL]]-Server. Das eigentliche Programmieren und Testen findet auf dem Hostsystem unter Linux, Windows oder MacOS statt, mit einem beliebigen [[wikipedia:UTF-8|UTF-8]]-fähigen Editor bzw. einer [http://forum.opencaching.de/index.php?topic=2150.0 PHP-IDE] und einem Webbrowser.&lt;br /&gt;
&lt;br /&gt;
Die Testumgebung, mit der derzeit entwickelt wird, enthält keine Daten aus der Live-Cachedatenbank, sondern einen Satz vorgefertigter Benutzer und Listings. Im Rahmen von Tests können aber beliebige Änderungen an der Testdatenbank vorgenommen werden.&lt;br /&gt;
&lt;br /&gt;
Wer Spaß daran hat, mit so einer Linux-Maschine rumzuspielen und an Opencaching.de mitzubauen, kann Mitglied im Team werden (mehr dazu im [http://forum.opencaching.de/index.php Forum]), sich die VM herunterladen und einrichten; dazu gibt es eine ausführliche Anleitung.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Eine Anleitung zur Installation eines lokalen Testservers (ohne Listing- und Benutzerdaten des Liveservers) ist [[Entwicklungsumgebung einrichten|hier]] zu finden bzw. etwas kürzer auf [https://github.com/OpencachingDeutschland/oc-server3 github].&lt;br /&gt;
&lt;br /&gt;
Für Fragen und Diskussionen hierzu und zu verwandten Themen gibt es das [https://forum.opencaching.de/viewforum.php?f=43 Entwicklerforum].&lt;br /&gt;
&lt;br /&gt;
Für die Einrichtung einer Opencaching.pl-Website im OC.de-Entwicklersystem gibt es eine [[Entwicklung/Entwicklersystem PL|separate Anleitung]].&lt;br /&gt;
&lt;br /&gt;
== Siehe auch ==&lt;br /&gt;
* [[Entwicklung|Opencaching.de-Entwicklung]]&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Entwicklung|Entwicklersystem]]&lt;/div&gt;</summary>
		<author><name>Fraggle</name></author>
	</entry>
	<entry>
		<id>https://wiki.opencaching.de/index.php?title=Entwicklung&amp;diff=8058</id>
		<title>Entwicklung</title>
		<link rel="alternate" type="text/html" href="https://wiki.opencaching.de/index.php?title=Entwicklung&amp;diff=8058"/>
		<updated>2026-02-11T13:08:45Z</updated>

		<summary type="html">&lt;p&gt;Fraggle: Update wg. Umstieg von Docker auf DDEV&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;Diese Seite wendet sich vor allem an Technikinteressierte und verwendet daher eine Menge Fachbegriffe, deren Erläuterung hier zu weit führen würde. Sie sind daher mit Links zur Wikipedia hinterlegt.&#039;&#039;&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Datei:Codegenerationen.svg|thumb|[[Opencaching]]-Codehistorie (Stand Juni 2016)]]&lt;br /&gt;
Hinter der Opencaching-Website verbergen sich eine Menge Technik und Entwicklungsarbeit. Was im Jahr 2003 als ein kleines Bastelprojekt begann, wuchs im Laufe der Jahre zu einer der weltweit bedeutendesten [[Geocaching-Plattformen]] heran. &lt;br /&gt;
&lt;br /&gt;
Die aktuelle Opencaching.de-Softwareversion 3.0 besteht aus rund 70.000 Zeilen an selbstgeschriebenem [[wikipedia:PHP|PHP]]-, [[wikipedia:Smarty|Smarty]]-, [[wikipedia:Hypertext Markup Language|HTML]]/[[wikipedia:Cascading Style Sheets|CSS]]-, [[wikipedia:JavaScript|Javascript]]- und [[wikipedia:MySQL|MySQL]]-Code. Hinzu kommen ca. 20.000 Zeilen für die [[OKAPI]] und weitere 200.000 Zeilen [[wikipedia:Programmbibliothek|Bibliothekscode]]. Die [[wikipedia:Datenbank|Datenbank]] umfasst ca. 125 Tabellen plus 15 für die OKAPI.&lt;br /&gt;
&lt;br /&gt;
Der Opencaching-Quellcode steht unter einer [https://github.com/OpencachingDeutschland/oc-server3/blob/development/doc/GPL.txt modifizierten GNU-GPL-Lizenz] und ist [https://github.com/OpencachingDeutschland/oc-server3 frei verfügbar]. Erläuterungen dazu gibt es im Artikel [[Entwicklung/Codedoku]].&lt;br /&gt;
__NOTOC__&lt;br /&gt;
== Entwicklerteam ==&lt;br /&gt;
Mit der Gründung des [[Opencaching Deutschland e.V.]] ging die Weiterentwicklung auf ein neues Team über. Die aktiven Softwareentwickler sind in der [http://www.opencaching.de/articles.php?page=team Teamliste] aufgeführt. Neue engagierte Entwickler sind jederzeit willkommen! Wenn du im Team mitmachen möchtest, findest du weitere Informationen dazu im [http://forum.opencaching.de/index.php?board=33.0 Opencaching-Forum].&lt;br /&gt;
&lt;br /&gt;
== Entwicklungsumgebung ==&lt;br /&gt;
[[Datei:Tux.png|thumb|hochkant=0.75]]&lt;br /&gt;
Stand 2026 steht für die Entwickler eine dockerbasierte, virtuelle Linux-Maschine ([[https://ddev.com/|DDEV]]) zur Verfügung, die wie die Opencaching.de-Website auf [[wikipedia:CentOS|CentOS]] basiert (→ [[Entwicklung/Entwicklersystem|Entwicklersystem]]). In dieser VM laufen ein [[wikipedia:Apache HTTP Server|Apache]]- und ein [[wikipedia:MySQL|MySQL]]-Server. Das eigentliche Programmieren und Testen findet auf dem Hostsystem unter Linux, Windows oder MacOS statt, mit einem beliebigen [[wikipedia:UTF-8|UTF-8]]-fähigen Editor bzw. einer PHP-[[wikipedia:Integrierte Entwicklungsumgebung|IDE]] und einem Webbrowser.&lt;br /&gt;
&lt;br /&gt;
Zur Codeverwaltung und Versionierung wird [[wikipedia:Git|Git]] eingesetzt, mit einem üblichen Workflow (Stable-Branch, Entwicklungs-Branch, Test-Branch und Feature-Branches). Eine ausführliche Anleitung dazu gibt es [[Entwicklung/Git|hier im Wiki]].&lt;br /&gt;
&lt;br /&gt;
Anstehenden Aufgaben werden in einer [[Entwicklung/Todo-Liste|Todo-Liste]] verwaltet.&lt;br /&gt;
&lt;br /&gt;
Allgemeine Diskussionen finden im [http://forum.opencaching.de/index.php?board=43.0 offenen Entwicklerforum] statt. Im internen Team-Wiki gibt es Anleitungen zu Installation und Verwendung der Entwicklungsumgebung; diese sollen nach Neuaufsetzen der Entwicklungsumgebung hier ins allgemeine Wiki übertragen werden.&lt;br /&gt;
&lt;br /&gt;
== Datenschnittstellen für Tool- und App-Entwickler ==&lt;br /&gt;
Über die [[Opencaching-API]] (OKAPI) oder die [[XML-Schnittstelle]] können alle Cache- und Logdaten frei heruntergeladen werden. Die OKAPI kann auch [[Das Onlinelog|Logs]] hochladen, sodass auch [[Smartphone-Apps für Opencaching.de|Smartphone-Apps]] mit [[Fachjargon#Field Logging|Field-Logging]]-Funktion realisierbar sind.&lt;br /&gt;
&lt;br /&gt;
== Weitere Opencaching-Entwicklungsprojekte ==&lt;br /&gt;
* [https://github.com/opencaching/opencaching-pl Opencaching Polen] &lt;br /&gt;
* [https://github.com/opencaching/okapi Opencaching-API]&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Entwicklung| ]]&lt;/div&gt;</summary>
		<author><name>Fraggle</name></author>
	</entry>
	<entry>
		<id>https://wiki.opencaching.de/index.php?title=Entwicklungsumgebung/Fehlerhandbuch&amp;diff=8057</id>
		<title>Entwicklungsumgebung/Fehlerhandbuch</title>
		<link rel="alternate" type="text/html" href="https://wiki.opencaching.de/index.php?title=Entwicklungsumgebung/Fehlerhandbuch&amp;diff=8057"/>
		<updated>2026-02-11T12:57:31Z</updated>

		<summary type="html">&lt;p&gt;Fraggle: docker-Meldungen als &amp;#039;veraltet&amp;#039; markiert&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Während der Installation der Programme oder Einrichtung der Testumgebung kann es zu diversen Fehlern und Meldungen kommen. Im Folgenden sind bereits bekannte Meldungen aufgelistet, die bei einer schnellen Behebung helfen sollen.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Fehlermeldungen während der Paketinstallation ==&lt;br /&gt;
==== Während der Installation der benötigten Pakete, kommt es zu einer Meldung, dass Abhängigkeiten mit dem ‘libdvd-pkg’ Paket nicht aufgelöst werden können ====&lt;br /&gt;
&lt;br /&gt;
Eine Rekonfiguration des Pakets schafft Abhilfe:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;sudo dpkg-reconfigure libdvd-pkg&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Fehlermeldungen in Zusammenhang mit der DDEV-Testumgebung ==&lt;br /&gt;
==== Fehler “ERROR: for opencaching-mariadb  Cannot start service mariadb: driver failed programming external connectivity on endpoint opencaching-mariadb [..] Error starting userland proxy: listen tcp 0.0.0.0:3306: bind: address already in use” ====&lt;br /&gt;
Wenn beim &#039;ddev start&#039; diese Fehlermeldung kommt, läuft im Hintergrund bereits ein anderer Webservice (z.B. mysql) auf Port 3306.&lt;br /&gt;
&lt;br /&gt;
Prüfen kann man das mit:&lt;br /&gt;
 netstat -tanp | grep :3306&lt;br /&gt;
&lt;br /&gt;
Zum Beispiel ein mysql-Webserver kann gestoppt werden mit:&lt;br /&gt;
 sudo mysqladmin -u root shutdown&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Fehlermeldungen beim Zugriff auf die Datenbank ==&lt;br /&gt;
==== Fehlermeldung “ERROR 2002 (HY000): Can&#039;t connect to local MySQL server through socket &#039;/var/run/mysqld/mysqld.sock&#039; (2)” ====&lt;br /&gt;
Es wurde vergessen, den Namen der Datenbank in der Kommandozeile zu übergeben.&lt;br /&gt;
 mysql -uroot -proot -hopencaching-db opencaching&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Fehlermeldungen beim Zugriff auf die Testserverdomain(s) ==&lt;br /&gt;
==== Vorgehen zum Anlegen eines weiteren Benutzers (betrifft Legacy-Testsystem) ====&lt;br /&gt;
Zuerst via https://opencaching.ddev.site/register.php einen neuen Nutzer registrieren. Zwar kommt dann die Meldung, dass der Aktivierungscode per Mail zugsandt wurde, dies passiert aber nie. Der Aktivierungscode muss aus der Test-Datenbank ausgelesen werden.&lt;br /&gt;
Der Code steht in Tabelle &#039;&#039;user&#039;&#039; im Feld &#039;&#039;activation_code&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Mit https://opencaching.ddev.site/activation.php gelangt man zur Account-Aktivierungsseite. Hier die E-Mail-Adresse und den aus der Datenbank kopierten Aktivierungscode eingeben. Der Account ist nun aktiviert, aber falls der Login nicht funktioniert: siehe andere Fehlermeldung hier auf der Seite weiter unten.&lt;br /&gt;
&lt;br /&gt;
Info: Eventuell wird in Zukunft der MailHog zum Laufen gebracht. Dann werden die vom Server verschickten Emails von diesem abgefangen und man kann die Informationen darin lesen.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Der neu angelegte Benutzer kann sich nicht einloggen und wird immer wieder ohne Meldung auf die Login-Seite geleitet (betrifft Legacy-Testsystem) ====&lt;br /&gt;
Die exakte Ursache ist nicht bekannt. Abhilfe kann geschaffen werden, wenn beim entsprechenden Nutzer in der Datenbank in der Tabelle &#039;&#039;user&#039;&#039; das Feld &#039;&#039;permanent_login_flag&#039;&#039; auf &#039;&#039;1&#039;&#039; gesetzt wird.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Es kann kein Logbild hochgeladen werden (betrifft Legacy-Testsystem) ====&lt;br /&gt;
Sobald man ein Logbild hochladen möchte, erscheint eine Fehlermeldung&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;Warning: move_uploaded_file(): Unable to move &#039;/tmp/phpGmSzpi&#039; to &#039;/application/htdocs/config2/../images/uploads/700770A6-C101-11EA-BA77-0242AC120005.jpg&#039; in /application/htdocs/lib2/logic/picture.class.php on line 856&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Abhilfe: (noch) keine Ahnung. Die Bilder wurden aber trotzdem hochgeladen.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Bei Anlegen/Editieren eines Listings funktioniert die Attributeauswahl nicht (betrifft Legacy-Testsystem) ====&lt;br /&gt;
Editiert man ein Listing, stehen nicht alle Attribute zur Verfügung bzw. es können nicht alle Attribute ausgewählt werden. &lt;br /&gt;
&lt;br /&gt;
Abhilfe: (noch) keine Ahnung.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Es kann nicht auf die Domains opencaching.ddev.site oder try-opencaching.ddev.site zugegriffen werden. ====&lt;br /&gt;
Normalerweise sollte der Zugriff nach Installation der Testumgebung automatisch funktionieren. Sollte das nicht der Fall sein, kann mittels Anpassung der hosts-Datei ein Workaround geschaffen werden:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;127.0.0.1	opencaching.ddev.site&lt;br /&gt;
127.0.0.1	try-opencaching.ddev.site&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Abschalten von “NOTICE”-Meldungen. (betrifft Legacy-Testsystem) ====&lt;br /&gt;
Aufgrund diverser (Smarty- und PHP-)Updates werden vormals ignorierte Probleme nun mit einer “NOTICE”-Meldung kenntlich gemacht. Um die Meldungen zu unterdrücken, kann in das error_reporting Level geändert werden.&lt;br /&gt;
&lt;br /&gt;
Beispiele für Fehlermeldungen:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;Notice: Undefined index: error_password_not_ok in /app/htdocs/var/cache2/smarty/compiled/..&lt;br /&gt;
Notice: Trying to get property &#039;value&#039; of non-object in /app/..&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Abhilfe:&lt;br /&gt;
Bis Smarty 3.x: In der Datei /htdocs/vendor/smarty/smarty/libs/Smarty.class.php die Zeile mit $error_reporting ändern auf den nachfolgenden Code. Die Änderung ist nicht git-relevant und geht nach jedem “ddev init” verloren.&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;public $error_reporting = E_ALL &amp;amp; ~E_NOTICE;&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ab Smarty 3.x und 4.x: In der Datei /htdocs/lib2/common.inc.php die obere Zeile (PHP_DEBUG_ON) mit $error_reporting ändern auf den nachfolgenden Code. Die Änderung ist permanent und muss vor einem Commit rückgängig gemacht werden, da sie sonst im github Repository landet.&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;ini_set(&#039;error_reporting&#039;, E_ALL &amp;amp; ~E_NOTICE);&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== gelöste und veraltete Fehlermeldungen ==&lt;br /&gt;
==== [veraltet] Fehler “starting opencaching-webserver .. error” oder “Starting webserver ... error” ====&lt;br /&gt;
Vermutlich läuft im Hintergrund bereits ein anderer Webservice auf Port 80.&lt;br /&gt;
&lt;br /&gt;
Prüfen kann man das mit:&lt;br /&gt;
 netstat -tanp | grep :80&lt;br /&gt;
&lt;br /&gt;
Zum Beispiel ein apache2-Webserver kann gestoppt werden mit:&lt;br /&gt;
 sudo systemctl stop apache2&lt;br /&gt;
&lt;br /&gt;
Damit der apache2 nach einem Rechnerneustart nicht erneut aktiviert wird, kann man ihn generell deaktivieren:&lt;br /&gt;
 sudo systemctl disable apache2&lt;br /&gt;
&lt;br /&gt;
Alternativ lässt sich auch eine [[https://docs.docker.com/compose/extends/|Override-Datei]] für die betroffenen Ports verwenden, was allerdings weitere Komplikationen mit sich führen kann (wie beispielsweise eine nicht funktionierende OKAPI). Aus diesem Grund sollte nach Möglichkeit das Stoppen der Standard-Services für Apache und einen Datenbank-Server vorgezogen werden.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== [veraltet] Fehler “W: GPG error: https://dl.yarnpkg.com/debian stable InRelease: The following signatures were invalid: EXPKEYSIG“ ====&lt;br /&gt;
Nach dem Ausführen von ./psh.phar docker:start kommt der Fehler. Hier ist das Zertifikat veraltet. Folgender Befehl löscht das Docker-Image. &lt;br /&gt;
 docker-compose build --pull&lt;br /&gt;
&lt;br /&gt;
Mit einen erneuten ./psh.phar docker:start läuft es wieder durch.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== [veraltet] Fehler &amp;quot;The stream or file &amp;quot;/application/htdocs/var/logs/dev/dev.log&amp;quot; could not be opened: failed to open stream: Permission denied&amp;quot; oder ähnlich (betrifft Legacy-Testsystem) ====&lt;br /&gt;
==== [veraltet] Oder: Fehler &amp;quot;Permission denied&amp;quot; beim Zugriff auf /htdocs/var/cache (betrifft Legacy-Testsystem) ====&lt;br /&gt;
==== [veraltet] Oder: Fehler 500 (ohne weitere Angaben, warum) (betrifft Legacy-Testsystem) ====&lt;br /&gt;
Hier scheint der Webserver keine Zugriffsberechtigung auf bestimmte Pfade/Dateien zu haben. Von einem Ändern der Zugriffsberechtigungen, z. B. mittels sudo chmod -R 777 ./var/log, sollte aus Sicherheitsgründen aber Abstand genommen werden.&lt;br /&gt;
&lt;br /&gt;
Helfen kann, die Befehlsfolge&lt;br /&gt;
 ./psh.phar docker:ssh&lt;br /&gt;
 ./psh.phar docker:init&lt;br /&gt;
 exit&lt;br /&gt;
ein weiteres Mal auszuführen.&lt;br /&gt;
&lt;br /&gt;
Falls dies weiterhin keinen Erfolg bringt, können folgende Schritte zum Ändern der Zugriffsberechtigungen angewandt werden:&lt;br /&gt;
# Ermitteln der ID des Containers oc-server3_php-fpm mittels sudo docker ps.&lt;br /&gt;
# Öffnen einer Shell im Container: sudo docker exec -it 45b6e4994fac /bin/bash, wobei 45b6e4994fac die ID des Containers ist.&lt;br /&gt;
# In der Container-Shell chmod -R 777 /application/htdocs/var/logs/dev/ ausführen.&lt;br /&gt;
# Die Container-Shell regulär mittels exit verlassen.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== [veraltet] Host-Mismatch bei Aufruf der OKAPI mit Port-Override ====&lt;br /&gt;
Falls in einer Override-Datei Ports überschrieben werden (siehe oben), funktioniert die OKAPI möglicherweise nicht richtig - stattdessen erscheint ein Hinweis auf einen Port-Mismatch. Dies kann auf folgende Art und Weise behoben werden:&lt;br /&gt;
# Ermitteln der ID des Containers &#039;&#039;oc-server3_php-fpm&#039;&#039; mittels &#039;&#039;sudo docker ps&#039;&#039;.&lt;br /&gt;
# Öffnen einer Shell im Container: &#039;&#039;sudo docker exec -it 45b6e4994fac /bin/bash&#039;&#039;, wobei 45b6e4994fac die ID des Containers ist.&lt;br /&gt;
# Im Container einen Editor installieren, beispielsweise nano. Da der Container auf Ubuntu basiert, funktioniert dies mittels &#039;&#039;apt-get update &amp;amp;&amp;amp; apt-get install nano&#039;&#039;.&lt;br /&gt;
# Die passende Konfigurationsdatei mittels des Editors im Container öffnen, beispielsweise mittels &#039;&#039;nano /application/htdocs/config2/settings.inc.php.&#039;&#039;&lt;br /&gt;
# Setzen von &#039;&#039;$dev_baseurl = &#039;http://docker.team-opencaching.de:2200&#039;;&#039;&#039; und anschließendes Speichern der Datei. Hierbei ist 2200 der Port, der statt Port 80 für den Webserver in der Override-Datei konfiguriert worden ist.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== [veraltet] Während docker:init kommt es im Abschnitt (3/31) zu einer Meldung “&amp;gt; mysql -uroot -proot -hmariadb -e &amp;quot;DROP DATABASE IF EXISTS opencaching&amp;quot; ERROR 2005 (HY000): Unknown MySQL server host &#039;mariadb&#039; (-3).“ ====&lt;br /&gt;
Abhilfe: &#039;&#039;./psh.phar docker:init&#039;&#039; darf nicht außerhalb des Dockercontainers aufgerufen werden.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== [veraltet] Während docker:init kommt es im Abschnitt (13/31) zu einer Meldung “PHP Fatal error: .. __toString() must not throw an exception ..“ ====&lt;br /&gt;
Die Ursache ist nicht bekannt. Hier hilft aktuell nur ein Workaround, in dem die Exception im Script auskommentiert wird.&lt;br /&gt;
&lt;br /&gt;
Hierzu in der Datei &#039;&#039;../htdocs/vendor/symfony/symfony/src/Symfony/Component/DependencyInjection/Compiler/AutowirePass.php&#039;&#039; die Zeile 236 &#039;&#039;throw new AutoWiringFailedException&#039;&#039; auskommentieren. Die Datei ist allerdings erst nach dem Ausführens von docker:init vorhanden.&lt;br /&gt;
&lt;br /&gt;
Siehe auch Ticket: [[https://opencaching.atlassian.net/browse/OCC-90|OCC-90: Exception error during docker:init]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== [veraltet] Docker Services neu initialisieren, z.B. bei “&#039;&#039;W: GPG error:  stable InRelease: The following signatures were invalid: EXPKEYSIG 23E7166788B63E1E Yarn Packaging &amp;lt;yarn@dan.cx&amp;gt;&#039;&#039;“ ====&lt;br /&gt;
Treten während eines docker:init neue, merkwürdige und nicht näher spezifizierbare Fehler auf, kann es helfen, die Dockercontainer neu zu initialisieren mittels:&lt;br /&gt;
 docker-compose build --pull&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== [veraltet] z.B. bei Update auf Symfony 5.2 kommt während docker:start-clean der Fehler &#039;&#039;”mv: cannot stat &#039;/root/.symfony/bin/symfony&#039;: No such file or directory Service &#039;webserver&#039; failed to build: The command &#039;/bin/sh -c mv /root/.symfony/bin/symfony /usr/local/bin/symfony&#039; returned a non-zero code: 1&amp;quot;&#039;&#039; ====&lt;br /&gt;
In diesem Fall in der Datei &#039;&#039;docker/httpd/Dockerfile&#039;&#039; die fehlerverursachende Zeile &lt;br /&gt;
  RUN mv /root/.symfony/bin/symfony /usr/local/bin/symfony&lt;br /&gt;
auskommentieren und docker:start-clean erneut laufen lassen.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== [veraltet] Während docker:start-clean: &#039;&#039;&amp;quot;\Doctrine\Common\Persistence\Mapping\Driver\MappingDriverChain()&amp;quot; not found&#039;&#039; ====&lt;br /&gt;
Dies ist ein Fehler in einem der &#039;&#039;doctrine/*&#039;&#039; Pakete (vermutlich &#039;&#039;doctrine/persistence&#039;&#039;) in bestimmten Paketversionen. Hier hilft, die Datei &#039;&#039;/htdocs/vendor/doctrine/doctrine-bundle/Resources/config/orm.xml&#039;&#039; Zeile 32 zu editieren:&lt;br /&gt;
 &amp;lt;parameter key=&amp;quot;doctrine.orm.metadata.driver_chain.class&amp;quot;&amp;gt;Doctrine\Common\Persistence\Mapping\Driver\MappingDriverChain&amp;lt;/parameter&amp;gt;&lt;br /&gt;
zu&lt;br /&gt;
 &amp;lt;parameter key=&amp;quot;doctrine.orm.metadata.driver_chain.class&amp;quot;&amp;gt;Doctrine\Persistence\Mapping\Driver\MappingDriverChain&amp;lt;/parameter&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Allerdings muss dies zum richtigen Zeitpunkt passieren. Nachdem &#039;&#039;docker:start-clean&#039;&#039; aufgerufen wurde, kurz warten, bis die Pakete heruntergeladen wurden und noch bevor Abschnitt 13/32 anfängt, muss die Datei korrigiert und gespeichert worden sein.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== [veraltet] Meldung “DEPRECATED: The legacy builder is deprecated and will be removed in a future release. Install the buildx component to build images with [[https://docs.docker.com/go/buildx/|BuildKit]] ====&lt;br /&gt;
Der Docker build Prozess wurde geändert. Die bisherige Methode wurde ab Dockerversion 23 als “deprecated” markiert und wird in einer zukünftigen Version entfernt. Siehe [[https://docs.docker.com/engine/deprecated/#legacy-builder-for-linux-images|Deprecated Engine Features]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== [veraltet] Meldung “ERROR: BuildKit is enabled but the buildx component is missing or broken.“ ====&lt;br /&gt;
Docker Buildkit/buildx soll verwendet werden (DOCKER_BUILDKIT=1), wurde aber nicht installiert.&lt;br /&gt;
&lt;br /&gt;
Abhilfe: Buildkit/buildx Komponente installieren. Vorher müssen aber einige bereits installierte Pakete entfernt werden. Je nach OS gibt es unterschiedliche Anweisungen und Installationswege, siehe hier: [[https://docs.docker.com/engine/install/|Install Docker Engine]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== [veraltet] Während docker:start-clean: &#039;&#039;&amp;quot;Browserslist: caniuse-lite is outdated.&amp;quot;&#039;&#039; ====&lt;br /&gt;
Scheinbar wird die “browserslist” nicht automatisch aktualisiert. (Grund? k.A.)&lt;br /&gt;
&lt;br /&gt;
Zum manuellen Update im Docker:ssh eingeben:&lt;br /&gt;
 npx browserslist@latest --update-db&lt;br /&gt;
bzw.&lt;br /&gt;
 npx update-browserslist-db@latest&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== [veraltet] Beim Anlegen des &#039;&#039;zweiten&#039;&#039; Cachelistings kommt eine Fehlermeldung (betrifft Legacy-Testsystem) ====&lt;br /&gt;
Bei einer &#039;&#039;leeren&#039;&#039; Datenbank funktioniert das Setzen und Hochzählen der OC-Codes nicht. Es muss einmal ein OC-Code von Hand gesetzt werden.&lt;br /&gt;
&lt;br /&gt;
Hierzu auf dem Testserver ein Listing anlegen. Dann für diesen Cache in der Datenbank in der Tabelle &#039;&#039;caches&#039;&#039; das Feld &#039;&#039;wp_oc&#039;&#039; auf einen initialen Wert ändern, z.B. &#039;&#039;OC1234&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== [veraltet] Beim Erstellen/Speichern eines Cachelistings kommen mehrere  Fehlermeldungen, u.a. “Warning: A non-numeric value encountered in /app/htdocs/newcache.php on line 1025” (betrifft Legacy-Testsystem) ====&lt;br /&gt;
[[Image:Fehlerhandbuch Domain 01.png|500px]]&lt;br /&gt;
&lt;br /&gt;
Zuerst muss geschaut werden, ob eventuell der vorige Abschnitt (“Beim Anlegen des zweiten Cachelistings kommt eine Fehlermeldung“) zutrifft. Wurden die dort beschriebenen Maßnahmen bereits umgesetzt, kommt es zwar trotzdem zur Fehlermeldung, das Listing wurde aber erfolgreich angelegt bzw. gespeichert. (Seite neu laden)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== [veraltet] Das Länderauswahlfeld rechts oben auf der Seite ist leer und funktioniert nicht. (betrifft Legacy-Testsystem) ====&lt;br /&gt;
Alle php-Dateien im Cacheverzeichnis htdocs/var/cache2 müssen gelöscht werden.&lt;br /&gt;
&lt;br /&gt;
Das Vorgehen Unter Linux:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;./psh.phar docker:stop&lt;br /&gt;
rm htdocs/var/cache2/*.inc.php&lt;br /&gt;
./psh.phar docker:start&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== [gelöst] Die Übersetzungen funktionieren nicht. Meist wird nur Englischer Text angezeigt. (betrifft Legacy-Testsystem) ====&lt;br /&gt;
Die vorhandenen Fremdsprachen werden auf dem Testsystem nicht korrekt dargestellt. Meistens wird nur der Englische Text oder ein Mischmasch aus Englisch und eingestellter Sprache angezeigt.&lt;br /&gt;
&lt;br /&gt;
Abhilfe: im docker:start Skript wurde eine fehlende Komponente ergänzt, welche nun automatisch mitinstalliert wird. Dadurch werden die Sprachdateien korrekt erzeugt und die Übersetzungen funktionieren.&lt;br /&gt;
&lt;br /&gt;
Siehe auch: [[https://opencaching.atlassian.net/browse/RED-1278|RED-1278: Die Übersetzungen funktionieren auf dem Testserver nicht]]&lt;br /&gt;
Dieser Fehler sollte somit nicht mehr auftauchen.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== [gelöst] Beim Löschen von Logs kommt eine Fehlermeldung “This log entry has been created on another Opencaching website. The cache can only be edited there.” ====&lt;br /&gt;
Auf dem Testserver werden die Logs laut Datenbank (Tabelle &#039;&#039;cache_logs&#039;&#039;, Spalte &#039;&#039;nodes&#039;&#039;) als &#039;&#039;node=5&#039;&#039; gespeichert, obwohl es laut Tabelle &#039;&#039;nodes&#039;&#039; diese Ziffer gar nicht gibt.&lt;br /&gt;
&lt;br /&gt;
Um Logs wieder über die normale Loglöschenfunktion löschen zu können, gibt es mehrere Möglichkeiten:&lt;br /&gt;
# In der Datenbanktabelle ‘cache_logs’ den Eintrag in Spalte ‘nodes’ auf 4 ändern. (Dies entspricht der ‘Local Development’-Umgebung (siehe Tabelle ‘nodes’)).&lt;br /&gt;
# In der Datei ‘/dev-ops/local.team-opencaching.de/templates/config2-settings.inc.tpl.php&#039; den Eintrag ‘$opt[&#039;logic&#039;][&#039;node&#039;][&#039;id&#039;] = 5;’ ändern auf &#039;$opt[&#039;logic&#039;][&#039;node&#039;][&#039;id&#039;] = 4;’ und das docker:init Script ausführen&lt;br /&gt;
# Der Pull [[https://github.com/OpencachingDeutschland/oc-server3/pull/830|Pull Request #830 changed node information from 5 to 4]]  behebt das Problem.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Entwicklung|Fehlerhandbuch ]]&lt;/div&gt;</summary>
		<author><name>Fraggle</name></author>
	</entry>
	<entry>
		<id>https://wiki.opencaching.de/index.php?title=Entwicklungsumgebung_einrichten&amp;diff=8056</id>
		<title>Entwicklungsumgebung einrichten</title>
		<link rel="alternate" type="text/html" href="https://wiki.opencaching.de/index.php?title=Entwicklungsumgebung_einrichten&amp;diff=8056"/>
		<updated>2026-02-11T12:32:02Z</updated>

		<summary type="html">&lt;p&gt;Fraggle: kleinere Textkorrekturen&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Das Einrichten der Testumgebung erfolgt in mehreren Schritten, die im folgenden beschrieben sind. Falls es dabei zu unerwarteten Fehlermeldungen kommt, bitte die letzten Schritte noch einmal genau anschauen und gegebenenfalls wiederholen. Auch ein Blick ins Fehlerhandbuch hilft meistens, da bereits viele Fallstricke entdeckt und beschrieben wurden.&lt;br /&gt;
&lt;br /&gt;
== 1. Das Betriebssystem vorbereiten, entweder Linux oder Windows ==&lt;br /&gt;
=== Windows 10 ===&lt;br /&gt;
==== Programme installieren ====&lt;br /&gt;
Unter Windows ist es standardmäßig nicht möglich, “einfach“ die Linux Distribution Ubuntu zu installieren. Dazu muss vorab erst das WSL2 aktiviert / installiert werden werden (Punkt 1). Im Anschluss ist eine Installation von Ubuntu (18.04 oder höher) möglich. Zudem muss DDEV installiert werden, in welchem dann die Entwicklungsumgebung laufen kann (Punkt 2).&lt;br /&gt;
&lt;br /&gt;
# WSL2 unter Windows10 aktivieren und Ubuntu installieren: &lt;br /&gt;
## Aus dem Microsoft-Store: https://aka.ms/wslstorepage (verfügbar seit Nov. 2022) &lt;br /&gt;
## Manuell unter [https://learn.microsoft.com/de-de/windows/wsl/install#manual-installation-steps|Installieren von WSL]&lt;br /&gt;
# DDEV für Windows installieren: [https://docs.ddev.com/en/stable/#system-requirements-windows-wsl2|Install DDEV WSL2]&lt;br /&gt;
# Unter Windows muss in der Hosts-Datei (%windir%\system32\drivers\etc) folgende Eintragung gemacht werden: &lt;br /&gt;
 &amp;lt;nowiki&amp;gt;127.0.0.1	opencaching.ddev.site&lt;br /&gt;
127.0.0.1	try-opencaching.ddev.site&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Danach kann Ubuntu gestartet werden (z.B. im “Such“-Menü nach Ubuntu suchen und anklicken). Beim erstmaligen Starten von Ubuntu müssen ein Benutzername und ein Passwort festgelegt werden.&lt;br /&gt;
&lt;br /&gt;
Im Anschluss den Punkten folgen und ausführen, die im nächsten Schritt “Linux” beschrieben werden.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Linux ===&lt;br /&gt;
Der Linuxartikel wurde erstellt auf Lubuntu 22.04 und erweitert mit Debian 12&lt;br /&gt;
&lt;br /&gt;
==== Programme installieren ====&lt;br /&gt;
Folgende Programme sind notwendig und müssen vorab installiert werden:&lt;br /&gt;
PHP (aktuell mindestens PHP8.2), diverse PHP-Erweiterungen, ddev, mariadb-client. Für die PHP-Erweiterungen ist eventuell ein zusätzliches PPA-Repository notwendig. Dessen Installation erfordert je nach Betriebssystem ein unterschiedliches Vorgehen.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;Ubuntu:&lt;br /&gt;
sudo apt install software-properties-common&lt;br /&gt;
sudo add-apt-repository ppa:ondrej/php&lt;br /&gt;
&lt;br /&gt;
Debian:&lt;br /&gt;
sudo apt install software-properties-common ca-certificates lsb-release apt-transport-https&lt;br /&gt;
curl -sSL https://packages.sury.org/php/README.txt | sudo bash -x&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Die Pakete lassen sich mit folgenden Befehlen installieren (Versionsnummer kann abweichen).&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;sudo apt update&lt;br /&gt;
sudo apt install php8.2 php8.2-mbstring php8.2-curl php8.2-xml php8.2-mysql&lt;br /&gt;
sudo apt install mariadb-client&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Sollten beim Installieren der Pakete Fehlermeldungen auftreten, ist es empfehlenswert, die Pakete einzeln zu installieren und auftretende Fehler/Abhängigkeiten einzeln zu lösen.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== 2. Sourcecode von Git laden ==&lt;br /&gt;
=== Github ===&lt;br /&gt;
Zwar ist zum Herunterlden des Sourcecodes keine Account auf GitHub notwendig, aber zum Hochladen wird einer benötigt. Daher sollte zuerst einen Account auf https://github.com/ angelegt werden.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== optional: SSH-Keys für Repositorys anlegen und in Github eintragen ===&lt;br /&gt;
siehe https://docs.github.com/en/free-pro-team@latest/github/authenticating-to-github/connecting-to-github-with-ssh&amp;lt;br /&amp;gt;&lt;br /&gt;
oder: https://www.heise.de/tipps-tricks/SSH-Key-fuer-GitHub-Repositories-einrichten-4627459.html&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Git lokal installieren ===&lt;br /&gt;
Windows:&amp;lt;br /&amp;gt;&lt;br /&gt;
siehe: https://github.com/git-for-windows/git/releases&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Linux:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;sudo apt install git&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Sourcecode lokal herunterladen ===&lt;br /&gt;
Ein Terminal öffnen, folgende Kommandos ausführen und dabei Namen und Email-Adresse des Git-Accounts eintragen:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;git config --global user.name &amp;quot;Your Name Here&amp;quot;&lt;br /&gt;
git config --global user.email &amp;quot;your_email@youremail.com&amp;quot;&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Im Verzeichnis &amp;quot;home&amp;quot; einen Ordner &amp;quot;opencaching&amp;quot; (Name beliebig) anlegen. Dort folgenden Code ausführen. Dies legt einen Ordner mit dem Namen “oc-server3“ an, lädt den OC-Code aus deinem Github-Fork herunter und kopiert ihn in diesen Ordner.&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;git clone git@github.com:&amp;lt;DeinGithubBenutzername&amp;gt;/oc-server3&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Im Anschluss in den Ordner “oc-server3“ wechseln und den folgenden Befehl ausführen, um bei einem Update den neuesten Sourcecode aus dem Opencaching.de-Repository erhalten zu können:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;cd oc-server3&lt;br /&gt;
git remote add upstream git@github.com:OpencachingDeutschland/oc-server3&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Mit folgendem Befehl gibt es eine Übersicht über die verknüpften Repositorys, die (abgesehen vom Nutzernamen ‘Slini11’) wie in der Grafik aussehen müssen:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;git remote -v&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
[[Image:Testumgebung Git 01.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Nun den Branch “development“ auschecken:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;git checkout development&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Und den Development-Branch auf aktuellen Stand bringen:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;git pull --rebase upstream development &amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Weiterführende Informationen zu Git ===&lt;br /&gt;
Diese sind unter anderem im [[Entwicklung/Git|OC-Wiki]] zu finden&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== 3. DDEV Entwicklungsumgebung initalisieren ==&lt;br /&gt;
=== Entwicklungsumgebung zum ersten Mal starten ===&lt;br /&gt;
Zuerst in den Projektordner “oc-server3“ navigieren und dort die Installation der Testumgebung starten.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Scripte einzeln ausführen ====&lt;br /&gt;
* ddev anstarten. Im Laufe dieses Prozesses wird die hosts-Datei automatisch angepasst.&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;ddev start&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Starten der Initialisierung der Testumgebung und der Datenbank:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;ddev init&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Die Entwicklungsumgebung steht nun über den Browser bereit unter:&lt;br /&gt;
  https://opencaching.ddev.site&lt;br /&gt;
  bzw.&lt;br /&gt;
  https://try-opencaching.ddev.site&lt;br /&gt;
&lt;br /&gt;
* Das Passwort für den Benutzer &#039;&#039;root&#039;&#039; lautet &#039;&#039;developer&#039;&#039;. Das Passwort der anderen Benutzer (Benutzernamen siehe Datenbank) lautet &#039;&#039;password&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Entwicklungsumgebung ein weiteres Mal starten ===&lt;br /&gt;
Die Testumgebung kann neugestartet werden mit:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;ddev restart&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Entwicklungsumgebung stoppen ===&lt;br /&gt;
Die Testumgebung kann gestoppt werden mit:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;ddev stop&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Entwicklungsumgebung löschen ===&lt;br /&gt;
Die Testumgebung kann im Projektordner gelöscht werden mit:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;ddev delete --omit-snapshot&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Danach sind ein erneutes &#039;&#039;ddev start&#039;&#039; und &#039;&#039;ddev init&#039;&#039; notwendig.&lt;br /&gt;
&lt;br /&gt;
== 4. Die  Testdatenbank füllen ==&lt;br /&gt;
Während der Installation wird eine Testdatenbank importiert, die bereits eine kleine Menge an Caches und Nutzern beinhaltet. Ein manueller Import des Datenbankdumps ist somit (seit März 2021) nicht mehr notwendig. &lt;br /&gt;
&lt;br /&gt;
Für den Fall, dass trotzdem Daten exportiert / importiert werden sollen, können folgende Abschnitte berücksichtigt werden:&lt;br /&gt;
&lt;br /&gt;
=== Login auf der Test-Datenbank im ddev-Container ===&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;mysql -uroot -proot -hopencaching-db opencaching&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Datenbank innerhalb des ddev-Containers exportieren ===&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;mysqldump -uroot -proot -hopencaching-db opencaching &amp;gt; file.sql&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Datenbank außerhalb des ddev-Containers exportieren ===&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;mysqldump --complete-insert --user root -proot --host 0.0.0.0 opencaching &amp;gt; dump.sql&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Datenbank im phpStorm exportieren ===&lt;br /&gt;
Auf der rechten Bildschirmseite den Databasedialog ausklappen&lt;br /&gt;
rechte Maustaste auf die zu exportierende Datenbank “opencaching” =&amp;gt; “Export with ‘mysqldump’”&lt;br /&gt;
&lt;br /&gt;
[[Image:Testumgebung DB 01.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Im Exportmenü die Zeile “Statements” umstellen auf “Insert with columns” und eventuell den Ausgabepfad “Out Path” anpassen. Im Kommandofeld den Parameter “--routines“ ergänzen und dann “Run” drücken&lt;br /&gt;
&lt;br /&gt;
[[Image:Testumgebung DB 02.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Datenbank-Dump im phpStorm importieren ===&lt;br /&gt;
Auf der rechten Bildschirmseite den Databasedialog ausklappen&lt;br /&gt;
rechte Maustaste auf die Datenbank =&amp;gt; “Restore with ‘mysql’”&lt;br /&gt;
&lt;br /&gt;
[[Image:Testumgebung DB 03.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Im Importmenü den Eingabepfad “Path to dump” anpassen, dann “Run” drücken&lt;br /&gt;
&lt;br /&gt;
[[Image:Testumgebung DB 04.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Datenbank in phpStorm anzeigen ===&lt;br /&gt;
Ggf. kann es passieren, dass die Datenbank nicht automatisch in phpStorm angezeigt wird. Dazu muss eine neue MariaDB im Datenbank-Menü angelegt werden.&lt;br /&gt;
&lt;br /&gt;
[[Image:Testumgebung DB 05.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Im Anschluss sind die Daten wie im folgenden Screenshot einzutragen. User: “root“ Password: “root“&lt;br /&gt;
&lt;br /&gt;
[[Image:Testumgebung DB 06.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== 5. Die Entwicklungs-IDE vorbereiten ==&lt;br /&gt;
Gegebenenfalls sind an der Programmierumgebung Änderungen vorzunehmen, um zum Beispiel [[OC Coding Style|einheitlich formatierten Code]] zu schreiben. &lt;br /&gt;
&lt;br /&gt;
=== Einrichtung des PHP Coding Styles am Beispiel von phpStorm ===&lt;br /&gt;
Unter Settings / Code Style / PHP rechts auf “Set from…” klicken und “PSR-12” auswählen. Die Einstellung mit “Apply” bestätigen.&lt;br /&gt;
(Weitere Informationen zum Coding Style sind [[OC Coding Style|hier im Wiki]] zu finden.)&lt;br /&gt;
&lt;br /&gt;
[[Image:Testumgebung IDE 01.png|500px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Symfony Pfade am Beispiel phpStorm anpassen ===&lt;br /&gt;
[[Image:Testumgebung IDE 04.jpeg]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Terminalanpassung am Beispiel phpStorm (für Windows-Nutzer) ===&lt;br /&gt;
[[Image:Testumgebung IDE 05.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== hilfreiche Plugins für phpStorm ===&lt;br /&gt;
-&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Synchronisieren/Wiederherstellen der Benutzereinstellungen mittels JetBrains-Server ===&lt;br /&gt;
Sofern man bei JetBrains einen Account hat, kann man mit diesem die Einstellungen der lokalen IDE synchronisieren und z.B. nach einer Neuinstallation von dort wiederherstellen.&lt;br /&gt;
&lt;br /&gt;
Hierzu in der IDE rechts oben auf das Zahnrad klicken und “Settings Sync is off” auswählen.&amp;lt;/br&amp;gt;&lt;br /&gt;
[[Image:Testumgebung IDE 02.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Im folgenden Fenster den Button “Enable Settings Sync” klicken und danach alle Einstellungen auswählen, die man sichern möchte. Ein Klick auf “Push Settings to Account” sichert die Einstellungen. Ein Klick auf “Get Settings from Account” stellt sie wieder her, sofern sie vorher dorthin gesichert wurden.&lt;br /&gt;
[[Image:Testumgebung IDE 03.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== 6. Das Fehlerhandbuch lesen (gilt insbesondere für die Schritte #1-#4 :wink:) ==&lt;br /&gt;
&lt;br /&gt;
Beireits bekannte Fehler werden im [[Entwicklungsumgebung/Fehlerhandbuch|Fehlerhandbuch]] beschrieben.&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Entwicklung|Entwicklungsumgebung ]]&lt;/div&gt;</summary>
		<author><name>Fraggle</name></author>
	</entry>
	<entry>
		<id>https://wiki.opencaching.de/index.php?title=Entwicklungsumgebung_einrichten&amp;diff=8055</id>
		<title>Entwicklungsumgebung einrichten</title>
		<link rel="alternate" type="text/html" href="https://wiki.opencaching.de/index.php?title=Entwicklungsumgebung_einrichten&amp;diff=8055"/>
		<updated>2026-02-11T11:35:30Z</updated>

		<summary type="html">&lt;p&gt;Fraggle: Update von docker zu ddev&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Das Einrichten der Testumgebung erfolgt in mehreren Schritten, die im folgenden beschrieben sind. Falls es dabei zu unerwarteten Fehlermeldungen kommt, bitte die letzten Schritte noch einmal genau anschauen und gegebenenfalls wiederholen. Auch ein Blick ins Fehlerhandbuch hilft meistens, da bereits viele Fallstricke entdeckt und beschrieben wurden.&lt;br /&gt;
&lt;br /&gt;
== 1. Das Betriebssystem vorbereiten, entweder Linux oder Windows ==&lt;br /&gt;
=== Windows 10 ===&lt;br /&gt;
==== Programme installieren ====&lt;br /&gt;
Unter Windows ist es standardmäßig nicht möglich, “einfach“ die Linux Distribution Ubuntu zu installieren. Dazu muss vorab erst das WSL2 aktiviert / installiert werden werden (Punkt 1). Im Anschluss ist eine Installation von Ubuntu (18.04 oder höher) möglich. Zudem muss DDEV installiert werden, in dem dann die Entwicklungsumgebung laufen kann (Punkt 2).&lt;br /&gt;
&lt;br /&gt;
# WSL2 unter Windows10 aktivieren und Ubuntu installieren: &lt;br /&gt;
## Aus dem Microsoft-Store: https://aka.ms/wslstorepage (verfügbar seit Nov. 2022) &lt;br /&gt;
## Manuell unter [https://learn.microsoft.com/de-de/windows/wsl/install#manual-installation-steps|Installieren von WSL]&lt;br /&gt;
# DDEV für Windows installieren: [https://docs.ddev.com/en/stable/#system-requirements-windows-wsl2|Install DDEV WSL2]&lt;br /&gt;
# Unter Windows muss in der Hosts-Datei (%windir%\system32\drivers\etc) folgende Eintragung gemacht werden: &lt;br /&gt;
 &amp;lt;nowiki&amp;gt;127.0.0.1	opencaching.ddev.site&lt;br /&gt;
127.0.0.1	try-opencaching.ddev.site&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Danach kann Ubuntu gestartet werden (z.B. im “Such“-Menü nach Ubuntu suchen und anklicken). Beim erstmaligen Starten von Ubuntu müssen ein Benutzername und ein Passwort festgelegt werden.&lt;br /&gt;
&lt;br /&gt;
Im Anschluss den Punkten folgen und ausführen, die im nächsten Schritt “Linux” beschrieben werden.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Linux ===&lt;br /&gt;
Der Linuxartikel wurde erstellt auf Lubuntu 22.04 und erweitert mit Debian 12&lt;br /&gt;
&lt;br /&gt;
==== Programme installieren ====&lt;br /&gt;
Folgende Programme sind notwendig und müssen vorab installiert werden:&lt;br /&gt;
PHP (aktuell mindestens PHP8.2), diverse PHP-Erweiterungen, ddev, mariadb-client. Für die PHP-Erweiterungen ist eventuell ein zusätzliches PPA-Repository notwendig. Dessen Installation erfordert je nach Betriebssystem ein unterschiedliches Vorgehen.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;Ubuntu:&lt;br /&gt;
sudo apt install software-properties-common&lt;br /&gt;
sudo add-apt-repository ppa:ondrej/php&lt;br /&gt;
&lt;br /&gt;
Debian:&lt;br /&gt;
sudo apt install software-properties-common ca-certificates lsb-release apt-transport-https&lt;br /&gt;
curl -sSL https://packages.sury.org/php/README.txt | sudo bash -x&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Die Pakete lassen sich mit folgenden Befehlen installieren (Versionsnummer kann abweichen).&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;sudo apt update&lt;br /&gt;
sudo apt install php8.2 php8.2-mbstring php8.2-curl php8.2-xml php8.2-mysql&lt;br /&gt;
sudo apt install mariadb-client&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Sollten beim Installieren der Pakete Fehlermeldungen auftreten, ist es empfehlenswert, die Pakete einzeln zu installieren und auftretende Fehler/Abhängigkeiten einzeln zu lösen.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== 2. Sourcecode von Git laden ==&lt;br /&gt;
=== Github ===&lt;br /&gt;
Zwar ist zum Herunterlden des Sourcecodes keine Account auf GitHub notwendig, aber zum Hochladen wird einer benötigt. Daher sollte zuerst einen Account auf https://github.com/ angelegt werden.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== optional: SSH-Keys für Repositorys anlegen und in Github eintragen ===&lt;br /&gt;
siehe https://docs.github.com/en/free-pro-team@latest/github/authenticating-to-github/connecting-to-github-with-ssh&amp;lt;br /&amp;gt;&lt;br /&gt;
oder: https://www.heise.de/tipps-tricks/SSH-Key-fuer-GitHub-Repositories-einrichten-4627459.html&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Git lokal installieren ===&lt;br /&gt;
Windows:&amp;lt;br /&amp;gt;&lt;br /&gt;
siehe: https://github.com/git-for-windows/git/releases&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Linux:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;sudo apt install git&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Sourcecode lokal herunterladen ===&lt;br /&gt;
Ein Terminal öffnen, folgende Kommandos ausführen und dabei Namen und Email-Adresse des Git-Accounts eintragen:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;git config --global user.name &amp;quot;Your Name Here&amp;quot;&lt;br /&gt;
git config --global user.email &amp;quot;your_email@youremail.com&amp;quot;&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Im Verzeichnis &amp;quot;home&amp;quot; einen Ordner &amp;quot;opencaching&amp;quot; (Name beliebig) anlegen. Dort folgenden Code ausführen. Dies legt einen Ordner mit dem Namen “oc-server3“ an, lädt den OC-Code aus deinem Github-Fork herunter und kopiert ihn in diesen Ordner.&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;git clone git@github.com:&amp;lt;DeinGithubBenutzername&amp;gt;/oc-server3&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Im Anschluss in den Ordner “oc-server3“ wechseln und den folgenden Befehl ausführen, um bei einem Update den neuesten Sourcecode aus dem Opencaching.de-Repository erhalten zu können:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;cd oc-server3&lt;br /&gt;
git remote add upstream git@github.com:OpencachingDeutschland/oc-server3&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Mit folgendem Befehl gibt es eine Übersicht über die verknüpften Repositorys, die (abgesehen vom Nutzernamen ‘Slini11’) wie in der Grafik aussehen müssen:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;git remote -v&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
[[Image:Testumgebung Git 01.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Nun den Branch “development“ auschecken:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;git checkout development&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Und den Development-Branch auf aktuellen Stand bringen:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;git pull --rebase upstream development &amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Weiterführende Informationen zu Git ===&lt;br /&gt;
Diese sind unter anderem im [[Entwicklung/Git|OC-Wiki]] zu finden&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== 3. DDEV Entwicklungsumgebung initalisieren ==&lt;br /&gt;
=== Entwicklungsumgebung zum ersten Mal starten ===&lt;br /&gt;
Zuerst in den Projektordner “oc-server3“ navigieren und dort die Installation der Testumgebung starten.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Scripte einzeln ausführen ====&lt;br /&gt;
* ddev anstarten. Im Laufe dieses Prozesses wird die hosts-Datei automatisch angepasst.&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;ddev start&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Starten der Initialisierung der Testumgebung und der Datenbank:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;ddev init&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Die Entwicklungsumgebung steht nun über den Browser bereit unter:&lt;br /&gt;
  https://opencaching.ddev.site&lt;br /&gt;
  bzw.&lt;br /&gt;
  https://try-opencaching.ddev.site&lt;br /&gt;
&lt;br /&gt;
* Das Passwort für den Benutzer &#039;&#039;root&#039;&#039; lautet &#039;&#039;developer&#039;&#039;. Das Passwort der anderen Benutzer (Benutzernamen siehe Datenbank) lautet &#039;&#039;password&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Entwicklungsumgebung ein weiteres Mal starten ===&lt;br /&gt;
Die Testumgebung kann z.B. nach einem Neustart des Rechners im Projektordner gestartet werden mit:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;ddev restart&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Entwicklungsumgebung löschen ===&lt;br /&gt;
Die Testumgebung kann im Projektordner gestoppt werden mit:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;ddev delete --omit-snapshot&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Danach sind ein erneutes &#039;&#039;ddev start&#039;&#039; und &#039;&#039;ddev init&#039;&#039; notwendig.&lt;br /&gt;
&lt;br /&gt;
== 4. Die  Testdatenbank füllen ==&lt;br /&gt;
Während der Installation wird eine Testdatenbank importiert, die bereits eine kleine Menge an Caches und Nutzern beinhaltet. Ein manueller Import des Datenbankdumps ist somit (seit März 2021) nicht mehr notwendig. &lt;br /&gt;
&lt;br /&gt;
Für den Fall, dass trotzdem Daten exportiert / importiert werden sollen, können folgende Abschnitte berücksichtigt werden:&lt;br /&gt;
Login auf der Test-Datenbank im ddev-Container&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;mysql -uroot -proot -hopencaching-db opencaching&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Datenbank innerhalb des ddev-Containers exportieren ===&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;mysqldump -uroot -proot -hopencaching-db opencaching &amp;gt; file.sql&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Datenbank außerhalb des ddev-Containers exportieren ===&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;mysqldump --complete-insert --user root -proot --host 0.0.0.0 opencaching &amp;gt; dump.sql&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Datenbank im phpStorm exportieren ===&lt;br /&gt;
Auf der rechten Bildschirmseite den Databasedialog ausklappen&lt;br /&gt;
rechte Maustaste auf die zu exportierende Datenbank “opencaching” =&amp;gt; “Export with ‘mysqldump’”&lt;br /&gt;
&lt;br /&gt;
[[Image:Testumgebung DB 01.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Im Exportmenü die Zeile “Statements” umstellen auf “Insert with columns” und eventuell den Ausgabepfad “Out Path” anpassen. Im Kommandofeld den Parameter “--routines“ ergänzen und dann “Run” drücken&lt;br /&gt;
&lt;br /&gt;
[[Image:Testumgebung DB 02.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Datenbank-Dump im phpStorm importieren ===&lt;br /&gt;
Auf der rechten Bildschirmseite den Databasedialog ausklappen&lt;br /&gt;
rechte Maustaste auf die Datenbank =&amp;gt; “Restore with ‘mysql’”&lt;br /&gt;
&lt;br /&gt;
[[Image:Testumgebung DB 03.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Im Importmenü den Eingabepfad “Path to dump” anpassen, dann “Run” drücken&lt;br /&gt;
&lt;br /&gt;
[[Image:Testumgebung DB 04.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Datenbank in phpStorm anzeigen ===&lt;br /&gt;
Ggf. kann es passieren, dass die Datenbank nicht automatisch in phpStorm angezeigt wird. Dazu muss eine neue MariaDB im Datenbank-Menü angelegt werden.&lt;br /&gt;
&lt;br /&gt;
[[Image:Testumgebung DB 05.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Im Anschluss sind die Daten wie im folgenden Screenshot einzutragen. User: “root“ Password: “root“&lt;br /&gt;
&lt;br /&gt;
[[Image:Testumgebung DB 06.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== 5. Die Entwicklungs-IDE vorbereiten ==&lt;br /&gt;
Gegebenenfalls sind an der Programmierumgebung Änderungen vorzunehmen, um zum Beispiel [[OC Coding Style|einheitlich formatierten Code]] zu schreiben. &lt;br /&gt;
&lt;br /&gt;
=== Einrichtung des PHP Coding Styles am Beispiel von phpStorm ===&lt;br /&gt;
Unter Settings / Code Style / PHP rechts auf “Set from…” klicken und “PSR-12” auswählen. Die Einstellung mit “Apply” bestätigen.&lt;br /&gt;
(Weitere Informationen zum Coding Style sind [[OC Coding Style|hier im Wiki]] zu finden.)&lt;br /&gt;
&lt;br /&gt;
[[Image:Testumgebung IDE 01.png|500px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Symfony Pfade am Beispiel phpStorm anpassen ===&lt;br /&gt;
[[Image:Testumgebung IDE 04.jpeg]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Terminalanpassung am Beispiel phpStorm (für Windows-Nutzer) ===&lt;br /&gt;
[[Image:Testumgebung IDE 05.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== hilfreiche Plugins für phpStorm ===&lt;br /&gt;
-&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Synchronisieren/Wiederherstellen der Benutzereinstellungen mittels JetBrains-Server ===&lt;br /&gt;
Sofern man bei JetBrains einen Account hat, kann man mit diesem die Einstellungen der lokalen IDE synchronisieren und z.B. nach einer Neuinstallation von dort wiederherstellen.&lt;br /&gt;
&lt;br /&gt;
Hierzu in der IDE rechts oben auf das Zahnrad klicken und “Settings Sync is off” auswählen.&amp;lt;/br&amp;gt;&lt;br /&gt;
[[Image:Testumgebung IDE 02.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Im folgenden Fenster den Button “Enable Settings Sync” klicken und danach alle Einstellungen auswählen, die man sichern möchte. Ein Klick auf “Push Settings to Account” sichert die Einstellungen. Ein Klick auf “Get Settings from Account” stellt sie wieder her, sofern sie vorher dorthin gesichert wurden.&lt;br /&gt;
[[Image:Testumgebung IDE 03.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== 6. Das Fehlerhandbuch lesen (gilt insbesondere für die Schritte #1-#4 :wink:) ==&lt;br /&gt;
&lt;br /&gt;
Beireits bekannte Fehler werden im [[Entwicklungsumgebung/Fehlerhandbuch|Fehlerhandbuch]] beschrieben.&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Entwicklung|Entwicklungsumgebung ]]&lt;/div&gt;</summary>
		<author><name>Fraggle</name></author>
	</entry>
	<entry>
		<id>https://wiki.opencaching.de/index.php?title=Entwicklungsumgebung_einrichten&amp;diff=8045</id>
		<title>Entwicklungsumgebung einrichten</title>
		<link rel="alternate" type="text/html" href="https://wiki.opencaching.de/index.php?title=Entwicklungsumgebung_einrichten&amp;diff=8045"/>
		<updated>2025-12-02T20:46:42Z</updated>

		<summary type="html">&lt;p&gt;Fraggle: add docker-buildx&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Das Einrichten der Testumgebung erfolgt in mehreren Schritten, die im folgenden beschrieben sind. Falls es dabei zu unerwarteten Fehlermeldungen kommt, bitte die letzten Schritte noch einmal genau anschauen und gegebenenfalls wiederholen. Auch ein Blick ins Fehlerhandbuch hilft meistens, da bereits viele Fallstricke entdeckt und beschrieben wurden.&lt;br /&gt;
&lt;br /&gt;
== 1. Das Betriebssystem vorbereiten, entweder Linux oder Windows ==&lt;br /&gt;
=== Windows 10 ===&lt;br /&gt;
==== Programme installieren ====&lt;br /&gt;
Unter Windows ist es standardmäßig nicht möglich, “einfach“ die Linux Distribution Ubuntu zu installieren. Dazu muss vorab erst das WSL2 aktiviert / installiert werden werden (Punkt 1). Im Anschluss ist eine Installation von Ubuntu (18.04 oder 20.04 oder höher) möglich. Zudem muss Docker installiert werden, in dem dann die Entwicklungsumgebung laufen kann (Punkt 2).&lt;br /&gt;
&lt;br /&gt;
# WSL2 unter Windows10 aktivieren und Ubuntu 20.04 installieren: &lt;br /&gt;
## Aus dem Microsoft-Store: https://aka.ms/wslstorepage (verfügbar seit Nov. 2022) &lt;br /&gt;
## Manuell unter [https://learn.microsoft.com/de-de/windows/wsl/install#manual-installation-steps|Installieren von WSL]&lt;br /&gt;
# Docker für Windows installieren: [https://docs.docker.com/docker-for-windows/install/|Install Docker Desktop on Windows]&lt;br /&gt;
# Unter Windows muss in der Hosts-Datei (%windir%\system32\drivers\etc) folgende Eintragung gemacht werden: &lt;br /&gt;
 &amp;lt;nowiki&amp;gt;127.0.0.1	docker.team-opencaching.de&lt;br /&gt;
127.0.0.1	try.docker.team-opencaching.de&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Danach kann Ubuntu gestartet werden (z.B. im “Such“-Menü nach Ubuntu suchen und anklicken). Beim erstmaligen Starten von Ubuntu müssen ein Benutzername und ein Passwort festgelegt werden.&lt;br /&gt;
&lt;br /&gt;
Im Anschluss den Punkten folgen und ausführen, die im nächsten Schritt “Linux” beschrieben werden.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Linux ===&lt;br /&gt;
Der Linuxartikel wurde erstellt auf Lubuntu 18.04, aktualisiert mit 22.04 und erweitert mit Debian 12&lt;br /&gt;
&lt;br /&gt;
==== Programme installieren ====&lt;br /&gt;
Folgende Programme sind notwendig und müssen vorab installiert werden:&lt;br /&gt;
PHP (aktuell mind. PHP7.4, später PHP8), diverse PHP-Erweiterungen, docker-compose, mariadb-client. Für die PHP-Erweiterungen ist eventuell ein zusätzliches PPA-Repository notwendig. Dessen Installation erfordert je nach Betriebssystem ein unterschiedliches Vorgehen.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;Ubuntu:&lt;br /&gt;
sudo apt install software-properties-common&lt;br /&gt;
sudo add-apt-repository ppa:ondrej/php&lt;br /&gt;
&lt;br /&gt;
Debian:&lt;br /&gt;
sudo apt install software-properties-common ca-certificates lsb-release apt-transport-https&lt;br /&gt;
curl -sSL https://packages.sury.org/php/README.txt | sudo bash -x&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Die Pakete lassen sich mit folgenden Befehlen installieren (Versionsnummer kann abweichen).&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;sudo apt update&lt;br /&gt;
sudo apt install php8 php8.0-mbstring php8.0-curl php8.0-xml php8.0-mysql&lt;br /&gt;
sudo apt install docker-compose docker-buildx&lt;br /&gt;
sudo apt install mariadb-client&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Sollten beim Installieren der Pakete Fehlermeldungen auftreten, ist es empfehlenswert, die Pakete einzeln zu installieren und auftretende Fehler/Abhängigkeiten einzeln zu lösen.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Nutzer in docker-Gruppe aufnehmen ====&lt;br /&gt;
Der aktuelle Benutzer muss in die Gruppe “docker” aufgenommen werden, sonst kann es passieren, dass dieser keinen Zugriff auf die Dockercontainer bekommt.&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;sudo usermod -aG docker $(id -un)&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Die Änderung wird aber erst nach einem Ab-/Anmelden des Nutzers wirksam. Überprüft werden kann dies danach mittels&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;id&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Hier muss die “docker”-Gruppe aufgelistet sein. Beispiel:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;uid=1000(user) gid=1000(user) groups=1000(user),4(adm),24(cdrom),..,128(docker)&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Eigenschaften der Docker Socket-Datei prüfen ====&lt;br /&gt;
Den folgenden Befehl ausführen, um die Eigenschaften der Datei anzeigen zu lassen:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;sudo ls -la /var/run/docker.sock&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Die Datei muss dabei ‘docker’ zugewiesen sein:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;rw-rw---- 1 root docker 0 Dec 21 19:16 /var/run/docker.sock&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ist dies nicht der Fall, muss die Zugehörigkeit geändert werden:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;chgrp docker /var/run/docker.sock&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== host Datei anpassen ====&lt;br /&gt;
Die folgenden zwei Einträge sollten der host Date unter /etc/host hinzugefügt werden, da auf die URLs sonst unter Umständen nicht zugegriffen werden kann.&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;127.0.0.1	docker.team-opencaching.de&lt;br /&gt;
127.0.0.1	try.docker.team-opencaching.de&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== 2. Sourcecode von Git laden ==&lt;br /&gt;
=== Github ===&lt;br /&gt;
Zwar ist zum Herunterlden des Sourcecodes keine Account auf GitHub notwendig, aber zum Hochladen wird einer benötigt. Daher sollte zuerst einen Account auf https://github.com/ angelegt werden.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== optional: SSH-Keys für Repositorys anlegen und in Github eintragen ===&lt;br /&gt;
siehe https://docs.github.com/en/free-pro-team@latest/github/authenticating-to-github/connecting-to-github-with-ssh&amp;lt;br /&amp;gt;&lt;br /&gt;
oder: https://www.heise.de/tipps-tricks/SSH-Key-fuer-GitHub-Repositories-einrichten-4627459.html&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Git lokal installieren ===&lt;br /&gt;
Windows:&amp;lt;br /&amp;gt;&lt;br /&gt;
siehe: https://github.com/git-for-windows/git/releases&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Linux:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;sudo apt install git&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Sourcecode lokal herunterladen ===&lt;br /&gt;
Ein Terminal öffnen, folgende Kommandos ausführen und dabei Namen und Email-Adresse des Git-Accounts eintragen:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;git config --global user.name &amp;quot;Your Name Here&amp;quot;&lt;br /&gt;
git config --global user.email &amp;quot;your_email@youremail.com&amp;quot;&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Im Verzeichnis &amp;quot;home&amp;quot; einen Ordner &amp;quot;opencaching&amp;quot; (Name beliebig) anlegen. Dort folgenden Code ausführen. Dies legt einen Ordner mit dem Namen “oc-server3“ an, lädt den OC-Code aus deinem Github-Fork herunter und kopiert ihn in diesen Ordner.&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;git clone git@github.com:&amp;lt;DeinGithubBenutzername&amp;gt;/oc-server3&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Im Anschluss in den Ordner “oc-server3“ wechseln und den folgenden Befehl ausführen, um bei einem Update den neuesten Sourcecode aus dem Opencaching.de-Repository erhalten zu können:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;cd oc-server3&lt;br /&gt;
git remote add upstream git@github.com:OpencachingDeutschland/oc-server3&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Mit folgendem Befehl gibt es eine Übersicht über die verknüpften Repositorys, die (abgesehen vom Nutzernamen ‘Slini11’) wie in der Grafik aussehen müssen:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;git remote -v&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
[[Image:Testumgebung Git 01.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Nun den Branch “development“ auschecken:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;git checkout development&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Und den Development-Branch auf aktuellen Stand bringen:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;git pull --rebase upstream development &amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Weiterführende Informationen zu Git ===&lt;br /&gt;
Diese sind unter anderem im [[Entwicklung/Git|OC-Wiki]] zu finden&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== 3. Docker Entwicklungsumgebung initalisieren ==&lt;br /&gt;
=== Entwicklungsumgebung zum ersten Mal starten ===&lt;br /&gt;
(siehe auch: Github: [https://github.com/OpencachingDeutschland/oc-server3#starting-the-docker-development-environment|starting the docker environment])&lt;br /&gt;
&lt;br /&gt;
Zuerst in den Projektordner “oc-server3“ navigieren und dort die Installation der Testumgebung starten. Es stehen hierfür zwei Befehlsfolgen zur Verfügung:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Scripte einzeln ausführen ====&lt;br /&gt;
* Die Dockerumgebung starten (ggf. der Benutzerkontensteuerung zustimmen). Dieser Vorgang dauert ein paar Minuten.&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;./psh.phar docker:start&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* In den Dockercontainer hinein verbinden&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;./psh.phar docker:ssh&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Anschließend in der sich öffnenden docker bash einmalig das Initialisierungsskript starten. Dieser Vorgang dauert ein paar Minuten.&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;./psh.phar docker:init&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Image:Testumgebung Docker 01.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Zuletzt den Dockercontainer wieder verlassen&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;exit&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Die Entwicklungsumgebung steht nun über den Browser bereit unter:&lt;br /&gt;
  http://docker.team-opencaching.de bzw.&lt;br /&gt;
  http://try.docker.team-opencaching.de&lt;br /&gt;
&lt;br /&gt;
* Das Passwort für den Benutzer &#039;&#039;root&#039;&#039; lautet &#039;&#039;developer&#039;&#039;. Das Passwort der anderen Benutzer (Benutzernamen siehe Datenbank) lautet &#039;&#039;password&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Das start-Script ausführen ====&lt;br /&gt;
* Statt die Schritte einzeln auszuführen, kann die Dockerinitialisierung auch mit einem einzigen Befehl gestartet werden:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;./psh.phar docker:start-clean&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Dieser Befehl führt alle oben beschriebenen Kommandos aus, &amp;lt;u&amp;gt;löscht zusätzlich die Dockercontainer, den Cache des Testservers sowie alle von git ignorierten Dateien&amp;lt;/u&amp;gt;. Dieser Vorgang dauert ein paar Minuten länger und empfiehlt sich, wenn eine saubere Umgebung hergestellt werden soll oder während der Initialisierung unbehebbare Fehler auftreten.&lt;br /&gt;
&lt;br /&gt;
* Die Entwicklungsumgebung steht nun über den Browser bereit unter:&lt;br /&gt;
  http://docker.team-opencaching.de bzw.&lt;br /&gt;
  http://try.docker.team-opencaching.de&lt;br /&gt;
&lt;br /&gt;
* Das Passwort für den Benutzer &#039;&#039;root&#039;&#039; lautet &#039;&#039;developer&#039;&#039;. Das Passwort der anderen Benutzer (Benutzernamen siehe Datenbank) lautet &#039;&#039;password&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Entwicklungsumgebung ein weiteres Mal starten ===&lt;br /&gt;
Die Testumgebung kann z.B. nach einem Neustart des Rechners im Projektordner gestartet werden mit:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;./psh.phar docker:start&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Entwicklungsumgebung stoppen ===&lt;br /&gt;
Die Testumgebung kann im Projektordner gestoppt werden mit:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;./psh.phar docker:stop&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 4. Die  Testdatenbank füllen ==&lt;br /&gt;
Während der Installation wird eine Testdatenbank importiert, die bereits eine kleine Menge an Caches und Nutzern beinhaltet. Ein manueller Import des Datenbankdumps ist somit (seit März 2021) nicht mehr notwendig. &lt;br /&gt;
&lt;br /&gt;
Für den Fall, dass trotzdem Daten exportiert / importiert werden sollen, können folgende Abschnitte berücksichtigt werden:&lt;br /&gt;
Login auf der Test-Datenbank im Dockercontainer&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;mysql -uroot -proot -hmariadb opencaching&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Datenbank zurücksetzen ===&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;(noch zu verifizieren und zu verbessern..)&lt;br /&gt;
im Docker per mysql auf die mariadb verbinden&lt;br /&gt;
&#039;DROP&#039; opencaching DB&lt;br /&gt;
exit mysql und docker&lt;br /&gt;
Nun entweder im Docker ein ./psh.phar docker:init ausführen oder wenn das Fehler bringt, vorher den kompletten git-Pfad neu aufsetzen&lt;br /&gt;
Ev. funktioniert auch der Weg, den DB-Dockercontainer aufzurufen, zu löschen, etc.&lt;br /&gt;
(docker-volume ls)&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Datenbank innerhalb des Dockercontainers exportieren ===&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;mysqldump -uroot -proot -hmariadb opencaching &amp;gt; file.sql&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Datenbank außerhalb des Dockercontainers exportieren ===&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;mysqldump --complete-insert --user root -proot --host 0.0.0.0 opencaching &amp;gt; dump.sql&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Datenbank im phpStorm exportieren ===&lt;br /&gt;
Auf der rechten Bildschirmseite den Databasedialog ausklappen&lt;br /&gt;
rechte Maustaste auf die zu exportierende Datenbank “opencaching” =&amp;gt; “Export with ‘mysqldump’”&lt;br /&gt;
&lt;br /&gt;
[[Image:Testumgebung DB 01.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Im Exportmenü die Zeile “Statements” umstellen auf “Insert with columns” und eventuell den Ausgabepfad “Out Path” anpassen. Im Kommandofeld den Parameter “--routines“ ergänzen und dann “Run” drücken&lt;br /&gt;
&lt;br /&gt;
[[Image:Testumgebung DB 02.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Datenbank-Dump im Dockercontainer importieren ===&lt;br /&gt;
Zuerst wird eine eventuell existierende Datenbank gelöscht und neu angelegt.&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;./psh.phar docker:init&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Im zweiten Schritt wird die Datenbank mit dem Dump gefüllt.&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;mysql -uroot -proot -hmariadb opencaching &amp;lt; file.sql&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Datenbank-Dump im phpStorm importieren ===&lt;br /&gt;
Auf der rechten Bildschirmseite den Databasedialog ausklappen&lt;br /&gt;
rechte Maustaste auf die Datenbank =&amp;gt; “Restore with ‘mysql’”&lt;br /&gt;
&lt;br /&gt;
[[Image:Testumgebung DB 03.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Im Importmenü den Eingabepfad “Path to dump” anpassen, dann “Run” drücken&lt;br /&gt;
&lt;br /&gt;
[[Image:Testumgebung DB 04.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Datenbank in phpStorm anzeigen ===&lt;br /&gt;
Ggf. kann es passieren, dass die Datenbank nicht automatisch in phpStorm angezeigt wird. Dazu muss eine neue MariaDB im Datenbank-Menü angelegt werden.&lt;br /&gt;
&lt;br /&gt;
[[Image:Testumgebung DB 05.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Im Anschluss sind die Daten wie im folgenden Screenshot einzutragen. User: “root“ Password: “root“&lt;br /&gt;
&lt;br /&gt;
[[Image:Testumgebung DB 06.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== 5. Die Entwicklungs-IDE vorbereiten ==&lt;br /&gt;
Gegebenenfalls sind an der Programmierumgebung Änderungen vorzunehmen, um zum Beispiel [[OC Coding Style|einheitlich formatierten Code]] zu schreiben. &lt;br /&gt;
&lt;br /&gt;
=== Einrichtung des PHP Coding Styles am Beispiel von phpStorm ===&lt;br /&gt;
Unter Settings / Code Style / PHP rechts auf “Set from…” klicken und “PSR-12” auswählen. Die Einstellung mit “Apply” bestätigen.&lt;br /&gt;
(Weitere Informationen zum Coding Style sind [[OC Coding Style|hier im Wiki]] zu finden.)&lt;br /&gt;
&lt;br /&gt;
[[Image:Testumgebung IDE 01.png|500px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Symfony Pfade am Beispiel phpStorm anpassen ===&lt;br /&gt;
[[Image:Testumgebung IDE 04.jpeg]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Terminalanpassung am Beispiel phpStorm (für Windows-Nutzer) ===&lt;br /&gt;
[[Image:Testumgebung IDE 05.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== hilfreiche Plugins für phpStorm ===&lt;br /&gt;
-&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Synchronisieren/Wiederherstellen der Benutzereinstellungen mittels JetBrains-Server ===&lt;br /&gt;
Sofern man bei JetBrains einen Account hat, kann man mit diesem die Einstellungen der lokalen IDE synchronisieren und z.B. nach einer Neuinstallation von dort wiederherstellen.&lt;br /&gt;
&lt;br /&gt;
Hierzu in der IDE rechts oben auf das Zahnrad klicken und “Settings Sync is off” auswählen.&amp;lt;/br&amp;gt;&lt;br /&gt;
[[Image:Testumgebung IDE 02.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Im folgenden Fenster den Button “Enable Settings Sync” klicken und danach alle Einstellungen auswählen, die man sichern möchte. Ein Klick auf “Push Settings to Account” sichert die Einstellungen. Ein Klick auf “Get Settings from Account” stellt sie wieder her, sofern sie vorher dorthin gesichert wurden.&lt;br /&gt;
[[Image:Testumgebung IDE 03.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== 6. Das Fehlerhandbuch lesen (gilt insbesondere für die Schritte #1-#4 :wink:) ==&lt;br /&gt;
&lt;br /&gt;
Beireits bekannte Fehler werden im [[Entwicklungsumgebung/Fehlerhandbuch|Fehlerhandbuch]] beschrieben.&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Entwicklung|Entwicklungsumgebung ]]&lt;/div&gt;</summary>
		<author><name>Fraggle</name></author>
	</entry>
	<entry>
		<id>https://wiki.opencaching.de/index.php?title=Entwicklungsumgebung/Fehlerhandbuch&amp;diff=8016</id>
		<title>Entwicklungsumgebung/Fehlerhandbuch</title>
		<link rel="alternate" type="text/html" href="https://wiki.opencaching.de/index.php?title=Entwicklungsumgebung/Fehlerhandbuch&amp;diff=8016"/>
		<updated>2025-09-01T18:25:55Z</updated>

		<summary type="html">&lt;p&gt;Fraggle: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Während der Installation der Programme oder Einrichtung der Testumgebung kann es zu diversen Fehlern und Meldungen kommen. Im Folgenden sind bereits bekannte Meldungen aufgelistet, die bei einer schnellen Behebung helfen sollen.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Fehlermeldungen während der Paketinstallation ==&lt;br /&gt;
==== Während der Installation der benötigten Pakete, kommt es zu einer Meldung, dass Abhängigkeiten mit dem ‘libdvd-pkg’ Paket nicht aufgelöst werden können ====&lt;br /&gt;
&lt;br /&gt;
Eine Rekonfiguration des Pakets schafft Abhilfe:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;sudo dpkg-reconfigure libdvd-pkg&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Fehlermeldungen in Zusammenhang mit der Dockerumgebung ==&lt;br /&gt;
==== Fehler “starting opencaching-webserver .. error” oder “Starting webserver ... error” ====&lt;br /&gt;
Vermutlich läuft im Hintergrund bereits ein anderer Webservice auf Port 80.&lt;br /&gt;
&lt;br /&gt;
Prüfen kann man das mit:&lt;br /&gt;
 netstat -tanp | grep :80&lt;br /&gt;
&lt;br /&gt;
Zum Beispiel ein apache2-Webserver kann gestoppt werden mit:&lt;br /&gt;
 sudo systemctl stop apache2&lt;br /&gt;
&lt;br /&gt;
Damit der apache2 nach einem Rechnerneustart nicht erneut aktiviert wird, kann man ihn generell deaktivieren:&lt;br /&gt;
 sudo systemctl disable apache2&lt;br /&gt;
&lt;br /&gt;
Alternativ lässt sich auch eine [[https://docs.docker.com/compose/extends/|Override-Datei]] für die betroffenen Ports verwenden, was allerdings weitere Komplikationen mit sich führen kann (wie beispielsweise eine nicht funktionierende OKAPI). Aus diesem Grund sollte nach Möglichkeit das Stoppen der Standard-Services für Apache und einen Datenbank-Server vorgezogen werden.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Fehler “W: GPG error: https://dl.yarnpkg.com/debian stable InRelease: The following signatures were invalid: EXPKEYSIG“ ====&lt;br /&gt;
Nach dem Ausführen von ./psh.phar docker:start kommt der Fehler. Hier ist das Zertifikat veraltet. Folgender Befehl löscht das Docker-Image. &lt;br /&gt;
 docker-compose build --pull&lt;br /&gt;
&lt;br /&gt;
Mit einen erneuten ./psh.phar docker:start läuft es wieder durch.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Fehler “ERROR: for opencaching-mariadb  Cannot start service mariadb: driver failed programming external connectivity on endpoint opencaching-mariadb [..] Error starting userland proxy: listen tcp 0.0.0.0:3306: bind: address already in use” ====&lt;br /&gt;
Wenn beim docker:start diese Fehlermeldung kommt, läuft im Hintergrund bereits ein anderer Webservice (z.B. mysql) auf Port 3306.&lt;br /&gt;
&lt;br /&gt;
Prüfen kann man das mit:&lt;br /&gt;
 netstat -tanp | grep :3306&lt;br /&gt;
&lt;br /&gt;
Zum Beispiel ein mysql-Webserver kann gestoppt werden mit:&lt;br /&gt;
 sudo mysqladmin -u root shutdown&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Fehler &amp;quot;The stream or file &amp;quot;/application/htdocs/var/logs/dev/dev.log&amp;quot; could not be opened: failed to open stream: Permission denied&amp;quot; oder ähnlich (betrifft Legacy-Testsystem) ====&lt;br /&gt;
==== Oder: Fehler &amp;quot;Permission denied&amp;quot; beim Zugriff auf /htdocs/var/cache (betrifft Legacy-Testsystem) ====&lt;br /&gt;
==== Oder: Fehler 500 (ohne weitere Angaben, warum) (betrifft Legacy-Testsystem) ====&lt;br /&gt;
Hier scheint der Webserver keine Zugriffsberechtigung auf bestimmte Pfade/Dateien zu haben. Von einem Ändern der Zugriffsberechtigungen, z. B. mittels sudo chmod -R 777 ./var/log, sollte aus Sicherheitsgründen aber Abstand genommen werden.&lt;br /&gt;
&lt;br /&gt;
Helfen kann, die Befehlsfolge&lt;br /&gt;
 ./psh.phar docker:ssh&lt;br /&gt;
 ./psh.phar docker:init&lt;br /&gt;
 exit&lt;br /&gt;
ein weiteres Mal auszuführen.&lt;br /&gt;
&lt;br /&gt;
Falls dies weiterhin keinen Erfolg bringt, können folgende Schritte zum Ändern der Zugriffsberechtigungen angewandt werden:&lt;br /&gt;
# Ermitteln der ID des Containers oc-server3_php-fpm mittels sudo docker ps.&lt;br /&gt;
# Öffnen einer Shell im Container: sudo docker exec -it 45b6e4994fac /bin/bash, wobei 45b6e4994fac die ID des Containers ist.&lt;br /&gt;
# In der Container-Shell chmod -R 777 /application/htdocs/var/logs/dev/ ausführen.&lt;br /&gt;
# Die Container-Shell regulär mittels exit verlassen.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Host-Mismatch bei Aufruf der OKAPI mit Port-Override ====&lt;br /&gt;
Falls in einer Override-Datei Ports überschrieben werden (siehe oben), funktioniert die OKAPI möglicherweise nicht richtig - stattdessen erscheint ein Hinweis auf einen Port-Mismatch. Dies kann auf folgende Art und Weise behoben werden:&lt;br /&gt;
# Ermitteln der ID des Containers &#039;&#039;oc-server3_php-fpm&#039;&#039; mittels &#039;&#039;sudo docker ps&#039;&#039;.&lt;br /&gt;
# Öffnen einer Shell im Container: &#039;&#039;sudo docker exec -it 45b6e4994fac /bin/bash&#039;&#039;, wobei 45b6e4994fac die ID des Containers ist.&lt;br /&gt;
# Im Container einen Editor installieren, beispielsweise nano. Da der Container auf Ubuntu basiert, funktioniert dies mittels &#039;&#039;apt-get update &amp;amp;&amp;amp; apt-get install nano&#039;&#039;.&lt;br /&gt;
# Die passende Konfigurationsdatei mittels des Editors im Container öffnen, beispielsweise mittels &#039;&#039;nano /application/htdocs/config2/settings.inc.php.&#039;&#039;&lt;br /&gt;
# Setzen von &#039;&#039;$dev_baseurl = &#039;http://docker.team-opencaching.de:2200&#039;;&#039;&#039; und anschließendes Speichern der Datei. Hierbei ist 2200 der Port, der statt Port 80 für den Webserver in der Override-Datei konfiguriert worden ist.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Während docker:init kommt es im Abschnitt (3/31) zu einer Meldung “&amp;gt; mysql -uroot -proot -hmariadb -e &amp;quot;DROP DATABASE IF EXISTS opencaching&amp;quot; ERROR 2005 (HY000): Unknown MySQL server host &#039;mariadb&#039; (-3).“ ====&lt;br /&gt;
Abhilfe: &#039;&#039;./psh.phar docker:init&#039;&#039; darf nicht außerhalb des Dockercontainers aufgerufen werden.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Während docker:init kommt es im Abschnitt (13/31) zu einer Meldung “PHP Fatal error: .. __toString() must not throw an exception ..“ ====&lt;br /&gt;
Die Ursache ist nicht bekannt. Hier hilft aktuell nur ein Workaround, in dem die Exception im Script auskommentiert wird.&lt;br /&gt;
&lt;br /&gt;
Hierzu in der Datei &#039;&#039;../htdocs/vendor/symfony/symfony/src/Symfony/Component/DependencyInjection/Compiler/AutowirePass.php&#039;&#039; die Zeile 236 &#039;&#039;throw new AutoWiringFailedException&#039;&#039; auskommentieren. Die Datei ist allerdings erst nach dem Ausführens von docker:init vorhanden.&lt;br /&gt;
&lt;br /&gt;
Siehe auch Ticket: [[https://opencaching.atlassian.net/browse/OCC-90|OCC-90: Exception error during docker:init]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Docker Services neu initialisieren, z.B. bei “&#039;&#039;W: GPG error:  stable InRelease: The following signatures were invalid: EXPKEYSIG 23E7166788B63E1E Yarn Packaging &amp;lt;yarn@dan.cx&amp;gt;&#039;&#039;“ ====&lt;br /&gt;
Treten während eines docker:init neue, merkwürdige und nicht näher spezifizierbare Fehler auf, kann es helfen, die Dockercontainer neu zu initialisieren mittels:&lt;br /&gt;
 docker-compose build --pull&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== z.B. bei Update auf Symfony 5.2 kommt während docker:start-clean der Fehler &#039;&#039;”mv: cannot stat &#039;/root/.symfony/bin/symfony&#039;: No such file or directory Service &#039;webserver&#039; failed to build: The command &#039;/bin/sh -c mv /root/.symfony/bin/symfony /usr/local/bin/symfony&#039; returned a non-zero code: 1&amp;quot;&#039;&#039; ====&lt;br /&gt;
In diesem Fall in der Datei &#039;&#039;docker/httpd/Dockerfile&#039;&#039; die fehlerverursachende Zeile &lt;br /&gt;
  RUN mv /root/.symfony/bin/symfony /usr/local/bin/symfony&lt;br /&gt;
auskommentieren und docker:start-clean erneut laufen lassen.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Während docker:start-clean: &#039;&#039;&amp;quot;\Doctrine\Common\Persistence\Mapping\Driver\MappingDriverChain()&amp;quot; not found&#039;&#039; ====&lt;br /&gt;
Dies ist ein Fehler in einem der &#039;&#039;doctrine/*&#039;&#039; Pakete (vermutlich &#039;&#039;doctrine/persistence&#039;&#039;) in bestimmten Paketversionen. Hier hilft, die Datei &#039;&#039;/htdocs/vendor/doctrine/doctrine-bundle/Resources/config/orm.xml&#039;&#039; Zeile 32 zu editieren:&lt;br /&gt;
 &amp;lt;parameter key=&amp;quot;doctrine.orm.metadata.driver_chain.class&amp;quot;&amp;gt;Doctrine\Common\Persistence\Mapping\Driver\MappingDriverChain&amp;lt;/parameter&amp;gt;&lt;br /&gt;
zu&lt;br /&gt;
 &amp;lt;parameter key=&amp;quot;doctrine.orm.metadata.driver_chain.class&amp;quot;&amp;gt;Doctrine\Persistence\Mapping\Driver\MappingDriverChain&amp;lt;/parameter&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Allerdings muss dies zum richtigen Zeitpunkt passieren. Nachdem &#039;&#039;docker:start-clean&#039;&#039; aufgerufen wurde, kurz warten, bis die Pakete heruntergeladen wurden und noch bevor Abschnitt 13/32 anfängt, muss die Datei korrigiert und gespeichert worden sein.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Meldung “DEPRECATED: The legacy builder is deprecated and will be removed in a future release. Install the buildx component to build images with [[https://docs.docker.com/go/buildx/|BuildKit]] ====&lt;br /&gt;
Der Docker build Prozess wurde geändert. Die bisherige Methode wurde ab Dockerversion 23 als “deprecated” markiert und wird in einer zukünftigen Version entfernt. Siehe [[https://docs.docker.com/engine/deprecated/#legacy-builder-for-linux-images|Deprecated Engine Features]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Meldung “ERROR: BuildKit is enabled but the buildx component is missing or broken.“ ====&lt;br /&gt;
Docker Buildkit/buildx soll verwendet werden (DOCKER_BUILDKIT=1), wurde aber nicht installiert.&lt;br /&gt;
&lt;br /&gt;
Abhilfe: Buildkit/buildx Komponente installieren. Vorher müssen aber einige bereits installierte Pakete entfernt werden. Je nach OS gibt es unterschiedliche Anweisungen und Installationswege, siehe hier: [[https://docs.docker.com/engine/install/|Install Docker Engine]]&lt;br /&gt;
&lt;br /&gt;
==== Während docker:start-clean: &#039;&#039;&amp;quot;Browserslist: caniuse-lite is outdated.&amp;quot;&#039;&#039; ====&lt;br /&gt;
Scheinbar wird die “browserslist” nicht automatisch aktualisiert. (Grund? k.A.)&lt;br /&gt;
&lt;br /&gt;
Zum manuellen Update im Docker:ssh eingeben:&lt;br /&gt;
 npx browserslist@latest --update-db&lt;br /&gt;
bzw.&lt;br /&gt;
 npx update-browserslist-db@latest&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Fehlermeldungen beim Zugriff auf die Datenbank ==&lt;br /&gt;
==== Fehlermeldung “ERROR 2002 (HY000): Can&#039;t connect to local MySQL server through socket &#039;/var/run/mysqld/mysqld.sock&#039; (2)” ====&lt;br /&gt;
Es wurde vergessen, den Namen der Datenbank in der Kommandozeile zu übergeben.&lt;br /&gt;
 mysql -uroot -proot -hmariadb opencaching&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Fehlermeldungen beim Zugriff auf die Testserverdomain ==&lt;br /&gt;
==== Vorgehen zum Anlegen eines weiteren Benutzers (betrifft Legacy-Testsystem) ====&lt;br /&gt;
Zuerst via http://docker.team-opencaching.de/register.php einen neuen Nutzer registrieren. Zwar kommt dann die Meldung, dass der Aktivierungscode per Mail zugsandt wurde, dies passiert aber nie. Der Aktivierungscode muss aus der Test-Datenbank ausgelesen werden.&lt;br /&gt;
Der Code steht in Tabelle &#039;&#039;user&#039;&#039; im Feld &#039;&#039;activation_code&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Mit http://docker.team-opencaching.de/activation.php gelangt man zur Account-Aktivierungsseite. Hier die E-Mail-Adresse und den aus der Datenbank kopierten Aktivierungscode eingeben. Der Account ist nun aktiviert, aber falls der Login nicht funktioniert: siehe andere Fehlermeldung hier auf der Seite weiter unten.&lt;br /&gt;
&lt;br /&gt;
Info: Eventuell wird in Zukunft der MailHog zum Laufen gebracht. Dann werden die vom Server verschickten Emails von diesem abgefangen und man kann die Informationen darin lesen.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Der neu angelegte Benutzer kann sich nicht einloggen und wird immer wieder ohne Meldung auf die Login-Seite geleitet (betrifft Legacy-Testsystem) ====&lt;br /&gt;
Die exakte Ursache ist nicht bekannt. Abhilfe kann geschaffen werden, wenn beim entsprechenden Nutzer in der Datenbank in der Tabelle &#039;&#039;user&#039;&#039; das Feld &#039;&#039;permanent_login_flag&#039;&#039; auf &#039;&#039;1&#039;&#039; gesetzt wird.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Beim Anlegen des &#039;&#039;zweiten&#039;&#039; Cachelistings kommt eine Fehlermeldung (betrifft Legacy-Testsystem) ====&lt;br /&gt;
Bei einer &#039;&#039;leeren&#039;&#039; Datenbank funktioniert das Setzen und Hochzählen der OC-Codes nicht. Es muss einmal ein OC-Code von Hand gesetzt werden.&lt;br /&gt;
&lt;br /&gt;
Hierzu auf dem Testserver ein Listing anlegen. Dann für diesen Cache in der Datenbank in der Tabelle &#039;&#039;caches&#039;&#039; das Feld &#039;&#039;wp_oc&#039;&#039; auf einen initialen Wert ändern, z.B. &#039;&#039;OC1234&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Beim Erstellen/Speichern eines Cachelistings kommen mehrere  Fehlermeldungen, u.a. “Warning: A non-numeric value encountered in /app/htdocs/newcache.php on line 1025” (betrifft Legacy-Testsystem) ====&lt;br /&gt;
[[Image:Fehlerhandbuch Domain 01.png|500px]]&lt;br /&gt;
&lt;br /&gt;
Zuerst muss geschaut werden, ob eventuell der vorige Abschnitt (“Beim Anlegen des zweiten Cachelistings kommt eine Fehlermeldung“) zutrifft. Wurden die dort beschriebenen Maßnahmen bereits umgesetzt, kommt es zwar trotzdem zur Fehlermeldung, das Listing wurde aber erfolgreich angelegt bzw. gespeichert. (Seite neu laden)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Es kann kein Logbild hochgeladen werden (betrifft Legacy-Testsystem) ====&lt;br /&gt;
Sobald man ein Logbild hochladen möchte, erscheint eine Fehlermeldung&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;Warning: move_uploaded_file(): Unable to move &#039;/tmp/phpGmSzpi&#039; to &#039;/application/htdocs/config2/../images/uploads/700770A6-C101-11EA-BA77-0242AC120005.jpg&#039; in /application/htdocs/lib2/logic/picture.class.php on line 856&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Abhilfe: (noch) keine Ahnung. Die Bilder wurden aber trotzdem hochgeladen.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Bei Anlegen/Editieren eines Listings funktioniert die Attributeauswahl nicht (betrifft Legacy-Testsystem) ====&lt;br /&gt;
Editiert man ein Listing, stehen nicht alle Attribute zur Verfügung bzw. es können nicht alle Attribute ausgewählt werden. &lt;br /&gt;
&lt;br /&gt;
Abhilfe: (noch) keine Ahnung.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Das Länderauswahlfeld rechts oben auf der Seite ist leer und funktioniert nicht. (betrifft Legacy-Testsystem) ====&lt;br /&gt;
Alle php-Dateien im Cacheverzeichnis htdocs/var/cache2 müssen gelöscht werden.&lt;br /&gt;
&lt;br /&gt;
Das Vorgehen Unter Linux:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;./psh.phar docker:stop&lt;br /&gt;
rm htdocs/var/cache2/*.inc.php&lt;br /&gt;
./psh.phar docker:start&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Es kann nicht auf die Domains docker.team-opencaching.de oder try.docker.team-opencaching.de zugegriffen werden. ====&lt;br /&gt;
Normalerweise sollte der Zugriff nach Installation der Testumgebung automatisch funktionieren. Sollte das nicht der Fall sein, kann mittels Anpassung der hosts-Datei ein Workaround geschaffen werden:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;127.0.0.1	docker.team-opencaching.de&lt;br /&gt;
127.0.0.1	try.docker.team-opencaching.de&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Abschalten von “NOTICE”-Meldungen. (betrifft Legacy-Testsystem) ====&lt;br /&gt;
Aufgrund diverser (Smarty- und PHP-)Updates werden vormals ignorierte Probleme nun mit einer “NOTICE”-Meldung kenntlich gemacht. Um die Meldungen zu unterdrücken, kann in das error_reporting Level geändert werden.&lt;br /&gt;
&lt;br /&gt;
Beispiele für Fehlermeldungen:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;Notice: Undefined index: error_password_not_ok in /app/htdocs/var/cache2/smarty/compiled/..&lt;br /&gt;
Notice: Trying to get property &#039;value&#039; of non-object in /app/..&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Abhilfe:&lt;br /&gt;
Bis Smarty 3.x: In der Datei /htdocs/vendor/smarty/smarty/libs/Smarty.class.php die Zeile mit $error_reporting ändern auf den nachfolgenden Code. Die Änderung ist nicht git-relevant und geht nach jedem “./psh.phar docker:start-clean” verloren.&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;public $error_reporting = E_ALL &amp;amp; ~E_NOTICE;&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ab Smarty 3.x und 4.x: In der Datei /htdocs/lib2/common.inc.php die obere Zeile (PHP_DEBUG_ON) mit $error_reporting ändern auf den nachfolgenden Code. Die Änderung ist permanent und muss vor einem Commit rückgängig gemacht werden, da sie sonst im github Repository landet.&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;ini_set(&#039;error_reporting&#039;, E_ALL &amp;amp; ~E_NOTICE);&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== [gelöst] Die Übersetzungen funktionieren nicht. Meist wird nur Englischer Text angezeigt. (betrifft Legacy-Testsystem) ====&lt;br /&gt;
Die vorhandenen Fremdsprachen werden auf dem Testsystem nicht korrekt dargestellt. Meistens wird nur der Englische Text oder ein Mischmasch aus Englisch und eingestellter Sprache angezeigt.&lt;br /&gt;
&lt;br /&gt;
Abhilfe: im docker:start Skript wurde eine fehlende Komponente ergänzt, welche nun automatisch mitinstalliert wird. Dadurch werden die Sprachdateien korrekt erzeugt und die Übersetzungen funktionieren.&lt;br /&gt;
&lt;br /&gt;
Siehe auch: [[https://opencaching.atlassian.net/browse/RED-1278|RED-1278: Die Übersetzungen funktionieren auf dem Testserver nicht]]&lt;br /&gt;
Dieser Fehler sollte somit nicht mehr auftauchen.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== [gelöst] Beim Löschen von Logs kommt eine Fehlermeldung “This log entry has been created on another Opencaching website. The cache can only be edited there.” ====&lt;br /&gt;
Auf dem Testserver werden die Logs laut Datenbank (Tabelle &#039;&#039;cache_logs&#039;&#039;, Spalte &#039;&#039;nodes&#039;&#039;) als &#039;&#039;node=5&#039;&#039; gespeichert, obwohl es laut Tabelle &#039;&#039;nodes&#039;&#039; diese Ziffer gar nicht gibt.&lt;br /&gt;
&lt;br /&gt;
Um Logs wieder über die normale Loglöschenfunktion löschen zu können, gibt es mehrere Möglichkeiten:&lt;br /&gt;
# In der Datenbanktabelle ‘cache_logs’ den Eintrag in Spalte ‘nodes’ auf 4 ändern. (Dies entspricht der ‘Local Development’-Umgebung (siehe Tabelle ‘nodes’)).&lt;br /&gt;
# In der Datei ‘/dev-ops/local.team-opencaching.de/templates/config2-settings.inc.tpl.php&#039; den Eintrag ‘$opt[&#039;logic&#039;][&#039;node&#039;][&#039;id&#039;] = 5;’ ändern auf &#039;$opt[&#039;logic&#039;][&#039;node&#039;][&#039;id&#039;] = 4;’ und das docker:init Script ausführen&lt;br /&gt;
# Der Pull [[https://github.com/OpencachingDeutschland/oc-server3/pull/830|Pull Request #830 changed node information from 5 to 4]]  behebt das Problem.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Entwicklung|Fehlerhandbuch ]]&lt;/div&gt;</summary>
		<author><name>Fraggle</name></author>
	</entry>
	<entry>
		<id>https://wiki.opencaching.de/index.php?title=Entwicklungsumgebung/Fehlerhandbuch&amp;diff=8015</id>
		<title>Entwicklungsumgebung/Fehlerhandbuch</title>
		<link rel="alternate" type="text/html" href="https://wiki.opencaching.de/index.php?title=Entwicklungsumgebung/Fehlerhandbuch&amp;diff=8015"/>
		<updated>2025-09-01T18:24:54Z</updated>

		<summary type="html">&lt;p&gt;Fraggle: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;___TOC___&lt;br /&gt;
___FORCETOC___&lt;br /&gt;
&lt;br /&gt;
= Test =&lt;br /&gt;
= Test =&lt;br /&gt;
= Test =&lt;br /&gt;
= Test =&lt;br /&gt;
&lt;br /&gt;
== Test ==&lt;br /&gt;
== Test ==&lt;br /&gt;
== Test ==&lt;br /&gt;
== Test ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Während der Installation der Programme oder Einrichtung der Testumgebung kann es zu diversen Fehlern und Meldungen kommen. Im Folgenden sind bereits bekannte Meldungen aufgelistet, die bei einer schnellen Behebung helfen sollen.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Fehlermeldungen während der Paketinstallation ==&lt;br /&gt;
==== Während der Installation der benötigten Pakete, kommt es zu einer Meldung, dass Abhängigkeiten mit dem ‘libdvd-pkg’ Paket nicht aufgelöst werden können ====&lt;br /&gt;
&lt;br /&gt;
Eine Rekonfiguration des Pakets schafft Abhilfe:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;sudo dpkg-reconfigure libdvd-pkg&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Fehlermeldungen in Zusammenhang mit der Dockerumgebung ==&lt;br /&gt;
==== Fehler “starting opencaching-webserver .. error” oder “Starting webserver ... error” ====&lt;br /&gt;
Vermutlich läuft im Hintergrund bereits ein anderer Webservice auf Port 80.&lt;br /&gt;
&lt;br /&gt;
Prüfen kann man das mit:&lt;br /&gt;
 netstat -tanp | grep :80&lt;br /&gt;
&lt;br /&gt;
Zum Beispiel ein apache2-Webserver kann gestoppt werden mit:&lt;br /&gt;
 sudo systemctl stop apache2&lt;br /&gt;
&lt;br /&gt;
Damit der apache2 nach einem Rechnerneustart nicht erneut aktiviert wird, kann man ihn generell deaktivieren:&lt;br /&gt;
 sudo systemctl disable apache2&lt;br /&gt;
&lt;br /&gt;
Alternativ lässt sich auch eine [[https://docs.docker.com/compose/extends/|Override-Datei]] für die betroffenen Ports verwenden, was allerdings weitere Komplikationen mit sich führen kann (wie beispielsweise eine nicht funktionierende OKAPI). Aus diesem Grund sollte nach Möglichkeit das Stoppen der Standard-Services für Apache und einen Datenbank-Server vorgezogen werden.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Fehler “W: GPG error: https://dl.yarnpkg.com/debian stable InRelease: The following signatures were invalid: EXPKEYSIG“ ====&lt;br /&gt;
Nach dem Ausführen von ./psh.phar docker:start kommt der Fehler. Hier ist das Zertifikat veraltet. Folgender Befehl löscht das Docker-Image. &lt;br /&gt;
 docker-compose build --pull&lt;br /&gt;
&lt;br /&gt;
Mit einen erneuten ./psh.phar docker:start läuft es wieder durch.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Fehler “ERROR: for opencaching-mariadb  Cannot start service mariadb: driver failed programming external connectivity on endpoint opencaching-mariadb [..] Error starting userland proxy: listen tcp 0.0.0.0:3306: bind: address already in use” ====&lt;br /&gt;
Wenn beim docker:start diese Fehlermeldung kommt, läuft im Hintergrund bereits ein anderer Webservice (z.B. mysql) auf Port 3306.&lt;br /&gt;
&lt;br /&gt;
Prüfen kann man das mit:&lt;br /&gt;
 netstat -tanp | grep :3306&lt;br /&gt;
&lt;br /&gt;
Zum Beispiel ein mysql-Webserver kann gestoppt werden mit:&lt;br /&gt;
 sudo mysqladmin -u root shutdown&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Fehler &amp;quot;The stream or file &amp;quot;/application/htdocs/var/logs/dev/dev.log&amp;quot; could not be opened: failed to open stream: Permission denied&amp;quot; oder ähnlich (betrifft Legacy-Testsystem) ====&lt;br /&gt;
==== Oder: Fehler &amp;quot;Permission denied&amp;quot; beim Zugriff auf /htdocs/var/cache (betrifft Legacy-Testsystem) ====&lt;br /&gt;
==== Oder: Fehler 500 (ohne weitere Angaben, warum) (betrifft Legacy-Testsystem) ====&lt;br /&gt;
Hier scheint der Webserver keine Zugriffsberechtigung auf bestimmte Pfade/Dateien zu haben. Von einem Ändern der Zugriffsberechtigungen, z. B. mittels sudo chmod -R 777 ./var/log, sollte aus Sicherheitsgründen aber Abstand genommen werden.&lt;br /&gt;
&lt;br /&gt;
Helfen kann, die Befehlsfolge&lt;br /&gt;
 ./psh.phar docker:ssh&lt;br /&gt;
 ./psh.phar docker:init&lt;br /&gt;
 exit&lt;br /&gt;
ein weiteres Mal auszuführen.&lt;br /&gt;
&lt;br /&gt;
Falls dies weiterhin keinen Erfolg bringt, können folgende Schritte zum Ändern der Zugriffsberechtigungen angewandt werden:&lt;br /&gt;
# Ermitteln der ID des Containers oc-server3_php-fpm mittels sudo docker ps.&lt;br /&gt;
# Öffnen einer Shell im Container: sudo docker exec -it 45b6e4994fac /bin/bash, wobei 45b6e4994fac die ID des Containers ist.&lt;br /&gt;
# In der Container-Shell chmod -R 777 /application/htdocs/var/logs/dev/ ausführen.&lt;br /&gt;
# Die Container-Shell regulär mittels exit verlassen.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Host-Mismatch bei Aufruf der OKAPI mit Port-Override ====&lt;br /&gt;
Falls in einer Override-Datei Ports überschrieben werden (siehe oben), funktioniert die OKAPI möglicherweise nicht richtig - stattdessen erscheint ein Hinweis auf einen Port-Mismatch. Dies kann auf folgende Art und Weise behoben werden:&lt;br /&gt;
# Ermitteln der ID des Containers &#039;&#039;oc-server3_php-fpm&#039;&#039; mittels &#039;&#039;sudo docker ps&#039;&#039;.&lt;br /&gt;
# Öffnen einer Shell im Container: &#039;&#039;sudo docker exec -it 45b6e4994fac /bin/bash&#039;&#039;, wobei 45b6e4994fac die ID des Containers ist.&lt;br /&gt;
# Im Container einen Editor installieren, beispielsweise nano. Da der Container auf Ubuntu basiert, funktioniert dies mittels &#039;&#039;apt-get update &amp;amp;&amp;amp; apt-get install nano&#039;&#039;.&lt;br /&gt;
# Die passende Konfigurationsdatei mittels des Editors im Container öffnen, beispielsweise mittels &#039;&#039;nano /application/htdocs/config2/settings.inc.php.&#039;&#039;&lt;br /&gt;
# Setzen von &#039;&#039;$dev_baseurl = &#039;http://docker.team-opencaching.de:2200&#039;;&#039;&#039; und anschließendes Speichern der Datei. Hierbei ist 2200 der Port, der statt Port 80 für den Webserver in der Override-Datei konfiguriert worden ist.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Während docker:init kommt es im Abschnitt (3/31) zu einer Meldung “&amp;gt; mysql -uroot -proot -hmariadb -e &amp;quot;DROP DATABASE IF EXISTS opencaching&amp;quot; ERROR 2005 (HY000): Unknown MySQL server host &#039;mariadb&#039; (-3).“ ====&lt;br /&gt;
Abhilfe: &#039;&#039;./psh.phar docker:init&#039;&#039; darf nicht außerhalb des Dockercontainers aufgerufen werden.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Während docker:init kommt es im Abschnitt (13/31) zu einer Meldung “PHP Fatal error: .. __toString() must not throw an exception ..“ ====&lt;br /&gt;
Die Ursache ist nicht bekannt. Hier hilft aktuell nur ein Workaround, in dem die Exception im Script auskommentiert wird.&lt;br /&gt;
&lt;br /&gt;
Hierzu in der Datei &#039;&#039;../htdocs/vendor/symfony/symfony/src/Symfony/Component/DependencyInjection/Compiler/AutowirePass.php&#039;&#039; die Zeile 236 &#039;&#039;throw new AutoWiringFailedException&#039;&#039; auskommentieren. Die Datei ist allerdings erst nach dem Ausführens von docker:init vorhanden.&lt;br /&gt;
&lt;br /&gt;
Siehe auch Ticket: [[https://opencaching.atlassian.net/browse/OCC-90|OCC-90: Exception error during docker:init]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Docker Services neu initialisieren, z.B. bei “&#039;&#039;W: GPG error:  stable InRelease: The following signatures were invalid: EXPKEYSIG 23E7166788B63E1E Yarn Packaging &amp;lt;yarn@dan.cx&amp;gt;&#039;&#039;“ ====&lt;br /&gt;
Treten während eines docker:init neue, merkwürdige und nicht näher spezifizierbare Fehler auf, kann es helfen, die Dockercontainer neu zu initialisieren mittels:&lt;br /&gt;
 docker-compose build --pull&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== z.B. bei Update auf Symfony 5.2 kommt während docker:start-clean der Fehler &#039;&#039;”mv: cannot stat &#039;/root/.symfony/bin/symfony&#039;: No such file or directory Service &#039;webserver&#039; failed to build: The command &#039;/bin/sh -c mv /root/.symfony/bin/symfony /usr/local/bin/symfony&#039; returned a non-zero code: 1&amp;quot;&#039;&#039; ====&lt;br /&gt;
In diesem Fall in der Datei &#039;&#039;docker/httpd/Dockerfile&#039;&#039; die fehlerverursachende Zeile &lt;br /&gt;
  RUN mv /root/.symfony/bin/symfony /usr/local/bin/symfony&lt;br /&gt;
auskommentieren und docker:start-clean erneut laufen lassen.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Während docker:start-clean: &#039;&#039;&amp;quot;\Doctrine\Common\Persistence\Mapping\Driver\MappingDriverChain()&amp;quot; not found&#039;&#039; ====&lt;br /&gt;
Dies ist ein Fehler in einem der &#039;&#039;doctrine/*&#039;&#039; Pakete (vermutlich &#039;&#039;doctrine/persistence&#039;&#039;) in bestimmten Paketversionen. Hier hilft, die Datei &#039;&#039;/htdocs/vendor/doctrine/doctrine-bundle/Resources/config/orm.xml&#039;&#039; Zeile 32 zu editieren:&lt;br /&gt;
 &amp;lt;parameter key=&amp;quot;doctrine.orm.metadata.driver_chain.class&amp;quot;&amp;gt;Doctrine\Common\Persistence\Mapping\Driver\MappingDriverChain&amp;lt;/parameter&amp;gt;&lt;br /&gt;
zu&lt;br /&gt;
 &amp;lt;parameter key=&amp;quot;doctrine.orm.metadata.driver_chain.class&amp;quot;&amp;gt;Doctrine\Persistence\Mapping\Driver\MappingDriverChain&amp;lt;/parameter&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Allerdings muss dies zum richtigen Zeitpunkt passieren. Nachdem &#039;&#039;docker:start-clean&#039;&#039; aufgerufen wurde, kurz warten, bis die Pakete heruntergeladen wurden und noch bevor Abschnitt 13/32 anfängt, muss die Datei korrigiert und gespeichert worden sein.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Meldung “DEPRECATED: The legacy builder is deprecated and will be removed in a future release. Install the buildx component to build images with [[https://docs.docker.com/go/buildx/|BuildKit]] ====&lt;br /&gt;
Der Docker build Prozess wurde geändert. Die bisherige Methode wurde ab Dockerversion 23 als “deprecated” markiert und wird in einer zukünftigen Version entfernt. Siehe [[https://docs.docker.com/engine/deprecated/#legacy-builder-for-linux-images|Deprecated Engine Features]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Meldung “ERROR: BuildKit is enabled but the buildx component is missing or broken.“ ====&lt;br /&gt;
Docker Buildkit/buildx soll verwendet werden (DOCKER_BUILDKIT=1), wurde aber nicht installiert.&lt;br /&gt;
&lt;br /&gt;
Abhilfe: Buildkit/buildx Komponente installieren. Vorher müssen aber einige bereits installierte Pakete entfernt werden. Je nach OS gibt es unterschiedliche Anweisungen und Installationswege, siehe hier: [[https://docs.docker.com/engine/install/|Install Docker Engine]]&lt;br /&gt;
&lt;br /&gt;
==== Während docker:start-clean: &#039;&#039;&amp;quot;Browserslist: caniuse-lite is outdated.&amp;quot;&#039;&#039; ====&lt;br /&gt;
Scheinbar wird die “browserslist” nicht automatisch aktualisiert. (Grund? k.A.)&lt;br /&gt;
&lt;br /&gt;
Zum manuellen Update im Docker:ssh eingeben:&lt;br /&gt;
 npx browserslist@latest --update-db&lt;br /&gt;
bzw.&lt;br /&gt;
 npx update-browserslist-db@latest&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Fehlermeldungen beim Zugriff auf die Datenbank ==&lt;br /&gt;
==== Fehlermeldung “ERROR 2002 (HY000): Can&#039;t connect to local MySQL server through socket &#039;/var/run/mysqld/mysqld.sock&#039; (2)” ====&lt;br /&gt;
Es wurde vergessen, den Namen der Datenbank in der Kommandozeile zu übergeben.&lt;br /&gt;
 mysql -uroot -proot -hmariadb opencaching&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Fehlermeldungen beim Zugriff auf die Testserverdomain ==&lt;br /&gt;
==== Vorgehen zum Anlegen eines weiteren Benutzers (betrifft Legacy-Testsystem) ====&lt;br /&gt;
Zuerst via http://docker.team-opencaching.de/register.php einen neuen Nutzer registrieren. Zwar kommt dann die Meldung, dass der Aktivierungscode per Mail zugsandt wurde, dies passiert aber nie. Der Aktivierungscode muss aus der Test-Datenbank ausgelesen werden.&lt;br /&gt;
Der Code steht in Tabelle &#039;&#039;user&#039;&#039; im Feld &#039;&#039;activation_code&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Mit http://docker.team-opencaching.de/activation.php gelangt man zur Account-Aktivierungsseite. Hier die E-Mail-Adresse und den aus der Datenbank kopierten Aktivierungscode eingeben. Der Account ist nun aktiviert, aber falls der Login nicht funktioniert: siehe andere Fehlermeldung hier auf der Seite weiter unten.&lt;br /&gt;
&lt;br /&gt;
Info: Eventuell wird in Zukunft der MailHog zum Laufen gebracht. Dann werden die vom Server verschickten Emails von diesem abgefangen und man kann die Informationen darin lesen.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Der neu angelegte Benutzer kann sich nicht einloggen und wird immer wieder ohne Meldung auf die Login-Seite geleitet (betrifft Legacy-Testsystem) ====&lt;br /&gt;
Die exakte Ursache ist nicht bekannt. Abhilfe kann geschaffen werden, wenn beim entsprechenden Nutzer in der Datenbank in der Tabelle &#039;&#039;user&#039;&#039; das Feld &#039;&#039;permanent_login_flag&#039;&#039; auf &#039;&#039;1&#039;&#039; gesetzt wird.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Beim Anlegen des &#039;&#039;zweiten&#039;&#039; Cachelistings kommt eine Fehlermeldung (betrifft Legacy-Testsystem) ====&lt;br /&gt;
Bei einer &#039;&#039;leeren&#039;&#039; Datenbank funktioniert das Setzen und Hochzählen der OC-Codes nicht. Es muss einmal ein OC-Code von Hand gesetzt werden.&lt;br /&gt;
&lt;br /&gt;
Hierzu auf dem Testserver ein Listing anlegen. Dann für diesen Cache in der Datenbank in der Tabelle &#039;&#039;caches&#039;&#039; das Feld &#039;&#039;wp_oc&#039;&#039; auf einen initialen Wert ändern, z.B. &#039;&#039;OC1234&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Beim Erstellen/Speichern eines Cachelistings kommen mehrere  Fehlermeldungen, u.a. “Warning: A non-numeric value encountered in /app/htdocs/newcache.php on line 1025” (betrifft Legacy-Testsystem) ====&lt;br /&gt;
[[Image:Fehlerhandbuch Domain 01.png|500px]]&lt;br /&gt;
&lt;br /&gt;
Zuerst muss geschaut werden, ob eventuell der vorige Abschnitt (“Beim Anlegen des zweiten Cachelistings kommt eine Fehlermeldung“) zutrifft. Wurden die dort beschriebenen Maßnahmen bereits umgesetzt, kommt es zwar trotzdem zur Fehlermeldung, das Listing wurde aber erfolgreich angelegt bzw. gespeichert. (Seite neu laden)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Es kann kein Logbild hochgeladen werden (betrifft Legacy-Testsystem) ====&lt;br /&gt;
Sobald man ein Logbild hochladen möchte, erscheint eine Fehlermeldung&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;Warning: move_uploaded_file(): Unable to move &#039;/tmp/phpGmSzpi&#039; to &#039;/application/htdocs/config2/../images/uploads/700770A6-C101-11EA-BA77-0242AC120005.jpg&#039; in /application/htdocs/lib2/logic/picture.class.php on line 856&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Abhilfe: (noch) keine Ahnung. Die Bilder wurden aber trotzdem hochgeladen.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Bei Anlegen/Editieren eines Listings funktioniert die Attributeauswahl nicht (betrifft Legacy-Testsystem) ====&lt;br /&gt;
Editiert man ein Listing, stehen nicht alle Attribute zur Verfügung bzw. es können nicht alle Attribute ausgewählt werden. &lt;br /&gt;
&lt;br /&gt;
Abhilfe: (noch) keine Ahnung.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Das Länderauswahlfeld rechts oben auf der Seite ist leer und funktioniert nicht. (betrifft Legacy-Testsystem) ====&lt;br /&gt;
Alle php-Dateien im Cacheverzeichnis htdocs/var/cache2 müssen gelöscht werden.&lt;br /&gt;
&lt;br /&gt;
Das Vorgehen Unter Linux:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;./psh.phar docker:stop&lt;br /&gt;
rm htdocs/var/cache2/*.inc.php&lt;br /&gt;
./psh.phar docker:start&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Es kann nicht auf die Domains docker.team-opencaching.de oder try.docker.team-opencaching.de zugegriffen werden. ====&lt;br /&gt;
Normalerweise sollte der Zugriff nach Installation der Testumgebung automatisch funktionieren. Sollte das nicht der Fall sein, kann mittels Anpassung der hosts-Datei ein Workaround geschaffen werden:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;127.0.0.1	docker.team-opencaching.de&lt;br /&gt;
127.0.0.1	try.docker.team-opencaching.de&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Abschalten von “NOTICE”-Meldungen. (betrifft Legacy-Testsystem) ====&lt;br /&gt;
Aufgrund diverser (Smarty- und PHP-)Updates werden vormals ignorierte Probleme nun mit einer “NOTICE”-Meldung kenntlich gemacht. Um die Meldungen zu unterdrücken, kann in das error_reporting Level geändert werden.&lt;br /&gt;
&lt;br /&gt;
Beispiele für Fehlermeldungen:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;Notice: Undefined index: error_password_not_ok in /app/htdocs/var/cache2/smarty/compiled/..&lt;br /&gt;
Notice: Trying to get property &#039;value&#039; of non-object in /app/..&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Abhilfe:&lt;br /&gt;
Bis Smarty 3.x: In der Datei /htdocs/vendor/smarty/smarty/libs/Smarty.class.php die Zeile mit $error_reporting ändern auf den nachfolgenden Code. Die Änderung ist nicht git-relevant und geht nach jedem “./psh.phar docker:start-clean” verloren.&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;public $error_reporting = E_ALL &amp;amp; ~E_NOTICE;&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ab Smarty 3.x und 4.x: In der Datei /htdocs/lib2/common.inc.php die obere Zeile (PHP_DEBUG_ON) mit $error_reporting ändern auf den nachfolgenden Code. Die Änderung ist permanent und muss vor einem Commit rückgängig gemacht werden, da sie sonst im github Repository landet.&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;ini_set(&#039;error_reporting&#039;, E_ALL &amp;amp; ~E_NOTICE);&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== [gelöst] Die Übersetzungen funktionieren nicht. Meist wird nur Englischer Text angezeigt. (betrifft Legacy-Testsystem) ====&lt;br /&gt;
Die vorhandenen Fremdsprachen werden auf dem Testsystem nicht korrekt dargestellt. Meistens wird nur der Englische Text oder ein Mischmasch aus Englisch und eingestellter Sprache angezeigt.&lt;br /&gt;
&lt;br /&gt;
Abhilfe: im docker:start Skript wurde eine fehlende Komponente ergänzt, welche nun automatisch mitinstalliert wird. Dadurch werden die Sprachdateien korrekt erzeugt und die Übersetzungen funktionieren.&lt;br /&gt;
&lt;br /&gt;
Siehe auch: [[https://opencaching.atlassian.net/browse/RED-1278|RED-1278: Die Übersetzungen funktionieren auf dem Testserver nicht]]&lt;br /&gt;
Dieser Fehler sollte somit nicht mehr auftauchen.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== [gelöst] Beim Löschen von Logs kommt eine Fehlermeldung “This log entry has been created on another Opencaching website. The cache can only be edited there.” ====&lt;br /&gt;
Auf dem Testserver werden die Logs laut Datenbank (Tabelle &#039;&#039;cache_logs&#039;&#039;, Spalte &#039;&#039;nodes&#039;&#039;) als &#039;&#039;node=5&#039;&#039; gespeichert, obwohl es laut Tabelle &#039;&#039;nodes&#039;&#039; diese Ziffer gar nicht gibt.&lt;br /&gt;
&lt;br /&gt;
Um Logs wieder über die normale Loglöschenfunktion löschen zu können, gibt es mehrere Möglichkeiten:&lt;br /&gt;
# In der Datenbanktabelle ‘cache_logs’ den Eintrag in Spalte ‘nodes’ auf 4 ändern. (Dies entspricht der ‘Local Development’-Umgebung (siehe Tabelle ‘nodes’)).&lt;br /&gt;
# In der Datei ‘/dev-ops/local.team-opencaching.de/templates/config2-settings.inc.tpl.php&#039; den Eintrag ‘$opt[&#039;logic&#039;][&#039;node&#039;][&#039;id&#039;] = 5;’ ändern auf &#039;$opt[&#039;logic&#039;][&#039;node&#039;][&#039;id&#039;] = 4;’ und das docker:init Script ausführen&lt;br /&gt;
# Der Pull [[https://github.com/OpencachingDeutschland/oc-server3/pull/830|Pull Request #830 changed node information from 5 to 4]]  behebt das Problem.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Entwicklung|Fehlerhandbuch ]]&lt;/div&gt;</summary>
		<author><name>Fraggle</name></author>
	</entry>
	<entry>
		<id>https://wiki.opencaching.de/index.php?title=Entwicklungsumgebung/Fehlerhandbuch&amp;diff=8014</id>
		<title>Entwicklungsumgebung/Fehlerhandbuch</title>
		<link rel="alternate" type="text/html" href="https://wiki.opencaching.de/index.php?title=Entwicklungsumgebung/Fehlerhandbuch&amp;diff=8014"/>
		<updated>2025-09-01T18:20:47Z</updated>

		<summary type="html">&lt;p&gt;Fraggle: +Leerzeile&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Während der Installation der Programme oder Einrichtung der Testumgebung kann es zu diversen Fehlern und Meldungen kommen. Im Folgenden sind bereits bekannte Meldungen aufgelistet, die bei einer schnellen Behebung helfen sollen.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Fehlermeldungen während der Paketinstallation ==&lt;br /&gt;
==== Während der Installation der benötigten Pakete, kommt es zu einer Meldung, dass Abhängigkeiten mit dem ‘libdvd-pkg’ Paket nicht aufgelöst werden können ====&lt;br /&gt;
&lt;br /&gt;
Eine Rekonfiguration des Pakets schafft Abhilfe:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;sudo dpkg-reconfigure libdvd-pkg&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Fehlermeldungen in Zusammenhang mit der Dockerumgebung ==&lt;br /&gt;
==== Fehler “starting opencaching-webserver .. error” oder “Starting webserver ... error” ====&lt;br /&gt;
Vermutlich läuft im Hintergrund bereits ein anderer Webservice auf Port 80.&lt;br /&gt;
&lt;br /&gt;
Prüfen kann man das mit:&lt;br /&gt;
 netstat -tanp | grep :80&lt;br /&gt;
&lt;br /&gt;
Zum Beispiel ein apache2-Webserver kann gestoppt werden mit:&lt;br /&gt;
 sudo systemctl stop apache2&lt;br /&gt;
&lt;br /&gt;
Damit der apache2 nach einem Rechnerneustart nicht erneut aktiviert wird, kann man ihn generell deaktivieren:&lt;br /&gt;
 sudo systemctl disable apache2&lt;br /&gt;
&lt;br /&gt;
Alternativ lässt sich auch eine [[https://docs.docker.com/compose/extends/|Override-Datei]] für die betroffenen Ports verwenden, was allerdings weitere Komplikationen mit sich führen kann (wie beispielsweise eine nicht funktionierende OKAPI). Aus diesem Grund sollte nach Möglichkeit das Stoppen der Standard-Services für Apache und einen Datenbank-Server vorgezogen werden.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Fehler “W: GPG error: https://dl.yarnpkg.com/debian stable InRelease: The following signatures were invalid: EXPKEYSIG“ ====&lt;br /&gt;
Nach dem Ausführen von ./psh.phar docker:start kommt der Fehler. Hier ist das Zertifikat veraltet. Folgender Befehl löscht das Docker-Image. &lt;br /&gt;
 docker-compose build --pull&lt;br /&gt;
&lt;br /&gt;
Mit einen erneuten ./psh.phar docker:start läuft es wieder durch.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Fehler “ERROR: for opencaching-mariadb  Cannot start service mariadb: driver failed programming external connectivity on endpoint opencaching-mariadb [..] Error starting userland proxy: listen tcp 0.0.0.0:3306: bind: address already in use” ====&lt;br /&gt;
Wenn beim docker:start diese Fehlermeldung kommt, läuft im Hintergrund bereits ein anderer Webservice (z.B. mysql) auf Port 3306.&lt;br /&gt;
&lt;br /&gt;
Prüfen kann man das mit:&lt;br /&gt;
 netstat -tanp | grep :3306&lt;br /&gt;
&lt;br /&gt;
Zum Beispiel ein mysql-Webserver kann gestoppt werden mit:&lt;br /&gt;
 sudo mysqladmin -u root shutdown&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Fehler &amp;quot;The stream or file &amp;quot;/application/htdocs/var/logs/dev/dev.log&amp;quot; could not be opened: failed to open stream: Permission denied&amp;quot; oder ähnlich (betrifft Legacy-Testsystem) ====&lt;br /&gt;
==== Oder: Fehler &amp;quot;Permission denied&amp;quot; beim Zugriff auf /htdocs/var/cache (betrifft Legacy-Testsystem) ====&lt;br /&gt;
==== Oder: Fehler 500 (ohne weitere Angaben, warum) (betrifft Legacy-Testsystem) ====&lt;br /&gt;
Hier scheint der Webserver keine Zugriffsberechtigung auf bestimmte Pfade/Dateien zu haben. Von einem Ändern der Zugriffsberechtigungen, z. B. mittels sudo chmod -R 777 ./var/log, sollte aus Sicherheitsgründen aber Abstand genommen werden.&lt;br /&gt;
&lt;br /&gt;
Helfen kann, die Befehlsfolge&lt;br /&gt;
 ./psh.phar docker:ssh&lt;br /&gt;
 ./psh.phar docker:init&lt;br /&gt;
 exit&lt;br /&gt;
ein weiteres Mal auszuführen.&lt;br /&gt;
&lt;br /&gt;
Falls dies weiterhin keinen Erfolg bringt, können folgende Schritte zum Ändern der Zugriffsberechtigungen angewandt werden:&lt;br /&gt;
# Ermitteln der ID des Containers oc-server3_php-fpm mittels sudo docker ps.&lt;br /&gt;
# Öffnen einer Shell im Container: sudo docker exec -it 45b6e4994fac /bin/bash, wobei 45b6e4994fac die ID des Containers ist.&lt;br /&gt;
# In der Container-Shell chmod -R 777 /application/htdocs/var/logs/dev/ ausführen.&lt;br /&gt;
# Die Container-Shell regulär mittels exit verlassen.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Host-Mismatch bei Aufruf der OKAPI mit Port-Override ====&lt;br /&gt;
Falls in einer Override-Datei Ports überschrieben werden (siehe oben), funktioniert die OKAPI möglicherweise nicht richtig - stattdessen erscheint ein Hinweis auf einen Port-Mismatch. Dies kann auf folgende Art und Weise behoben werden:&lt;br /&gt;
# Ermitteln der ID des Containers &#039;&#039;oc-server3_php-fpm&#039;&#039; mittels &#039;&#039;sudo docker ps&#039;&#039;.&lt;br /&gt;
# Öffnen einer Shell im Container: &#039;&#039;sudo docker exec -it 45b6e4994fac /bin/bash&#039;&#039;, wobei 45b6e4994fac die ID des Containers ist.&lt;br /&gt;
# Im Container einen Editor installieren, beispielsweise nano. Da der Container auf Ubuntu basiert, funktioniert dies mittels &#039;&#039;apt-get update &amp;amp;&amp;amp; apt-get install nano&#039;&#039;.&lt;br /&gt;
# Die passende Konfigurationsdatei mittels des Editors im Container öffnen, beispielsweise mittels &#039;&#039;nano /application/htdocs/config2/settings.inc.php.&#039;&#039;&lt;br /&gt;
# Setzen von &#039;&#039;$dev_baseurl = &#039;http://docker.team-opencaching.de:2200&#039;;&#039;&#039; und anschließendes Speichern der Datei. Hierbei ist 2200 der Port, der statt Port 80 für den Webserver in der Override-Datei konfiguriert worden ist.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Während docker:init kommt es im Abschnitt (3/31) zu einer Meldung “&amp;gt; mysql -uroot -proot -hmariadb -e &amp;quot;DROP DATABASE IF EXISTS opencaching&amp;quot; ERROR 2005 (HY000): Unknown MySQL server host &#039;mariadb&#039; (-3).“ ====&lt;br /&gt;
Abhilfe: &#039;&#039;./psh.phar docker:init&#039;&#039; darf nicht außerhalb des Dockercontainers aufgerufen werden.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Während docker:init kommt es im Abschnitt (13/31) zu einer Meldung “PHP Fatal error: .. __toString() must not throw an exception ..“ ====&lt;br /&gt;
Die Ursache ist nicht bekannt. Hier hilft aktuell nur ein Workaround, in dem die Exception im Script auskommentiert wird.&lt;br /&gt;
&lt;br /&gt;
Hierzu in der Datei &#039;&#039;../htdocs/vendor/symfony/symfony/src/Symfony/Component/DependencyInjection/Compiler/AutowirePass.php&#039;&#039; die Zeile 236 &#039;&#039;throw new AutoWiringFailedException&#039;&#039; auskommentieren. Die Datei ist allerdings erst nach dem Ausführens von docker:init vorhanden.&lt;br /&gt;
&lt;br /&gt;
Siehe auch Ticket: [[https://opencaching.atlassian.net/browse/OCC-90|OCC-90: Exception error during docker:init]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Docker Services neu initialisieren, z.B. bei “&#039;&#039;W: GPG error:  stable InRelease: The following signatures were invalid: EXPKEYSIG 23E7166788B63E1E Yarn Packaging &amp;lt;yarn@dan.cx&amp;gt;&#039;&#039;“ ====&lt;br /&gt;
Treten während eines docker:init neue, merkwürdige und nicht näher spezifizierbare Fehler auf, kann es helfen, die Dockercontainer neu zu initialisieren mittels:&lt;br /&gt;
 docker-compose build --pull&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== z.B. bei Update auf Symfony 5.2 kommt während docker:start-clean der Fehler &#039;&#039;”mv: cannot stat &#039;/root/.symfony/bin/symfony&#039;: No such file or directory Service &#039;webserver&#039; failed to build: The command &#039;/bin/sh -c mv /root/.symfony/bin/symfony /usr/local/bin/symfony&#039; returned a non-zero code: 1&amp;quot;&#039;&#039; ====&lt;br /&gt;
In diesem Fall in der Datei &#039;&#039;docker/httpd/Dockerfile&#039;&#039; die fehlerverursachende Zeile &lt;br /&gt;
  RUN mv /root/.symfony/bin/symfony /usr/local/bin/symfony&lt;br /&gt;
auskommentieren und docker:start-clean erneut laufen lassen.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Während docker:start-clean: &#039;&#039;&amp;quot;\Doctrine\Common\Persistence\Mapping\Driver\MappingDriverChain()&amp;quot; not found&#039;&#039; ====&lt;br /&gt;
Dies ist ein Fehler in einem der &#039;&#039;doctrine/*&#039;&#039; Pakete (vermutlich &#039;&#039;doctrine/persistence&#039;&#039;) in bestimmten Paketversionen. Hier hilft, die Datei &#039;&#039;/htdocs/vendor/doctrine/doctrine-bundle/Resources/config/orm.xml&#039;&#039; Zeile 32 zu editieren:&lt;br /&gt;
 &amp;lt;parameter key=&amp;quot;doctrine.orm.metadata.driver_chain.class&amp;quot;&amp;gt;Doctrine\Common\Persistence\Mapping\Driver\MappingDriverChain&amp;lt;/parameter&amp;gt;&lt;br /&gt;
zu&lt;br /&gt;
 &amp;lt;parameter key=&amp;quot;doctrine.orm.metadata.driver_chain.class&amp;quot;&amp;gt;Doctrine\Persistence\Mapping\Driver\MappingDriverChain&amp;lt;/parameter&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Allerdings muss dies zum richtigen Zeitpunkt passieren. Nachdem &#039;&#039;docker:start-clean&#039;&#039; aufgerufen wurde, kurz warten, bis die Pakete heruntergeladen wurden und noch bevor Abschnitt 13/32 anfängt, muss die Datei korrigiert und gespeichert worden sein.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Meldung “DEPRECATED: The legacy builder is deprecated and will be removed in a future release. Install the buildx component to build images with [[https://docs.docker.com/go/buildx/|BuildKit]] ====&lt;br /&gt;
Der Docker build Prozess wurde geändert. Die bisherige Methode wurde ab Dockerversion 23 als “deprecated” markiert und wird in einer zukünftigen Version entfernt. Siehe [[https://docs.docker.com/engine/deprecated/#legacy-builder-for-linux-images|Deprecated Engine Features]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Meldung “ERROR: BuildKit is enabled but the buildx component is missing or broken.“ ====&lt;br /&gt;
Docker Buildkit/buildx soll verwendet werden (DOCKER_BUILDKIT=1), wurde aber nicht installiert.&lt;br /&gt;
&lt;br /&gt;
Abhilfe: Buildkit/buildx Komponente installieren. Vorher müssen aber einige bereits installierte Pakete entfernt werden. Je nach OS gibt es unterschiedliche Anweisungen und Installationswege, siehe hier: [[https://docs.docker.com/engine/install/|Install Docker Engine]]&lt;br /&gt;
&lt;br /&gt;
==== Während docker:start-clean: &#039;&#039;&amp;quot;Browserslist: caniuse-lite is outdated.&amp;quot;&#039;&#039; ====&lt;br /&gt;
Scheinbar wird die “browserslist” nicht automatisch aktualisiert. (Grund? k.A.)&lt;br /&gt;
&lt;br /&gt;
Zum manuellen Update im Docker:ssh eingeben:&lt;br /&gt;
 npx browserslist@latest --update-db&lt;br /&gt;
bzw.&lt;br /&gt;
 npx update-browserslist-db@latest&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Fehlermeldungen beim Zugriff auf die Datenbank ==&lt;br /&gt;
==== Fehlermeldung “ERROR 2002 (HY000): Can&#039;t connect to local MySQL server through socket &#039;/var/run/mysqld/mysqld.sock&#039; (2)” ====&lt;br /&gt;
Es wurde vergessen, den Namen der Datenbank in der Kommandozeile zu übergeben.&lt;br /&gt;
 mysql -uroot -proot -hmariadb opencaching&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Fehlermeldungen beim Zugriff auf die Testserverdomain ==&lt;br /&gt;
==== Vorgehen zum Anlegen eines weiteren Benutzers (betrifft Legacy-Testsystem) ====&lt;br /&gt;
Zuerst via http://docker.team-opencaching.de/register.php einen neuen Nutzer registrieren. Zwar kommt dann die Meldung, dass der Aktivierungscode per Mail zugsandt wurde, dies passiert aber nie. Der Aktivierungscode muss aus der Test-Datenbank ausgelesen werden.&lt;br /&gt;
Der Code steht in Tabelle &#039;&#039;user&#039;&#039; im Feld &#039;&#039;activation_code&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Mit http://docker.team-opencaching.de/activation.php gelangt man zur Account-Aktivierungsseite. Hier die E-Mail-Adresse und den aus der Datenbank kopierten Aktivierungscode eingeben. Der Account ist nun aktiviert, aber falls der Login nicht funktioniert: siehe andere Fehlermeldung hier auf der Seite weiter unten.&lt;br /&gt;
&lt;br /&gt;
Info: Eventuell wird in Zukunft der MailHog zum Laufen gebracht. Dann werden die vom Server verschickten Emails von diesem abgefangen und man kann die Informationen darin lesen.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Der neu angelegte Benutzer kann sich nicht einloggen und wird immer wieder ohne Meldung auf die Login-Seite geleitet (betrifft Legacy-Testsystem) ====&lt;br /&gt;
Die exakte Ursache ist nicht bekannt. Abhilfe kann geschaffen werden, wenn beim entsprechenden Nutzer in der Datenbank in der Tabelle &#039;&#039;user&#039;&#039; das Feld &#039;&#039;permanent_login_flag&#039;&#039; auf &#039;&#039;1&#039;&#039; gesetzt wird.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Beim Anlegen des &#039;&#039;zweiten&#039;&#039; Cachelistings kommt eine Fehlermeldung (betrifft Legacy-Testsystem) ====&lt;br /&gt;
Bei einer &#039;&#039;leeren&#039;&#039; Datenbank funktioniert das Setzen und Hochzählen der OC-Codes nicht. Es muss einmal ein OC-Code von Hand gesetzt werden.&lt;br /&gt;
&lt;br /&gt;
Hierzu auf dem Testserver ein Listing anlegen. Dann für diesen Cache in der Datenbank in der Tabelle &#039;&#039;caches&#039;&#039; das Feld &#039;&#039;wp_oc&#039;&#039; auf einen initialen Wert ändern, z.B. &#039;&#039;OC1234&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Beim Erstellen/Speichern eines Cachelistings kommen mehrere  Fehlermeldungen, u.a. “Warning: A non-numeric value encountered in /app/htdocs/newcache.php on line 1025” (betrifft Legacy-Testsystem) ====&lt;br /&gt;
[[Image:Fehlerhandbuch Domain 01.png|500px]]&lt;br /&gt;
&lt;br /&gt;
Zuerst muss geschaut werden, ob eventuell der vorige Abschnitt (“Beim Anlegen des zweiten Cachelistings kommt eine Fehlermeldung“) zutrifft. Wurden die dort beschriebenen Maßnahmen bereits umgesetzt, kommt es zwar trotzdem zur Fehlermeldung, das Listing wurde aber erfolgreich angelegt bzw. gespeichert. (Seite neu laden)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Es kann kein Logbild hochgeladen werden (betrifft Legacy-Testsystem) ====&lt;br /&gt;
Sobald man ein Logbild hochladen möchte, erscheint eine Fehlermeldung&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;Warning: move_uploaded_file(): Unable to move &#039;/tmp/phpGmSzpi&#039; to &#039;/application/htdocs/config2/../images/uploads/700770A6-C101-11EA-BA77-0242AC120005.jpg&#039; in /application/htdocs/lib2/logic/picture.class.php on line 856&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Abhilfe: (noch) keine Ahnung. Die Bilder wurden aber trotzdem hochgeladen.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Bei Anlegen/Editieren eines Listings funktioniert die Attributeauswahl nicht (betrifft Legacy-Testsystem) ====&lt;br /&gt;
Editiert man ein Listing, stehen nicht alle Attribute zur Verfügung bzw. es können nicht alle Attribute ausgewählt werden. &lt;br /&gt;
&lt;br /&gt;
Abhilfe: (noch) keine Ahnung.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Das Länderauswahlfeld rechts oben auf der Seite ist leer und funktioniert nicht. (betrifft Legacy-Testsystem) ====&lt;br /&gt;
Alle php-Dateien im Cacheverzeichnis htdocs/var/cache2 müssen gelöscht werden.&lt;br /&gt;
&lt;br /&gt;
Das Vorgehen Unter Linux:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;./psh.phar docker:stop&lt;br /&gt;
rm htdocs/var/cache2/*.inc.php&lt;br /&gt;
./psh.phar docker:start&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Es kann nicht auf die Domains docker.team-opencaching.de oder try.docker.team-opencaching.de zugegriffen werden. ====&lt;br /&gt;
Normalerweise sollte der Zugriff nach Installation der Testumgebung automatisch funktionieren. Sollte das nicht der Fall sein, kann mittels Anpassung der hosts-Datei ein Workaround geschaffen werden:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;127.0.0.1	docker.team-opencaching.de&lt;br /&gt;
127.0.0.1	try.docker.team-opencaching.de&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Abschalten von “NOTICE”-Meldungen. (betrifft Legacy-Testsystem) ====&lt;br /&gt;
Aufgrund diverser (Smarty- und PHP-)Updates werden vormals ignorierte Probleme nun mit einer “NOTICE”-Meldung kenntlich gemacht. Um die Meldungen zu unterdrücken, kann in das error_reporting Level geändert werden.&lt;br /&gt;
&lt;br /&gt;
Beispiele für Fehlermeldungen:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;Notice: Undefined index: error_password_not_ok in /app/htdocs/var/cache2/smarty/compiled/..&lt;br /&gt;
Notice: Trying to get property &#039;value&#039; of non-object in /app/..&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Abhilfe:&lt;br /&gt;
Bis Smarty 3.x: In der Datei /htdocs/vendor/smarty/smarty/libs/Smarty.class.php die Zeile mit $error_reporting ändern auf den nachfolgenden Code. Die Änderung ist nicht git-relevant und geht nach jedem “./psh.phar docker:start-clean” verloren.&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;public $error_reporting = E_ALL &amp;amp; ~E_NOTICE;&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ab Smarty 3.x und 4.x: In der Datei /htdocs/lib2/common.inc.php die obere Zeile (PHP_DEBUG_ON) mit $error_reporting ändern auf den nachfolgenden Code. Die Änderung ist permanent und muss vor einem Commit rückgängig gemacht werden, da sie sonst im github Repository landet.&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;ini_set(&#039;error_reporting&#039;, E_ALL &amp;amp; ~E_NOTICE);&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== [gelöst] Die Übersetzungen funktionieren nicht. Meist wird nur Englischer Text angezeigt. (betrifft Legacy-Testsystem) ====&lt;br /&gt;
Die vorhandenen Fremdsprachen werden auf dem Testsystem nicht korrekt dargestellt. Meistens wird nur der Englische Text oder ein Mischmasch aus Englisch und eingestellter Sprache angezeigt.&lt;br /&gt;
&lt;br /&gt;
Abhilfe: im docker:start Skript wurde eine fehlende Komponente ergänzt, welche nun automatisch mitinstalliert wird. Dadurch werden die Sprachdateien korrekt erzeugt und die Übersetzungen funktionieren.&lt;br /&gt;
&lt;br /&gt;
Siehe auch: [[https://opencaching.atlassian.net/browse/RED-1278|RED-1278: Die Übersetzungen funktionieren auf dem Testserver nicht]]&lt;br /&gt;
Dieser Fehler sollte somit nicht mehr auftauchen.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== [gelöst] Beim Löschen von Logs kommt eine Fehlermeldung “This log entry has been created on another Opencaching website. The cache can only be edited there.” ====&lt;br /&gt;
Auf dem Testserver werden die Logs laut Datenbank (Tabelle &#039;&#039;cache_logs&#039;&#039;, Spalte &#039;&#039;nodes&#039;&#039;) als &#039;&#039;node=5&#039;&#039; gespeichert, obwohl es laut Tabelle &#039;&#039;nodes&#039;&#039; diese Ziffer gar nicht gibt.&lt;br /&gt;
&lt;br /&gt;
Um Logs wieder über die normale Loglöschenfunktion löschen zu können, gibt es mehrere Möglichkeiten:&lt;br /&gt;
# In der Datenbanktabelle ‘cache_logs’ den Eintrag in Spalte ‘nodes’ auf 4 ändern. (Dies entspricht der ‘Local Development’-Umgebung (siehe Tabelle ‘nodes’)).&lt;br /&gt;
# In der Datei ‘/dev-ops/local.team-opencaching.de/templates/config2-settings.inc.tpl.php&#039; den Eintrag ‘$opt[&#039;logic&#039;][&#039;node&#039;][&#039;id&#039;] = 5;’ ändern auf &#039;$opt[&#039;logic&#039;][&#039;node&#039;][&#039;id&#039;] = 4;’ und das docker:init Script ausführen&lt;br /&gt;
# Der Pull [[https://github.com/OpencachingDeutschland/oc-server3/pull/830|Pull Request #830 changed node information from 5 to 4]]  behebt das Problem.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Entwicklung|Fehlerhandbuch ]]&lt;/div&gt;</summary>
		<author><name>Fraggle</name></author>
	</entry>
	<entry>
		<id>https://wiki.opencaching.de/index.php?title=Entwicklungsumgebung/Fehlerhandbuch&amp;diff=8013</id>
		<title>Entwicklungsumgebung/Fehlerhandbuch</title>
		<link rel="alternate" type="text/html" href="https://wiki.opencaching.de/index.php?title=Entwicklungsumgebung/Fehlerhandbuch&amp;diff=8013"/>
		<updated>2025-09-01T18:20:02Z</updated>

		<summary type="html">&lt;p&gt;Fraggle: Update Fehlerüberschrift&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Während der Installation der Programme oder Einrichtung der Testumgebung kann es zu diversen Fehlern und Meldungen kommen. Im Folgenden sind bereits bekannte Meldungen aufgelistet, die bei einer schnellen Behebung helfen sollen.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Fehlermeldungen während der Paketinstallation ==&lt;br /&gt;
==== Während der Installation der benötigten Pakete, kommt es zu einer Meldung, dass Abhängigkeiten mit dem ‘libdvd-pkg’ Paket nicht aufgelöst werden können ====&lt;br /&gt;
&lt;br /&gt;
Eine Rekonfiguration des Pakets schafft Abhilfe:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;sudo dpkg-reconfigure libdvd-pkg&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Fehlermeldungen in Zusammenhang mit der Dockerumgebung ==&lt;br /&gt;
==== Fehler “starting opencaching-webserver .. error” oder “Starting webserver ... error” ====&lt;br /&gt;
Vermutlich läuft im Hintergrund bereits ein anderer Webservice auf Port 80.&lt;br /&gt;
&lt;br /&gt;
Prüfen kann man das mit:&lt;br /&gt;
 netstat -tanp | grep :80&lt;br /&gt;
&lt;br /&gt;
Zum Beispiel ein apache2-Webserver kann gestoppt werden mit:&lt;br /&gt;
 sudo systemctl stop apache2&lt;br /&gt;
&lt;br /&gt;
Damit der apache2 nach einem Rechnerneustart nicht erneut aktiviert wird, kann man ihn generell deaktivieren:&lt;br /&gt;
 sudo systemctl disable apache2&lt;br /&gt;
&lt;br /&gt;
Alternativ lässt sich auch eine [[https://docs.docker.com/compose/extends/|Override-Datei]] für die betroffenen Ports verwenden, was allerdings weitere Komplikationen mit sich führen kann (wie beispielsweise eine nicht funktionierende OKAPI). Aus diesem Grund sollte nach Möglichkeit das Stoppen der Standard-Services für Apache und einen Datenbank-Server vorgezogen werden.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Fehler “W: GPG error: https://dl.yarnpkg.com/debian stable InRelease: The following signatures were invalid: EXPKEYSIG“ ====&lt;br /&gt;
Nach dem Ausführen von ./psh.phar docker:start kommt der Fehler. Hier ist das Zertifikat veraltet. Folgender Befehl löscht das Docker-Image. &lt;br /&gt;
 docker-compose build --pull&lt;br /&gt;
&lt;br /&gt;
Mit einen erneuten ./psh.phar docker:start läuft es wieder durch.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Fehler “ERROR: for opencaching-mariadb  Cannot start service mariadb: driver failed programming external connectivity on endpoint opencaching-mariadb [..] Error starting userland proxy: listen tcp 0.0.0.0:3306: bind: address already in use” ====&lt;br /&gt;
Wenn beim docker:start diese Fehlermeldung kommt, läuft im Hintergrund bereits ein anderer Webservice (z.B. mysql) auf Port 3306.&lt;br /&gt;
&lt;br /&gt;
Prüfen kann man das mit:&lt;br /&gt;
 netstat -tanp | grep :3306&lt;br /&gt;
&lt;br /&gt;
Zum Beispiel ein mysql-Webserver kann gestoppt werden mit:&lt;br /&gt;
 sudo mysqladmin -u root shutdown&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Fehler &amp;quot;The stream or file &amp;quot;/application/htdocs/var/logs/dev/dev.log&amp;quot; could not be opened: failed to open stream: Permission denied&amp;quot; oder ähnlich (betrifft Legacy-Testsystem) ====&lt;br /&gt;
==== Oder: Fehler &amp;quot;Permission denied&amp;quot; beim Zugriff auf /htdocs/var/cache (betrifft Legacy-Testsystem) ====&lt;br /&gt;
==== Oder: Fehler 500 (ohne weitere Angaben, warum) (betrifft Legacy-Testsystem) ====&lt;br /&gt;
Hier scheint der Webserver keine Zugriffsberechtigung auf bestimmte Pfade/Dateien zu haben. Von einem Ändern der Zugriffsberechtigungen, z. B. mittels sudo chmod -R 777 ./var/log, sollte aus Sicherheitsgründen aber Abstand genommen werden.&lt;br /&gt;
&lt;br /&gt;
Helfen kann, die Befehlsfolge&lt;br /&gt;
 ./psh.phar docker:ssh&lt;br /&gt;
 ./psh.phar docker:init&lt;br /&gt;
 exit&lt;br /&gt;
ein weiteres Mal auszuführen.&lt;br /&gt;
&lt;br /&gt;
Falls dies weiterhin keinen Erfolg bringt, können folgende Schritte zum Ändern der Zugriffsberechtigungen angewandt werden:&lt;br /&gt;
# Ermitteln der ID des Containers oc-server3_php-fpm mittels sudo docker ps.&lt;br /&gt;
# Öffnen einer Shell im Container: sudo docker exec -it 45b6e4994fac /bin/bash, wobei 45b6e4994fac die ID des Containers ist.&lt;br /&gt;
# In der Container-Shell chmod -R 777 /application/htdocs/var/logs/dev/ ausführen.&lt;br /&gt;
# Die Container-Shell regulär mittels exit verlassen.&lt;br /&gt;
&lt;br /&gt;
==== Host-Mismatch bei Aufruf der OKAPI mit Port-Override ====&lt;br /&gt;
Falls in einer Override-Datei Ports überschrieben werden (siehe oben), funktioniert die OKAPI möglicherweise nicht richtig - stattdessen erscheint ein Hinweis auf einen Port-Mismatch. Dies kann auf folgende Art und Weise behoben werden:&lt;br /&gt;
# Ermitteln der ID des Containers &#039;&#039;oc-server3_php-fpm&#039;&#039; mittels &#039;&#039;sudo docker ps&#039;&#039;.&lt;br /&gt;
# Öffnen einer Shell im Container: &#039;&#039;sudo docker exec -it 45b6e4994fac /bin/bash&#039;&#039;, wobei 45b6e4994fac die ID des Containers ist.&lt;br /&gt;
# Im Container einen Editor installieren, beispielsweise nano. Da der Container auf Ubuntu basiert, funktioniert dies mittels &#039;&#039;apt-get update &amp;amp;&amp;amp; apt-get install nano&#039;&#039;.&lt;br /&gt;
# Die passende Konfigurationsdatei mittels des Editors im Container öffnen, beispielsweise mittels &#039;&#039;nano /application/htdocs/config2/settings.inc.php.&#039;&#039;&lt;br /&gt;
# Setzen von &#039;&#039;$dev_baseurl = &#039;http://docker.team-opencaching.de:2200&#039;;&#039;&#039; und anschließendes Speichern der Datei. Hierbei ist 2200 der Port, der statt Port 80 für den Webserver in der Override-Datei konfiguriert worden ist.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Während docker:init kommt es im Abschnitt (3/31) zu einer Meldung “&amp;gt; mysql -uroot -proot -hmariadb -e &amp;quot;DROP DATABASE IF EXISTS opencaching&amp;quot; ERROR 2005 (HY000): Unknown MySQL server host &#039;mariadb&#039; (-3).“ ====&lt;br /&gt;
Abhilfe: &#039;&#039;./psh.phar docker:init&#039;&#039; darf nicht außerhalb des Dockercontainers aufgerufen werden.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Während docker:init kommt es im Abschnitt (13/31) zu einer Meldung “PHP Fatal error: .. __toString() must not throw an exception ..“ ====&lt;br /&gt;
Die Ursache ist nicht bekannt. Hier hilft aktuell nur ein Workaround, in dem die Exception im Script auskommentiert wird.&lt;br /&gt;
&lt;br /&gt;
Hierzu in der Datei &#039;&#039;../htdocs/vendor/symfony/symfony/src/Symfony/Component/DependencyInjection/Compiler/AutowirePass.php&#039;&#039; die Zeile 236 &#039;&#039;throw new AutoWiringFailedException&#039;&#039; auskommentieren. Die Datei ist allerdings erst nach dem Ausführens von docker:init vorhanden.&lt;br /&gt;
&lt;br /&gt;
Siehe auch Ticket: [[https://opencaching.atlassian.net/browse/OCC-90|OCC-90: Exception error during docker:init]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Docker Services neu initialisieren, z.B. bei “&#039;&#039;W: GPG error:  stable InRelease: The following signatures were invalid: EXPKEYSIG 23E7166788B63E1E Yarn Packaging &amp;lt;yarn@dan.cx&amp;gt;&#039;&#039;“ ====&lt;br /&gt;
Treten während eines docker:init neue, merkwürdige und nicht näher spezifizierbare Fehler auf, kann es helfen, die Dockercontainer neu zu initialisieren mittels:&lt;br /&gt;
 docker-compose build --pull&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== z.B. bei Update auf Symfony 5.2 kommt während docker:start-clean der Fehler &#039;&#039;”mv: cannot stat &#039;/root/.symfony/bin/symfony&#039;: No such file or directory Service &#039;webserver&#039; failed to build: The command &#039;/bin/sh -c mv /root/.symfony/bin/symfony /usr/local/bin/symfony&#039; returned a non-zero code: 1&amp;quot;&#039;&#039; ====&lt;br /&gt;
In diesem Fall in der Datei &#039;&#039;docker/httpd/Dockerfile&#039;&#039; die fehlerverursachende Zeile &lt;br /&gt;
  RUN mv /root/.symfony/bin/symfony /usr/local/bin/symfony&lt;br /&gt;
auskommentieren und docker:start-clean erneut laufen lassen.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Während docker:start-clean: &#039;&#039;&amp;quot;\Doctrine\Common\Persistence\Mapping\Driver\MappingDriverChain()&amp;quot; not found&#039;&#039; ====&lt;br /&gt;
Dies ist ein Fehler in einem der &#039;&#039;doctrine/*&#039;&#039; Pakete (vermutlich &#039;&#039;doctrine/persistence&#039;&#039;) in bestimmten Paketversionen. Hier hilft, die Datei &#039;&#039;/htdocs/vendor/doctrine/doctrine-bundle/Resources/config/orm.xml&#039;&#039; Zeile 32 zu editieren:&lt;br /&gt;
 &amp;lt;parameter key=&amp;quot;doctrine.orm.metadata.driver_chain.class&amp;quot;&amp;gt;Doctrine\Common\Persistence\Mapping\Driver\MappingDriverChain&amp;lt;/parameter&amp;gt;&lt;br /&gt;
zu&lt;br /&gt;
 &amp;lt;parameter key=&amp;quot;doctrine.orm.metadata.driver_chain.class&amp;quot;&amp;gt;Doctrine\Persistence\Mapping\Driver\MappingDriverChain&amp;lt;/parameter&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Allerdings muss dies zum richtigen Zeitpunkt passieren. Nachdem &#039;&#039;docker:start-clean&#039;&#039; aufgerufen wurde, kurz warten, bis die Pakete heruntergeladen wurden und noch bevor Abschnitt 13/32 anfängt, muss die Datei korrigiert und gespeichert worden sein.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Meldung “DEPRECATED: The legacy builder is deprecated and will be removed in a future release. Install the buildx component to build images with [[https://docs.docker.com/go/buildx/|BuildKit]] ====&lt;br /&gt;
Der Docker build Prozess wurde geändert. Die bisherige Methode wurde ab Dockerversion 23 als “deprecated” markiert und wird in einer zukünftigen Version entfernt. Siehe [[https://docs.docker.com/engine/deprecated/#legacy-builder-for-linux-images|Deprecated Engine Features]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Meldung “ERROR: BuildKit is enabled but the buildx component is missing or broken.“ ====&lt;br /&gt;
Docker Buildkit/buildx soll verwendet werden (DOCKER_BUILDKIT=1), wurde aber nicht installiert.&lt;br /&gt;
&lt;br /&gt;
Abhilfe: Buildkit/buildx Komponente installieren. Vorher müssen aber einige bereits installierte Pakete entfernt werden. Je nach OS gibt es unterschiedliche Anweisungen und Installationswege, siehe hier: [[https://docs.docker.com/engine/install/|Install Docker Engine]]&lt;br /&gt;
&lt;br /&gt;
==== Während docker:start-clean: &#039;&#039;&amp;quot;Browserslist: caniuse-lite is outdated.&amp;quot;&#039;&#039; ====&lt;br /&gt;
Scheinbar wird die “browserslist” nicht automatisch aktualisiert. (Grund? k.A.)&lt;br /&gt;
&lt;br /&gt;
Zum manuellen Update im Docker:ssh eingeben:&lt;br /&gt;
 npx browserslist@latest --update-db&lt;br /&gt;
bzw.&lt;br /&gt;
 npx update-browserslist-db@latest&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Fehlermeldungen beim Zugriff auf die Datenbank ==&lt;br /&gt;
==== Fehlermeldung “ERROR 2002 (HY000): Can&#039;t connect to local MySQL server through socket &#039;/var/run/mysqld/mysqld.sock&#039; (2)” ====&lt;br /&gt;
Es wurde vergessen, den Namen der Datenbank in der Kommandozeile zu übergeben.&lt;br /&gt;
 mysql -uroot -proot -hmariadb opencaching&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Fehlermeldungen beim Zugriff auf die Testserverdomain ==&lt;br /&gt;
==== Vorgehen zum Anlegen eines weiteren Benutzers (betrifft Legacy-Testsystem) ====&lt;br /&gt;
Zuerst via http://docker.team-opencaching.de/register.php einen neuen Nutzer registrieren. Zwar kommt dann die Meldung, dass der Aktivierungscode per Mail zugsandt wurde, dies passiert aber nie. Der Aktivierungscode muss aus der Test-Datenbank ausgelesen werden.&lt;br /&gt;
Der Code steht in Tabelle &#039;&#039;user&#039;&#039; im Feld &#039;&#039;activation_code&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Mit http://docker.team-opencaching.de/activation.php gelangt man zur Account-Aktivierungsseite. Hier die E-Mail-Adresse und den aus der Datenbank kopierten Aktivierungscode eingeben. Der Account ist nun aktiviert, aber falls der Login nicht funktioniert: siehe andere Fehlermeldung hier auf der Seite weiter unten.&lt;br /&gt;
&lt;br /&gt;
Info: Eventuell wird in Zukunft der MailHog zum Laufen gebracht. Dann werden die vom Server verschickten Emails von diesem abgefangen und man kann die Informationen darin lesen.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Der neu angelegte Benutzer kann sich nicht einloggen und wird immer wieder ohne Meldung auf die Login-Seite geleitet (betrifft Legacy-Testsystem) ====&lt;br /&gt;
Die exakte Ursache ist nicht bekannt. Abhilfe kann geschaffen werden, wenn beim entsprechenden Nutzer in der Datenbank in der Tabelle &#039;&#039;user&#039;&#039; das Feld &#039;&#039;permanent_login_flag&#039;&#039; auf &#039;&#039;1&#039;&#039; gesetzt wird.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Beim Anlegen des &#039;&#039;zweiten&#039;&#039; Cachelistings kommt eine Fehlermeldung (betrifft Legacy-Testsystem) ====&lt;br /&gt;
Bei einer &#039;&#039;leeren&#039;&#039; Datenbank funktioniert das Setzen und Hochzählen der OC-Codes nicht. Es muss einmal ein OC-Code von Hand gesetzt werden.&lt;br /&gt;
&lt;br /&gt;
Hierzu auf dem Testserver ein Listing anlegen. Dann für diesen Cache in der Datenbank in der Tabelle &#039;&#039;caches&#039;&#039; das Feld &#039;&#039;wp_oc&#039;&#039; auf einen initialen Wert ändern, z.B. &#039;&#039;OC1234&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Beim Erstellen/Speichern eines Cachelistings kommen mehrere  Fehlermeldungen, u.a. “Warning: A non-numeric value encountered in /app/htdocs/newcache.php on line 1025” (betrifft Legacy-Testsystem) ====&lt;br /&gt;
[[Image:Fehlerhandbuch Domain 01.png|500px]]&lt;br /&gt;
&lt;br /&gt;
Zuerst muss geschaut werden, ob eventuell der vorige Abschnitt (“Beim Anlegen des zweiten Cachelistings kommt eine Fehlermeldung“) zutrifft. Wurden die dort beschriebenen Maßnahmen bereits umgesetzt, kommt es zwar trotzdem zur Fehlermeldung, das Listing wurde aber erfolgreich angelegt bzw. gespeichert. (Seite neu laden)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Es kann kein Logbild hochgeladen werden (betrifft Legacy-Testsystem) ====&lt;br /&gt;
Sobald man ein Logbild hochladen möchte, erscheint eine Fehlermeldung&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;Warning: move_uploaded_file(): Unable to move &#039;/tmp/phpGmSzpi&#039; to &#039;/application/htdocs/config2/../images/uploads/700770A6-C101-11EA-BA77-0242AC120005.jpg&#039; in /application/htdocs/lib2/logic/picture.class.php on line 856&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Abhilfe: (noch) keine Ahnung. Die Bilder wurden aber trotzdem hochgeladen.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Bei Anlegen/Editieren eines Listings funktioniert die Attributeauswahl nicht (betrifft Legacy-Testsystem) ====&lt;br /&gt;
Editiert man ein Listing, stehen nicht alle Attribute zur Verfügung bzw. es können nicht alle Attribute ausgewählt werden. &lt;br /&gt;
&lt;br /&gt;
Abhilfe: (noch) keine Ahnung.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Das Länderauswahlfeld rechts oben auf der Seite ist leer und funktioniert nicht. (betrifft Legacy-Testsystem) ====&lt;br /&gt;
Alle php-Dateien im Cacheverzeichnis htdocs/var/cache2 müssen gelöscht werden.&lt;br /&gt;
&lt;br /&gt;
Das Vorgehen Unter Linux:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;./psh.phar docker:stop&lt;br /&gt;
rm htdocs/var/cache2/*.inc.php&lt;br /&gt;
./psh.phar docker:start&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Es kann nicht auf die Domains docker.team-opencaching.de oder try.docker.team-opencaching.de zugegriffen werden. ====&lt;br /&gt;
Normalerweise sollte der Zugriff nach Installation der Testumgebung automatisch funktionieren. Sollte das nicht der Fall sein, kann mittels Anpassung der hosts-Datei ein Workaround geschaffen werden:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;127.0.0.1	docker.team-opencaching.de&lt;br /&gt;
127.0.0.1	try.docker.team-opencaching.de&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Abschalten von “NOTICE”-Meldungen. (betrifft Legacy-Testsystem) ====&lt;br /&gt;
Aufgrund diverser (Smarty- und PHP-)Updates werden vormals ignorierte Probleme nun mit einer “NOTICE”-Meldung kenntlich gemacht. Um die Meldungen zu unterdrücken, kann in das error_reporting Level geändert werden.&lt;br /&gt;
&lt;br /&gt;
Beispiele für Fehlermeldungen:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;Notice: Undefined index: error_password_not_ok in /app/htdocs/var/cache2/smarty/compiled/..&lt;br /&gt;
Notice: Trying to get property &#039;value&#039; of non-object in /app/..&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Abhilfe:&lt;br /&gt;
Bis Smarty 3.x: In der Datei /htdocs/vendor/smarty/smarty/libs/Smarty.class.php die Zeile mit $error_reporting ändern auf den nachfolgenden Code. Die Änderung ist nicht git-relevant und geht nach jedem “./psh.phar docker:start-clean” verloren.&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;public $error_reporting = E_ALL &amp;amp; ~E_NOTICE;&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ab Smarty 3.x und 4.x: In der Datei /htdocs/lib2/common.inc.php die obere Zeile (PHP_DEBUG_ON) mit $error_reporting ändern auf den nachfolgenden Code. Die Änderung ist permanent und muss vor einem Commit rückgängig gemacht werden, da sie sonst im github Repository landet.&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;ini_set(&#039;error_reporting&#039;, E_ALL &amp;amp; ~E_NOTICE);&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== [gelöst] Die Übersetzungen funktionieren nicht. Meist wird nur Englischer Text angezeigt. (betrifft Legacy-Testsystem) ====&lt;br /&gt;
Die vorhandenen Fremdsprachen werden auf dem Testsystem nicht korrekt dargestellt. Meistens wird nur der Englische Text oder ein Mischmasch aus Englisch und eingestellter Sprache angezeigt.&lt;br /&gt;
&lt;br /&gt;
Abhilfe: im docker:start Skript wurde eine fehlende Komponente ergänzt, welche nun automatisch mitinstalliert wird. Dadurch werden die Sprachdateien korrekt erzeugt und die Übersetzungen funktionieren.&lt;br /&gt;
&lt;br /&gt;
Siehe auch: [[https://opencaching.atlassian.net/browse/RED-1278|RED-1278: Die Übersetzungen funktionieren auf dem Testserver nicht]]&lt;br /&gt;
Dieser Fehler sollte somit nicht mehr auftauchen.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== [gelöst] Beim Löschen von Logs kommt eine Fehlermeldung “This log entry has been created on another Opencaching website. The cache can only be edited there.” ====&lt;br /&gt;
Auf dem Testserver werden die Logs laut Datenbank (Tabelle &#039;&#039;cache_logs&#039;&#039;, Spalte &#039;&#039;nodes&#039;&#039;) als &#039;&#039;node=5&#039;&#039; gespeichert, obwohl es laut Tabelle &#039;&#039;nodes&#039;&#039; diese Ziffer gar nicht gibt.&lt;br /&gt;
&lt;br /&gt;
Um Logs wieder über die normale Loglöschenfunktion löschen zu können, gibt es mehrere Möglichkeiten:&lt;br /&gt;
# In der Datenbanktabelle ‘cache_logs’ den Eintrag in Spalte ‘nodes’ auf 4 ändern. (Dies entspricht der ‘Local Development’-Umgebung (siehe Tabelle ‘nodes’)).&lt;br /&gt;
# In der Datei ‘/dev-ops/local.team-opencaching.de/templates/config2-settings.inc.tpl.php&#039; den Eintrag ‘$opt[&#039;logic&#039;][&#039;node&#039;][&#039;id&#039;] = 5;’ ändern auf &#039;$opt[&#039;logic&#039;][&#039;node&#039;][&#039;id&#039;] = 4;’ und das docker:init Script ausführen&lt;br /&gt;
# Der Pull [[https://github.com/OpencachingDeutschland/oc-server3/pull/830|Pull Request #830 changed node information from 5 to 4]]  behebt das Problem.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Entwicklung|Fehlerhandbuch ]]&lt;/div&gt;</summary>
		<author><name>Fraggle</name></author>
	</entry>
	<entry>
		<id>https://wiki.opencaching.de/index.php?title=Entwicklungsumgebung/Fehlerhandbuch&amp;diff=8012</id>
		<title>Entwicklungsumgebung/Fehlerhandbuch</title>
		<link rel="alternate" type="text/html" href="https://wiki.opencaching.de/index.php?title=Entwicklungsumgebung/Fehlerhandbuch&amp;diff=8012"/>
		<updated>2025-09-01T17:02:20Z</updated>

		<summary type="html">&lt;p&gt;Fraggle: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Während der Installation der Programme oder Einrichtung der Testumgebung kann es zu diversen Fehlern und Meldungen kommen. Im Folgenden sind bereits bekannte Meldungen aufgelistet, die bei einer schnellen Behebung helfen sollen.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Fehlermeldungen während der Paketinstallation ==&lt;br /&gt;
==== Während der Installation der benötigten Pakete, kommt es zu einer Meldung, dass Abhängigkeiten mit dem ‘libdvd-pkg’ Paket nicht aufgelöst werden können ====&lt;br /&gt;
&lt;br /&gt;
Eine Rekonfiguration des Pakets schafft Abhilfe:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;sudo dpkg-reconfigure libdvd-pkg&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Fehlermeldungen in Zusammenhang mit der Dockerumgebung ==&lt;br /&gt;
==== Fehler “starting opencaching-webserver .. error” oder “Starting webserver ... error” ====&lt;br /&gt;
Vermutlich läuft im Hintergrund bereits ein anderer Webservice auf Port 80.&lt;br /&gt;
&lt;br /&gt;
Prüfen kann man das mit:&lt;br /&gt;
 netstat -tanp | grep :80&lt;br /&gt;
&lt;br /&gt;
Zum Beispiel ein apache2-Webserver kann gestoppt werden mit:&lt;br /&gt;
 sudo systemctl stop apache2&lt;br /&gt;
&lt;br /&gt;
Damit der apache2 nach einem Rechnerneustart nicht erneut aktiviert wird, kann man ihn generell deaktivieren:&lt;br /&gt;
 sudo systemctl disable apache2&lt;br /&gt;
&lt;br /&gt;
Alternativ lässt sich auch eine [[https://docs.docker.com/compose/extends/|Override-Datei]] für die betroffenen Ports verwenden, was allerdings weitere Komplikationen mit sich führen kann (wie beispielsweise eine nicht funktionierende OKAPI). Aus diesem Grund sollte nach Möglichkeit das Stoppen der Standard-Services für Apache und einen Datenbank-Server vorgezogen werden.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Fehler “W: GPG error: https://dl.yarnpkg.com/debian stable InRelease: The following signatures were invalid: EXPKEYSIG“ ====&lt;br /&gt;
Nach dem Ausführen von ./psh.phar docker:start kommt der Fehler. Hier ist das Zertifikat veraltet. Folgender Befehl löscht das Docker-Image. &lt;br /&gt;
 docker-compose build --pull&lt;br /&gt;
&lt;br /&gt;
Mit einen erneuten ./psh.phar docker:start läuft es wieder durch.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Fehler “ERROR: for opencaching-mariadb  Cannot start service mariadb: driver failed programming external connectivity on endpoint opencaching-mariadb [..] Error starting userland proxy: listen tcp 0.0.0.0:3306: bind: address already in use” ====&lt;br /&gt;
Wenn beim docker:start diese Fehlermeldung kommt, läuft im Hintergrund bereits ein anderer Webservice (z.B. mysql) auf Port 3306.&lt;br /&gt;
&lt;br /&gt;
Prüfen kann man das mit:&lt;br /&gt;
 netstat -tanp | grep :3306&lt;br /&gt;
&lt;br /&gt;
Zum Beispiel ein mysql-Webserver kann gestoppt werden mit:&lt;br /&gt;
 sudo mysqladmin -u root shutdown&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Fehler &amp;quot;The stream or file &amp;quot;/application/htdocs/var/logs/dev/dev.log&amp;quot; could not be opened: failed to open stream: Permission denied&amp;quot; oder ähnlich ====&lt;br /&gt;
Hier scheint der Webserver keine Zugriffsberechtigung auf bestimmte Pfade/Dateien zu haben. Von einem Ändern der Zugriffsberechtigungen, z. B. mittels sudo chmod -R 777 ./var/log, sollte aus Sicherheitsgründen aber Abstand genommen werden.&lt;br /&gt;
&lt;br /&gt;
Helfen kann, die Befehlsfolge&lt;br /&gt;
 ./psh.phar docker:ssh&lt;br /&gt;
 ./psh.phar docker:init&lt;br /&gt;
 exit&lt;br /&gt;
ein weiteres Mal auszuführen.&lt;br /&gt;
&lt;br /&gt;
Falls dies weiterhin keinen Erfolg bringt, können folgende Schritte zum Ändern der Zugriffsberechtigungen angewandt werden:&lt;br /&gt;
# Ermitteln der ID des Containers oc-server3_php-fpm mittels sudo docker ps.&lt;br /&gt;
# Öffnen einer Shell im Container: sudo docker exec -it 45b6e4994fac /bin/bash, wobei 45b6e4994fac die ID des Containers ist.&lt;br /&gt;
# In der Container-Shell chmod -R 777 /application/htdocs/var/logs/dev/ ausführen.&lt;br /&gt;
# Die Container-Shell regulär mittels exit verlassen.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Host-Mismatch bei Aufruf der OKAPI mit Port-Override ====&lt;br /&gt;
Falls in einer Override-Datei Ports überschrieben werden (siehe oben), funktioniert die OKAPI möglicherweise nicht richtig - stattdessen erscheint ein Hinweis auf einen Port-Mismatch. Dies kann auf folgende Art und Weise behoben werden:&lt;br /&gt;
# Ermitteln der ID des Containers &#039;&#039;oc-server3_php-fpm&#039;&#039; mittels &#039;&#039;sudo docker ps&#039;&#039;.&lt;br /&gt;
# Öffnen einer Shell im Container: &#039;&#039;sudo docker exec -it 45b6e4994fac /bin/bash&#039;&#039;, wobei 45b6e4994fac die ID des Containers ist.&lt;br /&gt;
# Im Container einen Editor installieren, beispielsweise nano. Da der Container auf Ubuntu basiert, funktioniert dies mittels &#039;&#039;apt-get update &amp;amp;&amp;amp; apt-get install nano&#039;&#039;.&lt;br /&gt;
# Die passende Konfigurationsdatei mittels des Editors im Container öffnen, beispielsweise mittels &#039;&#039;nano /application/htdocs/config2/settings.inc.php.&#039;&#039;&lt;br /&gt;
# Setzen von &#039;&#039;$dev_baseurl = &#039;http://docker.team-opencaching.de:2200&#039;;&#039;&#039; und anschließendes Speichern der Datei. Hierbei ist 2200 der Port, der statt Port 80 für den Webserver in der Override-Datei konfiguriert worden ist.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Während docker:init kommt es im Abschnitt (3/31) zu einer Meldung “&amp;gt; mysql -uroot -proot -hmariadb -e &amp;quot;DROP DATABASE IF EXISTS opencaching&amp;quot; ERROR 2005 (HY000): Unknown MySQL server host &#039;mariadb&#039; (-3).“ ====&lt;br /&gt;
Abhilfe: &#039;&#039;./psh.phar docker:init&#039;&#039; darf nicht außerhalb des Dockercontainers aufgerufen werden.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Während docker:init kommt es im Abschnitt (13/31) zu einer Meldung “PHP Fatal error: .. __toString() must not throw an exception ..“ ====&lt;br /&gt;
Die Ursache ist nicht bekannt. Hier hilft aktuell nur ein Workaround, in dem die Exception im Script auskommentiert wird.&lt;br /&gt;
&lt;br /&gt;
Hierzu in der Datei &#039;&#039;../htdocs/vendor/symfony/symfony/src/Symfony/Component/DependencyInjection/Compiler/AutowirePass.php&#039;&#039; die Zeile 236 &#039;&#039;throw new AutoWiringFailedException&#039;&#039; auskommentieren. Die Datei ist allerdings erst nach dem Ausführens von docker:init vorhanden.&lt;br /&gt;
&lt;br /&gt;
Siehe auch Ticket: [[https://opencaching.atlassian.net/browse/OCC-90|OCC-90: Exception error during docker:init]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Docker Services neu initialisieren, z.B. bei “&#039;&#039;W: GPG error:  stable InRelease: The following signatures were invalid: EXPKEYSIG 23E7166788B63E1E Yarn Packaging &amp;lt;yarn@dan.cx&amp;gt;&#039;&#039;“ ====&lt;br /&gt;
Treten während eines docker:init neue, merkwürdige und nicht näher spezifizierbare Fehler auf, kann es helfen, die Dockercontainer neu zu initialisieren mittels:&lt;br /&gt;
 docker-compose build --pull&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== z.B. bei Update auf Symfony 5.2 kommt während docker:start-clean der Fehler &#039;&#039;”mv: cannot stat &#039;/root/.symfony/bin/symfony&#039;: No such file or directory Service &#039;webserver&#039; failed to build: The command &#039;/bin/sh -c mv /root/.symfony/bin/symfony /usr/local/bin/symfony&#039; returned a non-zero code: 1&amp;quot;&#039;&#039; ====&lt;br /&gt;
In diesem Fall in der Datei &#039;&#039;docker/httpd/Dockerfile&#039;&#039; die fehlerverursachende Zeile &lt;br /&gt;
  RUN mv /root/.symfony/bin/symfony /usr/local/bin/symfony&lt;br /&gt;
auskommentieren und docker:start-clean erneut laufen lassen.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Während docker:start-clean: &#039;&#039;&amp;quot;\Doctrine\Common\Persistence\Mapping\Driver\MappingDriverChain()&amp;quot; not found&#039;&#039; ====&lt;br /&gt;
Dies ist ein Fehler in einem der &#039;&#039;doctrine/*&#039;&#039; Pakete (vermutlich &#039;&#039;doctrine/persistence&#039;&#039;) in bestimmten Paketversionen. Hier hilft, die Datei &#039;&#039;/htdocs/vendor/doctrine/doctrine-bundle/Resources/config/orm.xml&#039;&#039; Zeile 32 zu editieren:&lt;br /&gt;
 &amp;lt;parameter key=&amp;quot;doctrine.orm.metadata.driver_chain.class&amp;quot;&amp;gt;Doctrine\Common\Persistence\Mapping\Driver\MappingDriverChain&amp;lt;/parameter&amp;gt;&lt;br /&gt;
zu&lt;br /&gt;
 &amp;lt;parameter key=&amp;quot;doctrine.orm.metadata.driver_chain.class&amp;quot;&amp;gt;Doctrine\Persistence\Mapping\Driver\MappingDriverChain&amp;lt;/parameter&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Allerdings muss dies zum richtigen Zeitpunkt passieren. Nachdem &#039;&#039;docker:start-clean&#039;&#039; aufgerufen wurde, kurz warten, bis die Pakete heruntergeladen wurden und noch bevor Abschnitt 13/32 anfängt, muss die Datei korrigiert und gespeichert worden sein.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Meldung “DEPRECATED: The legacy builder is deprecated and will be removed in a future release. Install the buildx component to build images with [[https://docs.docker.com/go/buildx/|BuildKit]] ====&lt;br /&gt;
Der Docker build Prozess wurde geändert. Die bisherige Methode wurde ab Dockerversion 23 als “deprecated” markiert und wird in einer zukünftigen Version entfernt. Siehe [[https://docs.docker.com/engine/deprecated/#legacy-builder-for-linux-images|Deprecated Engine Features]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Meldung “ERROR: BuildKit is enabled but the buildx component is missing or broken.“ ====&lt;br /&gt;
Docker Buildkit/buildx soll verwendet werden (DOCKER_BUILDKIT=1), wurde aber nicht installiert.&lt;br /&gt;
&lt;br /&gt;
Abhilfe: Buildkit/buildx Komponente installieren. Vorher müssen aber einige bereits installierte Pakete entfernt werden. Je nach OS gibt es unterschiedliche Anweisungen und Installationswege, siehe hier: [[https://docs.docker.com/engine/install/|Install Docker Engine]]&lt;br /&gt;
&lt;br /&gt;
==== Während docker:start-clean: &#039;&#039;&amp;quot;Browserslist: caniuse-lite is outdated.&amp;quot;&#039;&#039; ====&lt;br /&gt;
Scheinbar wird die “browserslist” nicht automatisch aktualisiert. (Grund? k.A.)&lt;br /&gt;
&lt;br /&gt;
Zum manuellen Update im Docker:ssh eingeben:&lt;br /&gt;
 npx browserslist@latest --update-db&lt;br /&gt;
bzw.&lt;br /&gt;
 npx update-browserslist-db@latest&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Fehlermeldungen beim Zugriff auf die Datenbank ==&lt;br /&gt;
==== Fehlermeldung “ERROR 2002 (HY000): Can&#039;t connect to local MySQL server through socket &#039;/var/run/mysqld/mysqld.sock&#039; (2)” ====&lt;br /&gt;
Es wurde vergessen, den Namen der Datenbank in der Kommandozeile zu übergeben.&lt;br /&gt;
 mysql -uroot -proot -hmariadb opencaching&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Fehlermeldungen beim Zugriff auf die Testserverdomain ==&lt;br /&gt;
==== Vorgehen zum Anlegen eines weiteren Benutzers (betrifft Legacy-Testsystem) ====&lt;br /&gt;
Zuerst via http://docker.team-opencaching.de/register.php einen neuen Nutzer registrieren. Zwar kommt dann die Meldung, dass der Aktivierungscode per Mail zugsandt wurde, dies passiert aber nie. Der Aktivierungscode muss aus der Test-Datenbank ausgelesen werden.&lt;br /&gt;
Der Code steht in Tabelle &#039;&#039;user&#039;&#039; im Feld &#039;&#039;activation_code&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Mit http://docker.team-opencaching.de/activation.php gelangt man zur Account-Aktivierungsseite. Hier die E-Mail-Adresse und den aus der Datenbank kopierten Aktivierungscode eingeben. Der Account ist nun aktiviert, aber falls der Login nicht funktioniert: siehe andere Fehlermeldung hier auf der Seite weiter unten.&lt;br /&gt;
&lt;br /&gt;
Info: Eventuell wird in Zukunft der MailHog zum Laufen gebracht. Dann werden die vom Server verschickten Emails von diesem abgefangen und man kann die Informationen darin lesen.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Der neu angelegte Benutzer kann sich nicht einloggen und wird immer wieder ohne Meldung auf die Login-Seite geleitet (betrifft Legacy-Testsystem) ====&lt;br /&gt;
Die exakte Ursache ist nicht bekannt. Abhilfe kann geschaffen werden, wenn beim entsprechenden Nutzer in der Datenbank in der Tabelle &#039;&#039;user&#039;&#039; das Feld &#039;&#039;permanent_login_flag&#039;&#039; auf &#039;&#039;1&#039;&#039; gesetzt wird.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Beim Anlegen des &#039;&#039;zweiten&#039;&#039; Cachelistings kommt eine Fehlermeldung (betrifft Legacy-Testsystem) ====&lt;br /&gt;
Bei einer &#039;&#039;leeren&#039;&#039; Datenbank funktioniert das Setzen und Hochzählen der OC-Codes nicht. Es muss einmal ein OC-Code von Hand gesetzt werden.&lt;br /&gt;
&lt;br /&gt;
Hierzu auf dem Testserver ein Listing anlegen. Dann für diesen Cache in der Datenbank in der Tabelle &#039;&#039;caches&#039;&#039; das Feld &#039;&#039;wp_oc&#039;&#039; auf einen initialen Wert ändern, z.B. &#039;&#039;OC1234&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Beim Erstellen/Speichern eines Cachelistings kommen mehrere  Fehlermeldungen, u.a. “Warning: A non-numeric value encountered in /app/htdocs/newcache.php on line 1025” (betrifft Legacy-Testsystem) ====&lt;br /&gt;
[[Image:Fehlerhandbuch Domain 01.png|500px]]&lt;br /&gt;
&lt;br /&gt;
Zuerst muss geschaut werden, ob eventuell der vorige Abschnitt (“Beim Anlegen des zweiten Cachelistings kommt eine Fehlermeldung“) zutrifft. Wurden die dort beschriebenen Maßnahmen bereits umgesetzt, kommt es zwar trotzdem zur Fehlermeldung, das Listing wurde aber erfolgreich angelegt bzw. gespeichert. (Seite neu laden)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Es kann kein Logbild hochgeladen werden (betrifft Legacy-Testsystem) ====&lt;br /&gt;
Sobald man ein Logbild hochladen möchte, erscheint eine Fehlermeldung&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;Warning: move_uploaded_file(): Unable to move &#039;/tmp/phpGmSzpi&#039; to &#039;/application/htdocs/config2/../images/uploads/700770A6-C101-11EA-BA77-0242AC120005.jpg&#039; in /application/htdocs/lib2/logic/picture.class.php on line 856&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Abhilfe: (noch) keine Ahnung. Die Bilder wurden aber trotzdem hochgeladen.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Bei Anlegen/Editieren eines Listings funktioniert die Attributeauswahl nicht (betrifft Legacy-Testsystem) ====&lt;br /&gt;
Editiert man ein Listing, stehen nicht alle Attribute zur Verfügung bzw. es können nicht alle Attribute ausgewählt werden. &lt;br /&gt;
&lt;br /&gt;
Abhilfe: (noch) keine Ahnung.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Das Länderauswahlfeld rechts oben auf der Seite ist leer und funktioniert nicht. (betrifft Legacy-Testsystem) ====&lt;br /&gt;
Alle php-Dateien im Cacheverzeichnis htdocs/var/cache2 müssen gelöscht werden.&lt;br /&gt;
&lt;br /&gt;
Das Vorgehen Unter Linux:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;./psh.phar docker:stop&lt;br /&gt;
rm htdocs/var/cache2/*.inc.php&lt;br /&gt;
./psh.phar docker:start&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Es kann nicht auf die Domains docker.team-opencaching.de oder try.docker.team-opencaching.de zugegriffen werden. ====&lt;br /&gt;
Normalerweise sollte der Zugriff nach Installation der Testumgebung automatisch funktionieren. Sollte das nicht der Fall sein, kann mittels Anpassung der hosts-Datei ein Workaround geschaffen werden:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;127.0.0.1	docker.team-opencaching.de&lt;br /&gt;
127.0.0.1	try.docker.team-opencaching.de&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Abschalten von “NOTICE”-Meldungen. (betrifft Legacy-Testsystem) ====&lt;br /&gt;
Aufgrund diverser (Smarty- und PHP-)Updates werden vormals ignorierte Probleme nun mit einer “NOTICE”-Meldung kenntlich gemacht. Um die Meldungen zu unterdrücken, kann in das error_reporting Level geändert werden.&lt;br /&gt;
&lt;br /&gt;
Beispiele für Fehlermeldungen:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;Notice: Undefined index: error_password_not_ok in /app/htdocs/var/cache2/smarty/compiled/..&lt;br /&gt;
Notice: Trying to get property &#039;value&#039; of non-object in /app/..&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Abhilfe:&lt;br /&gt;
Bis Smarty 3.x: In der Datei /htdocs/vendor/smarty/smarty/libs/Smarty.class.php die Zeile mit $error_reporting ändern auf den nachfolgenden Code. Die Änderung ist nicht git-relevant und geht nach jedem “./psh.phar docker:start-clean” verloren.&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;public $error_reporting = E_ALL &amp;amp; ~E_NOTICE;&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ab Smarty 3.x und 4.x: In der Datei /htdocs/lib2/common.inc.php die obere Zeile (PHP_DEBUG_ON) mit $error_reporting ändern auf den nachfolgenden Code. Die Änderung ist permanent und muss vor einem Commit rückgängig gemacht werden, da sie sonst im github Repository landet.&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;ini_set(&#039;error_reporting&#039;, E_ALL &amp;amp; ~E_NOTICE);&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== [gelöst] Die Übersetzungen funktionieren nicht. Meist wird nur Englischer Text angezeigt. (betrifft Legacy-Testsystem) ====&lt;br /&gt;
Die vorhandenen Fremdsprachen werden auf dem Testsystem nicht korrekt dargestellt. Meistens wird nur der Englische Text oder ein Mischmasch aus Englisch und eingestellter Sprache angezeigt.&lt;br /&gt;
&lt;br /&gt;
Abhilfe: im docker:start Skript wurde eine fehlende Komponente ergänzt, welche nun automatisch mitinstalliert wird. Dadurch werden die Sprachdateien korrekt erzeugt und die Übersetzungen funktionieren.&lt;br /&gt;
&lt;br /&gt;
Siehe auch: [[https://opencaching.atlassian.net/browse/RED-1278|RED-1278: Die Übersetzungen funktionieren auf dem Testserver nicht]]&lt;br /&gt;
Dieser Fehler sollte somit nicht mehr auftauchen.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== [gelöst] Beim Löschen von Logs kommt eine Fehlermeldung “This log entry has been created on another Opencaching website. The cache can only be edited there.” ====&lt;br /&gt;
Auf dem Testserver werden die Logs laut Datenbank (Tabelle &#039;&#039;cache_logs&#039;&#039;, Spalte &#039;&#039;nodes&#039;&#039;) als &#039;&#039;node=5&#039;&#039; gespeichert, obwohl es laut Tabelle &#039;&#039;nodes&#039;&#039; diese Ziffer gar nicht gibt.&lt;br /&gt;
&lt;br /&gt;
Um Logs wieder über die normale Loglöschenfunktion löschen zu können, gibt es mehrere Möglichkeiten:&lt;br /&gt;
# In der Datenbanktabelle ‘cache_logs’ den Eintrag in Spalte ‘nodes’ auf 4 ändern. (Dies entspricht der ‘Local Development’-Umgebung (siehe Tabelle ‘nodes’)).&lt;br /&gt;
# In der Datei ‘/dev-ops/local.team-opencaching.de/templates/config2-settings.inc.tpl.php&#039; den Eintrag ‘$opt[&#039;logic&#039;][&#039;node&#039;][&#039;id&#039;] = 5;’ ändern auf &#039;$opt[&#039;logic&#039;][&#039;node&#039;][&#039;id&#039;] = 4;’ und das docker:init Script ausführen&lt;br /&gt;
# Der Pull [[https://github.com/OpencachingDeutschland/oc-server3/pull/830|Pull Request #830 changed node information from 5 to 4]]  behebt das Problem.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Entwicklung|Fehlerhandbuch ]]&lt;/div&gt;</summary>
		<author><name>Fraggle</name></author>
	</entry>
	<entry>
		<id>https://wiki.opencaching.de/index.php?title=Entwicklungsumgebung/Fehlerhandbuch&amp;diff=8011</id>
		<title>Entwicklungsumgebung/Fehlerhandbuch</title>
		<link rel="alternate" type="text/html" href="https://wiki.opencaching.de/index.php?title=Entwicklungsumgebung/Fehlerhandbuch&amp;diff=8011"/>
		<updated>2025-09-01T17:02:06Z</updated>

		<summary type="html">&lt;p&gt;Fraggle: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__TOC__&lt;br /&gt;
__FORCETOC__&lt;br /&gt;
&lt;br /&gt;
Während der Installation der Programme oder Einrichtung der Testumgebung kann es zu diversen Fehlern und Meldungen kommen. Im Folgenden sind bereits bekannte Meldungen aufgelistet, die bei einer schnellen Behebung helfen sollen.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Fehlermeldungen während der Paketinstallation ==&lt;br /&gt;
==== Während der Installation der benötigten Pakete, kommt es zu einer Meldung, dass Abhängigkeiten mit dem ‘libdvd-pkg’ Paket nicht aufgelöst werden können ====&lt;br /&gt;
&lt;br /&gt;
Eine Rekonfiguration des Pakets schafft Abhilfe:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;sudo dpkg-reconfigure libdvd-pkg&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Fehlermeldungen in Zusammenhang mit der Dockerumgebung ==&lt;br /&gt;
==== Fehler “starting opencaching-webserver .. error” oder “Starting webserver ... error” ====&lt;br /&gt;
Vermutlich läuft im Hintergrund bereits ein anderer Webservice auf Port 80.&lt;br /&gt;
&lt;br /&gt;
Prüfen kann man das mit:&lt;br /&gt;
 netstat -tanp | grep :80&lt;br /&gt;
&lt;br /&gt;
Zum Beispiel ein apache2-Webserver kann gestoppt werden mit:&lt;br /&gt;
 sudo systemctl stop apache2&lt;br /&gt;
&lt;br /&gt;
Damit der apache2 nach einem Rechnerneustart nicht erneut aktiviert wird, kann man ihn generell deaktivieren:&lt;br /&gt;
 sudo systemctl disable apache2&lt;br /&gt;
&lt;br /&gt;
Alternativ lässt sich auch eine [[https://docs.docker.com/compose/extends/|Override-Datei]] für die betroffenen Ports verwenden, was allerdings weitere Komplikationen mit sich führen kann (wie beispielsweise eine nicht funktionierende OKAPI). Aus diesem Grund sollte nach Möglichkeit das Stoppen der Standard-Services für Apache und einen Datenbank-Server vorgezogen werden.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Fehler “W: GPG error: https://dl.yarnpkg.com/debian stable InRelease: The following signatures were invalid: EXPKEYSIG“ ====&lt;br /&gt;
Nach dem Ausführen von ./psh.phar docker:start kommt der Fehler. Hier ist das Zertifikat veraltet. Folgender Befehl löscht das Docker-Image. &lt;br /&gt;
 docker-compose build --pull&lt;br /&gt;
&lt;br /&gt;
Mit einen erneuten ./psh.phar docker:start läuft es wieder durch.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Fehler “ERROR: for opencaching-mariadb  Cannot start service mariadb: driver failed programming external connectivity on endpoint opencaching-mariadb [..] Error starting userland proxy: listen tcp 0.0.0.0:3306: bind: address already in use” ====&lt;br /&gt;
Wenn beim docker:start diese Fehlermeldung kommt, läuft im Hintergrund bereits ein anderer Webservice (z.B. mysql) auf Port 3306.&lt;br /&gt;
&lt;br /&gt;
Prüfen kann man das mit:&lt;br /&gt;
 netstat -tanp | grep :3306&lt;br /&gt;
&lt;br /&gt;
Zum Beispiel ein mysql-Webserver kann gestoppt werden mit:&lt;br /&gt;
 sudo mysqladmin -u root shutdown&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Fehler &amp;quot;The stream or file &amp;quot;/application/htdocs/var/logs/dev/dev.log&amp;quot; could not be opened: failed to open stream: Permission denied&amp;quot; oder ähnlich ====&lt;br /&gt;
Hier scheint der Webserver keine Zugriffsberechtigung auf bestimmte Pfade/Dateien zu haben. Von einem Ändern der Zugriffsberechtigungen, z. B. mittels sudo chmod -R 777 ./var/log, sollte aus Sicherheitsgründen aber Abstand genommen werden.&lt;br /&gt;
&lt;br /&gt;
Helfen kann, die Befehlsfolge&lt;br /&gt;
 ./psh.phar docker:ssh&lt;br /&gt;
 ./psh.phar docker:init&lt;br /&gt;
 exit&lt;br /&gt;
ein weiteres Mal auszuführen.&lt;br /&gt;
&lt;br /&gt;
Falls dies weiterhin keinen Erfolg bringt, können folgende Schritte zum Ändern der Zugriffsberechtigungen angewandt werden:&lt;br /&gt;
# Ermitteln der ID des Containers oc-server3_php-fpm mittels sudo docker ps.&lt;br /&gt;
# Öffnen einer Shell im Container: sudo docker exec -it 45b6e4994fac /bin/bash, wobei 45b6e4994fac die ID des Containers ist.&lt;br /&gt;
# In der Container-Shell chmod -R 777 /application/htdocs/var/logs/dev/ ausführen.&lt;br /&gt;
# Die Container-Shell regulär mittels exit verlassen.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Host-Mismatch bei Aufruf der OKAPI mit Port-Override ====&lt;br /&gt;
Falls in einer Override-Datei Ports überschrieben werden (siehe oben), funktioniert die OKAPI möglicherweise nicht richtig - stattdessen erscheint ein Hinweis auf einen Port-Mismatch. Dies kann auf folgende Art und Weise behoben werden:&lt;br /&gt;
# Ermitteln der ID des Containers &#039;&#039;oc-server3_php-fpm&#039;&#039; mittels &#039;&#039;sudo docker ps&#039;&#039;.&lt;br /&gt;
# Öffnen einer Shell im Container: &#039;&#039;sudo docker exec -it 45b6e4994fac /bin/bash&#039;&#039;, wobei 45b6e4994fac die ID des Containers ist.&lt;br /&gt;
# Im Container einen Editor installieren, beispielsweise nano. Da der Container auf Ubuntu basiert, funktioniert dies mittels &#039;&#039;apt-get update &amp;amp;&amp;amp; apt-get install nano&#039;&#039;.&lt;br /&gt;
# Die passende Konfigurationsdatei mittels des Editors im Container öffnen, beispielsweise mittels &#039;&#039;nano /application/htdocs/config2/settings.inc.php.&#039;&#039;&lt;br /&gt;
# Setzen von &#039;&#039;$dev_baseurl = &#039;http://docker.team-opencaching.de:2200&#039;;&#039;&#039; und anschließendes Speichern der Datei. Hierbei ist 2200 der Port, der statt Port 80 für den Webserver in der Override-Datei konfiguriert worden ist.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Während docker:init kommt es im Abschnitt (3/31) zu einer Meldung “&amp;gt; mysql -uroot -proot -hmariadb -e &amp;quot;DROP DATABASE IF EXISTS opencaching&amp;quot; ERROR 2005 (HY000): Unknown MySQL server host &#039;mariadb&#039; (-3).“ ====&lt;br /&gt;
Abhilfe: &#039;&#039;./psh.phar docker:init&#039;&#039; darf nicht außerhalb des Dockercontainers aufgerufen werden.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Während docker:init kommt es im Abschnitt (13/31) zu einer Meldung “PHP Fatal error: .. __toString() must not throw an exception ..“ ====&lt;br /&gt;
Die Ursache ist nicht bekannt. Hier hilft aktuell nur ein Workaround, in dem die Exception im Script auskommentiert wird.&lt;br /&gt;
&lt;br /&gt;
Hierzu in der Datei &#039;&#039;../htdocs/vendor/symfony/symfony/src/Symfony/Component/DependencyInjection/Compiler/AutowirePass.php&#039;&#039; die Zeile 236 &#039;&#039;throw new AutoWiringFailedException&#039;&#039; auskommentieren. Die Datei ist allerdings erst nach dem Ausführens von docker:init vorhanden.&lt;br /&gt;
&lt;br /&gt;
Siehe auch Ticket: [[https://opencaching.atlassian.net/browse/OCC-90|OCC-90: Exception error during docker:init]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Docker Services neu initialisieren, z.B. bei “&#039;&#039;W: GPG error:  stable InRelease: The following signatures were invalid: EXPKEYSIG 23E7166788B63E1E Yarn Packaging &amp;lt;yarn@dan.cx&amp;gt;&#039;&#039;“ ====&lt;br /&gt;
Treten während eines docker:init neue, merkwürdige und nicht näher spezifizierbare Fehler auf, kann es helfen, die Dockercontainer neu zu initialisieren mittels:&lt;br /&gt;
 docker-compose build --pull&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== z.B. bei Update auf Symfony 5.2 kommt während docker:start-clean der Fehler &#039;&#039;”mv: cannot stat &#039;/root/.symfony/bin/symfony&#039;: No such file or directory Service &#039;webserver&#039; failed to build: The command &#039;/bin/sh -c mv /root/.symfony/bin/symfony /usr/local/bin/symfony&#039; returned a non-zero code: 1&amp;quot;&#039;&#039; ====&lt;br /&gt;
In diesem Fall in der Datei &#039;&#039;docker/httpd/Dockerfile&#039;&#039; die fehlerverursachende Zeile &lt;br /&gt;
  RUN mv /root/.symfony/bin/symfony /usr/local/bin/symfony&lt;br /&gt;
auskommentieren und docker:start-clean erneut laufen lassen.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Während docker:start-clean: &#039;&#039;&amp;quot;\Doctrine\Common\Persistence\Mapping\Driver\MappingDriverChain()&amp;quot; not found&#039;&#039; ====&lt;br /&gt;
Dies ist ein Fehler in einem der &#039;&#039;doctrine/*&#039;&#039; Pakete (vermutlich &#039;&#039;doctrine/persistence&#039;&#039;) in bestimmten Paketversionen. Hier hilft, die Datei &#039;&#039;/htdocs/vendor/doctrine/doctrine-bundle/Resources/config/orm.xml&#039;&#039; Zeile 32 zu editieren:&lt;br /&gt;
 &amp;lt;parameter key=&amp;quot;doctrine.orm.metadata.driver_chain.class&amp;quot;&amp;gt;Doctrine\Common\Persistence\Mapping\Driver\MappingDriverChain&amp;lt;/parameter&amp;gt;&lt;br /&gt;
zu&lt;br /&gt;
 &amp;lt;parameter key=&amp;quot;doctrine.orm.metadata.driver_chain.class&amp;quot;&amp;gt;Doctrine\Persistence\Mapping\Driver\MappingDriverChain&amp;lt;/parameter&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Allerdings muss dies zum richtigen Zeitpunkt passieren. Nachdem &#039;&#039;docker:start-clean&#039;&#039; aufgerufen wurde, kurz warten, bis die Pakete heruntergeladen wurden und noch bevor Abschnitt 13/32 anfängt, muss die Datei korrigiert und gespeichert worden sein.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Meldung “DEPRECATED: The legacy builder is deprecated and will be removed in a future release. Install the buildx component to build images with [[https://docs.docker.com/go/buildx/|BuildKit]] ====&lt;br /&gt;
Der Docker build Prozess wurde geändert. Die bisherige Methode wurde ab Dockerversion 23 als “deprecated” markiert und wird in einer zukünftigen Version entfernt. Siehe [[https://docs.docker.com/engine/deprecated/#legacy-builder-for-linux-images|Deprecated Engine Features]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Meldung “ERROR: BuildKit is enabled but the buildx component is missing or broken.“ ====&lt;br /&gt;
Docker Buildkit/buildx soll verwendet werden (DOCKER_BUILDKIT=1), wurde aber nicht installiert.&lt;br /&gt;
&lt;br /&gt;
Abhilfe: Buildkit/buildx Komponente installieren. Vorher müssen aber einige bereits installierte Pakete entfernt werden. Je nach OS gibt es unterschiedliche Anweisungen und Installationswege, siehe hier: [[https://docs.docker.com/engine/install/|Install Docker Engine]]&lt;br /&gt;
&lt;br /&gt;
==== Während docker:start-clean: &#039;&#039;&amp;quot;Browserslist: caniuse-lite is outdated.&amp;quot;&#039;&#039; ====&lt;br /&gt;
Scheinbar wird die “browserslist” nicht automatisch aktualisiert. (Grund? k.A.)&lt;br /&gt;
&lt;br /&gt;
Zum manuellen Update im Docker:ssh eingeben:&lt;br /&gt;
 npx browserslist@latest --update-db&lt;br /&gt;
bzw.&lt;br /&gt;
 npx update-browserslist-db@latest&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Fehlermeldungen beim Zugriff auf die Datenbank ==&lt;br /&gt;
==== Fehlermeldung “ERROR 2002 (HY000): Can&#039;t connect to local MySQL server through socket &#039;/var/run/mysqld/mysqld.sock&#039; (2)” ====&lt;br /&gt;
Es wurde vergessen, den Namen der Datenbank in der Kommandozeile zu übergeben.&lt;br /&gt;
 mysql -uroot -proot -hmariadb opencaching&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Fehlermeldungen beim Zugriff auf die Testserverdomain ==&lt;br /&gt;
==== Vorgehen zum Anlegen eines weiteren Benutzers (betrifft Legacy-Testsystem) ====&lt;br /&gt;
Zuerst via http://docker.team-opencaching.de/register.php einen neuen Nutzer registrieren. Zwar kommt dann die Meldung, dass der Aktivierungscode per Mail zugsandt wurde, dies passiert aber nie. Der Aktivierungscode muss aus der Test-Datenbank ausgelesen werden.&lt;br /&gt;
Der Code steht in Tabelle &#039;&#039;user&#039;&#039; im Feld &#039;&#039;activation_code&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Mit http://docker.team-opencaching.de/activation.php gelangt man zur Account-Aktivierungsseite. Hier die E-Mail-Adresse und den aus der Datenbank kopierten Aktivierungscode eingeben. Der Account ist nun aktiviert, aber falls der Login nicht funktioniert: siehe andere Fehlermeldung hier auf der Seite weiter unten.&lt;br /&gt;
&lt;br /&gt;
Info: Eventuell wird in Zukunft der MailHog zum Laufen gebracht. Dann werden die vom Server verschickten Emails von diesem abgefangen und man kann die Informationen darin lesen.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Der neu angelegte Benutzer kann sich nicht einloggen und wird immer wieder ohne Meldung auf die Login-Seite geleitet (betrifft Legacy-Testsystem) ====&lt;br /&gt;
Die exakte Ursache ist nicht bekannt. Abhilfe kann geschaffen werden, wenn beim entsprechenden Nutzer in der Datenbank in der Tabelle &#039;&#039;user&#039;&#039; das Feld &#039;&#039;permanent_login_flag&#039;&#039; auf &#039;&#039;1&#039;&#039; gesetzt wird.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Beim Anlegen des &#039;&#039;zweiten&#039;&#039; Cachelistings kommt eine Fehlermeldung (betrifft Legacy-Testsystem) ====&lt;br /&gt;
Bei einer &#039;&#039;leeren&#039;&#039; Datenbank funktioniert das Setzen und Hochzählen der OC-Codes nicht. Es muss einmal ein OC-Code von Hand gesetzt werden.&lt;br /&gt;
&lt;br /&gt;
Hierzu auf dem Testserver ein Listing anlegen. Dann für diesen Cache in der Datenbank in der Tabelle &#039;&#039;caches&#039;&#039; das Feld &#039;&#039;wp_oc&#039;&#039; auf einen initialen Wert ändern, z.B. &#039;&#039;OC1234&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Beim Erstellen/Speichern eines Cachelistings kommen mehrere  Fehlermeldungen, u.a. “Warning: A non-numeric value encountered in /app/htdocs/newcache.php on line 1025” (betrifft Legacy-Testsystem) ====&lt;br /&gt;
[[Image:Fehlerhandbuch Domain 01.png|500px]]&lt;br /&gt;
&lt;br /&gt;
Zuerst muss geschaut werden, ob eventuell der vorige Abschnitt (“Beim Anlegen des zweiten Cachelistings kommt eine Fehlermeldung“) zutrifft. Wurden die dort beschriebenen Maßnahmen bereits umgesetzt, kommt es zwar trotzdem zur Fehlermeldung, das Listing wurde aber erfolgreich angelegt bzw. gespeichert. (Seite neu laden)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Es kann kein Logbild hochgeladen werden (betrifft Legacy-Testsystem) ====&lt;br /&gt;
Sobald man ein Logbild hochladen möchte, erscheint eine Fehlermeldung&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;Warning: move_uploaded_file(): Unable to move &#039;/tmp/phpGmSzpi&#039; to &#039;/application/htdocs/config2/../images/uploads/700770A6-C101-11EA-BA77-0242AC120005.jpg&#039; in /application/htdocs/lib2/logic/picture.class.php on line 856&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Abhilfe: (noch) keine Ahnung. Die Bilder wurden aber trotzdem hochgeladen.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Bei Anlegen/Editieren eines Listings funktioniert die Attributeauswahl nicht (betrifft Legacy-Testsystem) ====&lt;br /&gt;
Editiert man ein Listing, stehen nicht alle Attribute zur Verfügung bzw. es können nicht alle Attribute ausgewählt werden. &lt;br /&gt;
&lt;br /&gt;
Abhilfe: (noch) keine Ahnung.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Das Länderauswahlfeld rechts oben auf der Seite ist leer und funktioniert nicht. (betrifft Legacy-Testsystem) ====&lt;br /&gt;
Alle php-Dateien im Cacheverzeichnis htdocs/var/cache2 müssen gelöscht werden.&lt;br /&gt;
&lt;br /&gt;
Das Vorgehen Unter Linux:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;./psh.phar docker:stop&lt;br /&gt;
rm htdocs/var/cache2/*.inc.php&lt;br /&gt;
./psh.phar docker:start&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Es kann nicht auf die Domains docker.team-opencaching.de oder try.docker.team-opencaching.de zugegriffen werden. ====&lt;br /&gt;
Normalerweise sollte der Zugriff nach Installation der Testumgebung automatisch funktionieren. Sollte das nicht der Fall sein, kann mittels Anpassung der hosts-Datei ein Workaround geschaffen werden:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;127.0.0.1	docker.team-opencaching.de&lt;br /&gt;
127.0.0.1	try.docker.team-opencaching.de&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Abschalten von “NOTICE”-Meldungen. (betrifft Legacy-Testsystem) ====&lt;br /&gt;
Aufgrund diverser (Smarty- und PHP-)Updates werden vormals ignorierte Probleme nun mit einer “NOTICE”-Meldung kenntlich gemacht. Um die Meldungen zu unterdrücken, kann in das error_reporting Level geändert werden.&lt;br /&gt;
&lt;br /&gt;
Beispiele für Fehlermeldungen:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;Notice: Undefined index: error_password_not_ok in /app/htdocs/var/cache2/smarty/compiled/..&lt;br /&gt;
Notice: Trying to get property &#039;value&#039; of non-object in /app/..&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Abhilfe:&lt;br /&gt;
Bis Smarty 3.x: In der Datei /htdocs/vendor/smarty/smarty/libs/Smarty.class.php die Zeile mit $error_reporting ändern auf den nachfolgenden Code. Die Änderung ist nicht git-relevant und geht nach jedem “./psh.phar docker:start-clean” verloren.&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;public $error_reporting = E_ALL &amp;amp; ~E_NOTICE;&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ab Smarty 3.x und 4.x: In der Datei /htdocs/lib2/common.inc.php die obere Zeile (PHP_DEBUG_ON) mit $error_reporting ändern auf den nachfolgenden Code. Die Änderung ist permanent und muss vor einem Commit rückgängig gemacht werden, da sie sonst im github Repository landet.&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;ini_set(&#039;error_reporting&#039;, E_ALL &amp;amp; ~E_NOTICE);&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== [gelöst] Die Übersetzungen funktionieren nicht. Meist wird nur Englischer Text angezeigt. (betrifft Legacy-Testsystem) ====&lt;br /&gt;
Die vorhandenen Fremdsprachen werden auf dem Testsystem nicht korrekt dargestellt. Meistens wird nur der Englische Text oder ein Mischmasch aus Englisch und eingestellter Sprache angezeigt.&lt;br /&gt;
&lt;br /&gt;
Abhilfe: im docker:start Skript wurde eine fehlende Komponente ergänzt, welche nun automatisch mitinstalliert wird. Dadurch werden die Sprachdateien korrekt erzeugt und die Übersetzungen funktionieren.&lt;br /&gt;
&lt;br /&gt;
Siehe auch: [[https://opencaching.atlassian.net/browse/RED-1278|RED-1278: Die Übersetzungen funktionieren auf dem Testserver nicht]]&lt;br /&gt;
Dieser Fehler sollte somit nicht mehr auftauchen.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== [gelöst] Beim Löschen von Logs kommt eine Fehlermeldung “This log entry has been created on another Opencaching website. The cache can only be edited there.” ====&lt;br /&gt;
Auf dem Testserver werden die Logs laut Datenbank (Tabelle &#039;&#039;cache_logs&#039;&#039;, Spalte &#039;&#039;nodes&#039;&#039;) als &#039;&#039;node=5&#039;&#039; gespeichert, obwohl es laut Tabelle &#039;&#039;nodes&#039;&#039; diese Ziffer gar nicht gibt.&lt;br /&gt;
&lt;br /&gt;
Um Logs wieder über die normale Loglöschenfunktion löschen zu können, gibt es mehrere Möglichkeiten:&lt;br /&gt;
# In der Datenbanktabelle ‘cache_logs’ den Eintrag in Spalte ‘nodes’ auf 4 ändern. (Dies entspricht der ‘Local Development’-Umgebung (siehe Tabelle ‘nodes’)).&lt;br /&gt;
# In der Datei ‘/dev-ops/local.team-opencaching.de/templates/config2-settings.inc.tpl.php&#039; den Eintrag ‘$opt[&#039;logic&#039;][&#039;node&#039;][&#039;id&#039;] = 5;’ ändern auf &#039;$opt[&#039;logic&#039;][&#039;node&#039;][&#039;id&#039;] = 4;’ und das docker:init Script ausführen&lt;br /&gt;
# Der Pull [[https://github.com/OpencachingDeutschland/oc-server3/pull/830|Pull Request #830 changed node information from 5 to 4]]  behebt das Problem.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Entwicklung|Fehlerhandbuch ]]&lt;/div&gt;</summary>
		<author><name>Fraggle</name></author>
	</entry>
	<entry>
		<id>https://wiki.opencaching.de/index.php?title=Entwicklungsumgebung_einrichten&amp;diff=8010</id>
		<title>Entwicklungsumgebung einrichten</title>
		<link rel="alternate" type="text/html" href="https://wiki.opencaching.de/index.php?title=Entwicklungsumgebung_einrichten&amp;diff=8010"/>
		<updated>2025-08-31T19:47:35Z</updated>

		<summary type="html">&lt;p&gt;Fraggle: Anpassung host Datei auch unter Linux&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Das Einrichten der Testumgebung erfolgt in mehreren Schritten, die im folgenden beschrieben sind. Falls es dabei zu unerwarteten Fehlermeldungen kommt, bitte die letzten Schritte noch einmal genau anschauen und gegebenenfalls wiederholen. Auch ein Blick ins Fehlerhandbuch hilft meistens, da bereits viele Fallstricke entdeckt und beschrieben wurden.&lt;br /&gt;
&lt;br /&gt;
== 1. Das Betriebssystem vorbereiten, entweder Linux oder Windows ==&lt;br /&gt;
=== Windows 10 ===&lt;br /&gt;
==== Programme installieren ====&lt;br /&gt;
Unter Windows ist es standardmäßig nicht möglich, “einfach“ die Linux Distribution Ubuntu zu installieren. Dazu muss vorab erst das WSL2 aktiviert / installiert werden werden (Punkt 1). Im Anschluss ist eine Installation von Ubuntu (18.04 oder 20.04 oder höher) möglich. Zudem muss Docker installiert werden, in dem dann die Entwicklungsumgebung laufen kann (Punkt 2).&lt;br /&gt;
&lt;br /&gt;
# WSL2 unter Windows10 aktivieren und Ubuntu 20.04 installieren: &lt;br /&gt;
## Aus dem Microsoft-Store: https://aka.ms/wslstorepage (verfügbar seit Nov. 2022) &lt;br /&gt;
## Manuell unter [https://learn.microsoft.com/de-de/windows/wsl/install#manual-installation-steps|Installieren von WSL]&lt;br /&gt;
# Docker für Windows installieren: [https://docs.docker.com/docker-for-windows/install/|Install Docker Desktop on Windows]&lt;br /&gt;
# Unter Windows muss in der Hosts-Datei (%windir%\system32\drivers\etc) folgende Eintragung gemacht werden: &lt;br /&gt;
 &amp;lt;nowiki&amp;gt;127.0.0.1	docker.team-opencaching.de&lt;br /&gt;
127.0.0.1	try.docker.team-opencaching.de&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Danach kann Ubuntu gestartet werden (z.B. im “Such“-Menü nach Ubuntu suchen und anklicken). Beim erstmaligen Starten von Ubuntu müssen ein Benutzername und ein Passwort festgelegt werden.&lt;br /&gt;
&lt;br /&gt;
Im Anschluss den Punkten folgen und ausführen, die im nächsten Schritt “Linux” beschrieben werden.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Linux ===&lt;br /&gt;
Der Linuxartikel wurde erstellt auf Lubuntu 18.04, aktualisiert mit 22.04 und erweitert mit Debian 12&lt;br /&gt;
&lt;br /&gt;
==== Programme installieren ====&lt;br /&gt;
Folgende Programme sind notwendig und müssen vorab installiert werden:&lt;br /&gt;
PHP (aktuell mind. PHP7.4, später PHP8), diverse PHP-Erweiterungen, docker-compose, mariadb-client. Für die PHP-Erweiterungen ist eventuell ein zusätzliches PPA-Repository notwendig. Dessen Installation erfordert je nach Betriebssystem ein unterschiedliches Vorgehen.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;Ubuntu:&lt;br /&gt;
sudo apt install software-properties-common&lt;br /&gt;
sudo add-apt-repository ppa:ondrej/php&lt;br /&gt;
&lt;br /&gt;
Debian:&lt;br /&gt;
sudo apt install software-properties-common ca-certificates lsb-release apt-transport-https&lt;br /&gt;
curl -sSL https://packages.sury.org/php/README.txt | sudo bash -x&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Die Pakete lassen sich mit folgenden Befehlen installieren (Versionsnummer kann abweichen).&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;sudo apt update&lt;br /&gt;
sudo apt install php8 php8.0-mbstring php8.0-curl php8.0-xml php8.0-mysql&lt;br /&gt;
sudo apt install docker-compose&lt;br /&gt;
sudo apt install mariadb-client&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Sollten beim Installieren der Pakete Fehlermeldungen auftreten, ist es empfehlenswert, die Pakete einzeln zu installieren und auftretende Fehler/Abhängigkeiten einzeln zu lösen.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Nutzer in docker-Gruppe aufnehmen ====&lt;br /&gt;
Der aktuelle Benutzer muss in die Gruppe “docker” aufgenommen werden, sonst kann es passieren, dass dieser keinen Zugriff auf die Dockercontainer bekommt.&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;sudo usermod -aG docker $(id -un)&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Die Änderung wird aber erst nach einem Ab-/Anmelden des Nutzers wirksam. Überprüft werden kann dies danach mittels&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;id&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Hier muss die “docker”-Gruppe aufgelistet sein. Beispiel:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;uid=1000(user) gid=1000(user) groups=1000(user),4(adm),24(cdrom),..,128(docker)&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Eigenschaften der Docker Socket-Datei prüfen ====&lt;br /&gt;
Den folgenden Befehl ausführen, um die Eigenschaften der Datei anzeigen zu lassen:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;sudo ls -la /var/run/docker.sock&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Die Datei muss dabei ‘docker’ zugewiesen sein:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;rw-rw---- 1 root docker 0 Dec 21 19:16 /var/run/docker.sock&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ist dies nicht der Fall, muss die Zugehörigkeit geändert werden:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;chgrp docker /var/run/docker.sock&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== host Datei anpassen ====&lt;br /&gt;
Die folgenden zwei Einträge sollten der host Date unter /etc/host hinzugefügt werden, da auf die URLs sonst unter Umständen nicht zugegriffen werden kann.&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;127.0.0.1	docker.team-opencaching.de&lt;br /&gt;
127.0.0.1	try.docker.team-opencaching.de&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== 2. Sourcecode von Git laden ==&lt;br /&gt;
=== Github ===&lt;br /&gt;
Zwar ist zum Herunterlden des Sourcecodes keine Account auf GitHub notwendig, aber zum Hochladen wird einer benötigt. Daher sollte zuerst einen Account auf https://github.com/ angelegt werden.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== optional: SSH-Keys für Repositorys anlegen und in Github eintragen ===&lt;br /&gt;
siehe https://docs.github.com/en/free-pro-team@latest/github/authenticating-to-github/connecting-to-github-with-ssh&amp;lt;br /&amp;gt;&lt;br /&gt;
oder: https://www.heise.de/tipps-tricks/SSH-Key-fuer-GitHub-Repositories-einrichten-4627459.html&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Git lokal installieren ===&lt;br /&gt;
Windows:&amp;lt;br /&amp;gt;&lt;br /&gt;
siehe: https://github.com/git-for-windows/git/releases&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Linux:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;sudo apt install git&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Sourcecode lokal herunterladen ===&lt;br /&gt;
Ein Terminal öffnen, folgende Kommandos ausführen und dabei Namen und Email-Adresse des Git-Accounts eintragen:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;git config --global user.name &amp;quot;Your Name Here&amp;quot;&lt;br /&gt;
git config --global user.email &amp;quot;your_email@youremail.com&amp;quot;&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Im Verzeichnis &amp;quot;home&amp;quot; einen Ordner &amp;quot;opencaching&amp;quot; (Name beliebig) anlegen. Dort folgenden Code ausführen. Dies legt einen Ordner mit dem Namen “oc-server3“ an, lädt den OC-Code aus deinem Github-Fork herunter und kopiert ihn in diesen Ordner.&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;git clone git@github.com:&amp;lt;DeinGithubBenutzername&amp;gt;/oc-server3&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Im Anschluss in den Ordner “oc-server3“ wechseln und den folgenden Befehl ausführen, um bei einem Update den neuesten Sourcecode aus dem Opencaching.de-Repository erhalten zu können:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;cd oc-server3&lt;br /&gt;
git remote add upstream git@github.com:OpencachingDeutschland/oc-server3&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Mit folgendem Befehl gibt es eine Übersicht über die verknüpften Repositorys, die (abgesehen vom Nutzernamen ‘Slini11’) wie in der Grafik aussehen müssen:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;git remote -v&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
[[Image:Testumgebung Git 01.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Nun den Branch “development“ auschecken:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;git checkout development&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Und den Development-Branch auf aktuellen Stand bringen:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;git pull --rebase upstream development &amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Weiterführende Informationen zu Git ===&lt;br /&gt;
Diese sind unter anderem im [[Entwicklung/Git|OC-Wiki]] zu finden&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== 3. Docker Entwicklungsumgebung initalisieren ==&lt;br /&gt;
=== Entwicklungsumgebung zum ersten Mal starten ===&lt;br /&gt;
(siehe auch: Github: [https://github.com/OpencachingDeutschland/oc-server3#starting-the-docker-development-environment|starting the docker environment])&lt;br /&gt;
&lt;br /&gt;
Zuerst in den Projektordner “oc-server3“ navigieren und dort die Installation der Testumgebung starten. Es stehen hierfür zwei Befehlsfolgen zur Verfügung:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Scripte einzeln ausführen ====&lt;br /&gt;
* Die Dockerumgebung starten (ggf. der Benutzerkontensteuerung zustimmen). Dieser Vorgang dauert ein paar Minuten.&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;./psh.phar docker:start&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* In den Dockercontainer hinein verbinden&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;./psh.phar docker:ssh&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Anschließend in der sich öffnenden docker bash einmalig das Initialisierungsskript starten. Dieser Vorgang dauert ein paar Minuten.&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;./psh.phar docker:init&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Image:Testumgebung Docker 01.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Zuletzt den Dockercontainer wieder verlassen&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;exit&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Die Entwicklungsumgebung steht nun über den Browser bereit unter:&lt;br /&gt;
  http://docker.team-opencaching.de bzw.&lt;br /&gt;
  http://try.docker.team-opencaching.de&lt;br /&gt;
&lt;br /&gt;
* Das Passwort für den Benutzer &#039;&#039;root&#039;&#039; lautet &#039;&#039;developer&#039;&#039;. Das Passwort der anderen Benutzer (Benutzernamen siehe Datenbank) lautet &#039;&#039;password&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Das start-Script ausführen ====&lt;br /&gt;
* Statt die Schritte einzeln auszuführen, kann die Dockerinitialisierung auch mit einem einzigen Befehl gestartet werden:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;./psh.phar docker:start-clean&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Dieser Befehl führt alle oben beschriebenen Kommandos aus, &amp;lt;u&amp;gt;löscht zusätzlich die Dockercontainer, den Cache des Testservers sowie alle von git ignorierten Dateien&amp;lt;/u&amp;gt;. Dieser Vorgang dauert ein paar Minuten länger und empfiehlt sich, wenn eine saubere Umgebung hergestellt werden soll oder während der Initialisierung unbehebbare Fehler auftreten.&lt;br /&gt;
&lt;br /&gt;
* Die Entwicklungsumgebung steht nun über den Browser bereit unter:&lt;br /&gt;
  http://docker.team-opencaching.de bzw.&lt;br /&gt;
  http://try.docker.team-opencaching.de&lt;br /&gt;
&lt;br /&gt;
* Das Passwort für den Benutzer &#039;&#039;root&#039;&#039; lautet &#039;&#039;developer&#039;&#039;. Das Passwort der anderen Benutzer (Benutzernamen siehe Datenbank) lautet &#039;&#039;password&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Entwicklungsumgebung ein weiteres Mal starten ===&lt;br /&gt;
Die Testumgebung kann z.B. nach einem Neustart des Rechners im Projektordner gestartet werden mit:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;./psh.phar docker:start&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Entwicklungsumgebung stoppen ===&lt;br /&gt;
Die Testumgebung kann im Projektordner gestoppt werden mit:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;./psh.phar docker:stop&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 4. Die  Testdatenbank füllen ==&lt;br /&gt;
Während der Installation wird eine Testdatenbank importiert, die bereits eine kleine Menge an Caches und Nutzern beinhaltet. Ein manueller Import des Datenbankdumps ist somit (seit März 2021) nicht mehr notwendig. &lt;br /&gt;
&lt;br /&gt;
Für den Fall, dass trotzdem Daten exportiert / importiert werden sollen, können folgende Abschnitte berücksichtigt werden:&lt;br /&gt;
Login auf der Test-Datenbank im Dockercontainer&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;mysql -uroot -proot -hmariadb opencaching&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Datenbank zurücksetzen ===&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;(noch zu verifizieren und zu verbessern..)&lt;br /&gt;
im Docker per mysql auf die mariadb verbinden&lt;br /&gt;
&#039;DROP&#039; opencaching DB&lt;br /&gt;
exit mysql und docker&lt;br /&gt;
Nun entweder im Docker ein ./psh.phar docker:init ausführen oder wenn das Fehler bringt, vorher den kompletten git-Pfad neu aufsetzen&lt;br /&gt;
Ev. funktioniert auch der Weg, den DB-Dockercontainer aufzurufen, zu löschen, etc.&lt;br /&gt;
(docker-volume ls)&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Datenbank innerhalb des Dockercontainers exportieren ===&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;mysqldump -uroot -proot -hmariadb opencaching &amp;gt; file.sql&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Datenbank außerhalb des Dockercontainers exportieren ===&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;mysqldump --complete-insert --user root -proot --host 0.0.0.0 opencaching &amp;gt; dump.sql&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Datenbank im phpStorm exportieren ===&lt;br /&gt;
Auf der rechten Bildschirmseite den Databasedialog ausklappen&lt;br /&gt;
rechte Maustaste auf die zu exportierende Datenbank “opencaching” =&amp;gt; “Export with ‘mysqldump’”&lt;br /&gt;
&lt;br /&gt;
[[Image:Testumgebung DB 01.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Im Exportmenü die Zeile “Statements” umstellen auf “Insert with columns” und eventuell den Ausgabepfad “Out Path” anpassen. Im Kommandofeld den Parameter “--routines“ ergänzen und dann “Run” drücken&lt;br /&gt;
&lt;br /&gt;
[[Image:Testumgebung DB 02.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Datenbank-Dump im Dockercontainer importieren ===&lt;br /&gt;
Zuerst wird eine eventuell existierende Datenbank gelöscht und neu angelegt.&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;./psh.phar docker:init&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Im zweiten Schritt wird die Datenbank mit dem Dump gefüllt.&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;mysql -uroot -proot -hmariadb opencaching &amp;lt; file.sql&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Datenbank-Dump im phpStorm importieren ===&lt;br /&gt;
Auf der rechten Bildschirmseite den Databasedialog ausklappen&lt;br /&gt;
rechte Maustaste auf die Datenbank =&amp;gt; “Restore with ‘mysql’”&lt;br /&gt;
&lt;br /&gt;
[[Image:Testumgebung DB 03.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Im Importmenü den Eingabepfad “Path to dump” anpassen, dann “Run” drücken&lt;br /&gt;
&lt;br /&gt;
[[Image:Testumgebung DB 04.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Datenbank in phpStorm anzeigen ===&lt;br /&gt;
Ggf. kann es passieren, dass die Datenbank nicht automatisch in phpStorm angezeigt wird. Dazu muss eine neue MariaDB im Datenbank-Menü angelegt werden.&lt;br /&gt;
&lt;br /&gt;
[[Image:Testumgebung DB 05.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Im Anschluss sind die Daten wie im folgenden Screenshot einzutragen. User: “root“ Password: “root“&lt;br /&gt;
&lt;br /&gt;
[[Image:Testumgebung DB 06.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== 5. Die Entwicklungs-IDE vorbereiten ==&lt;br /&gt;
Gegebenenfalls sind an der Programmierumgebung Änderungen vorzunehmen, um zum Beispiel [[OC Coding Style|einheitlich formatierten Code]] zu schreiben. &lt;br /&gt;
&lt;br /&gt;
=== Einrichtung des PHP Coding Styles am Beispiel von phpStorm ===&lt;br /&gt;
Unter Settings / Code Style / PHP rechts auf “Set from…” klicken und “PSR-12” auswählen. Die Einstellung mit “Apply” bestätigen.&lt;br /&gt;
(Weitere Informationen zum Coding Style sind [[OC Coding Style|hier im Wiki]] zu finden.)&lt;br /&gt;
&lt;br /&gt;
[[Image:Testumgebung IDE 01.png|500px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Symfony Pfade am Beispiel phpStorm anpassen ===&lt;br /&gt;
[[Image:Testumgebung IDE 04.jpeg]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Terminalanpassung am Beispiel phpStorm (für Windows-Nutzer) ===&lt;br /&gt;
[[Image:Testumgebung IDE 05.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== hilfreiche Plugins für phpStorm ===&lt;br /&gt;
-&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Synchronisieren/Wiederherstellen der Benutzereinstellungen mittels JetBrains-Server ===&lt;br /&gt;
Sofern man bei JetBrains einen Account hat, kann man mit diesem die Einstellungen der lokalen IDE synchronisieren und z.B. nach einer Neuinstallation von dort wiederherstellen.&lt;br /&gt;
&lt;br /&gt;
Hierzu in der IDE rechts oben auf das Zahnrad klicken und “Settings Sync is off” auswählen.&amp;lt;/br&amp;gt;&lt;br /&gt;
[[Image:Testumgebung IDE 02.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Im folgenden Fenster den Button “Enable Settings Sync” klicken und danach alle Einstellungen auswählen, die man sichern möchte. Ein Klick auf “Push Settings to Account” sichert die Einstellungen. Ein Klick auf “Get Settings from Account” stellt sie wieder her, sofern sie vorher dorthin gesichert wurden.&lt;br /&gt;
[[Image:Testumgebung IDE 03.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== 6. Das Fehlerhandbuch lesen (gilt insbesondere für die Schritte #1-#4 :wink:) ==&lt;br /&gt;
&lt;br /&gt;
Beireits bekannte Fehler werden im [[Entwicklungsumgebung/Fehlerhandbuch|Fehlerhandbuch]] beschrieben.&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Entwicklung|Entwicklungsumgebung ]]&lt;/div&gt;</summary>
		<author><name>Fraggle</name></author>
	</entry>
	<entry>
		<id>https://wiki.opencaching.de/index.php?title=Entwicklung&amp;diff=7932</id>
		<title>Entwicklung</title>
		<link rel="alternate" type="text/html" href="https://wiki.opencaching.de/index.php?title=Entwicklung&amp;diff=7932"/>
		<updated>2025-01-08T10:58:14Z</updated>

		<summary type="html">&lt;p&gt;Fraggle: Datum ergänzt&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;Diese Seite wendet sich vor allem an Technikinteressierte und verwendet daher eine Menge Fachbegriffe, deren Erläuterung hier zu weit führen würde. Sie sind daher mit Links zur Wikipedia hinterlegt.&#039;&#039;&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Datei:Codegenerationen.svg|thumb|[[Opencaching]]-Codehistorie (Stand Juni 2016)]]&lt;br /&gt;
Hinter der Opencaching-Website verbergen sich eine Menge Technik und Entwicklungsarbeit. Was im Jahr 2003 als ein kleines Bastelprojekt begann, wuchs im Laufe der Jahre zu einer der weltweit bedeutendesten [[Geocaching-Plattformen]] heran. &lt;br /&gt;
&lt;br /&gt;
Die aktuelle Opencaching.de-Softwareversion 3.0 besteht aus rund 70.000 Zeilen an selbstgeschriebenem [[wikipedia:PHP|PHP]]-, [[wikipedia:Smarty|Smarty]]-, [[wikipedia:Hypertext Markup Language|HTML]]/[[wikipedia:Cascading Style Sheets|CSS]]-, [[wikipedia:JavaScript|Javascript]]- und [[wikipedia:MySQL|MySQL]]-Code. Hinzu kommen ca. 20.000 Zeilen für die [[OKAPI]] und weitere 200.000 Zeilen [[wikipedia:Programmbibliothek|Bibliothekscode]]. Die [[wikipedia:Datenbank|Datenbank]] umfasst ca. 125 Tabellen plus 15 für die OKAPI.&lt;br /&gt;
&lt;br /&gt;
Der Opencaching-Quellcode steht unter einer [https://github.com/OpencachingDeutschland/oc-server3/blob/development/doc/GPL.txt modifizierten GNU-GPL-Lizenz] und ist [https://github.com/OpencachingDeutschland/oc-server3 frei verfügbar]. Erläuterungen dazu gibt es im Artikel [[Entwicklung/Codedoku]].&lt;br /&gt;
__NOTOC__&lt;br /&gt;
== Entwicklerteam ==&lt;br /&gt;
Mit der Gründung des [[Opencaching Deutschland e.V.]] ging die Weiterentwicklung auf ein neues Team über. Die aktiven Softwareentwickler sind in der [http://www.opencaching.de/articles.php?page=team Teamliste] aufgeführt. Neue engagierte Entwickler sind jederzeit willkommen! Wenn du im Team mitmachen möchtest, findest du weitere Informationen dazu im [http://forum.opencaching.de/index.php?board=33.0 Opencaching-Forum].&lt;br /&gt;
&lt;br /&gt;
== Entwicklungsumgebung ==&lt;br /&gt;
[[Datei:Tux.png|thumb|hochkant=0.75]]&lt;br /&gt;
Stand 2016 steht für die Entwickler eine virtuelle Linux-Maschine als [[wikipedia:VirtualBox|VirtualBox]]-Image zur Verfügung, die wie die Opencaching.de-Website auf [[wikipedia:CentOS|CentOS]] basiert (→ [[Entwicklung/Entwicklersystem|Entwicklersystem]]). In dieser VM laufen ein [[wikipedia:Apache HTTP Server|Apache]]- und ein [[wikipedia:MySQL|MySQL]]-Server. Das eigentliche Programmieren und Testen findet auf dem Hostsystem unter Linux, Windows oder MacOS statt, mit einem beliebigen [[wikipedia:UTF-8|UTF-8]]-fähigen Editor bzw. einer PHP-[[wikipedia:Integrierte Entwicklungsumgebung|IDE]] und einem Webbrowser.&lt;br /&gt;
&lt;br /&gt;
Zur Codeverwaltung und -versionierung wird [[wikipedia:Git|Git]] eingesetzt, mit einem üblichen Workflow (Stable-Branch, Entwicklungs-Branch, Test-Branch und Feature-Branches). Eine ausführliche Anleitung dazu gibt es [[Entwicklung/Git|hier im Wiki]].&lt;br /&gt;
&lt;br /&gt;
Anstehenden Aufgaben werden in einer [[Entwicklung/Todo-Liste|Todo-Liste]] verwaltet.&lt;br /&gt;
&lt;br /&gt;
Allgemeine Diskussionen finden im [http://forum.opencaching.de/index.php?board=43.0 offenen Entwicklerforum] statt. Im internen Team-Wiki gibt es Anleitungen zu Installation und Verwendung der Entwicklungsumgebung; diese sollen nach Neuaufsetzen der Entwicklungsumgebung hier ins allgemeine Wiki übertragen werden.&lt;br /&gt;
&lt;br /&gt;
== Datenschnittstellen für Tool- und App-Entwickler ==&lt;br /&gt;
Über die [[Opencaching-API]] (OKAPI) oder die [[XML-Schnittstelle]] können alle Cache- und Logdaten frei heruntergeladen werden. Die OKAPI kann auch [[Das Onlinelog|Logs]] hochladen, sodass auch [[Smartphone-Apps für Opencaching.de|Smartphone-Apps]] mit [[Fachjargon#Field Logging|Field-Logging]]-Funktion realisierbar sind.&lt;br /&gt;
&lt;br /&gt;
== Weitere Opencaching-Entwicklungsprojekte ==&lt;br /&gt;
* [https://github.com/opencaching/opencaching-pl Opencaching Polen] &lt;br /&gt;
* [https://github.com/opencaching/okapi Opencaching-API]&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Entwicklung| ]]&lt;/div&gt;</summary>
		<author><name>Fraggle</name></author>
	</entry>
	<entry>
		<id>https://wiki.opencaching.de/index.php?title=Entwicklung/Entwicklersystem&amp;diff=7931</id>
		<title>Entwicklung/Entwicklersystem</title>
		<link rel="alternate" type="text/html" href="https://wiki.opencaching.de/index.php?title=Entwicklung/Entwicklersystem&amp;diff=7931"/>
		<updated>2025-01-08T10:52:15Z</updated>

		<summary type="html">&lt;p&gt;Fraggle: Datum ergänzt&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Datei:Tux.png|thumb|hochkant=0.75]]&lt;br /&gt;
Das &#039;&#039;&#039;Entwicklersystem&#039;&#039;&#039; von Opencaching.de ist (Stand 2016) eine virtuelle [[wikipedia:CentOS|CentOS]]-Linux-Maschine für [[wikipedia:VirtualBox|VirtualBox]]. Hierauf laufen ein [[wikipedia:Apache HTTP Server|Apache]]- und ein [[wikipedia:MySQL|MySQL]]-Server. Das eigentliche Programmieren und Testen findet auf dem Hostsystem unter Linux, Windows oder MacOS statt, mit einem beliebigen [[wikipedia:UTF-8|UTF-8]]-fähigen Editor bzw. einer [http://forum.opencaching.de/index.php?topic=2150.0 PHP-IDE] und einem Webbrowser.&lt;br /&gt;
&lt;br /&gt;
Das System, mit dem derzeit entwickelt wird, kann aufgrund der enthaltenen Cachedatenbank nicht veröffentlicht werden (sie enthält alte Listings, die auf opencaching.de aus rechtlichen Gründen nicht mehr sichtbar sind). Ein neues ist in Planung.&lt;br /&gt;
&lt;br /&gt;
Wer Spaß daran hat, mit so einer Linux-Maschine rumzuspielen und an Opencaching.de mitzubauen, kann Mitglied im Team werden (mehr dazu im [http://forum.opencaching.de/index.php Forum]), sich die VM herunterladen und einrichten; dazu gibt es eine ausführliche Anleitung.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Eine Anleitung zur Installation eines lokalen Testservers (ohne Listing- und Benutzerdaten des Liveservers) ist [[Entwicklungsumgebung einrichten|hier]] zu finden bzw. etwas kürzer auf [https://github.com/OpencachingDeutschland/oc-server3 github].&lt;br /&gt;
&lt;br /&gt;
Für Fragen und Diskussionen hierzu und zu verwandten Themen gibt es das [http://forum.opencaching.de/index.php?board=43.0 Entwicklerforum].&lt;br /&gt;
&lt;br /&gt;
Für die Einrichtung einer Opencaching.pl-Website im OC.de-Entwicklersystem gibt es eine [[Entwicklung/Entwicklersystem PL|separate Anleitung]].&lt;br /&gt;
&lt;br /&gt;
== Siehe auch ==&lt;br /&gt;
* [[Entwicklung|Opencaching.de-Entwicklung]]&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Entwicklung|Entwicklersystem]]&lt;/div&gt;</summary>
		<author><name>Fraggle</name></author>
	</entry>
	<entry>
		<id>https://wiki.opencaching.de/index.php?title=Entwicklung/Git&amp;diff=7930</id>
		<title>Entwicklung/Git</title>
		<link rel="alternate" type="text/html" href="https://wiki.opencaching.de/index.php?title=Entwicklung/Git&amp;diff=7930"/>
		<updated>2025-01-08T10:50:32Z</updated>

		<summary type="html">&lt;p&gt;Fraggle: Git-Installatiion ist bereits auf einer anderen Seite beschrieben&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Versionsverwaltung der Entwicklungsdaten mit Git  ==&lt;br /&gt;
Das Opencaching.de-Projekt verwendet [https://github.com/ Git] zur Verwaltung von Quellcode, Dokumentationen etc. Git ist leistungsfähiger und komplexer als klassische Versionsverwaltungstools wie CVS und Subversion. Es kann wesentlich besser mit Branches umgehen, also verschiedenen Codeversionen eines Projekts -- &amp;quot;branches (in Git) are cheap and easy&amp;quot;. So kann man zu Testzwecken, zum Programmieren einzelner Features etc. eigene Zweige anlegen, die dann später wieder in den Haupt-Code (den &#039;&#039;Master-Branch&#039;&#039;) einfließen oder wahlweise verworfen werden. Dieses Verzweigen und Wieder-Zusammenführen von Codeversionen ist erstaunlich einfach und zuverlässig. Richtig eingesetzt, erleichtert es das Projektmanagement.&lt;br /&gt;
&lt;br /&gt;
Die Verwendung von Git setzt eine gewisse Lernkurve voraus. Diese Anleitung soll dir den Einstieg erleichtern und erklärt alles, was du für den Git-Einsatz bei Opencaching.de wissen musst (und Einiges mehr). Sie erklärt die Verwendung von Git anhand der Kommandozeilenversion, die für alle relevanten Betriebssysteme erhältlich ist. Daneben gibt es verschiedene komfortable Benutzeroberflächen. Gerne kannst du ein weiteres Kapitel für die von dir bevorzugte Git-UI hinzufügen!&lt;br /&gt;
&lt;br /&gt;
Allgemeine Einführungen in Git findest du z.B. hier (Liste gerne ergänzen):&lt;br /&gt;
* https://rogerdudler.github.io/git-guide/index.de.html - Der einfache Einstieg (deutsch)&lt;br /&gt;
* https://docs.github.com/de - eine leichtverständliche Einführung&lt;br /&gt;
* https://www.stefanimhoff.de/git/ - Sammlung von einfachen und komplexeren Tutorials (englisch)&lt;br /&gt;
&lt;br /&gt;
== Funktionsweise von Git und Einsatz bei Opencaching.de ==&lt;br /&gt;
 &lt;br /&gt;
Git arbeitet im Gegensatz zu Subversion &#039;&#039;dezentral&#039;&#039;. Jeder Entwickler hat eine eigene Kopie - einen &amp;quot;Klon&amp;quot; - des Repositories, also der Datenbank in der sich alle Dateien des Projekts in allen Branches und Versionsständen befinden. Aus diesem Klon werden die Arbeitsdaten ausgecheckt, und Änderungen der Arbeitsdaten werden dort eingecheckt.&lt;br /&gt;
&lt;br /&gt;
Die Entwickler können in beliebigen Topologien organisiert werden und gleichen den Inhalt ihrer Repositories wechselseitig miteinander ab. Opencaching.de verwendet eine Art Sternstruktur, mit einem Haupt-Repository unter der Adresse &lt;br /&gt;
* https://github.com/OpencachingDeutschland/oc-server3&lt;br /&gt;
 &lt;br /&gt;
Auf dieses Repo haben nur der Code Maintainer und seine Vertreter Schreibzugriff; alle anderen können nur lesen. Um auch Daten hochladen zu können, besitzt jeder Entwickler bei GitHub.com eine eigene Kopie - einen &amp;quot;Fork&amp;quot; - des Haupt-Repositories, z.B. &lt;br /&gt;
* https://github.com/flopp/oc-server3&lt;br /&gt;
 &lt;br /&gt;
Dein erster Schritt als Opencaching-Entwickler ist das Anlegen deines Forks. Dazu legst du dir auf [https://github.com GitHub] einen kostenlosen Account an, gehst auf https://github.com/OpencachingDeutschland/oc-server3 und klickst oben rechts auf &amp;quot;Fork&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Der zweite Schritt ist, dir eine lokale Kopie - einen &amp;quot;Klon&amp;quot; - deines Forks anzulegen. Wie du das im OC.de-Entwicklersystem machst, ist im Artikel [[Entwicklung/Entwicklersystem|Entwicklersystem]] beschrieben. Hier machen wir es einfach mal testweise - du kannst so viele Klone anlegen wie du möchtest, den GitHub-Repositories ist das egal:&lt;br /&gt;
 git clone git@github.com:&amp;amp;lt;DeinBenutzername&amp;amp;gt;/oc-server3&lt;br /&gt;
&lt;br /&gt;
Nun wird bei dir ein Verzeichnis &amp;lt;code&amp;gt;oc-server3/.git&amp;lt;/code&amp;gt; angelegt, das zunächst eine 1:1-Kopie deines GitHub-Forks ist (der zunächst eine 1:1-Kopie des Opencaching-Deutschland-Repos ist), und von dort der komplette aktuelle OC.de-Code in Unterverzeichnisse von &amp;lt;code&amp;gt;oc-server3&amp;lt;/code&amp;gt; ausgecheckt. In &amp;lt;code&amp;gt;oc-server3&amp;lt;/code&amp;gt; befinden sich also sowohl deine Arbeitsdaten als auch der lokale Repository-Klon. &amp;lt;code&amp;gt;oc-server3/.git/config&amp;lt;/code&amp;gt; ist die Konfigurationsdatei des lokalen Repositories, die du aber nur selten von Hand bearbeiten wirst.&lt;br /&gt;
&lt;br /&gt;
Dein GitHub-Fork heißt in deinem lokalen Repository &#039;&#039;origin&#039;&#039;; über diesen Name kannst du mit verschiedenen Git-Kommandos darauf zugreifen. Um die Konfiguration abzuschließen, muss zusätzlich noch der &#039;&#039;upstream&#039;&#039; definiert werden - das Repository, aus dem du neue Daten abrufst. Dies ist nicht dein eigener Fork, sondern du beziehst die Daten direkt von OpencachingDeutschland. Navigiere dazu ins Verzeichnis &amp;lt;code&amp;gt;oc-server3&amp;lt;/code&amp;gt; und führe dann folgenden Befehl aus:&lt;br /&gt;
&lt;br /&gt;
 git remote add upstream git@github.com:OpencachingDeutschland/oc-server3&lt;br /&gt;
&lt;br /&gt;
Mit &amp;lt;code&amp;gt;git remote -v&amp;lt;/code&amp;gt; kannst du dir nun alle &amp;quot;remote&amp;quot;-Repositories anzeigen lassen, die in deinem Klon eingestellt sind.&lt;br /&gt;
&lt;br /&gt;
== Installation ==&lt;br /&gt;
 &lt;br /&gt;
Die Installation und Einrichtung von Git ist im Artikel [[Entwicklungsumgebung einrichten#Github|Entwicklungsumgebung einrichten]] beschrieben.&lt;br /&gt;
&lt;br /&gt;
== Datenfluss ==&lt;br /&gt;
 &lt;br /&gt;
Die folgende Grafik zeigt den Git-Datenfluss im Opencaching-Team am Beispiel von drei Entwicklern. Oben siehst du die &amp;quot;remote&amp;quot;-Repositories - das für alle Entwickler als &amp;quot;upstream&amp;quot; dienende Haupt-Repo und die drei &amp;quot;origin&amp;quot; genannten Forks -, und unten die drei lokalen Repositories und die Arbeitsdaten. Die grauen Pfeile zeigen, was du eben gemacht hast: 1. den Fork auf Github.com, und 2. das Erzeugen des lokalen Klons (nicht erschrecken lassen durch die vielen Details - das wird unten alles schrittweise erklärt):&lt;br /&gt;
&lt;br /&gt;
[[Datei:Git-Workflow.png|800px]]&lt;br /&gt;
&lt;br /&gt;
Die schwarzen Pfeile zeigen, wie &#039;&#039;ab sofort&#039;&#039; die Daten fließen werden: In umgekehrter Richtung! Du beziehst Daten vom &#039;&#039;upstream&#039;&#039;, schiebst deine eigenen Änderungen in deinen &#039;&#039;origin&#039;&#039;, und von dort übernimmt der Code Maintainer sie wiederum in den &#039;&#039;upstream&#039;&#039;. Aus Sicht jedes Entwicklers fließen die Daten also zwischen drei Repositories im Kreis.&lt;br /&gt;
&lt;br /&gt;
Links und in der Mitte ist der Standard-Git-Workflow zu sehen, rechts ein vereinfachter mit nur einem Branch.&lt;br /&gt;
&lt;br /&gt;
== Daten bearbeiten und hochladen ==&lt;br /&gt;
 &lt;br /&gt;
Nach dem ersten Auschecken ist der &#039;&#039;development&#039;&#039;-Branch aktiv. Dieser enthält den aktuellen Entwicklungsstand. Welcher Branch aktiv ist, siehst du mit&lt;br /&gt;
 git branch&lt;br /&gt;
Unser Standard-Workflow sieht vor, dass &#039;&#039;&#039;nie im development gearbeitet wird&#039;&#039;&#039;. Stattdessen musst du dir - ausgehend von &#039;&#039;development&#039;&#039; - für jede Aufgabe einen Arbeitsbranch anlegen:&lt;br /&gt;
 git checkout -b 1234-new-feature development&lt;br /&gt;
Die vorangestellte Nummer ist eine Ticketnummer aus der Todo-Liste. Wenn es keine passende gibt, lässt du sie weg. Verwende nach Möglichkeit englische Namen und Kommentare, denn das OC-Projekt ist international vernetzt. Nun kannst du mit &amp;lt;code&amp;gt;git branch&amp;lt;/code&amp;gt; sehen, dass es in deinem lokalen Repo zwei Branches gibt, und der neu angelegte ist aktiv. Mit dem Kommando &amp;lt;code&amp;gt;git checkout Branchname&amp;lt;/code&amp;gt; kannst du zwischen den Branches hin- und herwechseln; dabei wird jeweils der Code in den Arbeitsdaten entsprechend ausgetauscht.&lt;br /&gt;
&lt;br /&gt;
Beim Anlegen des Branches sind wir davon ausgegangen, das unmittelbar zuvor der Klon angelegt wurde und die lokale development-Kopie aktuell ist. Wenn Letzteres evtl. nicht der Fall ist, solltest du sie vor dem Anlegen des neuen Branches aktualisieren:&lt;br /&gt;
 git checkout development&lt;br /&gt;
 git pull upstream&lt;br /&gt;
 git checkout -b 1234-new-feature [development] &lt;br /&gt;
&lt;br /&gt;
Nun ist es soweit: Du kannst deine ersten Änderungen am OC-Code vornehmen und hochladen! Zum Bearbeiten musst du einen UTF8-fähigen Editor verwenden. Dass er das ist, erkennst du an den zwei japanischen Sonderzeichen oben in jeder Quelltextdatei: Wenn dort zwei Fragezeichen, Klötzchen oder Ähnliches erscheinen, ist dein Editor falsch eingestellt oder ungeeignet. Zum Thema Editoren/IDEs siehe auch im Forum: &amp;quot;[http://forum.opencaching.de/index.php?topic=2150.0 Git-UI / PHP-IDE]&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Wenn du die Änderungen vorgenommen hast, zeigt dir&lt;br /&gt;
 git status&lt;br /&gt;
in roter Farbe an, welche Dateien geändert oder hinzugefügt wurden, und&lt;br /&gt;
 git diff&lt;br /&gt;
die Änderungen im Einzelnen. Falls dein Editor bzw. deine Entwicklungsumgebung irgendwelche zusätzlichen Dateien angelegt hat, kannst du diese in &amp;lt;code&amp;gt;.git/info/exclude&amp;lt;/code&amp;gt; eintragen, damit sie nicht ins Repository gelangen.&lt;br /&gt;
&lt;br /&gt;
Als nächstes musst du Git mitteilen, dass die Daten zum aktiven Branch hinzugefügt werden sollen; dies geschieht mit&lt;br /&gt;
 git add .&lt;br /&gt;
für alle geänderten und neuen Dateien im aktuellen Verzeichnisbaum (falls du Branches gewechselt hast vergewissere dich evtl. mit &amp;lt;code&amp;gt;git branch&amp;lt;/code&amp;gt;, dass du im richtigen bist!) Wahlweise kannst du einzelne Dateien per (Pfad+)Dateiname hinzufügen oder Wildcards verwenden. Dateien löschen kann man mit&lt;br /&gt;
 git rm Dateiname&lt;br /&gt;
Nun zeigt &amp;lt;code&amp;gt;git status&amp;lt;/code&amp;gt; in grüner Farbe alle vorbereiteten Änderungen an, und mit&lt;br /&gt;
 git commit&lt;br /&gt;
checkst du sie in dein lokales Repository ein. Es öffent sich ein vi-Editor, in dem du einen Kommentar eingeben musst. Schreibe eine aussagekräftige, möglichst englische Zusammenfassung in die erste Zeile, und evtl. zusätzliche Erläuterungen in die weiteren Zeilen. Wenn es nur ein einzeiliger Kommentar sein soll, kannst du dir den Editor auch sparen und den Kommentar direkt angeben mit&lt;br /&gt;
 git commit -m &amp;quot;Kommentar&amp;quot;&lt;br /&gt;
Wenn keine neuen Dateien hinzugefügt, sondern nur vorhandene geändert werden sollen, kannst du auch das &amp;lt;code&amp;gt;add&amp;lt;/code&amp;gt; mit einbauen, also alle geänderten Daten mit nur einem Befehl einchecken:&lt;br /&gt;
 git commit -am &amp;quot;Kommentar&amp;quot;&lt;br /&gt;
Mit&lt;br /&gt;
 git log&lt;br /&gt;
siehst du nun, dass ein neuer &#039;&#039;commit&#039;&#039; in die Versionsgeschichte des aktiven Branches eingefügt wurde. Wahlweise kannst du auch mit &amp;lt;code&amp;gt;git log --stat&amp;lt;/code&amp;gt; nochmals alle geänderten Dateien anzeigen lassen.&lt;br /&gt;
&lt;br /&gt;
Um den Commit später mit einem Ticket in der [[Entwicklung/Todo-Liste|Jira]] zu verknüpfen, kannst du im Kommentar die Ticket Nummer (inklusive Projekt Kürzel) angeben. Aktuell übernimmt es das jedoch nur für Pull Requests. Dort sollte die Ticket Nummer am Anfang stehen.&lt;br /&gt;
&lt;br /&gt;
==== Exkurs: Commits ====&lt;br /&gt;
 &lt;br /&gt;
Commits sind das Hauptelement der Arbeit mit Git. Jeder Branch ist eine bestimmte Abfolge von Commits. Verschiedene Branches unterscheiden sich dadurch, welche Commits sie enthalten. Ein Commit ist ein Patch, der eine oder mehrere Dateien verändert, hinzufügt und/oder löscht. Jeder Commit hat einen eindeutigen Hashcode, der im Log angezeigt wird. Über diesen Code lassen sich Commits einzeln herauspicken, rückgängig machen, als Diff anzeigen etc. Dabei genügt die Angabe der ersten paar Zeichen, sofern sie eindeutig sind; üblich als Kurzform sind die ersten 7-10 Zeichen.&lt;br /&gt;
&lt;br /&gt;
Der letzte (neueste) Commit des aktiven Branches hat auch den Name HEAD, der vorletzte HEAD~1, der drittletzte HEAD~2 etc. Mit&lt;br /&gt;
 git diff HEAD~1&lt;br /&gt;
kannst du dir z.B. alle Änderungen zwischen aktuellem und vorletztem Codestand anzeigen lassen - also genau das, was du mit deinem letzten &amp;lt;code&amp;gt;commit&amp;lt;/code&amp;gt; eingecheckt hast.&lt;br /&gt;
&lt;br /&gt;
==== Rebase auf aktuellen Codestand ====&lt;br /&gt;
 &lt;br /&gt;
Grundsätzlich solltest du Daten erst dann hochladen, wenn sie verwendbar sind und in das Haupt-Repository oder an einen anderen Entwickler weitergegeben werden sollen. Unfertiges bleibt zunächst nur lokal bei dir liegen. Wir tun jetzt einfach mal so, als sei deine Codeänderung fertig (du kannst den Upload danach wieder löschen, wenn es nur ein Test war).&lt;br /&gt;
&lt;br /&gt;
Zunächst solltest du deine Daten nochmal auf den aktuellen Stand bringen. Damit ist sichergestellt, dass deine Änderungen mit dem aktuellsten OC-Code funktionieren:&lt;br /&gt;
 git fetch upstream&lt;br /&gt;
 git rebase upstream/development &lt;br /&gt;
&lt;br /&gt;
Das erste Kommando aktualisiert deine lokale Kopie der Upstream-Branches (die du mit &amp;lt;code&amp;gt;git branch -r&amp;lt;/code&amp;gt; auflisten kannst), bzw. legt diese erstmalig an. Das zweite übernimmt alle neuen &#039;&#039;commits&#039;&#039; aus dem Upstream - also dem OC-Hauptrepository - in deinen aktiven Branch, und zwar fügt es sie &#039;&#039;vor&#039;&#039; deine eigenen Änderungen ein! Deine Änderungen werden auf Basis des aktuellen OC-Codestandes neu aufgesetzt (re-based), d.h. sie werden als Patch auf diesen Codestand angewandt. Beide Kommandos lassen sich auch zu einem zusammenfassen:&lt;br /&gt;
 git pull --rebase upstream development&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Verwende niemals ein einfaches &amp;lt;code&amp;gt;git pull&amp;lt;/code&amp;gt; (ohne &amp;lt;code&amp;gt;--rebase&amp;lt;/code&amp;gt;) in einem Arbeitsbranch!&#039;&#039;&#039; Es würde die Versionsgeschichte unlesbar machen und das Zurückverfolgen von Codeänderungen verhindern.&lt;br /&gt;
&lt;br /&gt;
Beim &amp;lt;code&amp;gt;rebase&amp;lt;/code&amp;gt; können &amp;quot;Merge-Konflikte&amp;quot; enstehen, wenn deine Codeänderungen nicht automatisch auf dem aktuellen Codestand aufgesetzt werden können, z.B. weil es mehrere Änderungen in der gleichen Codezeile gab. Git zeigt dann eine Fehlermeldung an, und die Konflikte sind in im Quelltext markiert (suche nach &amp;quot;====&amp;quot;). Korrigiere den Code, markiere die geänderte Datei erneut mit git add zum Hinzufügen, und gib &amp;lt;code&amp;gt;git rebase --continue&amp;lt;/code&amp;gt; ein, um das Rebase abzuschließen.&lt;br /&gt;
&lt;br /&gt;
==== Daten hochladen ====&lt;br /&gt;
 &lt;br /&gt;
Nun kannst du deinen neuen Branch mit&lt;br /&gt;
 &amp;lt;code&amp;gt;git push origin 1234-new-feature&amp;lt;/code&amp;gt; &lt;br /&gt;
in deinen Fork hochladen. Wenn du auf [http://github.com/ http://github.com/&amp;lt;DeinUsername&amp;gt;/oc-server3] links die Branch-Dropdown-Box aufklappst, oder weiter rechts auf &amp;quot;branches&amp;quot; klickst, sollte dort der neue Branch auftauchen (manchmal mit etwas Verzögerung). Wenn du oben auf &amp;quot;Network&amp;quot; klickst, siehst du wie dein neuer Branch vom development abzweigt. Jeder Punkt in diesem Diagramm steht für einen &#039;&#039;commit&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Wenn dein Branch fertig ist und in den development übernommen werden soll, wählst du ihn aus der Branches-Liste aus und klickst oben auf &amp;quot;Pull Request&amp;quot;; hier kannst du noch einen zusätzlichen Kommentar angeben. Der Code Maintainer wird per E-Mail informiert und wird deinen Code prüfen und ggf. übernehmen.&lt;br /&gt;
&lt;br /&gt;
In diesem Fall war es wahrscheinlich nur ein Test, daher kannst du den Branch nun mit&lt;br /&gt;
 git push origin :1234-new-feature&lt;br /&gt;
wieder aus deinem Fork löschen. Wenn du ihn auch lokal wieder löschen willst, geht das mit&lt;br /&gt;
 git checkout development&lt;br /&gt;
 git branch -D 1234-new-feature &lt;br /&gt;
&lt;br /&gt;
Das große &amp;lt;code&amp;gt;-D&amp;lt;/code&amp;gt; ermöglicht es, einen Branch zu verwerfen, der nicht weiterverwendet wurde. Wenn du stattdessen &amp;lt;code&amp;gt;-d&amp;lt;/code&amp;gt; angibst, sind nur Branches löschbar die bereits in einen anderen Branch (z.B. den development) übernommen wurden, wo durch die Löschung also keine Daten verloren gehen können. &#039;&#039;&#039;Im Zweifelsfall verwende immer -d&#039;&#039;&#039;; dabei kann nichts versehentlich verloren gehen.&lt;br /&gt;
&lt;br /&gt;
==== Zusammenfassung des OC-Git-Standard-Workflow ====&lt;br /&gt;
 &lt;br /&gt;
* Neuen Branch für eine neue Aufgabe anlegen&lt;br /&gt;
*# &amp;lt;code&amp;gt;git checkout development&amp;lt;/code&amp;gt;&lt;br /&gt;
*# &amp;lt;code&amp;gt;git pull upstream&amp;lt;/code&amp;gt;&lt;br /&gt;
*# &amp;lt;code&amp;gt;git checkout -b 1234-new-feature&amp;lt;/code&amp;gt;&lt;br /&gt;
*: ... oder die Arbeit an einem bereits bestehenden Branch mit &amp;lt;code&amp;gt;git checkout 1234-new-feature&amp;lt;/code&amp;gt; fortsetzen&lt;br /&gt;
* Programmierzyklen&lt;br /&gt;
*# Code schreiben&lt;br /&gt;
*# mit &amp;lt;code&amp;gt;git status&amp;lt;/code&amp;gt; / &amp;lt;code&amp;gt;git diff&amp;lt;/code&amp;gt; lokale Änderungen kontrollieren&lt;br /&gt;
*# Änderung mit &amp;lt;code&amp;gt;git add&amp;lt;/code&amp;gt; / &amp;lt;code&amp;gt;git commit&amp;lt;/code&amp;gt; ins lokale Repo einchecken&lt;br /&gt;
*# mit &amp;lt;code&amp;gt;git pull --rebase upstream development&amp;lt;/code&amp;gt; auf aktuellen OC-Code aufsetzen&lt;br /&gt;
*# weiter bei 1, wenn der Code noch nicht fertig ist&lt;br /&gt;
* Hochladen&lt;br /&gt;
*# &amp;lt;code&amp;gt;git push origin 1234-neues-Feature&amp;lt;/code&amp;gt;&lt;br /&gt;
*# &#039;&#039;Branch 1234-neues-Feature&#039;&#039; auf GitHub aufrufen und Pull Request starten&lt;br /&gt;
* Nicht mehr benötigte Branches löschen&lt;br /&gt;
*# lokal: &amp;lt;code&amp;gt;git checkout development&amp;lt;/code&amp;gt; / &amp;lt;code&amp;gt;git branch -d 1234-neues-Feature&amp;lt;/code&amp;gt;&lt;br /&gt;
*# auf dem Fork: &amp;lt;code&amp;gt;git push origin :1234-neues-Feature&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Commits zusammenfassen ====&lt;br /&gt;
 &lt;br /&gt;
Wenn in Schritt 4-8 mehrere Einzelcommits entstehen, kannst du sie vor dem Hochladen zur besseren Übersicht zu einem zusammenfassen. Prüfe mit &amp;lt;code&amp;gt;git log&amp;lt;/code&amp;gt; nach, wieviele Commits zusammenzufassen sind - sie sollten noch nicht hochgeladen sein! - und gib ein:&lt;br /&gt;
 git rebase -i HEAD~n&lt;br /&gt;
... wobei n die Zahl der Commits ist. Nun erscheint ein Editorfenster mit einem &amp;quot;pick&amp;quot; je Commit. Ersetze alle &amp;quot;picks&amp;quot; ab dem zweiten durch &amp;quot;squash&amp;quot; oder &amp;quot;s&amp;quot;, was bedeutet, dass sie mit dem Commit davor zusammenzufassen sind. Nach dem Speichern erscheint ein zweiter Text im Editor, in dem du auch die Commit-Kommentare zusammenfassen kannst.&lt;br /&gt;
&lt;br /&gt;
Wenn du dir &#039;&#039;&#039;ganz sicher&#039;&#039;&#039; bist, dass ein bereits hochgeladener Commit noch nicht weiterverwendet wurde - z.B. wenn du ihn eben erst hochgeladen und noch keinen Pull Request gemacht hast - kannst du ihn auch noch nachträglich mit neuen Commits zusammenfassen. Dies funktioniert wie oben beschrieben, allerdings musst du beim anschließenden &amp;lt;code&amp;gt;push&amp;lt;/code&amp;gt; zusätzlich &amp;lt;code&amp;gt;--force&amp;lt;/code&amp;gt; angeben, um den/die alten Commit(s) in deinem Fork zu überschreiben.&lt;br /&gt;
&lt;br /&gt;
== Aktuelle Daten holen; mehrere Änderungen testen ==&lt;br /&gt;
 &lt;br /&gt;
Wenn du selbst gerade nichts programmieren willst, sondern dir einfach nur ein Update vom OC-Server holen und anschauen, machst du&lt;br /&gt;
 git checkout development&lt;br /&gt;
 git pull upstream &lt;br /&gt;
Wenn du mehrere Branches mit eigenen Änderungen angelegt hast, und diese alle im Zusammenhang testen möchtest, kannst du dir dafür einen Testbranch anlegen:&lt;br /&gt;
 git checkout -b test development&lt;br /&gt;
 git merge 1234-new-feature&lt;br /&gt;
 git merge 2345-my-bugfix&lt;br /&gt;
 ... &lt;br /&gt;
&lt;br /&gt;
== Änderungen verwerfen ==&lt;br /&gt;
 &lt;br /&gt;
* alle geänderten Dateien: &amp;lt;code&amp;gt;git reset --hard&amp;lt;/code&amp;gt;&lt;br /&gt;
* alles geänderten Dateien im aktuellen Verzeichnisbaum: &amp;lt;code&amp;gt;git checkout .&amp;lt;/code&amp;gt;&lt;br /&gt;
* alle neuen, noch nicht hinzugefügten Dateien: &amp;lt;code&amp;gt;git clean -f -d&amp;lt;/code&amp;gt;&lt;br /&gt;
* nur eine bestimmte Datei: &amp;lt;code&amp;gt;git checkout Dateiname&amp;lt;/code&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
... die bereits &amp;quot;commitet&amp;quot;, aber noch nicht &amp;quot;gepusht&amp;quot; sind: &lt;br /&gt;
* &amp;lt;code&amp;gt;git reset --hard HEAD~n&amp;lt;/code&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
... wobei n die Zahl der zu verwerfenden Commits ist. Wenn die Änderungen bereits &amp;quot;gepusht&amp;quot; wurden: &lt;br /&gt;
* mit &amp;lt;code&amp;gt;git log&amp;lt;/code&amp;gt; die rückgängig zu machende Commit-ID raussuchen&lt;br /&gt;
* &amp;lt;code&amp;gt;git revert commit-ID&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;git push&amp;lt;/code&amp;gt;&lt;br /&gt;
* evt. Pull-Request auf dem GitHub, wenn es bereits im Upstream angekommen war&lt;br /&gt;
 &lt;br /&gt;
Den Kommentar des letzten, noch nicht &amp;quot;gepushten&amp;quot; Commit korrigieren: &lt;br /&gt;
* &amp;lt;code&amp;gt;git commit --amend&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Daten direkt von anderen Entwicklern holen ==&lt;br /&gt;
 &lt;br /&gt;
Wenn du z.B. den Branch &#039;&#039;1234-new-feature&#039;&#039; von Entwickler &#039;&#039;heinz&#039;&#039; testen möchtest, kannst du ihn in einen Testbranch bei dir herunterladen. Zunächst musst du &#039;&#039;heinz&#039;&#039;&#039; Fork einmalig als weitere Upstream definieren:&lt;br /&gt;
 git remote add heinz git@github.com:heinz/oc-server3&lt;br /&gt;
Dann legst du bei dir einen Testbranch an, am besten auf Basis aktuellster Daten ...&lt;br /&gt;
 git checkout development&lt;br /&gt;
 git pull upstream&lt;br /&gt;
 git checkout -b tolles-heinz-feature &lt;br /&gt;
... und mergst seinen Feature-Branch in deinen Testbranch:&lt;br /&gt;
 git pull heinz 1234-new-feature&lt;br /&gt;
&lt;br /&gt;
== Der stable-Branch ==&lt;br /&gt;
 &lt;br /&gt;
Neben dem development gibt es im OC-Repository einen Branch &amp;quot;stable&amp;quot;. Dieser enthält immer den gleichen Stand wie das Produktivsystem www.opencaching.de. Neue Features werden im development entwickelt und getestet und später über den Stable-Branch freigegeben.&lt;br /&gt;
&lt;br /&gt;
Mit dem Stable-Branch wirst du nur dann zu tun haben, wenn du einen &amp;quot;Hotfix&amp;quot; schreibst - eine dringende Korrektur, die sofort freigegeben werden soll. Diese setzt du auf dem Stable statt dem development auf; der übrige Workflow ist der gleiche wie oben beschrieben.&lt;br /&gt;
&lt;br /&gt;
== Vereinfachter Workflow ==&lt;br /&gt;
 &lt;br /&gt;
Der oben beschriebene Workflow ist Pflicht für alle Entwickler, die Code zu OC.de beitragen. Wer nur hin und wieder mal eine Grafik oder einen Text beisteuert, kann ausnahmsweise auch ohne separate Branches arbeiten. In diesem Fall ist ein &#039;&#039;&#039;einfaches &amp;lt;code&amp;gt;git pull&amp;lt;/code&amp;gt; im development-Branch verboten&#039;&#039;&#039;! Stattdessen muss überall, wo oben &amp;lt;code&amp;gt;git pull upstream&amp;lt;/code&amp;gt; steht, stattdessen&lt;br /&gt;
 &amp;lt;code&amp;gt;git pull --rebase upstream development&amp;lt;/code&amp;gt; &lt;br /&gt;
verwendet werden! Der vereinfachte Ablauf ist dann:&lt;br /&gt;
&lt;br /&gt;
1. Code schreiben&amp;lt;br&amp;gt;&lt;br /&gt;
2. mit &amp;lt;code&amp;gt;git status&amp;lt;/code&amp;gt; / &amp;lt;code&amp;gt;git diff&amp;lt;/code&amp;gt; lokale Änderungen kontrollieren&amp;lt;br&amp;gt;&lt;br /&gt;
3. Änderung mit &amp;lt;code&amp;gt;git add&amp;lt;/code&amp;gt; / &amp;lt;code&amp;gt;git commit&amp;lt;/code&amp;gt; ins lokale Repo einchecken&amp;lt;br&amp;gt;&lt;br /&gt;
4. mit &amp;lt;code&amp;gt;git pull --rebase upstream development&amp;lt;/code&amp;gt; auf aktuellen OC-Code aufsetzen&amp;lt;br&amp;gt;&lt;br /&gt;
5. weiter bei 1, wenn der Code noch nicht fertig ist&amp;lt;br&amp;gt;&lt;br /&gt;
6. &amp;lt;code&amp;gt;git push origin&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
7. Pull-Request&lt;br /&gt;
&lt;br /&gt;
== Noch ein paar Gimmicks ==&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;git branch -m 1234-neuestes-Feature&amp;lt;/code&amp;gt; Benennt den derzeit aktiven Branch um in &amp;quot;1234-neuestes-Feature&amp;quot;.&lt;br /&gt;
* &amp;lt;code&amp;gt;git diff Branchname&amp;lt;/code&amp;gt; zeigt alle Unterschiede zwischen dem aktuellen Branch und einem anderen an.&lt;br /&gt;
* &amp;lt;code&amp;gt;git cherry-pick Commit-ID&amp;lt;/code&amp;gt; übernimmt einen bestimmten Commit (von wo auch immer) in den aktiven Branch.&lt;br /&gt;
* &amp;lt;code&amp;gt;git diff --name-only --diff-filter=U&amp;lt;/code&amp;gt; zeigt eine Liste aller konfliktbehafteten Dateien nach einem Merge an&lt;br /&gt;
* &amp;lt;code&amp;gt;git gc&amp;lt;/code&amp;gt;  führt eine [http://de.wikipedia.org/wiki/Garbage_Collection Garbage Collection] durch und gibt Platz im lokalen Repository frei. Per &amp;lt;code&amp;gt;git reset --hard&amp;lt;/code&amp;gt; oder &amp;lt;code&amp;gt;git branch -d&amp;lt;/code&amp;gt; gelöschte Commits werden damit endgültig weggeworfen (vorher sind sie via &amp;lt;code&amp;gt;git reflog&amp;lt;/code&amp;gt; noch wiederherstellbar).&lt;br /&gt;
* &amp;lt;code&amp;gt;git grep Suchbegriff&amp;lt;/code&amp;gt; durchsucht den Code des aktuellen Verzeichnisbaums; für zahlreiche Optionen siehe Git-Doku.&lt;br /&gt;
* &amp;lt;code&amp;gt;git help Kommando&amp;lt;/code&amp;gt; zeigt die Doku für ein Git-Kommando an.&lt;br /&gt;
&lt;br /&gt;
== Forenbeiträge zu Git ==&lt;br /&gt;
* [http://forum.opencaching.de/index.php?topic=2125.0 Git-Workflow]&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Entwicklung|Git]]&lt;/div&gt;</summary>
		<author><name>Fraggle</name></author>
	</entry>
	<entry>
		<id>https://wiki.opencaching.de/index.php?title=Opencaching&amp;diff=7900</id>
		<title>Opencaching</title>
		<link rel="alternate" type="text/html" href="https://wiki.opencaching.de/index.php?title=Opencaching&amp;diff=7900"/>
		<updated>2024-06-12T07:13:17Z</updated>

		<summary type="html">&lt;p&gt;Fraggle: Update URLs&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Datei:Logo-oc.jpg|thumb|Das internationale Opencaching-Logo]]&lt;br /&gt;
&#039;&#039;&#039;Opencaching&#039;&#039;&#039; (kurz: &#039;&#039;&#039;OC&#039;&#039;&#039;) ist der Name mehrerer [[Geocaching]]-Plattformen. Die Bezeichnung „Open“ drückt aus, dass alle Inhalte und der Programmcode offen und ohne Bezahlung für jeden verfügbar sind.&lt;br /&gt;
&lt;br /&gt;
Im August 2005 ging die Seite [[Opencaching.de]] online. In den nachfolgenden Jahren entstanden weitere Opencaching-Seiten in anderen Ländern; in Reihenfolge ihrer Entstehung:&lt;br /&gt;
* [http://www.opencaching.cz Tschechien]&lt;br /&gt;
* [http://www.opencaching.pl Polen]&lt;br /&gt;
* [http://www.opencaching.se Schweden] (eingestellt)&lt;br /&gt;
* [http://www.opencaching.uk Großbritannien]&lt;br /&gt;
* Norwegen (eingestellt)&lt;br /&gt;
* [http://www.opencaching.us USA]&lt;br /&gt;
* [http://web.archive.org/web/20110722120420/http://www.opencaching.jp/ Japan] (eingestellt)&lt;br /&gt;
* Russland (eingestellt)&lt;br /&gt;
* [http://www.opencaching.nl Niederlande]&lt;br /&gt;
* Lettland (nicht gestartet)&lt;br /&gt;
Mit unbekanntem Startdatum:&lt;br /&gt;
* [http://www.opencaching.se Spanien] (leitet zu Opencaching.de weiter)&lt;br /&gt;
&lt;br /&gt;
Das Projekt &#039;&#039;&#039;Opencaching-Netzwerk&#039;&#039;&#039; sah ursprünglich vor, alle Opencaching-Seiten zu vernetzen, so dass alle Caches auf allen Länderseiten verfügbar und logbar sind. Daher werden die Einzelseiten auch als „Knoten“ bezeichnet. Da sich die unterschiedlichen Länderknoten aber in der Vergangenheit technisch weit auseinander entwickelt haben, wurde dieses Netzwerk so leider nie realisiert und es findet aktuell kein Datenaustausch zwischen den OC-Seiten statt.&lt;br /&gt;
&lt;br /&gt;
Die [http://www.opencaching.es/ spanische] und [http://www.opencaching.it/ italienische] Opencaching-Seite sind keine eigenständigen Länderknoten, sondern leiten zu Opencaching.de (mit entsprechender Übersetzung) weiter.&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Opencaching| ]]&lt;/div&gt;</summary>
		<author><name>Fraggle</name></author>
	</entry>
	<entry>
		<id>https://wiki.opencaching.de/index.php?title=Entwicklung/Implementierungstatus_der_Supportfunktionen&amp;diff=7899</id>
		<title>Entwicklung/Implementierungstatus der Supportfunktionen</title>
		<link rel="alternate" type="text/html" href="https://wiki.opencaching.de/index.php?title=Entwicklung/Implementierungstatus_der_Supportfunktionen&amp;diff=7899"/>
		<updated>2024-05-13T19:57:37Z</updated>

		<summary type="html">&lt;p&gt;Fraggle: Erstentwurf&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;margin:auto&amp;quot;&lt;br /&gt;
|+ Text der Überschrift&lt;br /&gt;
|-&lt;br /&gt;
! Funktion !! Kurzbeschreibung !! Status !! Rolle !! Rolle implementiert&lt;br /&gt;
&lt;br /&gt;
	&lt;br /&gt;
|-&lt;br /&gt;
| [https://opencaching.atlassian.net/wiki/spaces/DEV/pages/1739423772 ReportedCaches]&lt;br /&gt;
 ||&lt;br /&gt;
* Auflistung aller Caches, die gemeldet wurden&lt;br /&gt;
* Meldungen können zugewiesen und abgearbeitet werden&lt;br /&gt;
* Owner können kontaktiert werden&lt;br /&gt;
 || &lt;br /&gt;
* OK&lt;br /&gt;
* OK&lt;br /&gt;
* nicht&amp;amp;nbsp;impl.&lt;br /&gt;
 || &lt;br /&gt;
* ROLE_SUPPORT_TRAINEE&lt;br /&gt;
* ROLE_SUPPORT_TRAINEE&lt;br /&gt;
* ROLE_SUPPORT_TRAINEE&lt;br /&gt;
  || &lt;br /&gt;
* OK&lt;br /&gt;
* OK&lt;br /&gt;
* nicht&amp;amp;nbsp;impl.&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [https://opencaching.atlassian.net/wiki/spaces/DEV/pages/1739489317 Cache history]&lt;br /&gt;
 ||&lt;br /&gt;
* Zeigt Statusänderungen zu einem Listing (Loglöschungen, Koordinatenänderungen, ..)&lt;br /&gt;
 || &lt;br /&gt;
* OK&lt;br /&gt;
 || &lt;br /&gt;
* ROLE_SUPPORT_TRAINEE&lt;br /&gt;
  || &lt;br /&gt;
* OK&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [https://opencaching.atlassian.net/wiki/spaces/DEV/pages/1739620370 Manage User]&lt;br /&gt;
 ||&lt;br /&gt;
* Zeigt Details zu einem Nutzeraccount&lt;br /&gt;
* Account samt Caches deaktivieren&lt;br /&gt;
* DSGVO-Löschung des Accounts&lt;br /&gt;
* Emailadresse als ungültig markieren&lt;br /&gt;
* Emailadresse eines Nutzers neu setzen (falls vergessen..)&lt;br /&gt;
* Account für eine bestimmte Zeitspanne deaktivieren und wieder reaktivieren&lt;br /&gt;
* Loginsperre für eine bestimmte Zeit erteilen&lt;br /&gt;
 || &lt;br /&gt;
* OK&lt;br /&gt;
* nicht&amp;amp;nbsp;impl.&lt;br /&gt;
* nicht&amp;amp;nbsp;impl.&lt;br /&gt;
* OK&lt;br /&gt;
* nicht&amp;amp;nbsp;impl.&lt;br /&gt;
* OK&lt;br /&gt;
* OK&lt;br /&gt;
 || &lt;br /&gt;
* ROLE_SUPPORT_TRAINEE&lt;br /&gt;
* ROLE_SUPPORT_MAINTAIN&lt;br /&gt;
* ROLE_SUPPORT_MAINTAIN&lt;br /&gt;
* ROLE_SUPPORT_MAINTAIN&lt;br /&gt;
* ROLE_SUPPORT_MAINTAIN (höher?)&lt;br /&gt;
* ROLE_SUPPORT_MAINTAIN&lt;br /&gt;
* ROLE_SUPPORT_MAINTAIN&lt;br /&gt;
  || &lt;br /&gt;
* OK&lt;br /&gt;
* nicht&amp;amp;nbsp;impl.&lt;br /&gt;
* nicht&amp;amp;nbsp;impl.&lt;br /&gt;
* OK&lt;br /&gt;
* nicht&amp;amp;nbsp;impl.&lt;br /&gt;
* OK&lt;br /&gt;
* OK&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [https://opencaching.atlassian.net/wiki/spaces/DEV/pages/1739587596 Vandalismus]&lt;br /&gt;
 ||&lt;br /&gt;
* Wiederherstellung vandalisierter Listings&lt;br /&gt;
* Wiederherstellung vandalisierter Logs&lt;br /&gt;
* Wiederherstellung vandalisierter Bilder (siehe [https://opencaching.atlassian.net/browse/OCC-166 OCC-166])&lt;br /&gt;
 || &lt;br /&gt;
* OK&lt;br /&gt;
* OK&lt;br /&gt;
* nicht&amp;amp;nbsp;impl.&lt;br /&gt;
 || &lt;br /&gt;
* ROLE_SUPPORT_MAINTAIN&lt;br /&gt;
* ROLE_SUPPORT_MAINTAIN&lt;br /&gt;
* ROLE_SUPPORT_MAINTAIN&lt;br /&gt;
  || &lt;br /&gt;
* OK&lt;br /&gt;
* OK&lt;br /&gt;
* nicht&amp;amp;nbsp;impl.&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [https://opencaching.atlassian.net/wiki/spaces/DEV/pages/1739489393 occ Ersatz]&lt;br /&gt;
 ||&lt;br /&gt;
* Verbindung zwischen OC- und GC-Listing und -Ownern sichtbar machen&lt;br /&gt;
** Verknüpfung eines Owners zu anderen Nodes/Plattformen&lt;br /&gt;
** Verknüpfung eines Listings zu anderen Nodes/Plattformen&lt;br /&gt;
** grundlegende Listinginformationen anderer Nodes speichern (um nicht erfolgte Veränderungen im OC-Listing besser zu verfolgen)&lt;br /&gt;
** Import von GPX-Daten anderer Nodes, um Abgleiche zu automatisieren&lt;br /&gt;
* (Support-)Kommentare zu Owner und Listing hinterlassen&lt;br /&gt;
* Markierung von OC-Listings als Bonuscache bzw. zu Bonus gehörend&lt;br /&gt;
 || &lt;br /&gt;
* OK&lt;br /&gt;
** OK&lt;br /&gt;
** OK&lt;br /&gt;
** OK&lt;br /&gt;
** OK&lt;br /&gt;
* OK&lt;br /&gt;
* OK&lt;br /&gt;
 || &lt;br /&gt;
* ROLE_SUPPORT_MAINTAIN&lt;br /&gt;
** ROLE_SUPPORT_MAINTAIN&lt;br /&gt;
** ROLE_SUPPORT_MAINTAIN&lt;br /&gt;
** ROLE_SUPPORT_MAINTAIN&lt;br /&gt;
** ROLE_SUPPORT_MAINTAIN&lt;br /&gt;
* ROLE_SUPPORT_MAINTAIN&lt;br /&gt;
* ROLE_SUPPORT_MAINTAIN&lt;br /&gt;
  || &lt;br /&gt;
* OK&lt;br /&gt;
** OK&lt;br /&gt;
** OK&lt;br /&gt;
** OK&lt;br /&gt;
** OK&lt;br /&gt;
* OK&lt;br /&gt;
* OK&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [https://opencaching.atlassian.net/wiki/spaces/DEV/pages/1750597633 Datenbankabfragen]&lt;br /&gt;
 ||&lt;br /&gt;
* Ausführung vorgefertigter Datenbankabfragen&lt;br /&gt;
* Ausführung freier Datenbankabfragen&lt;br /&gt;
 || &lt;br /&gt;
* OK&lt;br /&gt;
* OK&lt;br /&gt;
 || &lt;br /&gt;
* ROLE_SUPPORT_TRAINEE bis ROLE_SUPPORT_MAINTAIN (hängt ggf. von der jeweiligen DB-Abfrage ab)&lt;br /&gt;
* ROLE_SUPPORT_MAINTAIN&lt;br /&gt;
  || &lt;br /&gt;
* OK&lt;br /&gt;
* OK&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Beförderung/Degradierung&lt;br /&gt;
 ||&lt;br /&gt;
* Ändern eines ROLE_TEAM zu ROLE_SUPPORT_*&lt;br /&gt;
* Ändern der ROLLEN innerhalb ROLE_SUPPORT_*&lt;br /&gt;
 || &lt;br /&gt;
* OK&lt;br /&gt;
* OK&lt;br /&gt;
 || &lt;br /&gt;
* ROLE_SUPPORT_HEAD&lt;br /&gt;
* ROLE_SUPPORT_HEAD&lt;br /&gt;
  || &lt;br /&gt;
* OK&lt;br /&gt;
* OK&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Listingstatus ändern&lt;br /&gt;
 ||&lt;br /&gt;
* Deaktivieren/Verstecken/Archivieren von Listings&lt;br /&gt;
 || &lt;br /&gt;
* nicht&amp;amp;nbsp;impl.&lt;br /&gt;
 || &lt;br /&gt;
* ROLE_SUPPORT&lt;br /&gt;
  || &lt;br /&gt;
* nicht&amp;amp;nbsp;impl.&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [https://opencaching.atlassian.net/wiki/spaces/DEV/pages/1743552556 Veraltete Listings finden]&lt;br /&gt;
 ||&lt;br /&gt;
* GC-Wegpunkte (deaktiviert bzw. archiviert) mit der Datenbank abgleichen und die OC-Listings in einer Liste darstellen&lt;br /&gt;
 || &lt;br /&gt;
* nicht&amp;amp;nbsp;impl.&lt;br /&gt;
 || &lt;br /&gt;
* ROLE_SUPPORT&lt;br /&gt;
  || &lt;br /&gt;
* nicht&amp;amp;nbsp;impl.&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [https://opencaching.atlassian.net/wiki/spaces/DEV/pages/1743552556 Listingqualität]&lt;br /&gt;
 ||&lt;br /&gt;
* Listings von &amp;quot;Newbies&amp;quot; (= wenige Tage vor der Veröffentlichung erst angemeldet) auflisten, damit man sich diese genauer ansehen kann&lt;br /&gt;
* Vorlage von Listings, deren Besitzer länger als ein Jahr nicht mehr eingeloggt war und die einen DNF bzw. Hinweislog erhalten&lt;br /&gt;
 || &lt;br /&gt;
* OK&lt;br /&gt;
: (siehe &amp;quot;DB-Abfragen&amp;quot;)&lt;br /&gt;
* OK&lt;br /&gt;
 || &lt;br /&gt;
* ROLE_SUPPORT_TRAINEE&lt;br /&gt;
* ROLE_SUPPORT_TRAINEE&lt;br /&gt;
  || &lt;br /&gt;
* OK&lt;br /&gt;
* OK&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Logs löschen&lt;br /&gt;
 ||&lt;br /&gt;
* unangebrachte Logs in Listings löschen&lt;br /&gt;
 || &lt;br /&gt;
* nicht&amp;amp;nbsp;impl.&lt;br /&gt;
 || &lt;br /&gt;
* ROLE_SUPPORT&lt;br /&gt;
  || &lt;br /&gt;
* nicht&amp;amp;nbsp;impl.&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Logs löschen sperren&lt;br /&gt;
 ||&lt;br /&gt;
* Löschen von Logs durch Owner sperren&lt;br /&gt;
 || &lt;br /&gt;
* nicht&amp;amp;nbsp;impl.&lt;br /&gt;
 || &lt;br /&gt;
* ROLE_SUPPORT&lt;br /&gt;
  || &lt;br /&gt;
* nicht&amp;amp;nbsp;impl.&lt;br /&gt;
|-&lt;br /&gt;
|-&lt;br /&gt;
|-&lt;br /&gt;
|-&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Entwicklung]]&lt;/div&gt;</summary>
		<author><name>Fraggle</name></author>
	</entry>
	<entry>
		<id>https://wiki.opencaching.de/index.php?title=Role_hierarchy&amp;diff=7898</id>
		<title>Role hierarchy</title>
		<link rel="alternate" type="text/html" href="https://wiki.opencaching.de/index.php?title=Role_hierarchy&amp;diff=7898"/>
		<updated>2024-05-13T19:31:57Z</updated>

		<summary type="html">&lt;p&gt;Fraggle: Änderung 7897 von Fraggle (Diskussion) rückgängig gemacht.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The fundament of our security is a customizable role hierarchy. One or multiple roles can be applied to a user. Every role itself is linked to different permissions which allow to view, edit or delete resources like geocaches, logs or users. If no permission is present it defaults to disallowing the action.&lt;br /&gt;
&lt;br /&gt;
== Role hierarchy ==&lt;br /&gt;
https://app.conceptboard.com/board/9qra-r8bs-bpy2-cuf2-0ikx&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Image:Testumgebung Rollen 01.png|500px]]&lt;br /&gt;
&lt;br /&gt;
This diagram must be read bottom to top. Every role inherits roles above them. Example: ROLE_SOCIAL_HEAD contains ROLE_SOCIAL, ROLE_SOCIAL_TRAINEE, ROLE_TEAM and ROLE_USER. Every logged in user has ROLE_USER.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Permissions ==&lt;br /&gt;
Permissions are linked to different roles which can be seen as a permission group. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Database ==&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
Image:Testumgebung Rollen 02.png|table security_roles|alt=table security_roles&lt;br /&gt;
Image:Testumgebung Rollen 03.png|table security_roles_hierarchy|alt=table security_roles_hierarchy&lt;br /&gt;
Image:Testumgebung Rollen 04.png|example for table user_roles|alt=example for table user_roles&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Code examples ==&lt;br /&gt;
Annotations, to secure complete functions or classes:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;/**&lt;br /&gt;
 * @Security(&amp;quot;is_granted(&#039;ROLE_SOCIAL&#039;)&amp;quot;)&lt;br /&gt;
 */&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
PHP, to secure parts of the code:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;if ($this-&amp;gt;isGranted(&#039;ROLE_SOCIAL&#039;)) {&lt;br /&gt;
  ..&lt;br /&gt;
}&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Twig, to secure parts of the code from being displayed or executed.&lt;br /&gt;
But pay attention: as long as the @routes are not secured (see above) they still can be called via URL!&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
 {% if is_granted(&#039;ROLE_SOCIAL&#039;) %}&lt;br /&gt;
   {{ &#039;You have access.&#039; }}&lt;br /&gt;
 {% else %}&lt;br /&gt;
   {{ &#039;Sorry. You don\&#039;t have access.&#039; }}&lt;br /&gt;
 {% endif %}&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Entwicklung]]&lt;br /&gt;
[[Kategorie:English pages]]&lt;/div&gt;</summary>
		<author><name>Fraggle</name></author>
	</entry>
	<entry>
		<id>https://wiki.opencaching.de/index.php?title=Role_hierarchy&amp;diff=7897</id>
		<title>Role hierarchy</title>
		<link rel="alternate" type="text/html" href="https://wiki.opencaching.de/index.php?title=Role_hierarchy&amp;diff=7897"/>
		<updated>2024-05-13T19:31:27Z</updated>

		<summary type="html">&lt;p&gt;Fraggle: Kategorie bearbeitet&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The fundament of our security is a customizable role hierarchy. One or multiple roles can be applied to a user. Every role itself is linked to different permissions which allow to view, edit or delete resources like geocaches, logs or users. If no permission is present it defaults to disallowing the action.&lt;br /&gt;
&lt;br /&gt;
== Role hierarchy ==&lt;br /&gt;
https://app.conceptboard.com/board/9qra-r8bs-bpy2-cuf2-0ikx&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Image:Testumgebung Rollen 01.png|500px]]&lt;br /&gt;
&lt;br /&gt;
This diagram must be read bottom to top. Every role inherits roles above them. Example: ROLE_SOCIAL_HEAD contains ROLE_SOCIAL, ROLE_SOCIAL_TRAINEE, ROLE_TEAM and ROLE_USER. Every logged in user has ROLE_USER.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Permissions ==&lt;br /&gt;
Permissions are linked to different roles which can be seen as a permission group. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Database ==&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
Image:Testumgebung Rollen 02.png|table security_roles|alt=table security_roles&lt;br /&gt;
Image:Testumgebung Rollen 03.png|table security_roles_hierarchy|alt=table security_roles_hierarchy&lt;br /&gt;
Image:Testumgebung Rollen 04.png|example for table user_roles|alt=example for table user_roles&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Code examples ==&lt;br /&gt;
Annotations, to secure complete functions or classes:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;/**&lt;br /&gt;
 * @Security(&amp;quot;is_granted(&#039;ROLE_SOCIAL&#039;)&amp;quot;)&lt;br /&gt;
 */&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
PHP, to secure parts of the code:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;if ($this-&amp;gt;isGranted(&#039;ROLE_SOCIAL&#039;)) {&lt;br /&gt;
  ..&lt;br /&gt;
}&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Twig, to secure parts of the code from being displayed or executed.&lt;br /&gt;
But pay attention: as long as the @routes are not secured (see above) they still can be called via URL!&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
 {% if is_granted(&#039;ROLE_SOCIAL&#039;) %}&lt;br /&gt;
   {{ &#039;You have access.&#039; }}&lt;br /&gt;
 {% else %}&lt;br /&gt;
   {{ &#039;Sorry. You don\&#039;t have access.&#039; }}&lt;br /&gt;
 {% endif %}&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Entwicklung|Entwicklung/Role hierarchy]]&lt;br /&gt;
[[Kategorie:English pages]]&lt;/div&gt;</summary>
		<author><name>Fraggle</name></author>
	</entry>
	<entry>
		<id>https://wiki.opencaching.de/index.php?title=Cachekarte&amp;diff=7896</id>
		<title>Cachekarte</title>
		<link rel="alternate" type="text/html" href="https://wiki.opencaching.de/index.php?title=Cachekarte&amp;diff=7896"/>
		<updated>2024-05-13T19:19:27Z</updated>

		<summary type="html">&lt;p&gt;Fraggle: Kategorie bearbeitet&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Überarbeiten|Abschnitt &amp;quot;Kartenarten&amp;quot; scheint veraltet}}&lt;br /&gt;
&lt;br /&gt;
[[Datei:Cachekarte groß.png|300px|thumb|rechts|Kartenausschnitt Heidelberg/Mannheim]]&lt;br /&gt;
&lt;br /&gt;
Die &#039;&#039;&#039;[http://www.opencaching.de/map2.php Cachekarte]&#039;&#039;&#039; ist neben dem [[Suchformular]] die zweite Möglichkeit, um auf Opencaching nach interessanten Caches zu stöbern. In der Grundeinstellung zeigt sie alle aktiven Caches (Status: [[Cachestatus#Kann_gesucht_werden|kann gesucht werden]]) in Kartenausschnitt an, ausgenommen [[Caches ignorieren|ignorierte Caches]].&lt;br /&gt;
&lt;br /&gt;
== Zielgebiet wählen ==&lt;br /&gt;
Der Kartenausschnitt kann durch Klicken und Ziehen mit der Maus oder mit den Pfeiltasten verschoben werden. Rein- und rausgezoomt wird mit dem Mausrad, durch Klick auf die Plus/Minus-Symbole unten rechts oder mit den Plus/Minus-Tasten. Durch Drücken der Umschalttaste und „Aufziehen“ mit der Maus kann man auch direkt einen bestimmten Ausschnitt vergrößern.&lt;br /&gt;
&lt;br /&gt;
In der Suchleiste über der Karte kannst du einen Ortsnamen eingeben, einen Teil der gesuchten Cachenamen oder – falls bekannt – einen [[Wegpunkte#Wegpunkt eines Listings|OC-Wegpunkt]]. Es erscheint eine Auswahl der passenden Orte und Caches und von dort geht es weiter zum entsprechenden Kartenausschnitt.&lt;br /&gt;
&lt;br /&gt;
[[Datei:Cachekarte Cacheauswahl.png|miniatur|200px]]&lt;br /&gt;
&lt;br /&gt;
== Cache anzeigen ==&lt;br /&gt;
Mit einem Klick auf ein Cachesymbol öffnet sich ein kleines Fenster mit den wichtigsten Informationen zum Cache. Von dort gelangst du per Klick auf den Cachenamen weiter zur [[Cachebeschreibung (Listing)|Cachebeschreibung]].&lt;br /&gt;
&lt;br /&gt;
Falls der Cache [[Wegpunkte#Interne, zusätzliche Wegpunkte|zusätzliche Wegpunkte]] besitzt, erscheinen diese gleichzeitig mit den Cacheinfo-Fenster auf der Karte. Sie bleiben auch nach Schließen des Fensters sichtbar, solange kein anderer Cache ausgewählt wird. Auch die Wegpunkte sind anklickbar, um zusätzliche Informationen zu erhalten.&lt;br /&gt;
&lt;br /&gt;
Außerdem wird – falls vorhanden – das [[Bilder#Kartenvorschaubilder| Kartenvorschaubild]] des Caches angezeigt. Für jeden deiner Caches kannst du ein Vorschaubild festlegen, das in der Kartenansicht erscheint.&lt;br /&gt;
&lt;br /&gt;
[[Datei:Cachekarte Attributwahl aufgeklappt.png|miniatur|links|300px]]&lt;br /&gt;
&lt;br /&gt;
== Cacheauswahl einschränken ==&lt;br /&gt;
Nach einem Klick auf den Pfeil oben rechts öffnet sich ein Fenster mit Filtereinstellungen. Hier kannst du wählen, welche [[Cachearten]], [[Behältergrößen]], [[Schwierigkeitswertung|Schwierigkeitsgrade]] etc. dich interessieren. Es erscheinen dann nur noch solche Caches auf der Karte, die dieser Auswahl entsprechen. Auch nach Namensbestandteilen wie z.&amp;amp;nbsp;B. „Nacht“ oder „Wald“ kann gefiltert werden.&lt;br /&gt;
&lt;br /&gt;
Tipp: Wenn du das Fenster schließt – dazu genügt ein Klick irgendwo auf die Karte – wird die Auswahl sofort übernommen. Ansonsten dauert es zwei Sekunden, um zu verhindern dass beim Ändern mehrerer Einstellungen jedesmal Daten von Opencaching.de abgerufen werden.&lt;br /&gt;
&lt;br /&gt;
Die Filtereinstellungen bleiben so lange aktiv, bis du sie mit dem „Zurücksetzen“-Knopf verwirfst oder den Webbrowser beendest. Danach erscheinen wieder alle aktiven Caches auf der Karte. Wahlweise kannst du die Einstellungen auch mit dem „Speichern“-Knopf dauerhaft speichern. Dann erscheint nach dem Neustart des Browsers oder nach dem Zurücksetzen wieder die von dir gespeicherte Cacheauswahl.&lt;br /&gt;
&lt;br /&gt;
== Kartenfunktionen ==&lt;br /&gt;
Neben dem Suchfeld oberhalb der Karte sind zusätzlich folgende Funktionen abrufbar:&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|style=&amp;quot;vertical-align:top&amp;quot;|[[Datei:Cachekarte-Haus.png]]&lt;br /&gt;
|springt zu deinen Heimatkoordinaten. Dies funktioniert nur, wenn du [[Login|angemeldet]] bist und die Koordinaten in deinem [[Benutzerprofil]] hinterlegt hast.&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;vertical-align:top&amp;quot;|[[Datei:Cachekarte-GPX.png]]&lt;br /&gt;
|lädt die Daten der Caches im aktuellen Kartenausschnitt als Zip-gepackte [[GPX-Datei]] herunter. Dazu dürfen maximal 500 Caches sichtbar sein; verkleinere ggf. den Kartenausschnitt.&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;vertical-align:top&amp;quot;|[[Datei:Cachekarte-Stern.png]]&lt;br /&gt;
|erzeugt einen Link auf den aktuellen Kartenausschnitt, den du z.&amp;amp;nbsp;B. kopieren und bei den Lesezeichen / Favoriten deines Webbrowsers speichern oder per Email verschicken kannst. Bei Firefox und dem Internet Explorer lässt er sich auch direkt in die Lesezeichen übernehmen.&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;vertical-align:top&amp;quot;|[[Datei:Cachekarte-Einstellungen.png]]&lt;br /&gt;
|öffnet ein Fenster, indem du verschiedene Karteneigenschaften festlegen kannst:&lt;br /&gt;
* ob der Menüpunkt „Karte“ die Vollbild- oder die kleinere Karte (s.u.) aufruft;&lt;br /&gt;
* ob in der rechten unteren Ecke der Karte eine kleine Übersichtskarte erscheinen soll;&lt;br /&gt;
* wieviele Caches maximal auf der Karte angezeigt werden; wenn du 0 angibst, sind es maximal 2500 auf der großen und 1600 auf der kleinen Karte, bzw. max. 200 bei Verwendung des Microsoft Internet Explorers;&lt;br /&gt;
* ob auf der Karte die üblichen Opencaching.de-Symbole erscheinen sollen, oder die kleineren und moderneren von [http://www.opencaching.pl Opencaching Polen];&lt;br /&gt;
* ob und in welcher Größe [[Bilder#Kartenvorschaubilder|Vorschaubilder]] auf der Karte dargestellt werden sollen.&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;vertical-align:top&amp;quot;|[[Datei:Cachekarte-verkleinern.png]]&lt;br /&gt;
|wechselt von der Vollbildkarte zu einer kleineren Darstellung. Dort ist die übliche Menüleiste sichtbar, die Filtereinstellungen befinden sich unterhalb der Karte, und links gibt es eine Direktauswahl der Bundeshauptstädte.&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;vertical-align:top&amp;quot;|[[Datei:Cachekarte-vergrößern.png]]&lt;br /&gt;
|wechselt von der kleinen Karte zurück zur großen.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Kartenarten ==&lt;br /&gt;
In der rechten oberen Ecke der Karte wird das Kartenmaterial gewählt:&lt;br /&gt;
&lt;br /&gt;
;OSM&lt;br /&gt;
Die Karte des freien [[OpenStreetMap]]-Projekts. Diese ist oft aktueller als die „kommerziellen“ Karten und enthält zusätzliche Details.&lt;br /&gt;
&lt;br /&gt;
;MapQuest (MQ)&lt;br /&gt;
Eine andere Aufbereitung des OpenStreetMap-Materials. Die Karte ist übersichtlicher, durch dezentere Farbwahl und weil sie Details erst bei größerer Zoomstufe anzeigt oder teilweise ganz darauf verzichtet.&lt;br /&gt;
&lt;br /&gt;
;OpenCycleMap (OCM)&lt;br /&gt;
Eine Fahrradkarte, die ebenfalls auf OpenStreetMap-Karte basiert und auf ähnliche Weise in einem offenen und freien Projekt zusammengetragen wird.&lt;br /&gt;
&lt;br /&gt;
;Karte&lt;br /&gt;
Die Google-Straßenkarte, wahlweise umschaltbar auf Geländeansicht. Die Google-Karten sind sehr genau und enthalten zusätzliche Informationen über interessante Orte.&lt;br /&gt;
&lt;br /&gt;
;Satellit&lt;br /&gt;
Die Google-Satellitenkarte, mit zu- oder abschaltbaren Straßen und Beschriftungen.&lt;br /&gt;
&lt;br /&gt;
== Wegpunkte eines einzelnen Caches anzeigen ==&lt;br /&gt;
Manchmal sind die zusätzlichen Wegpunkte eines Caches auf einer vollen Karte schwer auszumachen. Hier hilft folgender Trick:&lt;br /&gt;
&lt;br /&gt;
* Rufe das Cachelisting auf,&lt;br /&gt;
* klicke rechts unter der kleinen Karte auf „Opencaching.de“,&lt;br /&gt;
* öffne die Filtereinstellungen der Karte und schalte alle Caches mit einem Klick auf das Kästchen neben „Cacheart“ ab, &lt;br /&gt;
* schließe die Filtereinstellungen und drücke den Neuladen-Knopf deines Browsers.&lt;br /&gt;
&lt;br /&gt;
Nun sind nur noch die Wegpunkte des einen Caches sichtbar.&lt;br /&gt;
&lt;br /&gt;
== Vollbildkarte verlassen ==&lt;br /&gt;
Es gibt mehrere Wege, um von der Vollbildkarte „zurück“ ins Menüsystem oder auf andere Seiten zu gelangen:&lt;br /&gt;
&lt;br /&gt;
* Mit einem Klick auf das Opencaching-Logo oben links gelangst du auf die Startseite,&lt;br /&gt;
* mit einem Klick auf den Benutzername oben links – falls du angemeldet bist – auf deine Profilseite,&lt;br /&gt;
* mit einem Klick auf einen Cachename, nachdem du dessen Info-Fenster geöffnet hast, in die Cachebeschreibung, oder&lt;br /&gt;
* mit einem Klick auf das Verkleinern-Symbol in die kleine Kartenansicht, wo alles Weitere über das Menü wählbar ist.&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Opencaching]]&lt;br /&gt;
[[Kategorie:Geografie und Koordinaten]]&lt;br /&gt;
[[Kategorie:Überarbeiten]]&lt;/div&gt;</summary>
		<author><name>Fraggle</name></author>
	</entry>
	<entry>
		<id>https://wiki.opencaching.de/index.php?title=GeoGames&amp;diff=7895</id>
		<title>GeoGames</title>
		<link rel="alternate" type="text/html" href="https://wiki.opencaching.de/index.php?title=GeoGames&amp;diff=7895"/>
		<updated>2024-05-13T19:18:40Z</updated>

		<summary type="html">&lt;p&gt;Fraggle: Kategorie bearbeitet&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Überarbeiten|Weblinks sind nicht mehr alle erreichbar}}&lt;br /&gt;
&lt;br /&gt;
Die „Olympiade für Geocacher“ fand vom 29.&amp;amp;nbsp;Juni bis zum 1.&amp;amp;nbsp;Juli in Leipzig auf dem Messegelände statt. Insgesamt befanden sich 28&amp;amp;nbsp;Aussteller auf dem 637&amp;amp;nbsp;Quadratmeter großen Gelände. 4500&amp;amp;nbsp;Geocacher aus 14&amp;amp;nbsp;Nationen haben das Gelände besucht und sich in Wettkämpfen duelliert.&lt;br /&gt;
&lt;br /&gt;
== Wettkämpfe ==&lt;br /&gt;
&lt;br /&gt;
Insgesamt fanden dreizehn geolympische Disziplinen statt: Wathosenlauf, Orientierungslauf, Field Puzzle, Dosenstapeln, Dosenlauf, Petlingdarts, Dosenfischen, B-Schlauch-Wettbewerb, Nussknacker, Geocacher Tastsinn, Paddelcachen, Cacherbingo, Petling-Weitwurf.&lt;br /&gt;
&lt;br /&gt;
== Programm der GC32012 ==&lt;br /&gt;
29.06.2012 Eröffungsveranstaltung&lt;br /&gt;
&lt;br /&gt;
30.06.2012 ab 8:00 Uhr Frühstück&lt;br /&gt;
&lt;br /&gt;
Workshops Fotografie, T5-Klettern, GSAK, Elektronik, OSM für Cacher, Dok-Film &amp;quot;Lost Place L.E.&amp;quot; &lt;br /&gt;
&lt;br /&gt;
Ab 19:00 Uhr Das Dosenfischerkonzert&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Ab ca. 21:30 Uhr Musik aus der (Blech-)Dose&lt;br /&gt;
&lt;br /&gt;
01.07.2012 Cleanup-and-Farwell-Party&lt;br /&gt;
&lt;br /&gt;
== Weblinks ==&lt;br /&gt;
* [http://www.project-geogames.de/content/Static.aspx?name=Home Project-Geogames]&lt;br /&gt;
* [http://de.wikipedia.org/wiki/Geogames Wikipedia: GeoGames]&lt;br /&gt;
* [http://www.lvz-online.de/leipzig/citynews/geocaching-games-in-leipzig-3500-teilnehmer-aus-14-laendern-werden-erwartet/r-citynews-a-143640.html Schatzsuche in Leipzig: Geocaching-Games erwarten 3500 Teilnehmer aus 14 Ländern] LVZ-Online. 27.06.2012 Abgerufen am 10.12.2012&lt;br /&gt;
* [http://www.dnn-online.de/web/dnn/nachrichten/detail/-/specific/ueber-4000-Schatzsucher-sind-bei-Geocaching-Games-in-Leipzig-unterwegs-2386608529 Rund 4500 Schatzsucher bei Geocaching-Games in Leipzig] DNN-Online. 27.06.2012 Abgerufen am 10.12.2012&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Geocaching]]&lt;br /&gt;
[[Kategorie:Überarbeiten]]&lt;/div&gt;</summary>
		<author><name>Fraggle</name></author>
	</entry>
	<entry>
		<id>https://wiki.opencaching.de/index.php?title=Warum_diese_Funktion_nicht_vorhanden_ist&amp;diff=7894</id>
		<title>Warum diese Funktion nicht vorhanden ist</title>
		<link rel="alternate" type="text/html" href="https://wiki.opencaching.de/index.php?title=Warum_diese_Funktion_nicht_vorhanden_ist&amp;diff=7894"/>
		<updated>2024-05-13T19:17:29Z</updated>

		<summary type="html">&lt;p&gt;Fraggle: Kategorie bearbeitet&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Überarbeiten|Veraltete Forumlinks aktualisieren}}&lt;br /&gt;
&lt;br /&gt;
Manche Funktionen sind auf [[Opencaching.de]] nicht vorhanden, obwohl sie immer wieder von Nutzern gewünscht werden. Dieser Artikel erklärt, warum das so ist.&lt;br /&gt;
&lt;br /&gt;
== Technische Umsetzung steht noch aus ==&lt;br /&gt;
&lt;br /&gt;
Opencaching.de wird von Geocachern in ihrer Freizeit betrieben und weiterentwickelt. Die zur Verfügung stehenden Ressourcen zum Einbau neuer Funktionen sind daher begrenzt. Die folgenden Änderungen und Ergänzungen an der Website sind bereits angedacht, aber es hat sich noch niemand gefunden, der sie einbaut:&lt;br /&gt;
&lt;br /&gt;
* [https://opencaching.atlassian.net/jira/core/projects/RED/issues/?jql%3Dstatus%20IN%20(%22Pull%20Request%20%C2%BB%20Branch%22%2C%20%22Approved%22)%20AND%20project%20%3D%20%22RED%22%20ORDER%20BY%20priority%20DESC Jira]&lt;br /&gt;
&lt;br /&gt;
== Diskussionsbedarf ==&lt;br /&gt;
&lt;br /&gt;
Bei manchen Funktionen wurde noch nicht besprochen, ob sie sinnvoll oder den technischen Aufwand wert sind. Sie sind hier aufgeführt:&lt;br /&gt;
&lt;br /&gt;
* [https://opencaching.atlassian.net/jira/core/projects/RED/issues/RED-1326?jql=project%20%3D%20%22RED%22%20AND%20status%20IN%20%28%22In%20Review%22%2C%20%22Need%20Feedback%22%2C%20NEW%29%20ORDER%20BY%20created%20DESC&amp;amp;jql%3Dproject%20%3D%20%22RED%22%20AND%20status%20IN%20%28%22Need%20Feedback%22%2C%20NEW%2C%20%22In%20Review%22%29%20ORDER%20BY%20created%20DESC%26jql%3Dproject%20%3D%20%22RED%22%20AND%20status%20IN%20%28%22Need%20Feedback%22%2C%20%22NEW%22%2C%20%22In%20Review%22%29%20ORDER%20BY%20priority%20DESC%3D= Jira]&lt;br /&gt;
&lt;br /&gt;
== Problematische Funktion ==&lt;br /&gt;
&lt;br /&gt;
Folgende neuen Funktionen wurden im [http://forum.opencaching.de/index.php Opencaching-Forum] besprochen – oft auch mehrfach – und es gab schwerwiegende Bedenken gegen eine Realisierung:&lt;br /&gt;
&lt;br /&gt;
=== Bundesländer-Statistik ===&lt;br /&gt;
&lt;br /&gt;
Manche Benutzer wundern sich, warum die regionale [[Empfehlungen|Empfehlungsstatistik]] nach der relativ unbekannten NUTS-Systematik (Regionen) statt nach Bundesländern aufgeteilt ist. Bei einer Aufteilung nach Bundesländern statt nach Regionen würden meist die größeren Städte/Ballungszentren auf den vorderen Plätzen liegen, da dort die Anzahl der Caches/Mitspieler am größten ist. Dadurch würden viele Regionen gar nicht aufgeführt. Owner aus diesen Regionen hätten kaum eine Chance, in eine Bundesland Top 10 zu kommen. Außerdem hätten Cacher außerhalb der Ballungsgebiete keine Möglichkeit nachzuschauen, welche Cache bei ihnen besonders häufig empfohlen/gefunden wurden. Mehr dazu hier: http://forum.opencaching.de/index.php?topic=4398.0&lt;br /&gt;
&lt;br /&gt;
=== Geochecker ===&lt;br /&gt;
&lt;br /&gt;
Es wäre toll, wenn man die Zielkoordinaten von [[Multicache|Multi-]] oder [[Rätselcache]]s als versteckten [[Wegpunkte#Interne, zusätzliche Wegpunkte|zusätzlichen Wegpunkt]] in der [[Cachebeschreibung (Listing)|Cachebeschreibung]] hinterlegen könnte, sodass man die ermittelten Koordinaten prüfen kann. Diese Möglichkeit ist bislang nur über externe Anbieter wie [http://geochecker.org geochecker.org] verfügbar.&lt;br /&gt;
&lt;br /&gt;
Das Problem dabei: Mehrere solcher Koordinatendatenbanken wurden bereits von Hackern geknackt und die Koordinaten im Internet veröffentlicht. Zwar ist Opencaching.de mit professionellen Methoden gegen Hacker abgesichert, aber es ist unklar, ob man das immer vorhande technische „Restrisiko“ in Kauf nehmen möchte.&lt;br /&gt;
&lt;br /&gt;
Forumsdiskussion: http://forum.opencaching.de/index.php?topic=4447.0&lt;br /&gt;
&lt;br /&gt;
=== Cacheampel ===&lt;br /&gt;
&lt;br /&gt;
Befürworter einer „Cacheampel“ wünschen sich, dass Caches nach strengen Kriterien automatisch [[Cachestatus|deaktiviert]] oder mit einem Warnhinweis versehen werden. Dies soll passieren, wenn die Besitzer seit über 12 Monaten nicht mehr eingeloggt waren, evtl. mit weiteren Bedingungen wie mindestens zwei [[DNF|DNF-Logs]].&lt;br /&gt;
&lt;br /&gt;
Das Problem hierbei ist, dass man den Zustand von Caches nicht automatisch bewerten kann. Weder der letzte Loginzeitpunkt des Besitzers noch die Zahl der DNFs lässt einen klaren Schluss auf den Zustand des Caches zu. Viele Cacher loggen z.B. DNF, wenn sie den Cache gar nicht oder nur kurz gesucht haben (wegen [[Muggel]]s, gefährlichem Terrain, einbrechender Dunkelheit usw.) &lt;br /&gt;
&lt;br /&gt;
Stattdessen wurde ein manuell setzbarer Status [http://forum.opencaching.de/index.php?topic=4449.0 Cache vielleicht findbar] diskutiert, der in Extremfällen auch automatisch gesetzt werden könnte. Die Funktion wurde aber bisher nicht umgesetzt.&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Opencaching]]&lt;br /&gt;
[[Kategorie:Überarbeiten]] &amp;lt;!-- Atlassian- und Forumlinks laufen ins Leere --&amp;gt;&lt;/div&gt;</summary>
		<author><name>Fraggle</name></author>
	</entry>
	<entry>
		<id>https://wiki.opencaching.de/index.php?title=Test2&amp;diff=7893</id>
		<title>Test2</title>
		<link rel="alternate" type="text/html" href="https://wiki.opencaching.de/index.php?title=Test2&amp;diff=7893"/>
		<updated>2024-05-13T17:51:51Z</updated>

		<summary type="html">&lt;p&gt;Fraggle: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Template:Translation out of sync}}&lt;br /&gt;
&lt;br /&gt;
* [[Testeritis]]&lt;br /&gt;
* [[ES:Testeritis]]&lt;br /&gt;
&lt;br /&gt;
---&lt;br /&gt;
&lt;br /&gt;
[[en:Adopcja skrzynki]]&lt;br /&gt;
[[pl:Adopcja skrzynki]]&lt;br /&gt;
[[es:Testeritis]]&lt;/div&gt;</summary>
		<author><name>Fraggle</name></author>
	</entry>
	<entry>
		<id>https://wiki.opencaching.de/index.php?title=Vorlage:Translation_out_of_sync&amp;diff=7892</id>
		<title>Vorlage:Translation out of sync</title>
		<link rel="alternate" type="text/html" href="https://wiki.opencaching.de/index.php?title=Vorlage:Translation_out_of_sync&amp;diff=7892"/>
		<updated>2024-05-13T17:51:39Z</updated>

		<summary type="html">&lt;p&gt;Fraggle: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;div style=&amp;quot;align-items:center;margin:2px 0;padding:16px;border: 4px solid black;&amp;quot;&amp;gt;Dieser Artikel ist eine deutsche Übersetzung des Originals (in der Regel auf Englisch), aber der Inhalt scheint &#039;&#039;&#039;unvollständig oder nicht aktuell&#039;&#039;&#039; zu sein! Bitte aktualisiere diese Übersetzung, wenn möglich.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;/div&gt;</summary>
		<author><name>Fraggle</name></author>
	</entry>
	<entry>
		<id>https://wiki.opencaching.de/index.php?title=Vorlage:Translation_out_of_sync&amp;diff=7891</id>
		<title>Vorlage:Translation out of sync</title>
		<link rel="alternate" type="text/html" href="https://wiki.opencaching.de/index.php?title=Vorlage:Translation_out_of_sync&amp;diff=7891"/>
		<updated>2024-05-13T17:48:28Z</updated>

		<summary type="html">&lt;p&gt;Fraggle: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;p style=&amp;quot;align-items:center;margin:2px 0;padding:16px;border: 4px solid black;&amp;quot;&amp;gt;This article is a translated version of the original article, but the content appears to be &#039;&#039;&#039;out of sync with the reference text&#039;&#039;&#039; {{#if: {{{src|}}}&lt;br /&gt;
| in {{Languagename|{{{src|}}}|en}}&lt;br /&gt;
      | (usually the English or German version)&lt;br /&gt;
      }}. Please update this translation if possible.&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;/div&gt;</summary>
		<author><name>Fraggle</name></author>
	</entry>
	<entry>
		<id>https://wiki.opencaching.de/index.php?title=Vorlage:Translation_out_of_sync&amp;diff=7890</id>
		<title>Vorlage:Translation out of sync</title>
		<link rel="alternate" type="text/html" href="https://wiki.opencaching.de/index.php?title=Vorlage:Translation_out_of_sync&amp;diff=7890"/>
		<updated>2024-05-13T17:44:18Z</updated>

		<summary type="html">&lt;p&gt;Fraggle: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This article is a translated version of the original article, but the content appears to be &#039;&#039;&#039;out of sync with the reference text&#039;&#039;&#039; {{#if: {{{src|}}}&lt;br /&gt;
| in {{Languagename|{{{src|}}}|en}}&lt;br /&gt;
      | (usually the English or German version)&lt;br /&gt;
      }}. Please update this translation if possible.&lt;/div&gt;</summary>
		<author><name>Fraggle</name></author>
	</entry>
	<entry>
		<id>https://wiki.opencaching.de/index.php?title=Vorlage:Translation_out_of_sync&amp;diff=7889</id>
		<title>Vorlage:Translation out of sync</title>
		<link rel="alternate" type="text/html" href="https://wiki.opencaching.de/index.php?title=Vorlage:Translation_out_of_sync&amp;diff=7889"/>
		<updated>2024-05-13T17:41:26Z</updated>

		<summary type="html">&lt;p&gt;Fraggle: Die Seite wurde geleert.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Fraggle</name></author>
	</entry>
	<entry>
		<id>https://wiki.opencaching.de/index.php?title=Vorlage:Translation_out_of_sync&amp;diff=7888</id>
		<title>Vorlage:Translation out of sync</title>
		<link rel="alternate" type="text/html" href="https://wiki.opencaching.de/index.php?title=Vorlage:Translation_out_of_sync&amp;diff=7888"/>
		<updated>2024-05-13T17:40:33Z</updated>

		<summary type="html">&lt;p&gt;Fraggle: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Wfmessage&lt;br /&gt;
| type = content&lt;br /&gt;
| image = Inequation.svg{{!}}alt=an unequal sign{{!}}16x16px&lt;br /&gt;
| text = {{LangSwitch|lang={{{lang|{{langcode}} }}}&lt;br /&gt;
  | default = {{TranslateThis|lang={{{lang|}}}|edit=Template:Translation out of sync&lt;br /&gt;
    | 1 = This article is a translated version of the original article, but the content appears to be &#039;&#039;&#039;out of sync with the reference text&#039;&#039;&#039; {{#if: {{{src|}}}&lt;br /&gt;
      | in {{Languagename|{{{src|}}}|en}}&lt;br /&gt;
      | (usually the English or German version)&lt;br /&gt;
      }}. Please [[{{LL|Wiki Translation}}|update this translation]] if possible.&lt;br /&gt;
    }}&lt;br /&gt;
  | ca = Aquest article és una traducció de l&#039;original {{#if: {{{src|}}} &lt;br /&gt;
       (normalment de la versió en anglès o alemany) &lt;br /&gt;
      }}, però el contingut sembla estar &#039;&#039;&#039;desfasat o incomplet&#039;&#039;&#039;. Si us plau [[ES:Wiki Traducción|actualitza la traducció]] si t&#039;és possible. &lt;br /&gt;
  | cs = Tato stránka je českým překladem originálu (&amp;lt;!-- currently returns only the name form in nominative, so no adjective form and no preposition here --&amp;gt;{{Languagename|{{{src|}}}|cs}}), ovšem její obsah se zdá být &#039;&#039;&#039;neúplný nebo neaktuální&#039;&#039;&#039; {{#if:{{{src|}}}&lt;br /&gt;
      | (obvykle v porovnání s anglickou nebo německou verzí)&lt;br /&gt;
      }}.&amp;lt;br/&amp;gt;Prosím, [[Wiki Translation|aktualizujte tento překlad]], je-li to možné.&lt;br /&gt;
  | de = Dieser Artikel ist eine deutsche Übersetzung des Originals {{#if: {{{src|}}}&lt;br /&gt;
      | auf {{Languagename|{{{src|}}}|de}}&lt;br /&gt;
      | (in der Regel auf Englisch)&lt;br /&gt;
      }}, aber der Inhalt scheint &#039;&#039;&#039;unvollständig oder nicht aktuell&#039;&#039;&#039; zu sein! Bitte [[DE:Wiki Übersetzung|aktualisiere diese Übersetzung]], wenn möglich. &lt;br /&gt;
  | el = Αυτό το άρθρο είναι συνδεδεμένο ως μεταφρασμένη έκδοση από το αγγλικό άρθρο, αλλά το περιεχόμενο μοιάζει να είναι &#039;&#039;&#039;μη συγχρονισμένο με το αναφερόμενο κείμενο&#039;&#039;&#039; {{#if: {{{src|}}}&lt;br /&gt;
      | στα {{Languagename|{{{src|}}}|el}}&lt;br /&gt;
      | (συνήθως η αγγλική ή η γερμανική έκδοση)&lt;br /&gt;
      }}. Παρακαλούμε [[El:Wiki Translation|ενημερώστε αυτή τη μετάφραση]] αν είναι δυνατόν.&lt;br /&gt;
  | en = This English article is a translated version, but the content appears to be &#039;&#039;&#039;out of sync with the reference text&#039;&#039;&#039; {{#if: {{{src|}}}&lt;br /&gt;
      | in {{Languagename|{{{src|}}}|en}}&lt;br /&gt;
      | (usually a French, German, or Russian version on this wiki)&lt;br /&gt;
      }}. Please [[Wiki Translation|update this translation]] if possible.&lt;br /&gt;
  | es = Este artículo es una traducción del original {{#if: {{{src|}}}&lt;br /&gt;
      | en {{Languagename|{{{src|}}}|es}}&lt;br /&gt;
      | (normalmente de la versión en inglés o alemán)&lt;br /&gt;
      }}, pero el contenido parece estar &#039;&#039;&#039;desfasado o incompleto&#039;&#039;&#039;. Por favor [[ES:Wiki Traducción|actualiza la traducción]] si te es posible.&lt;br /&gt;
  | fa = این مقاله از نسخهٔ زبان‌اصلی آن &amp;lt;!--&lt;br /&gt;
      --&amp;gt;{{#if: {{{src|}}}&lt;br /&gt;
      | ({{Languagename|{{{src|}}}|fa}})&lt;br /&gt;
      | (معمولاً انگلیسی، آلمانی، فرانسوی، روسی)&lt;br /&gt;
      }} به فارسی ترجمه شده اما به‌نظر می‌رسد با متن مبدأ هماهنگ نیست. &amp;lt;!--&lt;br /&gt;
      --&amp;gt;اگر می‌توانید آن را [[Fa:ترجمه ویکی|&amp;lt;!--text--&amp;gt;به‌روز کنید]].&lt;br /&gt;
  | fr = Cet article est une version traduite de l’article original, mais son contenu semble &#039;&#039;&#039;ne plus être en phase avec le texte de référence&#039;&#039;&#039; {{#if: {{{src|}}}&lt;br /&gt;
      | en {{Languagename|{{{src|}}}|fr}}&lt;br /&gt;
      | (habituellement la version anglophone ou germanophone)&lt;br /&gt;
      }}. Veuillez [[FR:Traduction du wiki|mettre à jour cette traduction]] si possible.&lt;br /&gt;
  | gl = Este artigo é unha tradución do orixinal {{#if: {{{src|}}}&lt;br /&gt;
      | en {{Languagename|{{{src|}}}|gl}}&lt;br /&gt;
      | (a miúdo da versión inglésa ou alemá)&lt;br /&gt;
      }}, pero o contido semella atoparse &#039;&#039;&#039;desfasado ou incompreto&#039;&#039;&#039;. Por favor [[ES:Wiki Traducción|actualiza a tradución]] se éche posíbel.&lt;br /&gt;
  | id = Artikel ini adalah versi diterjemahkan, tapi isinya sepertinyanya &#039;&#039;&#039;tidak sinkron dengan artikel asli&#039;&#039;&#039; {{#if: {{{src|}}}&lt;br /&gt;
      | di {{Languagename|{{{src|}}}|id}}&lt;br /&gt;
      | (biasanya versi bahasa Inggris atau Jerman)&lt;br /&gt;
      }}. Tolong bantu untuk [[{{LL|Wiki Translation}}|memperbarui terjemahan ini]], jika mungkin.&lt;br /&gt;
  | it = Questo articolo è una traduzione dall&#039;articolo originale, ma il contenuto sembra essere &#039;&#039;&#039;disallineato con l&#039;articolo di riferimento&#039;&#039;&#039; {{#if: {{{src|}}}&lt;br /&gt;
      | in {{Languagename|{{{src|}}}|it}}&lt;br /&gt;
      | (solitamente la versione inglese, francese o tedesca)&lt;br /&gt;
      }}. Se possibile [[IT:Traduzione delle pagine wiki|aggiorna questa traduzione]].&lt;br /&gt;
  | ja = この記事は「日本語版」として翻訳されていますが、&#039;&#039;&#039;原文&#039;&#039;&#039;{{#if: {{{src|}}}&lt;br /&gt;
      | （{{Languagename|{{{src|}}}|ja}}版）&lt;br /&gt;
      | （通常、英語版またはドイツ語版）&lt;br /&gt;
      }}&#039;&#039;&#039;の変更が反映されていない&#039;&#039;&#039;ようです。できれば[[JA:ウィキの翻訳|この翻訳の更新]]にご協力ください。&lt;br /&gt;
  | ko = 이 문서는 한국어판으로 번역됐지만 내용이 &#039;&#039;&#039;원본&#039;&#039;&#039;{{#if: {{{src|}}}&lt;br /&gt;
      | ({{Languagename|{{{src|}}}|ko}}판)&lt;br /&gt;
      | (대개는 영어판이나 독일어판)&lt;br /&gt;
      }}&#039;&#039;&#039;에서 벗어난&#039;&#039;&#039; 것 같습니다. 되도록 [[Ko:위키_번역|이 번역을 업데이트]]해 주십시오.&lt;br /&gt;
  | pl = Ten artykuł jest przetłumaczoną wersją, ale treść jest &#039;&#039;&#039;niezsynchronizowana z tekstem oryginalnym&#039;&#039;&#039; {{#if: {{{src|}}}&lt;br /&gt;
      | w języku {{Languagename|{{{src|}}}|pl}}m&lt;br /&gt;
      | (zazwyczaj wersja angielska)&lt;br /&gt;
      }}. Proszę [[Pl:Tłumaczenie Wiki|zaktualizuj to tłumaczenie]] jeśli to możliwe.&lt;br /&gt;
  | pt = Esta página é uma tradução de outra página, mas o conteúdo parece estar &#039;&#039;&#039;fora de sincronia com o texto original&#039;&#039;&#039; {{#if: {{{src|}}}&lt;br /&gt;
      | em {{Languagename|{{{src|}}}|pt}}&lt;br /&gt;
      | (geralmente a versão em inglês ou alemão)&lt;br /&gt;
      }}. Por favor, ajude a [[Pt:Wiki Tradução|atualizar esta tradução]], se possível.&lt;br /&gt;
  | ru = Эта статья отмечена как русскоязычная версия статьи на другом языке, но &#039;&#039;&#039;отличается от неё по содержанию&#039;&#039;&#039; {{#if: {{{src|}}}&lt;br /&gt;
      | (&amp;lt;!-- currently returns only the name form in nominative, so no adjective form and no preposition here --&amp;gt;{{Languagename|{{{src|}}}|ru}})&lt;br /&gt;
      | (обычно основная статья на английском или немецком языках)&lt;br /&gt;
      }}. Пожалуйста, [[RU:Перевод Вики|обновите перевод]] если считаете возможным.&lt;br /&gt;
  | uk = Ця стаття українською мовою пов’язана з англомовною версією, але її вміст &#039;&#039;&#039;не є синхронізованим з оригіналом&#039;&#039;&#039; {{#if: {{{src|}}}&lt;br /&gt;
      | (&amp;lt;!-- currently returns only the name form in nominative, so no adjective form and no preposition here --&amp;gt;{{Languagename|{{{src|}}}|uk}})&lt;br /&gt;
      | (як правило англомовною версією)&lt;br /&gt;
      }}. Будь ласка, [[Uk:Wiki Translation|оновіть переклад]], якщо можливо.&lt;br /&gt;
  | zh-hans = 此文章是来自英文文章的翻译版本，但内容似乎已经&#039;&#039;&#039;与来源文字不同步&#039;&#039;&#039;了 {{#if:{{{src|}}}&lt;br /&gt;
      | （用{{Languagename|{{{src|}}}|zh-hans}}）&lt;br /&gt;
      | （通常是英文或德文版本）&lt;br /&gt;
      }}。可以的话请[[Wiki Translation|更新此翻译]]。&lt;br /&gt;
  | zh-hant = 此文章被連結為來自英文文章的翻譯版本，但內容看起來已經&#039;&#039;&#039;和來源文字不同步&#039;&#039;&#039;了 {{#if:{{{src|}}}&lt;br /&gt;
      | （用{{Languagename|{{{src|}}}|zh-hant}}）&lt;br /&gt;
      | （通常是英文或德文版本）&lt;br /&gt;
      }}。可以的話請[[Wiki Translation|更新此翻譯]]。&lt;br /&gt;
  }}&lt;br /&gt;
| nocat = {{{nocat|}}}{{#ifeq:{{{category|}}}|no|yes&amp;lt;!-- inserts some text to switch off categorisation --&amp;gt;}}&lt;br /&gt;
| categories = &amp;lt;includeonly&amp;gt;[[{{#switch: {{lc:{{#if:{{{lang|}}}|{{{lang|}}}|{{Langcode}}}}}}&lt;br /&gt;
  |en = Category:Translations out of sync&lt;br /&gt;
  &amp;lt;!-- existing categories for the 7 languages with dedicated capitalized namespaces --&amp;gt;&lt;br /&gt;
  | de = Category:DE:Translations out of sync&lt;br /&gt;
  | es = Category:ES:Traducciones desfasadas&lt;br /&gt;
  | fr = Category:FR:Traductions désynchronisées&lt;br /&gt;
  | it = Category:IT:Translations out of sync&lt;br /&gt;
  | ja = Category:JA:原文の変更が未反映の翻訳記事&lt;br /&gt;
  | ko = Category:KO:원본에서 벗어난 번역 문서&lt;br /&gt;
  | nl = Category:NL:Translations out of sync&lt;br /&gt;
  | ru = Category:RU:Протеворечивые переводы&lt;br /&gt;
  &amp;lt;!-- existing categories for all other languages with translated names --&amp;gt;&lt;br /&gt;
  | cs = Category:Cs:Překlad není aktuální&lt;br /&gt;
  | fa = Category:Fa:ترجمه ناهماهنگ&lt;br /&gt;
  | zh-hans = Category:Zh-hans:翻译已过时&lt;br /&gt;
  | zh-hant = Category:Zh-hant:翻譯已過時&lt;br /&gt;
  &amp;lt;!-- existing categories for all other languages with untranslated names --&amp;gt;&lt;br /&gt;
  | ast|bg|ca|da|el|et|fi|fy|he|ko|ku|lv|mk|pl|pt|ro|tr|uk|vi|zh-hans&lt;br /&gt;
    = Category:{{lc:{{#if:{{{lang|}}}|{{{lang|}}}|{{Langcode}}}}}}:Translations out of sync&lt;br /&gt;
  &amp;lt;!-- otherwise use the default category --&amp;gt;&lt;br /&gt;
  | #default = Category:Translations out of sync&lt;br /&gt;
  }}| {{REVISIONTIMESTAMP}}]]&amp;lt;/includeonly&amp;gt;&lt;br /&gt;
}}&amp;lt;noinclude&amp;gt;&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>Fraggle</name></author>
	</entry>
	<entry>
		<id>https://wiki.opencaching.de/index.php?title=Vorlage:Translation_out_of_sync&amp;diff=7887</id>
		<title>Vorlage:Translation out of sync</title>
		<link rel="alternate" type="text/html" href="https://wiki.opencaching.de/index.php?title=Vorlage:Translation_out_of_sync&amp;diff=7887"/>
		<updated>2024-05-13T17:40:01Z</updated>

		<summary type="html">&lt;p&gt;Fraggle: Die Seite wurde neu angelegt: „{{Wfmessage | type = content | image = Inequation.svg{{!}}alt=an unequal sign{{!}}16x16px | text = {{LangSwitch|lang={{{lang|{{langcode}} }}}   | default = {{TranslateThis|lang={{{lang|}}}|edit=Template:Translation out of sync     | 1 = This article is a translated version of the original article, but the content appears to be &amp;#039;&amp;#039;&amp;#039;out of sync with the reference text&amp;#039;&amp;#039;&amp;#039; {{#if: {{{src|}}}       | in {{Languagename|{{{src|}}}|en}}       | (usually the English…“&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Wfmessage&lt;br /&gt;
| type = content&lt;br /&gt;
| image = Inequation.svg{{!}}alt=an unequal sign{{!}}16x16px&lt;br /&gt;
| text = {{LangSwitch|lang={{{lang|{{langcode}} }}}&lt;br /&gt;
  | default = {{TranslateThis|lang={{{lang|}}}|edit=Template:Translation out of sync&lt;br /&gt;
    | 1 = This article is a translated version of the original article, but the content appears to be &#039;&#039;&#039;out of sync with the reference text&#039;&#039;&#039; {{#if: {{{src|}}}&lt;br /&gt;
      | in {{Languagename|{{{src|}}}|en}}&lt;br /&gt;
      | (usually the English or German version)&lt;br /&gt;
      }}. Please [[{{LL|Wiki Translation}}|update this translation]] if possible.&lt;br /&gt;
    }}&lt;br /&gt;
  | ca = Aquest article és una traducció de l&#039;original {{#if: {{{src|}}} &lt;br /&gt;
       (normalment de la versió en anglès o alemany) &lt;br /&gt;
      }}, però el contingut sembla estar &#039;&#039;&#039;desfasat o incomplet&#039;&#039;&#039;. Si us plau [[ES:Wiki Traducción|actualitza la traducció]] si t&#039;és possible. &lt;br /&gt;
  | cs = Tato stránka je českým překladem originálu (&amp;lt;!-- currently returns only the name form in nominative, so no adjective form and no preposition here --&amp;gt;{{Languagename|{{{src|}}}|cs}}), ovšem její obsah se zdá být &#039;&#039;&#039;neúplný nebo neaktuální&#039;&#039;&#039; {{#if:{{{src|}}}&lt;br /&gt;
      | (obvykle v porovnání s anglickou nebo německou verzí)&lt;br /&gt;
      }}.&amp;lt;br/&amp;gt;Prosím, [[Wiki Translation|aktualizujte tento překlad]], je-li to možné.&lt;br /&gt;
  | de = Dieser Artikel ist eine deutsche Übersetzung des Originals {{#if: {{{src|}}}&lt;br /&gt;
      | auf {{Languagename|{{{src|}}}|de}}&lt;br /&gt;
      | (in der Regel auf Englisch)&lt;br /&gt;
      }}, aber der Inhalt scheint &#039;&#039;&#039;unvollständig oder nicht aktuell&#039;&#039;&#039; zu sein! Bitte [[DE:Wiki Übersetzung|aktualisiere diese Übersetzung]], wenn möglich. &lt;br /&gt;
  | el = Αυτό το άρθρο είναι συνδεδεμένο ως μεταφρασμένη έκδοση από το αγγλικό άρθρο, αλλά το περιεχόμενο μοιάζει να είναι &#039;&#039;&#039;μη συγχρονισμένο με το αναφερόμενο κείμενο&#039;&#039;&#039; {{#if: {{{src|}}}&lt;br /&gt;
      | στα {{Languagename|{{{src|}}}|el}}&lt;br /&gt;
      | (συνήθως η αγγλική ή η γερμανική έκδοση)&lt;br /&gt;
      }}. Παρακαλούμε [[El:Wiki Translation|ενημερώστε αυτή τη μετάφραση]] αν είναι δυνατόν.&lt;br /&gt;
  | en = This English article is a translated version, but the content appears to be &#039;&#039;&#039;out of sync with the reference text&#039;&#039;&#039; {{#if: {{{src|}}}&lt;br /&gt;
      | in {{Languagename|{{{src|}}}|en}}&lt;br /&gt;
      | (usually a French, German, or Russian version on this wiki)&lt;br /&gt;
      }}. Please [[Wiki Translation|update this translation]] if possible.&lt;br /&gt;
  | es = Este artículo es una traducción del original {{#if: {{{src|}}}&lt;br /&gt;
      | en {{Languagename|{{{src|}}}|es}}&lt;br /&gt;
      | (normalmente de la versión en inglés o alemán)&lt;br /&gt;
      }}, pero el contenido parece estar &#039;&#039;&#039;desfasado o incompleto&#039;&#039;&#039;. Por favor [[ES:Wiki Traducción|actualiza la traducción]] si te es posible.&lt;br /&gt;
  | fa = این مقاله از نسخهٔ زبان‌اصلی آن &amp;lt;!--&lt;br /&gt;
      --&amp;gt;{{#if: {{{src|}}}&lt;br /&gt;
      | ({{Languagename|{{{src|}}}|fa}})&lt;br /&gt;
      | (معمولاً انگلیسی، آلمانی، فرانسوی، روسی)&lt;br /&gt;
      }} به فارسی ترجمه شده اما به‌نظر می‌رسد با متن مبدأ هماهنگ نیست. &amp;lt;!--&lt;br /&gt;
      --&amp;gt;اگر می‌توانید آن را [[Fa:ترجمه ویکی|&amp;lt;!--text--&amp;gt;به‌روز کنید]].&lt;br /&gt;
  | fr = Cet article est une version traduite de l’article original, mais son contenu semble &#039;&#039;&#039;ne plus être en phase avec le texte de référence&#039;&#039;&#039; {{#if: {{{src|}}}&lt;br /&gt;
      | en {{Languagename|{{{src|}}}|fr}}&lt;br /&gt;
      | (habituellement la version anglophone ou germanophone)&lt;br /&gt;
      }}. Veuillez [[FR:Traduction du wiki|mettre à jour cette traduction]] si possible.&lt;br /&gt;
  | gl = Este artigo é unha tradución do orixinal {{#if: {{{src|}}}&lt;br /&gt;
      | en {{Languagename|{{{src|}}}|gl}}&lt;br /&gt;
      | (a miúdo da versión inglésa ou alemá)&lt;br /&gt;
      }}, pero o contido semella atoparse &#039;&#039;&#039;desfasado ou incompreto&#039;&#039;&#039;. Por favor [[ES:Wiki Traducción|actualiza a tradución]] se éche posíbel.&lt;br /&gt;
  | id = Artikel ini adalah versi diterjemahkan, tapi isinya sepertinyanya &#039;&#039;&#039;tidak sinkron dengan artikel asli&#039;&#039;&#039; {{#if: {{{src|}}}&lt;br /&gt;
      | di {{Languagename|{{{src|}}}|id}}&lt;br /&gt;
      | (biasanya versi bahasa Inggris atau Jerman)&lt;br /&gt;
      }}. Tolong bantu untuk [[{{LL|Wiki Translation}}|memperbarui terjemahan ini]], jika mungkin.&lt;br /&gt;
  | it = Questo articolo è una traduzione dall&#039;articolo originale, ma il contenuto sembra essere &#039;&#039;&#039;disallineato con l&#039;articolo di riferimento&#039;&#039;&#039; {{#if: {{{src|}}}&lt;br /&gt;
      | in {{Languagename|{{{src|}}}|it}}&lt;br /&gt;
      | (solitamente la versione inglese, francese o tedesca)&lt;br /&gt;
      }}. Se possibile [[IT:Traduzione delle pagine wiki|aggiorna questa traduzione]].&lt;br /&gt;
  | ja = この記事は「日本語版」として翻訳されていますが、&#039;&#039;&#039;原文&#039;&#039;&#039;{{#if: {{{src|}}}&lt;br /&gt;
      | （{{Languagename|{{{src|}}}|ja}}版）&lt;br /&gt;
      | （通常、英語版またはドイツ語版）&lt;br /&gt;
      }}&#039;&#039;&#039;の変更が反映されていない&#039;&#039;&#039;ようです。できれば[[JA:ウィキの翻訳|この翻訳の更新]]にご協力ください。&lt;br /&gt;
  | ko = 이 문서는 한국어판으로 번역됐지만 내용이 &#039;&#039;&#039;원본&#039;&#039;&#039;{{#if: {{{src|}}}&lt;br /&gt;
      | ({{Languagename|{{{src|}}}|ko}}판)&lt;br /&gt;
      | (대개는 영어판이나 독일어판)&lt;br /&gt;
      }}&#039;&#039;&#039;에서 벗어난&#039;&#039;&#039; 것 같습니다. 되도록 [[Ko:위키_번역|이 번역을 업데이트]]해 주십시오.&lt;br /&gt;
  | pl = Ten artykuł jest przetłumaczoną wersją, ale treść jest &#039;&#039;&#039;niezsynchronizowana z tekstem oryginalnym&#039;&#039;&#039; {{#if: {{{src|}}}&lt;br /&gt;
      | w języku {{Languagename|{{{src|}}}|pl}}m&lt;br /&gt;
      | (zazwyczaj wersja angielska)&lt;br /&gt;
      }}. Proszę [[Pl:Tłumaczenie Wiki|zaktualizuj to tłumaczenie]] jeśli to możliwe.&lt;br /&gt;
  | pt = Esta página é uma tradução de outra página, mas o conteúdo parece estar &#039;&#039;&#039;fora de sincronia com o texto original&#039;&#039;&#039; {{#if: {{{src|}}}&lt;br /&gt;
      | em {{Languagename|{{{src|}}}|pt}}&lt;br /&gt;
      | (geralmente a versão em inglês ou alemão)&lt;br /&gt;
      }}. Por favor, ajude a [[Pt:Wiki Tradução|atualizar esta tradução]], se possível.&lt;br /&gt;
  | ru = Эта статья отмечена как русскоязычная версия статьи на другом языке, но &#039;&#039;&#039;отличается от неё по содержанию&#039;&#039;&#039; {{#if: {{{src|}}}&lt;br /&gt;
      | (&amp;lt;!-- currently returns only the name form in nominative, so no adjective form and no preposition here --&amp;gt;{{Languagename|{{{src|}}}|ru}})&lt;br /&gt;
      | (обычно основная статья на английском или немецком языках)&lt;br /&gt;
      }}. Пожалуйста, [[RU:Перевод Вики|обновите перевод]] если считаете возможным.&lt;br /&gt;
  | uk = Ця стаття українською мовою пов’язана з англомовною версією, але її вміст &#039;&#039;&#039;не є синхронізованим з оригіналом&#039;&#039;&#039; {{#if: {{{src|}}}&lt;br /&gt;
      | (&amp;lt;!-- currently returns only the name form in nominative, so no adjective form and no preposition here --&amp;gt;{{Languagename|{{{src|}}}|uk}})&lt;br /&gt;
      | (як правило англомовною версією)&lt;br /&gt;
      }}. Будь ласка, [[Uk:Wiki Translation|оновіть переклад]], якщо можливо.&lt;br /&gt;
  | zh-hans = 此文章是来自英文文章的翻译版本，但内容似乎已经&#039;&#039;&#039;与来源文字不同步&#039;&#039;&#039;了 {{#if:{{{src|}}}&lt;br /&gt;
      | （用{{Languagename|{{{src|}}}|zh-hans}}）&lt;br /&gt;
      | （通常是英文或德文版本）&lt;br /&gt;
      }}。可以的话请[[Wiki Translation|更新此翻译]]。&lt;br /&gt;
  | zh-hant = 此文章被連結為來自英文文章的翻譯版本，但內容看起來已經&#039;&#039;&#039;和來源文字不同步&#039;&#039;&#039;了 {{#if:{{{src|}}}&lt;br /&gt;
      | （用{{Languagename|{{{src|}}}|zh-hant}}）&lt;br /&gt;
      | （通常是英文或德文版本）&lt;br /&gt;
      }}。可以的話請[[Wiki Translation|更新此翻譯]]。&lt;br /&gt;
  }}&lt;br /&gt;
| nocat = {{{nocat|}}}{{#ifeq:{{{category|}}}|no|yes&amp;lt;!-- inserts some text to switch off categorisation --&amp;gt;}}&lt;br /&gt;
| categories = &amp;lt;includeonly&amp;gt;[[{{#switch: {{lc:{{#if:{{{lang|}}}|{{{lang|}}}|{{Langcode}}}}}}&lt;br /&gt;
  |en = Category:Translations out of sync&lt;br /&gt;
  &amp;lt;!-- existing categories for the 7 languages with dedicated capitalized namespaces --&amp;gt;&lt;br /&gt;
  | de = Category:DE:Translations out of sync&lt;br /&gt;
  | es = Category:ES:Traducciones desfasadas&lt;br /&gt;
  | fr = Category:FR:Traductions désynchronisées&lt;br /&gt;
  | it = Category:IT:Translations out of sync&lt;br /&gt;
  | ja = Category:JA:原文の変更が未反映の翻訳記事&lt;br /&gt;
  | ko = Category:KO:원본에서 벗어난 번역 문서&lt;br /&gt;
  | nl = Category:NL:Translations out of sync&lt;br /&gt;
  | ru = Category:RU:Протеворечивые переводы&lt;br /&gt;
  &amp;lt;!-- existing categories for all other languages with translated names --&amp;gt;&lt;br /&gt;
  | cs = Category:Cs:Překlad není aktuální&lt;br /&gt;
  | fa = Category:Fa:ترجمه ناهماهنگ&lt;br /&gt;
  | zh-hans = Category:Zh-hans:翻译已过时&lt;br /&gt;
  | zh-hant = Category:Zh-hant:翻譯已過時&lt;br /&gt;
  &amp;lt;!-- existing categories for all other languages with untranslated names --&amp;gt;&lt;br /&gt;
  | ast|bg|ca|da|el|et|fi|fy|he|ko|ku|lv|mk|pl|pt|ro|tr|uk|vi|zh-hans&lt;br /&gt;
    = Category:{{lc:{{#if:{{{lang|}}}|{{{lang|}}}|{{Langcode}}}}}}:Translations out of sync&lt;br /&gt;
  &amp;lt;!-- otherwise use the default category --&amp;gt;&lt;br /&gt;
  | #default = Category:Translations out of sync&lt;br /&gt;
  }}| {{REVISIONTIMESTAMP}}]]&amp;lt;/includeonly&amp;gt;&lt;br /&gt;
}}&amp;lt;noinclude&amp;gt;&lt;br /&gt;
{{Documentation}}&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>Fraggle</name></author>
	</entry>
	<entry>
		<id>https://wiki.opencaching.de/index.php?title=XML-Schnittstelle&amp;diff=7886</id>
		<title>XML-Schnittstelle</title>
		<link rel="alternate" type="text/html" href="https://wiki.opencaching.de/index.php?title=XML-Schnittstelle&amp;diff=7886"/>
		<updated>2024-05-13T17:31:45Z</updated>

		<summary type="html">&lt;p&gt;Fraggle: XML-Schnittstelle in Vergangenheitsform gesetzt&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Die &#039;&#039;&#039;XML-Schnittstelle&#039;&#039;&#039; von Opencaching.de ermöglichte es bis Mitte 2020&amp;lt;ref&amp;gt;[https://github.com/OpencachingDeutschland/oc-server3/commit/e02ca45d606fd752c3d7179f2dcca275316b1a3c Commit vom 12.01.2020 zum Entfernen der Schnittstelle]. Diese Änderungen wurden erst im Juni 2020 mit der Einführung des Cookie Consent Tools auch auf der Webseite wirksam.&amp;lt;/ref&amp;gt;, Cachelistings, Logs und Bilder herunterzuladen, zum Beispiel &lt;br /&gt;
&lt;br /&gt;
* einzelne Caches&lt;br /&gt;
* Caches in einem bestimmten Umkreis &lt;br /&gt;
* neue und veränderte Daten seit einem bestimmten Zeitpunkt&lt;br /&gt;
* die gesamte Opencaching-Datenbank.&lt;br /&gt;
&lt;br /&gt;
Die Daten wurden in einem XML-Format übertragen und waren nicht zum direkten Lesen, sondern zur Weiterverarbeitung durch Programme/Apps/Tools gedacht. Ihre Verwendung unterliegt der [[Datenlizenz]].&lt;br /&gt;
&lt;br /&gt;
[[API-Clients#XML-Clients|Diese Programme]] (unvollständige Liste) nutzen die XML-Schnittstelle.&lt;br /&gt;
&lt;br /&gt;
Mit der [[Opencaching-API]] (OKAPI) ist eine weitere, komfortablere Schnittstelle verfügbar, die auch das Hochladen von Logs ermöglicht.&lt;br /&gt;
&lt;br /&gt;
== XML-Schnittstelle vs. OKAPI ==&lt;br /&gt;
&lt;br /&gt;
Die OKAPI ist flexibler einsetzbar, besser dokumentiert, bietet mehr Funktionen und die bessere Performance, wird konsequenter weiterentwickelt und ist auch auf anderen [[Opencaching]]-Länderseiten verfügbar. Sie ist daher die erste Wahl für die meisten Anwendungen.&lt;br /&gt;
&lt;br /&gt;
Die Vorteile des XML-Interfaces lagen vor allem im Abruf großer Datenmengen. Wenn man z.B. die Koordinaten, Typen, Namen etc. aller Caches für eine Kartendarstellung braucht, müsste man dazu mit der OKAPI die komplette Datenbank inklusive aller Cachebeschreibungen und Logs ziehen; außerdem muss man neue Daten mindestens einmal pro Woche abrufen. Beim XML-Interface konnte man dagegen gezielt nur die Basisdaten aller Caches abrufen, und es gab keine Mindestfrequenz für Aktualisierungen.&lt;br /&gt;
&lt;br /&gt;
Alle anderen OKAPI-Abrufe, bei denen man nicht die gesamte Datenbank herunterlädt, sind auf 500 Caches pro Abruf beschränkt. Beim XML-Interface gab es keine Beschränkung.&lt;br /&gt;
&lt;br /&gt;
== Weblinks ==&lt;br /&gt;
&lt;br /&gt;
* [http://www.opencaching.de/doc/xml Beschreibung der XML-Schnittstelle] ([https://github.com/OpencachingDeutschland/oc-server3/tree/development/htdocs/doc/xml Auf GitHub] bzw. [https://github.com/OpencachingDeutschland/oc-server3/blob/5f2bc06c3fc8ed41542a3a8deeb3a71cb99fc69b/htdocs/doc/xml/ Permalink])&lt;br /&gt;
* [https://github.com/OpencachingDeutschland/oc-server3/tree/development/local/ocxml11client Client-Referenzimplementierung] ([https://github.com/OpencachingDeutschland/oc-server3/blob/5f2bc06c3fc8ed41542a3a8deeb3a71cb99fc69b/local/ocxml11client/ Permalink])&lt;br /&gt;
&lt;br /&gt;
== Referenzen ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;references /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Opencaching]]&lt;br /&gt;
[[Kategorie:Geocaching-Software]]&lt;/div&gt;</summary>
		<author><name>Fraggle</name></author>
	</entry>
	<entry>
		<id>https://wiki.opencaching.de/index.php?title=Warum_diese_Funktion_nicht_vorhanden_ist&amp;diff=7885</id>
		<title>Warum diese Funktion nicht vorhanden ist</title>
		<link rel="alternate" type="text/html" href="https://wiki.opencaching.de/index.php?title=Warum_diese_Funktion_nicht_vorhanden_ist&amp;diff=7885"/>
		<updated>2024-05-13T17:28:49Z</updated>

		<summary type="html">&lt;p&gt;Fraggle: Kategorie ergänzt&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Manche Funktionen sind auf [[Opencaching.de]] nicht vorhanden, obwohl sie immer wieder von Nutzern gewünscht werden. Dieser Artikel erklärt, warum das so ist.&lt;br /&gt;
&lt;br /&gt;
== Technische Umsetzung steht noch aus ==&lt;br /&gt;
&lt;br /&gt;
Opencaching.de wird von Geocachern in ihrer Freizeit betrieben und weiterentwickelt. Die zur Verfügung stehenden Ressourcen zum Einbau neuer Funktionen sind daher begrenzt. Die folgenden Änderungen und Ergänzungen an der Website sind bereits angedacht, aber es hat sich noch niemand gefunden, der sie einbaut:&lt;br /&gt;
&lt;br /&gt;
* https://opencaching.atlassian.net/jira/core/projects/RED/issues/?jql=status%20IN%20%28&amp;quot;Pull%20Request%20»%20Branch&amp;quot;%2C%20&amp;quot;Approved&amp;quot;%29%20AND%20project%20%3D%20&amp;quot;RED&amp;quot;%20ORDER%20BY%20priority%20DESC&lt;br /&gt;
&lt;br /&gt;
== Diskussionsbedarf ==&lt;br /&gt;
&lt;br /&gt;
Bei manchen Funktionen wurde noch nicht besprochen, ob sie sinnvoll oder den technischen Aufwand wert sind. Sie sind hier aufgeführt:&lt;br /&gt;
&lt;br /&gt;
* https://opencaching.atlassian.net/jira/core/projects/RED/issues/?jql=project%20%3D%20&amp;quot;RED&amp;quot;%20AND%20status%20IN%20%28&amp;quot;Need%20Feedback&amp;quot;%2C%20&amp;quot;NEW&amp;quot;%2C%20&amp;quot;In%20Review&amp;quot;%29%20ORDER%20BY%20priority%20DESC&lt;br /&gt;
&lt;br /&gt;
== Problematische Funktion ==&lt;br /&gt;
&lt;br /&gt;
Folgende neuen Funktionen wurden im [http://forum.opencaching.de/index.php Opencaching-Forum] besprochen – oft auch mehrfach – und es gab schwerwiegende Bedenken gegen eine Realisierung:&lt;br /&gt;
&lt;br /&gt;
=== Bundesländer-Statistik ===&lt;br /&gt;
&lt;br /&gt;
Manche Benutzer wundern sich, warum die regionale [[Empfehlungen|Empfehlungsstatistik]] nach der relativ unbekannten NUTS-Systematik (Regionen) statt nach Bundesländern aufgeteilt ist. Bei einer Aufteilung nach Bundesländern statt nach Regionen würden meist die größeren Städte/Ballungszentren auf den vorderen Plätzen liegen, da dort die Anzahl der Caches/Mitspieler am größten ist. Dadurch würden viele Regionen gar nicht aufgeführt. Owner aus diesen Regionen hätten kaum eine Chance, in eine Bundesland Top 10 zu kommen. Außerdem hätten Cacher außerhalb der Ballungsgebiete keine Möglichkeit nachzuschauen, welche Cache bei ihnen besonders häufig empfohlen/gefunden wurden. Mehr dazu hier: http://forum.opencaching.de/index.php?topic=4398.0&lt;br /&gt;
&lt;br /&gt;
=== Geochecker ===&lt;br /&gt;
&lt;br /&gt;
Es wäre toll, wenn man die Zielkoordinaten von [[Multicache|Multi-]] oder [[Rätselcache]]s als versteckten [[Wegpunkte#Interne, zusätzliche Wegpunkte|zusätzlichen Wegpunkt]] in der [[Cachebeschreibung (Listing)|Cachebeschreibung]] hinterlegen könnte, sodass man die ermittelten Koordinaten prüfen kann. Diese Möglichkeit ist bislang nur über externe Anbieter wie [http://geochecker.org geochecker.org] verfügbar.&lt;br /&gt;
&lt;br /&gt;
Das Problem dabei: Mehrere solcher Koordinatendatenbanken wurden bereits von Hackern geknackt und die Koordinaten im Internet veröffentlicht. Zwar ist Opencaching.de mit professionellen Methoden gegen Hacker abgesichert, aber es ist unklar, ob man das immer vorhande technische „Restrisiko“ in Kauf nehmen möchte.&lt;br /&gt;
&lt;br /&gt;
Forumsdiskussion: http://forum.opencaching.de/index.php?topic=4447.0&lt;br /&gt;
&lt;br /&gt;
=== Cacheampel ===&lt;br /&gt;
&lt;br /&gt;
Befürworter einer „Cacheampel“ wünschen sich, dass Caches nach strengen Kriterien automatisch [[Cachestatus|deaktiviert]] oder mit einem Warnhinweis versehen werden. Dies soll passieren, wenn die Besitzer seit über 12 Monaten nicht mehr eingeloggt waren, evtl. mit weiteren Bedingungen wie mindestens zwei [[DNF|DNF-Logs]].&lt;br /&gt;
&lt;br /&gt;
Das Problem hierbei ist, dass man den Zustand von Caches nicht automatisch bewerten kann. Weder der letzte Loginzeitpunkt des Besitzers noch die Zahl der DNFs lässt einen klaren Schluss auf den Zustand des Caches zu. Viele Cacher loggen z.B. DNF, wenn sie den Cache gar nicht oder nur kurz gesucht haben (wegen [[Muggel]]s, gefährlichem Terrain, einbrechender Dunkelheit usw.) &lt;br /&gt;
&lt;br /&gt;
Stattdessen wurde ein manuell setzbarer Status [http://forum.opencaching.de/index.php?topic=4449.0 Cache vielleicht findbar] diskutiert, der in Extremfällen auch automatisch gesetzt werden könnte. Die Funktion wurde aber bisher nicht umgesetzt.&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Opencaching]]&lt;br /&gt;
[[Kategorie:Überarbeiten]] &amp;lt;!-- Atlassian- und Forumlinks laufen ins Leere --&amp;gt;&lt;/div&gt;</summary>
		<author><name>Fraggle</name></author>
	</entry>
	<entry>
		<id>https://wiki.opencaching.de/index.php?title=Verschl%C3%BCsselungsmethode&amp;diff=7884</id>
		<title>Verschlüsselungsmethode</title>
		<link rel="alternate" type="text/html" href="https://wiki.opencaching.de/index.php?title=Verschl%C3%BCsselungsmethode&amp;diff=7884"/>
		<updated>2024-05-13T17:20:44Z</updated>

		<summary type="html">&lt;p&gt;Fraggle: Linkupdates&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Eine beliebte Methode, um [[Geocache]]s interessanter zu gestalten, ist das Verschlüsseln von Teilen des [[Listing]]s. Sie findet vor allem bei [[Rätselcache]]s und [[Multicache]]s Anwendung. Auch die Stationen eines Multicaches vor Ort können verschlüsselt sein.&lt;br /&gt;
&lt;br /&gt;
Beim Erfinden von Verschlüsselungsmethoden sind deiner Fantasie keine Grenzen gesetzt. Dieser Artikel beschreibt als Anregung und Hilfestellung einige übliche Verfahren. Wenn du weitere gebräuchliche Verschlüsselungen kennst, kannst du sie gerne hier vorstellen.&lt;br /&gt;
&lt;br /&gt;
== Zuordnungen ==&lt;br /&gt;
Die bekanntesten Methoden basieren auf Zuordnungen. Dazu gehört beispielsweise das für Hinweise verwendete [[Hinweise#Das ROT13-System|ROT13-System]] oder die Stellung von Buchstaben im Alphabet.&lt;br /&gt;
&lt;br /&gt;
Durch die Zuordnung von Ziffern zu Buchstaben lassen sich aus einem beliebigen Wort Koordinaten für weitere [[Stage|Stationen]] ermitteln.&lt;br /&gt;
&lt;br /&gt;
[[Datei:Koordinaten Verzerrung.png|70px|thumb|rechts|Verzerrte Koordinaten]]&lt;br /&gt;
== Verzerrungen ==&lt;br /&gt;
Durch den Einsatz von Grafikprogrammen lassen sich Koordinaten und andere Hinweise verzerren. Dazu wird der entsprechende Text als Grafikdatei auf dem Computer gespeichert und durch starkes Verändern der Abmaße einer Seite der Inhalt verzerrt. Zum Entziffern lassen sich die verzerrten Koordinaten meist von der Seite lesen. Jedoch ist es auch möglich, am Computer die Grafik (z.&amp;amp;nbsp;B. als Foto) wieder in den ursprünglichen Zustand zu versetzen und somit klar lesbare Daten zu erhalten.&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
== QR-Codes ==&lt;br /&gt;
[[Datei:Koordinaten QR-Code.png|70px|thumb|rechts|QR-Code mit Koordinaten]]&lt;br /&gt;
Mit dem Aufkommen der Smartphones hat sich eine neue Möglichkeit der Verschlüsselung eröffnet: die QR-Codes. Diese eckigen Felder mit vielen kleinen Kästchen können Koordinaten, aber auch ganze Beschreibungstexte enthalten. Jedoch sollte man aus technischen Gründen darauf achten, dass die Anzahl der Zeichen nicht über 300 liegt, da der Code sonst von manchen Geräten nicht gelesen werden kann.&lt;br /&gt;
&lt;br /&gt;
== Morsealphabet ==&lt;br /&gt;
Auch das [[wikipedia:Morsecode|Morsealphabet]] eignet sich hervorragend zur Verschlüsselung. Dazu können die Koordinaten oder der Text entweder mit Strichen und Punkten visuell dargestellt oder in einer Audiodatei gespeichert sein. Je nach Methode steigt die Schwierigkeit zur Entschlüsselung der Texte.&lt;br /&gt;
&lt;br /&gt;
Bei Audiodateien empfiehlt es sich, diese in einem Audioeditor (z. B. [[#Weblinks|Audacity]]) zu öffnen und dort&lt;br /&gt;
die Länge der Töne abzulesen, um die Informationen zu entschlüsseln.&lt;br /&gt;
[[Datei:Koordinaten Morse.png|400px|thumb|links|Koordinaten als Morsecode]]&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
== Andere Sprachen ==&lt;br /&gt;
Natürlich können Beschreibungen auch in anderen Sprachen vorliegen. Neben den bekannten Fremdsprachen ist es auch möglich, dass es sich dabei um eine handelt, welche nicht offiziell gesprochen wird, sondern beispielsweise nur in einem Internetprojekt entstanden ist und somit weitgehend unbekannt ist (z. B. [http://www.namesuppressed.com/kenny/  KennySpeak]).&lt;br /&gt;
&lt;br /&gt;
== Braille-Schrift ==&lt;br /&gt;
[[Datei:Koordinaten Braille.png|200px|thumb|rechts|Koordinaten in Blindenschrift]]&lt;br /&gt;
Auch durch die Verwendung von Braille-Schrift (Blindenschrift) können Informationen verschlüsselt werden. Diese Methode findet bisher selten Verwendung.&lt;br /&gt;
&lt;br /&gt;
== Weblinks ==&lt;br /&gt;
* [https://goqr.me/de/ QR-Code-Generator]&lt;br /&gt;
* [https://jumk.de/alphabete/morse.shtml Morsecode]&lt;br /&gt;
* [https://gc.de/gc/ Morse- und viele weitere Codes ver- und entschlüsseln]&lt;br /&gt;
* [https://audacity.sourceforge.net/?lang=de Audacity]&lt;br /&gt;
* [https://translate.google.de/?rls=ig&amp;amp;hl=de&amp;amp;tab=wT Google-Übersetzer]&lt;br /&gt;
* [https://de.wikipedia.org/wiki/Brailleschrift Das Braille-Alphabet]&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Verschlüsselungsmethoden]]&lt;/div&gt;</summary>
		<author><name>Fraggle</name></author>
	</entry>
	<entry>
		<id>https://wiki.opencaching.de/index.php?title=Test2&amp;diff=7883</id>
		<title>Test2</title>
		<link rel="alternate" type="text/html" href="https://wiki.opencaching.de/index.php?title=Test2&amp;diff=7883"/>
		<updated>2024-05-13T15:48:27Z</updated>

		<summary type="html">&lt;p&gt;Fraggle: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
&lt;br /&gt;
* [[Testeritis]]&lt;br /&gt;
* [[ES:Testeritis]]&lt;br /&gt;
&lt;br /&gt;
---&lt;br /&gt;
&lt;br /&gt;
[[en:Adopcja skrzynki]]&lt;br /&gt;
[[pl:Adopcja skrzynki]]&lt;br /&gt;
[[es:Testeritis]]&lt;/div&gt;</summary>
		<author><name>Fraggle</name></author>
	</entry>
</feed>