Hallo,
Xdebug ist zum Debuggen die verbreitetste Variante mit PHP. Aber du willst xdebug nicht in einer Produktiven Umgebung haben. Das hat unter Umständen erheblichen Einfluss auf die Performance des Webservers.
Persönlich würde ich dir sowieso dazu raten, nicht auf dem Server direkt zu Entwickeln. Da führt in vielen Situationen zu Problemen.
Wenn du dich weiter mit der Webentwicklung auseinander setzten möchtest würde ich dir empfehlen dich mit Versionierung (z. B. GIT) und Deployment (z. B. Capistrano) auseinander zu setzen. Auch bei sehr erfahrenen Entwicklern kommt es vor, dass teilweise Dinge auf dem Server direkt ausprobiert werden. Manches kann man einfach nicht lokal testen.
Staging usw. würde ich in deiner Situation außer acht lassen, das ist wohl erst einmal zu viel Overhead.
Ein mögliches Setup wäre z. B. : (Annahme Linux Webserver mit FTP Zuganng; Entwicklungsrechner Windows)
1. Entwicklung unter Netbeans in Windows
2. "Lokaler" Webserver in einem virtuellen Linux, dass das selbe Setup hat wie der Produktive Server + zusätzlich xdebug
3. GIT Repository Lokal (oder bei github,bitbucket,...) => Versionierung
4. Capistrano in Cygwin => Deployment
Im folgenden beschreibe ich mal kurz einen möglichen Prozess für eine Entwicklung.
Ausgangssituation: Ein Fehler soll behoben oder ein Feature soll entwickelt werden
1. In deinem GIT legst du einen Branch für das Feature oder den Bug an.
2. Entwicklung: Du entwickelst deinen Änderungen und machst ein Deployment auf deinen virtualisierten Webserver
3. Testen: Dort testet du deine Änderungen in der Oberfläche oder mit Xdebug bis alles so funktioniert wie du erwartest
4. Integration: Wenn du Fertig bist, mergst du deine Änderungen auf den Haupt-Branch (master) von GIT zurück
5. Deployment: Der master Branch wird per ftp mit capistrano auf den Server deployed
Optional 6. rollback: Du stellst fest das du Blödsinn entwickelt hast oder einen Bug hast, dann sagst du Capistrano, dass die letzte Version wieder hergestellt werden soll.
Warum macht man das alles?
Versionierung: Dadurch wird es dir möglich nachzuvollziehen, wann sich dein Code wie geändert hat. Das wird noch interessanter wenn es mehr Entwickler werden aber auch bei einem einzelnen Entwickler hat es auf jeden Fall Vorteile. Allein schon die Tatsache, dass du nächstes Jahr noch gucken kannst wie du einen Bug von jetzt gefixed hast ist ein erheblicher Gewinn. Und wenn man mal etwas kaputt spielt (passiert jedem mal) kann man einfach die Änderungen ohne Probleme wieder verwerfen.
Deployment: Meiner Meinung nach ist der größte Vorteil das rollback und die Automatisierung. Wenn dein Projekt größer wird, wird es sicherlich irgendwann notwendig das bei neuem Code auch Aktionen ausgeführt werden. (z. B. Caches löschen bzw. neu erzeugen, Indizes neu erzeugen, temporäre Daten aufräumen). All das macht dir ein gut eingerichtetes Deployment automatisch und schließt damit schon einmal viele Fehlerquellen aus. Ein rollback im Fehlerfall erklärt sich von selbst
Lokale Entwicklung: Es kommt immer mal vor, dass beim Entwickeln Fehler passieren. Die darf und sollte ein Benutzer nicht sehen. Eine falsche Debug-Ausgabe und Datenbankzugänge sind im Frontend sichtbar. Daher wird eigentlich nur in ganz speziellen Ausnahmefällen mal eine Änderung direkt auf dem Server vorgenommen.
Der versierte Webentwickler wird hier ein paar Begriffe vermissen wie z. B.: Staging, Tagging, automatisierte Tests, ...
Das oben stehende ist nicht als ausführliche Anleitung zu verstehen, sondern als eine Möglichkeit die ich dir gerne aufzeigen möchte. Es gibt auch viele andere gute Prozesse.
Solltest du dich für diesen entscheiden, wird sicherlich die eine oder andere Frage auftauchen. Die kannst du hier dann gerne stellen. Und vielleicht schafft man es ja auch gemeinsam daraus ein Tutorial für den Aufbau eines solchen Setups zu schreiben und hier mal für die Zukunft fest zu halten.
VG
Nino