Monat: Juli 2018

Shopware – directory not allowed by security setting

directory … not allowed by security setting

Beim Ausführen von Plugins kann es zu dieser Fehlermeldung kommen. ...  mehr lesen

Raspberry Pi Apache Webserver

Der Raspberry Pi kann in lokalen Netzen hervorragend als lokaler Raspberry Apache Webserver genutzt werden. Besonders im Zusammespiel mit PHP kann man so über einen Webbrowser z.B. Funksteckdosen oder Bewässerungssysteme schalten. Folgende Schritte sind notwendig um den Apache Webserver auf einem Raspberry Pi zu installieren.

sudo apt-get update
sudo apt-get install apache2 -y

Beim Aufruf von http://localhost sollte nun folgende Seite im Webbrowser erscheinen.

Starseite des Apache Webservers
Starseite des Apache Webservers

Damit ist der APache Webserver auf dem PI installiert und läuft. ...  mehr lesen

Shopware Plugin Css

Wenn man in einem Plugin CSS Code hinzufügen will, ist die einfachste Möglichkeit die CSS-Datei im Order PluginOrdner/Resources/frontend/css/*.css abzulegen. Wenn man nun das Template neu kompiliert, wird das CSS automatisch in Shopware eingebunden.

Das gleiche gilt für Javascript und Less Dateien. Diese müssen entsprechend im Ordner PluginOrdner/Resources/frontend/js/*.js und PluginOrdner/Resources/frontend/less/*.less abgelegt werden.

Der Nachteil ist, dass die Dateien global in Shopware eingebunden werden, unabhängig davon, ob das Plugin nur auf einer bestimmten Seite eingreift. Wenn man also im Plugin nur die Artikel Detailseite verändert, werden die Dateien auch auf der Startseite, dem Kontaktformular und allen anderen Seiten eingebunden. ...  mehr lesen

Raspberry Pi PHP

Wer auf seinem Raspberry eine Webserver betreibt, muss über kurz oder lang dynamische Seiten erstellen. Dafür wird eine Scriptsprache wie PHP benötigt. In diesem Artikel erkläre ich, wie man auf einem Raspberry Pi PHP installiert. Viele Benutzer verwenden den Raspberry Pi und Sachen zu schalten. Dafür möchten Sie eine Website auf dem Raspberry aufrufen, über die Sie den Status z.B. einer Funksteckdose sehen und diese auch schalten können. Dafür kann man PHP nutzen.

Installation

Bevor PHP und das Apache Modul von installiert werden, sollte der Apache Webserver bereits auf dem Pi installiert sein. Wenn das so ist, können Sie PHP mit folgendem Befehl installieren.

sudo apt-get install php libapache2-mod-php -y

Prüfen

Wenn der Befehl ohne Fehlermeldungen durchgelaufen ist, kann man mit einer einfachen php Datei prüfen, ob PHP auch läuft. Das Verzeicnis des Apache Webserver, aus dem er die angeforderten Dateien ausließt lautet /var/www/html. Erstellen Sie in diesem Verzeichnis eine neue Datei test.php mit folgendem Inhalt.

<?php phpinfo(); ?>

Diese Seite kann mit der URL http://localhost/test.php vom Raspberry Pi im Webbrowser aufrufen. Wenn Sie die Seite von einem externen Rechner aufrufen wollen, müssen Sie die IP-Adresse des Raspberry anstatt localhost eingeben. Die IP-Adresse des Raspberry erfahren Sie mit dem Befehl ifconfig. Wenn folgende Informationsseite erscheint, läuft PHP als Apache Modul auf dem Raspberry Pi.

Ausgabe PHP Info auf Raspberry Pi
Ausgabe PHP Info auf Raspberry Pi

Konfiguration

Um Befehle auf dem Rasberry mit den Funktionen exec() und shell_exec() ausführen zu können und damit GPIOs zu schalten, müssen Sie noch Berechtigungen anpassen. Die PHP Scripte werden unter dem Benutzer www-data ausgeführt.  Unter Raspbian Jessie (bei anderen Versionen weiß ich nicht, wie es konfiguriert ist) sind bestimmte Rechte notwendig, um GPIOs anzusprechen. Der Benutzer muss in der Gruppe gpio sein. Daher muss man dn Benutzer www-data noch der Gruppe gpio hinzufügen.

sudo usermod -aG gpio www-data

Wenn man shell Scripte aufrufen will, muss man auf die Berechtigungen achten. So kann der Benutzer www-data keine Scripte aufrufen, die vom Benutzer pi erstellt wurden und das Recht 744 haben. Auch den Befehl sudo in einem Shell Script zu benutzen, das man mit PHP ausführt, kann zu Komplikationen führen. Der Benutzer www-data hat per default keine Berechtigungen diesen Befehl zu nutzen. Dies kann man umgehen, in dem man den Benutzer www-data zur Gruppe sudo hinzufügt.

sudo usermod -aG sudo www-data

Beispiel

In diesem Beispiel wollen wir nun eine einfache LED am Raspberry per Webserver und PHP schalten. Die Schaltung mit dem Raspberry Pi sieht folgendermaßen aus.

Legen Sie nun eine Datei led.php mit folgendem Inhalt im Verzeichnis /var/www/html an.

<html> <head> <title>LED</title> </head> <body> LED schalten: <form method="get" action="led.php"> <input type="submit" value="ON" name="on"> <input type="submit" value="OFF" name="off"> </form> <?php shell_exec("/usr/local/bin/gpio -g mode 17 out"); if(isset($_GET['on'])){ shell_exec("/usr/local/bin/gpio -g write 17 1"); echo "LED ist an"; } else if(isset($_GET['off'])){ shell_exec("/usr/local/bin/gpio -g write 17 0"); echo "LED ist aus"; } ?> </body> </html> ...  mehr lesen

Shopware jquery

Shopware lädt die Javascript Dateien asyncron am Ende der Seite. Daher kann es passieren, dass wenn man eine Javascript einbindet, das auf jquery zugreift, folgende Fehlermeldung erhält.

„Uncaught ReferenceError: jQuery is not defined“

Hiierfür hat Shopware die Javascript Funktion document.asyncReady() eingeführt. Diese Funktion wird aufgrufen, wenn alle Javascript Dateien geladen worden sind und jQuery somit zur Verfügung steht. Innerhalb dieser Funktion kann man nun seinen eigenen Code ausführen. ...  mehr lesen

Shopware Plugin erstellen

Um ein minimales Shopware Plugin zu erstellen, sind folgende Schritte notwendig.

1. Plugin Datei

Seit der Version 5.2. von Shopware werden Plugin im Ordner custom/plugins erstellt.

Für ein erstes Plugin reicht es dort einen Ordner und in diesem Ordner eine Datei mit dem gleichen Namen wie der Ordner anzulegen,

…./plugins/FhErstesPlugin/FhErstesPlugin.php

Die Datei FhErstesPlugin.php hat folgenden Inhalt

<?php
namespace FhErstesPlugin;
use Shopware\Components\Plugin;

class FhErstesPlugin extends Plugin{

}

Das reicht aus, damit Shopware im Backend das Plugin erkennt. Man kann es nun installieren und aktivieren. Es hat aber keinerlei Funktionalität.

2. Definition der Metadaten

Um die Metadaten wie z.B. den Autor oder die Version zu Pflegen, legt man im Plugin Verzeichnis eine Datei plugin.xml an. Eine Beispieldaten findet man unter
https://developers.shopware.com/developers-guide/plugin-quick-start/#plugin-resources

<?xml version="1.0" encoding="utf-8"?> <plugin xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="https://raw.githubusercontent.com/shopware/shopware/5.3/engine/Shopware/Components/Plugin/schema/plugin.xsd"> <label lang="de">Mein erstes Plugin</label> <label lang="en">My first plugin</label> <version>1.0.0</version> <link>http://www.fh19.de</link> <author>Frank Hess</author> <compatibility minVersion="5.3.0" /> </plugin> ...  mehr lesen