Typo3 Flow XDebug

Typo3 Flow ist ein mächtiges Framework und ich muss sagen, es macht echt Spaß damit zu arbeiten. Allerdings ist das Debuggen etwas umständlich. Entweder, man debuggt die Proxy Klassen, dafür muss man aber immer vom POI (Point of Interest) weg oder man erstellt ein Mapping.

Sebastian Kurfürst von Sandstorm Media hat einen Pfadmapper umgeschrieben, der das Mapping für Flow übernimmt. Dazu gibt es auch ein Tutorial von ihm. Dabei werden die Debug Kommandos die die IDE und XDebug austauschen auf die Pfade angepasst. Dass heisst ihr könnt in euren Klassen Haltepunkte setzen und diese werden dann auch angesprungen.

Wenn ihr alle Daten auf eurem System habt und auch der Webserver lokal läuft ist das alles kein Problem, es funktioniert wunderbar.

Typo3 Flow xDebug auf einem Remoteserver

Problematisch wird es erst, wenn die Daten und dem Webserver extern sind. Der PathmappingProxy wird lokal ausgeführt und dieser verbindet sich dann mit xDebug auf dem Server. Man wird aber feststellen, dass das Mapping so nicht funktioniert. Da im Pathmapper von der Server Flow Uri ausgegangen wird, die aber nicht zwangsläufig mit der Datenbasis URI in der IDE übereinstimmt. Der Pathmapper schaut aber nach, ob er auf die Datei zugreifen kann. Kann er das nicht, kommt kein Mapping zustande. Wir müssen also dem Pathmapper noch die lokale Pfadangabe übergeben, damit er prüfen kann, ob die Datei existiert.

Dazu habe ich in dem Debugproxy von Sebastian einen weiteren Parameter eingefügt. Mit dem Parameter kann man nun den Lokalen Pfad mit übergeben. Wichtig ist dabei, dass dies momentan nur im LAN funktioniert, da ich nach wie vor einen Filezugriff auf die Daten benötige. Ich prüfe jetzt nur noch zusätzlich, ob die Proxydatei unter der übergebenen BaseURI + Pfad existiert. Diese können nur auf dem Server selber existieren, da sie zur Laufzeit geändert werden.

Mein Aufbau ist also wie folgt:

Dedizierter Entwicklungsserver im LAN mit Dateifreigabe
Netbeans IDE am Entwicklerrechner (Netbeans arbeitet mit der Datei freigabe)
Debugproxy.php auf dem Entwicklerrechner mit „lokaler“ Pfad übergabe (z.B. als Netzlaufwerk) -b Argument

Ich starte also die Debugproxy.php lokal mit

php pfad/zum/proxy/debugproxy.php -f -c Development -b V:/Flow

V:/Flow steht für mein Netzlaufwerk mit meinem Projekt zum Debug.
Sollte aus irgendeinem Grund die Möglichkeit der Dateifreigabe versagt sein, kann man auch FTP verwenden. Das Argument ist -r gefolgt von den FTP Daten zusätzlich gibt man mit dem -b Argument den ServerPfad zum Projekt an:

php debugproxy.php -f -d -c Development -b /var/www/flow -r flow.intern;user;pass

Ich hoffe dies hilft dem einen oder anderen weiter 🙂

Und hier der gepatchte DebuggerProxy:

git clone https://github.com/mrwhy-orig/debugproxy.git

 

CAO Faktura Installation – Teil 2 CAO Faktura

Im ersten Teil habe ich erklärt, wie der MySQL Server zu installieren ist. Wenn dies wie beschrieben befolgt wurde, sollte es nun keine Probleme geben. Das häufigste auftretende Problem ist, dass das Passwort nicht passt. Das soll heißen, dass in der DB das Passwort für den Datenbank Benutzer nicht mit der „OLD_PASSWORD“ Funktion gesetzt wurde. Wie das geht lest ihr im vorherigen Post.

CAO Faktura installieren

Wir entpacken das ZIP auf unserem Rechner. Zur Erinnerung das Zip haben wir im Teil 1 von folgender Stelle heruntergeladen:

http://www.cao-wawi.de/download/cao-faktura

Wir starten nun das Setup Programm und hangeln uns durch die Dialoge. Der erste Dialog begrüst uns, hier einfach auf „Weiter“ klicken. Beim erscheinenden Dialog lesen wir die Lizenzvereinbarung und akzeptieren diese. Es folgt die Frage, wo wir CAO Faktura installieren möchten. Wir wählen einen Pfad und klicken auf „Weiter“. Auch die Verknüpfungsfrage bestätigen wir mit Weiter. Im Folgenden Dialog können wir wählen, wo überall Verknüpfungen angelegt werden sollen. Klicken wir auf Weiter, erhalten wir eine Zusammenfassung unserer Auswahl. Mit dem Klick auf Installieren werden die Programme installiert.

Nun kann es mit CAO Faktura losgehen

Wir haben CAO Faktura jetzt installiert, aber was nun? Wir müssen als erstes einen Mandanten anlegen. Unsere Datenbank ist noch völlig leer. Dazu starten wir das Programm CAO Admin.

Wir können hier direkt einen neuen Mandanten anlegen, dazu klicken wir auf „Neu“. Damit öffnet sich ein neues Dialogfenster.

neuerMandant

Dem Mandanten geben wir nun einen Namen im Feld Mandant.
Bei Server tragen wir die IP Adresse unseres MySQL Servers ein. Ist es der gleiche Rechner können wir auch „localhost“ oder „127.0.0.1“ eingeben. Den Port lassen wir auf 3306 es sei denn er wurde während der MySQL Serverinstallation geändert.
Bei Datenbank geben wir den Namen unserer Datenbank ein „cao“.
Bei Benutzer den angelegten Datenbankbenutzer „caouser“.
Bei Paßwort das Benutzerpasswort „caouserpass“.
Mit klick auf Einstellungen testen, sollte nun eine Erfolgsmeldung kommen. Nun können wir Speichern.

Kriegen wir jedoch diese Meldung:

ServerError

Haben wir die OLD_PASSWORD Funktion bei der Einrichtung des MySQL users nicht verwendet. Wie es geht steht im Teil 1 ganz unten.

Unsere „Erfolgsmeldung“ sieht so aus:

DB Erfolg

Nach dem Speichern werden wir informiert, dass die DB leer ist und gefragt, ob die Tabellenstruktur angelegt werden soll. Dies bestätigen wir mit „Ja“. Nun legt CAO Faktura die Tabellen an, die es benötigt. Wir können nun im CAO Admin unseren Mandanten öffnen. Nun fragt CAO ob es die Standardformulare installieren soll. Auch hier sagen wir „Ja“.

STFormulare

Nun folgt noch die Information, dass alles angelegt wurde, und das zum ersten Login der Benutzer „Administrator“ mit dem Passwort „sysdba“ verwendet werden soll. Mit „Ok“ bestätigt erscheind das Login Fenster.

CAOLogin

Mit dem Benutzer Administrator und dem Passwort sysdba beim angelegten Mandanten anmelden. CAO installiert nun in die DB Tabellen Postleitzahlen und Bankinformationen.

Wir sind drin… aber was nun?

CAO Faktura ist installiert. Wir könnten uns nun schon im Hauptprogramm oder an der Kasse anmelden. Doch macht es erstmal mehr Sinn den Rest zu konfigurieren, wie z.B. Benutzer.

Wir klicken also nun auf der linken Seite im CAO Admin Fenster auf Benutzer. Dort sehen wir, dass momentan nur einer eingetragen ist, der Administrator.

Cao Admin Benutzer

Im unteren Bereich sehen wir unteranderem ein + Zeichen. Mit diesem Zeichen können wir einen neuen Benutzer anlegen. UID und GID können wir weglassen, das wird automatisch ausgefüllt. Bei Gruppe wählen wir „Administratoren“.
CAO Faktura bietet schon vorkonfiguriert ein paar Gruppen, die wir hier aber erstmal vernachlässigen.
Bei Login-Name geben wir unseren Wunschbenutzernamen ein. (CAO hat die Eigenart den Nutzernamen des angemeldeten Windowsnutzers voreingestellt beim Login Fenster einzutragen, daher wäre dies eine gute Wahl :))
Der Anzeige-Name wird innerhalb CAO als Benutzer angezeigt und ausgegeben. Vor- und Nachname zur identifizierung des Mitarbeiters ;). Und nun noch das Passwort.
Ich empfehle zumindest noch das Passwort des Default Administrators zu ändern.

Die lieben Einstellungen…

… sind ein Thema für Teil 3 dieser Reihe 😉

 

CAO Faktura Installation Teil 1 – MySQL Installieren

In einem vorherigen Post habe ich ja bereits angekündigt noch etwas zur Installation von CAO Faktura zu sagen.

Hier also eine schnelle Schritt für Schritt Anleitung für die CAO Faktura Installation. Dazu ist zu sagen, dass dies nur der Anfang ist und erstmal nur CAO zum Laufen bringt. Es wird dann später erklärt, wie Ihr eure eigenen Formulare einrichten könnt. Wir gehen jetzt erstmal von der „freien“ Version aus, diese Laden wir uns nun von der CAO Faktura Webseite:

http://www.cao-wawi.de/download/cao-faktura

Ihr könnt natürlich auch erst die Versionsunterschiede vergleichen, und entscheiden, ob ihr nicht vllt. doch schon eine Lizenz für die Proversion erwerbt. Hier die Gegenüberstellung:

http://www.cao-wawi.de/produkte/cao-faktura

Nun haben wir also CAO heruntergeladen. Wir benötigen aber jetzt noch eine MySQL Server Instanz und da nicht irgendeine sonder eine Version 4.x. Diese ist auf den MySQL Seiten schwer zu finden, deshalb bietet auch hier die CAO Seite einen Download an. Ich persönlich empfehle die Version 4.1.22:

http://www.cao-wawi.de/download/mysql

Den MySQL Server installieren

Als erstes installieren wir den MySQL Server. Das Installationspaket ist für Windows gedacht. Ich setze einfach voraus, das die jenigen die einen Linux Server administrieren wissen, wie man a) an das Installationspaket kommt und b) wie es zu installieren ist.

Wir entpacken die Zip Datei und und starten die setup.exe dabei wird dann folgender Screen gezeigt:

MySQL Welcome
MySQL Welcome

Wir klicken auf Next ->

MySQL Setupwahl

Hier wählen wir nun Custom. Dann wird uns ein paar mal mehr die Wahl gelassen 😉 Es folgt:

MySQL Installationpfad

Hier können wir nun unseren Installationspfad ändern wenn gewünscht. Ansonsten auf Next > beim der dann erscheinenden Installationszusammenfassung auf Install. Glückwunsch MySQL ist dann schon installiert. Es muss nun noch Konfiguriert werden.

Den MySQL Server konfigurieren

Nach der Installation ist folgender Dialog aufgegangen wir wählen hier Skip Sign-Up und klicken Next.mysqlKonfigAccount

Es folgt und wir klicken auf Finish.

mysqlKonfig

Es öffnet sich also wieder ein Fenster auch dieses quitieren wir mit der Next Schaltfläche. Beim darauffolgenden Fenster wählen wir „Detailed Configuration“ und klicken Next.

Detail Konfiguration

Nun werden wir vor die Wahl gestellt, ob es ein Server ist, auf dem wir geraden Installieren oder eine Entwicklermaschine. Ich schlage vor, hier Developer Machine zu verwenden, da unsere Installation sich hier erstmal auf eine kleine Arbeitsgruppe beschränkt, bzw. sie erstmal nur zum Testen verwendet wird.

MySQL Installationstyp

Nun wählen wir Multifunctional Database und klicken auf Next.MySQL DB Typ

Jetzt will das Konfigurationsprogramm noch von uns wissen, wo die Daten gespeichert werden soll. Die Default Einstellung ist der Installationspfad von MySQL. Das ist Ok also weiter.

MySQL DB Speicherort

Beim nächsten Dialog werden wir gefragt, wie viele gleichzeitige Zugriffe auf die MySQL Instanz erlaubt werden sollen. Der Standard liegt bei 20. Was meiner Meinung nach völlig ausreichend ist. Also weiter 🙂

Gleichzeitige Benutzerverbindungen

Im folgenden Dialog wird nach dem Port gefragt, auf dem die MySQL Instanz horchen soll. Standard ist 3306. Und weiter…MySQL Port

Auch den nächsten Dialog einfach mit Next quitieren. Wir kommen nun zur Frage, ob wir MySQL als Dienst installieren möchten. Hier würde ich „Ja“ sagen. Es hat einfach den Vorteil, dass ich nur noch CAO öffnen muss und MySQL lauscht bereits im Hintergrund als Dienst. Es ist im Netzwerk auch viel Sinnvoller, sonst muss ggf. am Server MySQL gestartet werden bevor ein Client CAO nutzen kann. Wir machen zusätzlich noch den Hacken bei „Include Bin Dir….“ dies hat zur Folge, dass wir auf der Kommandozeile die MySQL Befehle direkt nutzen können, ohne vorher in das Verzeichnis gesprungen zu sein.

Service

Jetzt wird ein Root User für MySQL angelegt, dem wir ein Passwort geben. Dieser Nutzer hat alle Rechte auf dem MySQL Server.

MySQL Root User

Nach dem wir ein Passwort eingegeben haben und auf Next geklickt, kann der Konfigurationsprozess loslegen. Dazu im Fenster auf „Execute“ klicken und anschließend auf „Finish“. Herzlichen Glückwunsch!!! Ein großer Teil ist geschafft.

Eine MySQL Datenbank für CAO Faktura

Nun legen wir noch schnell einen CAO Benutzer in der DB an. Dazu wechseln wir in die Eingabeaufforderung bzw. zum gerade installierten MySQL Command Line Client.

Bei ersterem müsst ihr einfach „mysql -u root -p“ eintippen  und dann Enter und bei letzterm einfach das gerade vergebene Root Passwort und Enter. Anschließend können wir mit:

CREATE DATABASE cao;

dem MySQL Server sagen, dass wir gerne eine neue Datenbank namens cao hätten.

Ein MySQL User für CAO Faktura

GRANT ALL PRIVILEGES ON cao.* TO 'caouser'@'%' IDENTIFIED BY 'caouserpass' WITH GRANT OPTION;
FLUSH PRIVILEGES;

Mit dem obige Befehl sagen wir dem MySQL Server er soll einen User „caouser“ mit dem Passwort „caouserpass“ anlegen. Der User darf von jedem Ort auf die DB Zugreifen (%) und hat alle Rechte an der DB cao.
CAO Faktura kommt aber leider nicht mit der „neuen“ Passwortfunktion von MySQL klar, daher müssen wir noch folgendes ausführen:

UPDATE mysql.user SET Password = OLD_PASSWORD('caouserpass') WHERE User = 'caouser';
FLUSH PRIVILEGES;

Das sagt dem MySQL Server er soll das Passwort mit der alten Methode speichern.

Das war nun die Installation des MySQL Servers zur Nutzung von CAO. Im nächsten Teil installieren wir endlich CAO Faktura 😉