Lokalen Server - XAMPP + XDebug

  • Hallo,

    bin Linux-Anfänger, von Mint und Linux generell aber begeistert.

    Habe XAMPP unter Mint 20.3 installiert und bekomme es auch zum laufen. Nun möchte ich die Erweiterung XDebug integrieren.
    Irgendwie bekomme ich das nicht hin. (Habs unter Win 11 am laufen). Jemand ne Anleitung, bestenfalls Schritt für Schritt?

    Danke

  • Spannende Frage.

    Ich kann dir da nicht helfen. da ich XAMPP nicht nutze. Kann dir aber empfehlen mal einen Blick auf Devilbox zu werfen. Im Gegensatz zu XAMPP ist das sauber dokumentiert und ich nutze es auf Linux, Windows und MacOS seit Jahren problemlos als Umgebung für Apache, PHP, MySQL, etc

    Hier z.b. sehr ausührlich für jedes Betriebssystem beschrieben wie man xDebug konfiguriert: https://devilbox-test.readthedocs.io/en/stable/tuto…ebug.html#linux

    Hier Schritt für Schritt wie man Devilbox installiert und einrichtet: https://devilbox.readthedocs.io/en/latest/gett…requisites.html

    Vielleicht hilft dir das ja weiter.

    --
    Ciao!

    Linux Nutzer seit über 20 Jahren. I ❤️ Freedom!

    Offizieller Proton-Botschafter aus der Schweiz 🇨🇭 😅

    Meine Haupt-Distribution ist Ubuntu.

    Mein Blog: https://rueegger.me

    Wer meinen sinnlosen Gedanken folgen möchte, kann dies gerne auf Mastodon tun: https://swiss.social/@srueegger

  • Habs per YT-Video hinbekommen,

    zumindest XDebug zu integrieren.

    Diese Devilbox ist genau was? Und dazu brauche ich auch Docker?

    Ändere ich da was am System? Bin schon mit KDE 5 auf die Nase gefallen :(

    Möchte mein System jetzt nicht strubbelig machen, oder ist das gar keine so invasive Sache?

    Wenn es das bietet, was ich suche wäre das toll.

    Danke dir.

    Grüße

  • Devilbox installiert dir eine komplette LAAMP Umgebung. Du kannst dann für jede Webseite die du entwickelst einen ORdner erstellen z.b: Ordner: "hallo-welt" - in den Ordner kommen dann deine PHP, HTML, CSS, etc Dateien rein - danach kannst du im Browser "http://hallo-welt.loc" aufrufen und hast dort die Webseite.

    Docker macht nichts an deinem System, das ganze läuft einfach in einem Ordner in deinem Home Verzeichnis, wenn du es nicht mehr nutzen willst kannst du einfach den Ordner löschen.

    Mit Devilbox musst du dich halt quasi um nichts kümmern, also nicht um Dateiberechtigungen, nicht um Virtuelle Hosts, etc das macht alles für dich - das einzige was du quasi tun musst ist ein Ordner erstellen ^^

    --
    Ciao!

    Linux Nutzer seit über 20 Jahren. I ❤️ Freedom!

    Offizieller Proton-Botschafter aus der Schweiz 🇨🇭 😅

    Meine Haupt-Distribution ist Ubuntu.

    Mein Blog: https://rueegger.me

    Wer meinen sinnlosen Gedanken folgen möchte, kann dies gerne auf Mastodon tun: https://swiss.social/@srueegger

  • Würde ich ja gerne machen,

    aber im Moment bin ich ein wenig überfordert. Was muss ich denn für meine Mint-Cinnamon 20.3 wählen?

    Ubuntu? - welche Version?

    Versuche Docker zu installieren, kommen aber immer wieder Fehlermeldungen nach der Anleitung => https://docs.docker.com/engine/install/ubuntu/ vor. Z.B.

    Ign:11 https://download.docker.com/linux/ubuntu una InRelease

    Fehl:12 https://download.docker.com/linux/ubuntu una Release

    404 Not Found [IP: 2600:9000:224a:2400:3:db06:4200:93a1 443]

    Paketlisten werden gelesen... Fertig

    E: Das Depot »https://download.docker.com/linux/ubuntu una Release« enthält keine Release-Datei.

    N: Eine Aktualisierung von solch einem Depot kann nicht auf eine sichere Art durchgeführt werden, daher ist es standardmäßig deaktiviert.

    N: Weitere Details zur Erzeugung von Paketdepots sowie zu deren Benutzerkonfiguration finden Sie in der Handbuchseite apt-secure(8).

    Bei Schritten zuvor kamen auch schon u.a. E: - Meldungen (404 - Link not found)

    Gibt es eine "idiotensichere" Installationsanweisung für Docker(+ Reposority) & Devil?

    Grüße

  • Ja Idiiotensichere Arbeitsschritt 1:

    Entferne dieses Docker Repsoitory das du da hinzugefügt hast wieder - du brauchst es nicht und die Anleitung funktioniert nicht für Linux Mint.

    Theoretisch müsste es so gehen, hab aber schon lange kein APT oder Ubuntu Basis mehr benutzt daher wenn es nicht geht muss dir da jemand weiterhelfen:

    Code
    sudo add-apt-repository --remove 'deb [arch=amd64] https://download.docker.com/linux/ubuntu una stable'

    Sonst halt im Dateisystem irgendwo unter: /etc/apt/sources.list.d/ die Datei suchen die "docker" im Namen trägt und diese Datei löshen.

    Nachdem du das Repsoitory entfernt hast:

    Code
    sudo apt update
    sudo apt install docker docker-compose

    Danach sicherstellen, dass Docker Service beim Systemstart gestartet wird:

    Code
    sudo systemctl enable docker.service
    sudo systemctl enable containerd.service

    Danach den eigenen User zur Gruppe "docker" hinzufügen

    Code
    sudo groupadd docker
    sudo usermod -aG docker $USER

    Es kann sein, das hier beim ersten Befehl die Meldung kommt, dass die Gruppe schon existiert - auch hier ich bin nicht sicher ob Debian die Gruppe selber erstellt oder nicht.

    Danach den Rechner neustarten (!). Das ist wichtig sonst funktioniert der Rest nicht.

    Danach richten wir Devilbox ein -> Schritt für Schritt wie es in der Anleitung steht:

    Dafür öffnen wir nach dem neustart wieder ein Temrinal und führen im Home-Verzeichnis folgendes aus:

    Code
    git clone https://github.com/cytopia/devilbox

    Das erstellt in deinem Home Verzeichnis einen neuen Ordner mit dem Namen "devilbox" und ladet dort ganz viele Dateien rein.

    Nun erstellst du in diesem "devilbox" Ordner eine neue Datei mit dem Namen ".env". Danach öffnest du die Datei "env-example" markierst und kopierst den kompletten Inhalt und fügst den Inhalt in deine eben erstellte ".env" Datei ein.

    Danach müssen wir die .env Datei an deine Bedürfnisse anpassen. Im Grunde gibt folgende Punkte die du anpassen kannst:

    (Achtung meine angegeben Zeilennummer können unterschiedlich sein - meine .env ist schon etwas älter)

    Zeilen: 133 und 134 steht folgendes:

    Code
    NEW_UID=1000
    NEW_GID=1000

    Hier musst du kurz prüfen, ob die ID deines Benutzers und deiner Gruppe wirklich "1000" ist. Das kannst du im Terminal machen:

    Um die UID zu prüfen:

    Code
    id -u

    Um die GID zu prüfen

    Code
    id -g

    Wenn die Werte jeweils 1000 sind ist gut, falls es andere Werte sind musst du die in deiner .env anpassen.

    Bei Zeile 140 müsste die PHP Zeitzone stehen die wird bei dir UTC oder irgendein Standard Wert sein ich hab da. Die Zeitzone ist wichtig, damit wenn du bei PHP mit Datum und Zeit arbeitest das korrekt ausgegeben wird.


    Das steh bei mir für die Schweiz

    Code
    TIMEZONE=Europe/Zurich

    Für Deutschland wäre es

    Code
    TIMEZONE=Europe/Berlin

    Ab Zeile 251

    Findest du die Versionen von PHP, Apache, MySQL etc die einzelnen Versionen sind untereinander aufgelistet und bis auf eine sind alle mit einem "#" auskommentiert. Hier kannst du einfach die Versionen aktivieren die du brauchst - wichtig ist das immer nur eine aktiv sein darf -> daher die die nicht brauchst wieder mit einem "#" auskommentieren.

    Ebenfalls wichtig - es muss auch immer eine aktiv sein.

    Auf Zeile 645 setzen wir noch das MySQL Root Passwort (ich würde das nicht leer lassen, da gewisse PHP Applikationen mit leerem root Passwort nicht funktionieren)

    Code
    MYSQL_ROOT_PASSWORD=dein_root_pw

    Danach die .env Datei speichern. Und ins Terminal wechseln:

    Im Terminal zum Verzeichnis des Devilbox Ordners wechseln und die Devilbox starten:

    Code
    cd ~/devilbox
    docker-compose up -d

    Der erste Start wird eine Weile dauern, da er nun alle Software (Apache, PHP, Mysql, etc) in den von dir gewählten Versionen herunterladen und konfigurieren muss - danach sind die Starts viel schneller. Wenn der Start fertig ist sieht es in etwa so im Temrinal aus:

    Danach kannst du das Temrinal schliessen: Wenn du nun im Browser deiner Wahl http:/localhost eingibst sollte die Devilbox Status Seite erscheinen.

    Um nun eine neue Seite anzulegen wo du arbeiten kannst erstellt du unter:

    ~/devilbox/data/www

    einen neuen Ordner z.b.: "seite-1" in diesem Ordner erstellt du noch einen Ordner mit dem Namen "htdocs". In diesem htdocs Ordner kannst du nun z.b. eine HTML oder PHP Datei reinlegen:

    Nun gehen wir ein letztes mal ins Terminal:

    Code
    sudo nano /etc/hosts

    Dort erstellst du nun ganz am Ende der Datei eine neue Zeile:

    mit folgendem Inhalt:

    127.0.0.1 (hier Tabulator drücken) seite-1.loc

    Danach die Datei speichern und nun im Browser: http://seite-1.loc aufrufen und die PHP oder HTML Datei die du im htdocs Ordner unter Seite 1 hast wird angezeigt.

    Noch ein kleiner Gedanke danach

    Alles was ich dir hier geschrieben habe, habe ich nun 1:1 aus dem Devilbox Dokumenation kopiert, die ich dir schon verlinkt habe. Ich weiss nicht was für einen Kurs du machst oder was dort dein Ziel ist. Wenn du aber Web-Entwickler werden willst solltest du dich damit beliebt machen Dokumentationen zu lesen.

    Ich bin seit mehreren Jahren Full-Stack-Web-Developer: Backend, Frontend, Services und Serverzeugs und glaub mir es ist keine Lüge wenn ich hier behaupte das MINDESTENS 70% meiner Arbeit nur aus Lesen von Dokumentationen besteht - das gehört einfach dazu. Bzw ist der wichtigste Teil -> Coden ist dann nur noch die "nebensache".

    --
    Ciao!

    Linux Nutzer seit über 20 Jahren. I ❤️ Freedom!

    Offizieller Proton-Botschafter aus der Schweiz 🇨🇭 😅

    Meine Haupt-Distribution ist Ubuntu.

    Mein Blog: https://rueegger.me

    Wer meinen sinnlosen Gedanken folgen möchte, kann dies gerne auf Mastodon tun: https://swiss.social/@srueegger

  • kim88 erzeugt das dann für jede Webseite ne art vlan wo man dann per localhost auf genau die DB zugreifen kann? Oder kann man nur eine "Webseite" immer gleichzeitig aktiv haben?

    Rollenspiel.Monster -Deine Fediverse Rollenspiel Nodes

    GPG

    System: TUXEDO Aura 15 - Gen1, AMD Ryzen 7 4700U, 32GB RAM, 1TB M.2 SATAIII, EndeavourOS(Gnome[Wayland])

  • Du kannst 100 oder mehr Webseiten aktiv haben.

    Im Grund ist jeder Ordner den du unter ~/devilbox/data/www anlegst eine eigene Webseite -> Technisch ist das ein Virtaul Host.

    Wichtig ist das man dann halt in der Host Datei die entsprechende Zuweisung macht:

    quasi: 127.0.0.1 name-vom-ordner.loc

    Man kann das .env auch weiteranpassen, dass er direkt https:// Host erstellt -> dann kann man die Webseite direkt SSL Verschlüsselt bauen und hat dann beim Go-Live da weniger Trouble.

    Datenbanken kannst du soviel erstellen wie du willst, egal ob MySQL, MariaDB oder MongoDB oder PostgreSQL jede erstellte Datenbank ist auch direkt mit jedem Host verknüpft, du musst da also nichts zuweisen.

    Ich bin ein sehr grosser Fan von Devilbox, da ich damit direkt unter richtigen "Domains" also eben "xyz.loc" arbeiten kann und nicht unter localhost/webseite-3, etc arbeiten muss. Das verhindert Fehler mit absoluten und relativen Pfaden die es ja gerne schnell mal gibt.

    Ich kann direkt mit SSL arbeiten und durch das bearbeiten der .env Datei kann ich von Apacha zu Nginx, zu MySQL Version XY zu Maria DB XY easy und unkompliziert hin- und herwechseln - das hat wiederum den Vorteil das ich lokale geau mit den Versionen arbeiten kann, die der Server auf dem das Projekt nachher läuft auch anbietet - oft will ja ein Kunde selber hosten dann muss man das nehmen was es gibt ;)

    Zudem läuft das Ding halt einfach auf jedem OS - egal wo man gerade entwickelt, es verhält und funktioniert immer gleich. Weil gerade PHP und Windows ja immer wieder etwas merkwürdig sind (Pfadangaben, Charsets, etc) hat man so auch unter Windows quasi ein lokales Linux Hosting (Dank WSL2 & Docker)

    Die manuelle Zuordnung in der Host Datei kann man automatisieren - lohn sich wenn man viele Projekte hat. Hier der Link dazu: https://devilbox.readthedocs.io/en/latest/inte…p-auto-dns.html (wieder mit Anleitungen für Linux, Windows und MacOS)

    --
    Ciao!

    Linux Nutzer seit über 20 Jahren. I ❤️ Freedom!

    Offizieller Proton-Botschafter aus der Schweiz 🇨🇭 😅

    Meine Haupt-Distribution ist Ubuntu.

    Mein Blog: https://rueegger.me

    Wer meinen sinnlosen Gedanken folgen möchte, kann dies gerne auf Mastodon tun: https://swiss.social/@srueegger

  • Man kann das .env auch weiteranpassen, dass er direkt https:// Host erstellt -> dann kann man die Webseite direkt SSL Verschlüsselt bauen und hat dann beim Go-Live da weniger Trouble.

    Du hattest schon mal Probleme auf SSL umzustellen?

    Das verhindert Fehler mit absoluten und relativen Pfaden die es ja gerne schnell mal gibt.

    Jap das kenne ich xD

    Ja klingt auf jedenfall sehr spannend das ganze.

    Rollenspiel.Monster -Deine Fediverse Rollenspiel Nodes

    GPG

    System: TUXEDO Aura 15 - Gen1, AMD Ryzen 7 4700U, 32GB RAM, 1TB M.2 SATAIII, EndeavourOS(Gnome[Wayland])

  • Tealk

    Bei extrem grossen und vorallem älteren Projekten definitiv ja. Da wurden teilweise Noch CSS oder https quasi wirklich hardcoed von "http://domain.xyz" geladen -> diese Datei wurde dann nur unter ganz bestimmten und merkwürdigen if/else Bedingungen usw weiter geladen.

    Das andere was ich meine ist wenn man lokal etwas entwickelt das Dinge braucht wie Standort Abfrage oder Kamera Zugriff, etc wird das vom Browser nur per SSL zugelassen -> daher macht es Sinn wenn man das lokale direkt hat.

    --
    Ciao!

    Linux Nutzer seit über 20 Jahren. I ❤️ Freedom!

    Offizieller Proton-Botschafter aus der Schweiz 🇨🇭 😅

    Meine Haupt-Distribution ist Ubuntu.

    Mein Blog: https://rueegger.me

    Wer meinen sinnlosen Gedanken folgen möchte, kann dies gerne auf Mastodon tun: https://swiss.social/@srueegger

  • Will ich die Devilbox starten kommt:

    ~/devilbox$ docker-compose up -d

    WARNING: The LOCAL_LISTEN_ADDR variable is not set. Defaulting to a blank string.

    WARNING: The DEBUG_COMPOSE_ENTRYPOINT variable is not set. Defaulting to a blank string.

    WARNING: The BIND_TTL_TIME variable is not set. Defaulting to a blank string.

    WARNING: The BIND_REFRESH_TIME variable is not set. Defaulting to a blank string.

    WARNING: The BIND_RETRY_TIME variable is not set. Defaulting to a blank string.

    WARNING: The BIND_EXPIRY_TIME variable is not set. Defaulting to a blank string.

    WARNING: The BIND_MAX_CACHE_TIME variable is not set. Defaulting to a blank string.

    WARNING: The BIND_LOG_DNS_QUERIES variable is not set. Defaulting to a blank string.

    WARNING: The PHP_SERVER variable is not set. Defaulting to a blank string.

    WARNING: The PHP_MODULES_ENABLE variable is not set. Defaulting to a blank string.

    WARNING: The PHP_MODULES_DISABLE variable is not set. Defaulting to a blank string.

    WARNING: The MYSQL_ROOT_PASSWORD variable is not set. Defaulting to a blank string.

    WARNING: The DEVILBOX_PATH variable is not set. Defaulting to a blank string.

    WARNING: The MOUNT_OPTIONS variable is not set. Defaulting to a blank string.

    WARNING: The HOST_PATH_HTTPD_DATADIR variable is not set. Defaulting to a blank string.

    WARNING: The HOST_PATH_SSH_DIR variable is not set. Defaulting to a blank string.

    WARNING: The HTTPD_SERVER variable is not set. Defaulting to a blank string.

    WARNING: The DEVILBOX_UI_ENABLE variable is not set. Defaulting to a blank string.

    WARNING: The TLD_SUFFIX variable is not set. Defaulting to a blank string.

    WARNING: The HTTPD_DOCROOT_DIR variable is not set. Defaulting to a blank string.

    WARNING: The HTTPD_TEMPLATE_DIR variable is not set. Defaulting to a blank string.

    WARNING: The HOST_PORT_HTTPD variable is not set. Defaulting to a blank string.

    WARNING: The HOST_PORT_HTTPD_SSL variable is not set. Defaulting to a blank string.

    WARNING: The MYSQL_SERVER variable is not set. Defaulting to a blank string.

    WARNING: The HOST_PORT_MYSQL variable is not set. Defaulting to a blank string.

    WARNING: The PGSQL_SERVER variable is not set. Defaulting to a blank string.

    WARNING: The PGSQL_ROOT_USER variable is not set. Defaulting to a blank string.

    WARNING: The PGSQL_ROOT_PASSWORD variable is not set. Defaulting to a blank string.

    WARNING: The HOST_PORT_PGSQL variable is not set. Defaulting to a blank string.

    WARNING: The REDIS_SERVER variable is not set. Defaulting to a blank string.

    WARNING: The HOST_PORT_REDIS variable is not set. Defaulting to a blank string.

    WARNING: The MEMCD_SERVER variable is not set. Defaulting to a blank string.

    WARNING: The HOST_PORT_MEMCD variable is not set. Defaulting to a blank string.

    WARNING: The MONGO_SERVER variable is not set. Defaulting to a blank string.

    WARNING: The HOST_PORT_MONGO variable is not set. Defaulting to a blank string.

    ERROR: The Compose file './docker-compose.yml' is invalid because:

    services.memcd.ports is invalid: Port ranges don't match in length

    services.mongo.ports is invalid: Port ranges don't match in length

    services.mysql.ports is invalid: Port ranges don't match in length

    services.httpd.ports is invalid: Port ranges don't match in length

    services.pgsql.ports is invalid: Port ranges don't match in length

    services.redis.ports is invalid: Port ranges don't match in length

    services.httpd.ports is invalid: Port ranges don't match in length

  • PHP-Version hatte ich PHP 8.1 gelassen, wie eingestellt.

    Sollte ich da nicht auf 7.4 wegen VS Code wechseln?

    Und stört die Installation von XAMPP? Ich glaube, ich hatte den Original Apachen vorher deinstallieren müssen.

  • Sicher das du die Datei .env im devilbox Ordner erstellt hast. Dateiname mit dem Punkt davor? Fehlermeldung sagt mir das er die Datei nicht findet.

    --
    Ciao!

    Linux Nutzer seit über 20 Jahren. I ❤️ Freedom!

    Offizieller Proton-Botschafter aus der Schweiz 🇨🇭 😅

    Meine Haupt-Distribution ist Ubuntu.

    Mein Blog: https://rueegger.me

    Wer meinen sinnlosen Gedanken folgen möchte, kann dies gerne auf Mastodon tun: https://swiss.social/@srueegger

  • Sollte ich da nicht auf 7.4 wegen VS Code wechseln?

    Diese Frage kannst nur du beantworten. Ich weiss ja nicht was du programmierst bzw wo du das nachher deployst. Die Prjektanforderungen für dein Projekt kennst wohl nur du.

    Und stört die Installation von XAMPP? Ich glaube, ich hatte den Original Apachen vorher deinstallieren müssen.

    Stören sollte sie nicht, was wahrscheinlich nicht geht ist das beide gleichzeitig laufen, da die sich gegenseitig den Port blockieren.

    --
    Ciao!

    Linux Nutzer seit über 20 Jahren. I ❤️ Freedom!

    Offizieller Proton-Botschafter aus der Schweiz 🇨🇭 😅

    Meine Haupt-Distribution ist Ubuntu.

    Mein Blog: https://rueegger.me

    Wer meinen sinnlosen Gedanken folgen möchte, kann dies gerne auf Mastodon tun: https://swiss.social/@srueegger

  • Danke dir,

    lief gestern soweit. Zumindest konnte ich per seite-1.loc meine html seite starten.

    Heute geht nix, muss ich jetzt jedesmal die Dienste von Hand über Terminal starten? Ein Programm bzw. eine Oberfläche gibt es nicht?

  • Ist ja nur ein Dienst und zwar das "docker-compose up -d" du kannst dir dazu ja auch ein Alias setzen. Oder ein Autostart Script schreiben.

    Und nein eine grafische Oberfläche gibt es nicht - wahrscheinlich könnte man das mit Kubernetes oder so verwalten das machts aber definitiv massiv komplizierter.

    --
    Ciao!

    Linux Nutzer seit über 20 Jahren. I ❤️ Freedom!

    Offizieller Proton-Botschafter aus der Schweiz 🇨🇭 😅

    Meine Haupt-Distribution ist Ubuntu.

    Mein Blog: https://rueegger.me

    Wer meinen sinnlosen Gedanken folgen möchte, kann dies gerne auf Mastodon tun: https://swiss.social/@srueegger

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!