Schlagwort-Archive: php

Dez
08

Grundlegende Konsolenbefehle für die Arbeit als Webentwickler

konsoleObwohl man als Software-Entwickler sein Zeit zumeist im PHP- oder HTML-Code und in PHPStorm oder einer anderen IDE unterwegs ist, kommt man gelegentlich in die Verlegenheit, die Software localhost, auf einem Testserver oder sogar im Produktiv-System zum Laufen zu bekommen und ggf. zu Debuggen. Hierbei spart es häufig extrem viel Zeit, sich auf die Konsolen-Ebene zu begeben und mit ein paar grundlegenden Befehlen zu operieren.

Meine Konsolen-Empfehlungen:

Windows:

  • Console2 – super für lokale Arbeit
  • kiTTY – ein besserer Nachfolger von Putty, üblicherweise bei remote SSH Servern benutzt
  • Windows PowerShell – eigentlich ein furchtbares Tool, aber von den Befehlen her am nächsten an denen von Linux dran

Ubuntu:

  • LXTerminal
  • bash
  • xTerm-256color

Mac:

Befehle

Die Befehle funktionieren in der Regel auf allen Webservern oder in Docker Umgebungen mit Linux oder iOS Betriebssystem. In der Windows Eingabeaufforderung oder PowerShell sind die Befehle oft anders. Wo es mir bekannt war, habe ich einen Hinweis zum Windows-Equivalent ergänzt.

Die Befehle sind hier nur kurz beschrieben. Im Web finden sich zahlreiche Dokumentationen und Anwendungsbeispiele. Am besten sucht man nach „ssh [Befehl]“, um zielgerichtete Treffer zu finden. Zum Beispiel „ssh copy“. Oder man lässt sich direkt im Terminal die Hilfe zum jeweiligen Befehl ausgeben,, indem man „help“ hinter das Kommando schreibt. copy help.

cat

Gibt den Inhalt einer Variable oder Datei aus – sehr nützlich, wenn man sich mal eben kurz eine Datei ansehen möchte, ohne sie runterzuladen. cat index.php
Siehe auch tail.

copy

Kopiert eine Datei oder einen Ordner.

copy meinedatei.php meinedatei_backup.php legt eine Backup-Kopie der Datei an.

crontab

Mit crontab -e kann man üblicherweise auf Webservern die Cronjobs konfigurieren.

cd

Der change directory Befehl wechselt in ein anderes Verzeichnis. Dabei kann ich relativ in ein Unterverzeichnis des aktuellen Ordners gehen cd modules/fc/ oder absolut vom Hauptverzeichnis des Systems aus cd /var/www/htdocs/modules/fc/.
Mit cd .. navigiere ich eine Ebene höher.

df

Gibt eine Übersicht über die Festplattenauslastung des Systems aus.
Noch übersichtlicher wird es mit df -h

du

Mit dem Befehl kann man den Festplattenverbrauch im aktuellen Verzeichnis ausgeben. Die Parameter du -hs /var/www/html/out/pictures/ zeigen die Größe des Bilderordners übersichtlich an.

head

head google.csv zeigt die ersten Zeilen der Datei an.
Siehe auch tail.

ls

Listet alle Dateien im Verzeichnis auf, in dem man sich gerade befindet. Wird der Befehl ohne zusätzliche Parameter eingegeben, ist das ziemlich unübersichtlich.
ls -al ist prima, um eine ordentliche Ansicht zu bekommen.
(Windows Equivalent: dir )

mkdir

Der make-directory Befehl erzeugt ein Verzeichnis.
mkdir /var/www/htdocs/tmp erzeugt das Verzeichnis „tmp“.

mv

Mit dem move-Befehl kann man Dateien oder Ordner verschieben oder umbenennen.
mv oxideshop.log oxideshop_old.log benennt das Logfile um.
mv oxideshop.log archive/oxideshop.log verschiebt das Logfile in den Unterordner „archive“.

php

Ist PHP installiert, starte ich damit einen PHP-Prozess. Mit php exportscript.php z.B. kann ich einen Export starten.
Mit php -r 'echo date();' kann ich direkt ein PHP-Kommando ausführen.
Manchmal muss man den gesamten Pfad zum PHP-Binary mit angeben, z.B. /usr/local/php7.1/bin/php exportscript.php.

ps

Das ist zum Anzeigen der laufenden Prozesse auf dem Server da.
ps -aux gibt eine schöne Übersicht.
Darin kann man z.B. sehen, welche Cronjobs gerade laufen, und wie viele Ressourcen sie verbrauchen.

pwd

Oft verliert man die Orientierung, in welchem Verzeichnis man sich gerade befindet.
Der Befehl pwd gibt den aktuellen Verzeichnis-Pfad aus.

rm

Gegenstand vieler Nerd-Witze und mit den falschen Rechten äußerst gefährlich, da man mit einem Befehl den ganzen Server löschen kann. Sowohl aus Versehen, als auch mit Absicht. Der Befehl ist zum Löschen von Dateien da.
Mit rm oxideshop.log lösche ich das Logfile im aktuellen Verzeichnis.
Mit rm *.png lösche ich alle PNG Dateien im aktuellen Verzeichnis.
Mit rm -r /var/www/htdocs/ lösche ich rekursiv alle Dateien und Unterverzeichnisse des htdocs-Ordners – also auch mal einen ganzen Shop mit einem Befehl.
Mit dem zusätzlichen Parameter -f überspringe ich die nervigen „wollen Sie wirklich löschen“ Nachfragen.
(Windows Equivalent: erase)

strg + c

Eher eine Tasten-Kombination als ein Befehl. Jedenfalls kann man damit jeden Befehl, der gerade ausgeführt wird, abbrechen, wenns mal wieder länger dauert.
Zum Beispiel ein PHP-Script, welches man mit php meinscript.php gestartet hat.

top

top -c ist eine tolle Hilfe bei der Performance-Beobachtung eines Servers. Der Befehl erzeugt eine sich ständig aktualisierende Anzeige, wieviel RAM und CPU gerade verbraucht werden und welcher Prozess wieviel davon benötigt.
Beenden mit strg + c.

tail

Gibt den Schwanz bzw. das Ende einer Datei aus.
Zum Beispiel die letzten 10 Zeilen eines Logfiles mit tail -n10 oxideshop.log.
Mit tail -f oxideshop.log kann man Realtime zusehen, was gerade ins Logfile geschrieben wird.
Beenden mit strg + c.
tail ist das Gegenteil von head.

wget

Dieser Befehl wird genutzt, um eine URL aufzurufen und den Inhalt herunterzuladen. Beispielsweise geeignet zum Download größerer Dateien von einem anderen Server.
wget https://meinshop.de/export/Datenbankdump.sql

Eränzt gerne Befehle, die Ihr wichtig findet, in den Kommentaren!

Dez
13

Ausblick OXID eShop V6

oxid dev departmentLang erwartet hat die OXID eSales AG auf dem Partnertag am 24. November 2016 und in den darauf folgenden Publikationen einen Ausblick auf die kommende Version 6 des Shopsystems OXID eShop gegeben. Kurz darauf hat OXID eine closed Beta für Partner veröffentlicht, die ich bereits testen durfte.

Zielsetzung und Ausrichtung
Nachem OXID mit der Version 5.3 wichtige vom Markt geforderte Produktfeatures wie ein responsives Theme und ein mächtiges CMS System ergänzt hatte, ist die 6.0 eher als technisches Update zu verstehen. OXID will hiermit das in die Jahre gekommene Framework auf aktuelle Standards erneuern und die Basis für zukünftige Erweiterungen legen. Dabei war es die Zielsetzung der Entwickler, möglichst wenig unnötigen Framework-Ballast an Board zu holen, die Performance des Shopfrontends zu optimieren und größtmögliche Update-Kompatibilität zu früheren Shop-Installationen zu gewährleisten.

Technische Veränderungen

  • Zukünftig baut man OXID mit Composer, dem PHP-Dependency-Manager. Dadurch wird es möglich, Pakete wie z.B. Module, Plugins oder Themes, per Composer installer zu integrieren oder OXID eShop Updates per Composer Update zu ziehen. Ich habe den Composer Build der Enterprise Edition, der sich aus einem aufeinander aufbauenden Stack aus Community, Professionial und Enterpsie Repository zusammensetzt, schon mal getestet – funktioniert einwandfrei!
  • OXID führt PHP Namespaces ein – 2016 eine zeitgemäße Entscheidung, die das Arbeiten mit Bibliotheken und das Entwickeln von Erweiterungen vereinfacht.
  • Für Business- und Enterprise-Partner (wie FATCHIP) öffnet OXID seinen Quellcode vollständig, also auch in der Enterprise Version. Dazu gewährt OXID Zugriff auf die privaten Github Repositorys und gibt uns über die Möglichkeit, Pull Requests zu erstellen, die Option aktiv am Code mitzuwirken. Durch den quelloffenen Betrieb kann auf die Zend-Decodierungs-Komponenten auf dem Webserver verzichtet werden, was zahlreiche Probleme und Performancethemen aus der Welt schaffen kann, wenn sich eine juristisch saubere Lösung finden lässt, auch auf dem Produktivsystem bei einem Hoster mit der offenen Version zu arbeiten.
  • Die neue Version 6 soll PHP 7 kompatibel sein, schon alleine das gibt einen ordentlichen Performance – Schub.
  • Der hakelige WYSIWYG-Editor wysiwygPro wird durch Summernote ersetzt – wir sind gespannt.
  • ADOdb wird durch doctrine abgelöst.
  • Die Smarty-Bibliothek erhält endlich ein Update, ebenso die von PHP-Mailer. Dadurch dürften einige individuelle Hacks überflüssig werden.

Modul-Kompatibilität
Durch kleine Kniffe wie einen Rückwärts-Kompatibilitäts-Hook in der Modulvererbung zur „Simulation“ eines Namespaces für ältere Module, die noch keine Namespaces nutzen, verspricht OXID weitestgehende Modulkompatibilität zu OXID Plugins, die für die 5.3 geschrieben wurden. Dies ist als erheblicher Vorteil für Modulentwickler zu sehen, wobei ich natürlich damit rechne, dass aufgrund veränderter Logiken oder dem Austausch verschiedener Bibliotheken hier und da Anpassungen in überschaubarem Maße notwendig sein werden.

Was bedeutet 6.0 für OXID eShop – Betreiber
Die Version 6 ist in jedem Falle der richtige Schritt in Richtung Zukunft für OXID eShop Betreiber!
Die technischen Neuerungen schaffen hervorragende Voraussetzungen für einen langfristigen und nachhaltigen Betrieb der Software vor allem bei skalierenden Geschäftsmodellen.
Da die Version 6 noch nicht offiziel released ist, kann man sie leider derzeit noch nicht produktiv einsetzen, jedoch tut man sich sicher einen Gefallen, bereits auf die aktuellste 5.3 zu aktualisieren, da ein Update von dort auf 6.0 sehr einfach zu realisieren sein sollte. Bei diesem Schritt sollte man bereits darauf achten, keinerlei verschlüsselte Module mehr einzusetzen, um später flexibel im Bezug auf PHP Versionsupdates zu sein, welche dringend für eine gute Shop-Performance notwendig sind.

Feb
25

Die 10 FATCHIP Gebote

hb_blog_10_gebote_bild_200pxJahrelange Leitung einer Software-Entwicklungs-Agentur haben mich geprägt und über die Vielzahl an Projekten haben sich ein paar Regeln herauskristallisiert, deren Befolgung allen Entwicklern und Mitarbeitern das Leben leichter machen. Ein paar dieser Regeln habe ich als „Die 10 FATCHIP Gebote“ zusammengefasst, um sie ein für alle Mal in den Köpfen unseres gesamten Teams zu manifestieren. Es sind grundlegende Prinzipien, deren bestechende Einfachheit nicht über ihre Wichtigkeit täuschen soll und die durchaus für andere anwendbar sind…

Das erste Gebot
Du bist FATCHIP.
Identifiziere Dich mit Deiner Arbeit, und sie wird besser sein. Wir sind ein Team, und jedes Mitglied ist verantwortlich für die Teamleistung.

Das zweite Gebot
Du sollst FTP nicht nutzen.
FTP ist nicht verschlüsselt, leicht zu hacken und immer Zeichen eines unversionierten Deployment Prozesses. Damit ist die Arbeit fehleranfällig und unsicher.

Das dritte Gebot
Du sollst SVN nutzen.
Jede Entwicklung muss sauber versioniert werden. Unsere auf SVN basierenden Deployment Tools stellen einen konsistenten Versionsstand und kurze Deployzeiten sicher.

Das vierte Gebot
Liebe das Wiki wie Dich selbst.
Wenn Du es nicht weißt, schau ins Wiki. Wenn Du es weißt, schreib es ins Wiki. Wenn was falsches im Wiki steht, korrigiere es.

Das fünfte Gebot
Du sollst täglich Stundenzettel schreiben.
Eine Arbeit ohne Zeiterfassung ist nichts wert.

Das sechste Gebot
Du sollst Dich vor Viren und Trojanern schützen.
Wir arbeiten nach den Richtlinien des BSI (Bundesamt für Sicherheit in der Informationstechnik). Sicherheit basiert darauf, dass jedes Glied in der Datenkette gesichert ist – auch Dein Rechner.

Das siebte Gebot
Du sollst Deinen Brüdern und Schwestern helfen.
Wir sind ein Team und können nur gut sein, wenn wir uns gegenseitig helfen und voneinander lernen.

Das achte Gebot
Ein Modul ist ein Modul ist ein Modul.
Genauso wie gilt, dass Core Klassen sauber mit Modulen überladen werden, werden auch keine Dateien von offiziellen Modulen „gehackt“. Diese können ebenfalls modular überladen werden, um die Updatefähigkeit zu erhalten. Eine Erweiterung für eines unserer Module sollte immer als konfigurierbare Option in den Modulstandard einfliessen, und nicht nur für den Kunden geforkt werden.

Das neunte Gebot
Du sollst Deine Arbeit von einem Kollegen testen lassen.
Das 4 Augen Prinzip ist unser wichtigstes Instrument im Qualitätsmanagement. Der Test durch eine zweite Person stellt sicher, dass keine Fehler in Betriebsblindheit übersehen werden.

Das zehnte Gebot
Kommentiere Deinen Code, Deine Commits, Deine Tickets und alles, was Dein ist.
Rede über das, was Du getan hast, sei Stolz darauf und schreibe es in einen Kommentar, damit andere auch von Deinen Leistungen begeistert sein können. Nenne Ticket- und Revisionsnummern in Deinen Kommentaren, um den Zusammenhang herzustellen.

Mrz
07

Coming Up: OXID eFire im PHP Journal

php-journal efire-workshopOnline Marketing mit OXID eFire ist eine unkomplizierte und effiziente Sache. In den vergangenen Tagen habe ich einen ausführlichen Workshop zur Shopanbindung und Einrichtung einiger Kampagnen und Portlets für das PHP Journal verfasst. Der Artikel wird in der Ausgabe vom 10. März veröffentlicht werden und gibt Einsteigern sowie erfahrenen OXID Usern einen Crashkurs zum Thema!

Mrz
22

And the lucky winner is…

Php Conference Admission CardDie PHP Conference ist einer der ganz wenigen Events, auf der die absoluten Cracks der Branche zusammen kommen, und bei dem man wirklich dabei sein sollte, wenn an PHP Entwickler ist. Leider ist die Teilnahme ziemlich teuer, weswegen ich bisher noch nie dort gewesen bin.

Umso mehr freute es mich, als ich diese Woche erfuhr, dass ich zu den Gewinnern der PHP Magazin – Verlosung gehöre! Da flatterte doch tatsächlich eine Mail in meinen Posteingang: Herzlichen Glückwunsch, Sie haben eine Teilnahme zur Hauptkonferenz für die International PHP Conference im Mai gewonnen. Glaubt man sowas? Im ersten Moment habe ich zugegebenerweise an Spam gedacht, doch dann erinnerte ich mich an das Usergewinnspiel, an dem ich teilgenommen hatte…

Also einen herzlichen Dank an das Team vom Software & Support Verlag in fröhlicher Erwartung der Conference im November. Ich werde darüber berichten!