# Backend Plugin über Server CRON starten

**URL:** <https://forum.shopware.com/t/backend-plugin-uber-server-cron-starten/11078>\
**Category:** Shopware 3.5\
**Tags:** programming\
**Created:** [20. Januar 2013 um 17:03 UTC](https://forum.shopware.com/t/backend-plugin-uber-server-cron-starten/11078 "2013-01-20T17:03:06Z")\
**Posts on this page:** 4\
**Page:** 1

<div class="post-metadata">

**Author:** ![Tigersoft](https://avatars.discourse-cdn.com/v4/letter/t/71c47a/32.png) [@Tigersoft](https://forum.shopware.com/u/Tigersoft)\
**Post date:** [20. Januar 2013 um 17:03 UTC](https://forum.shopware.com/t/backend-plugin-uber-server-cron-starten/11078/1 "2013-01-20T17:03:06Z")

</div>

Ich möchte ein Import-Skript vom CRON des Servers starten lassen. Ich habe das Skript für 4.04 gemäß der Anleitung zur Verwendung der alten API erstellt und getestet. Ein Aufruf über [http://www.meinedomain.de/backend/MeinImport](http://www.meinedomain.de/backend/MeinImport) funktioniert. Auf dem Server liegt ein Startskript mit allen Rechten: ` #!/bin/bash WSRV\_PATH="/pfad\_zur/www.meinedomain.de" PRG\_PATH="$WSRV\_PATH/services/www/html" #INCLUDEPATH="$WSRV\_PATH/services/www/html/engine/Shopware/Plugins/Local/Backend/MeinImport/" INCLUDEPATH="$WSRV\_PATH/services/www/html/" INI5\_FILE="/pfad\_zur/php.ini" PHP5\_PRG="/usr/bin/php" $PHP5\_PRG -d include\_path=$INCLUDEPATH -c $INI5\_FILE $PRG\_PATH/shopware.php /backend/MeinImport ` Wenn ich diesen jedoch aufrufe, egal ob per CRON oder direkt erhalte ich die folgende Fehlermeldung: ` PHP Fatal error: Uncaught exception 'Enlight\_Exception' with message 'Invalid configuration file provided; PHP file does not return array value' in /pfad\_zur/www.meinedomain.de/services/www/html/engine/Library/Enlight/Application.php:387 Stack trace: #0 /pfad\_zur/www.meinedomain.de/services/www/html/engine/Library/Enlight/Application.php(154): Enlight\_Application-\>loadConfig('engine/Shopware...') #1 /pfad\_zur/www.meinedomain.de/services/www/html/engine/Shopware/Application.php(66): Enlight\_Application-\>\_\_construct('production', 'engine/Shopware...') #2 /pfad\_zur/www.meinedomain.de/services/www/html/shopware.php(72): Shopware-\>\_\_construct('production') #3 {main} thrown in /pfad\_zur/www.meinedomain.de/services/www/html/engine/Library/Enlight/Application.php on line 387 ` Wo ist mein Fehler?

---

<div class="post-metadata">

**Author:** ![Tigersoft](https://avatars.discourse-cdn.com/v4/letter/t/71c47a/32.png) [@Tigersoft](https://forum.shopware.com/u/Tigersoft)\
**Post date:** [21. Januar 2013 um 21:46 UTC](https://forum.shopware.com/t/backend-plugin-uber-server-cron-starten/11078/2 "2013-01-21T21:46:50Z")

</div>

Ich habe im Zuge der Fehlersuche nun einmal versucht, den normalen CRON über `... shopware.php /backend/cron` aufzurufen. Während das entsprechende Skript unter 3.5 einwandfrei funktioniert, kommt auch hier die oben beschriebene Fehlermeldung “…on line 387”. Die Änderung bzgl. des führenden Backslashs habe ich berücksichtigt.

---

<div class="post-metadata">

**Author:** ![Tigersoft](https://avatars.discourse-cdn.com/v4/letter/t/71c47a/32.png) [@Tigersoft](https://forum.shopware.com/u/Tigersoft)\
**Post date:** [21. Januar 2013 um 22:58 UTC](https://forum.shopware.com/t/backend-plugin-uber-server-cron-starten/11078/3 "2013-01-21T22:58:42Z")

</div>

Den ersten Teil der Lösung kann ich präsentieren: Die Skripte waren in einem Verzeichnis ausserhalb des html Ordners untergebracht. Dort verursachen sie o.g. Fehler. Legt man die Skripte ins selbe Verzeichnis, wie die Shopware.php funktioniert es. Bei 3.5 hat es auch von ausserhalb funktioniert. Neues Problem: Der Controller ruft das eigentliche Skript nicht auf: ` class Shopware\_Plugins\_Backend\_MeinImport\_Bootstrap extends Shopware\_Components\_Plugin\_Bootstrap { public function install() { $event = $this-\>createEvent( 'Enlight\_Controller\_Dispatcher\_ControllerPath\_Backend\_MeinImport', 'onGetControllerPath\_Backend' ); $this-\>subscribeEvent( 'Shopware\_CronJob\_MeinImport', 'onRun' ); $this-\>subscribeCron("MeinImport","MeinImport",5,true); return true; } public static function onRun(Enlight\_Components\_Cron\_EventArgs $args){ $this-\>View()-\>setTemplate(); define("\_auth",false); return dirname(\_\_FILE\_\_).'/MeinImport.php'; } public static function onGetControllerPath\_Backend(Enlight\_Event\_EventArgs $args){ define("\_auth",false); return dirname(\_\_FILE\_\_).'/MeinImport.php'; } } ` Start über [http://www.meinedomain.de/cron](http://www.meinedomain.de/cron) funktioniert nicht. Start über [http://www.meinedomain.de/backend/MeinImport](http://www.meinedomain.de/backend/MeinImport) funktioniert.

---

<div class="post-metadata">

**Author:** ![Tigersoft](https://avatars.discourse-cdn.com/v4/letter/t/71c47a/32.png) [@Tigersoft](https://forum.shopware.com/u/Tigersoft)\
**Post date:** [22. Januar 2013 um 11:10 UTC](https://forum.shopware.com/t/backend-plugin-uber-server-cron-starten/11078/4 "2013-01-22T11:10:25Z")

</div>

Die Lösung schließlich: [list] - Ich verwende einen Frontend Controller statt eines Backend Controllers, aufgrund der Problematik mit der Authentifizerung. - Das Startskript, was vom CRON Job aufgerufen wird, liegt im selben Verzeichnis wie shopware.php, da ansonsten der Pfad zu config.php nicht gefunden wird (Fehler oben). - Ich starte das Skript mit Curl: `curl -o /var/log/MeinImport.log "http://www.meinedomain.de/MeinImport"` [/list] Danke an ottscho!
