PHP Script mit autorun ausführen

  • Hallo, ich bin diesbezüglich ein Newbie. Hab schon etliches auf meinem TS-251 ausprobiert aber ich komme irgendwie nicht weiter. Aktuelle Firmware 5.0 ...

    Soweit ich es sehe ist autorun.sh aktiv. (hab das über den Installer dieser Seite erledigt: https://github.com/OneCDOnly/create-autorun)

    Im "scripts" Ordner habe ich die Datei Run_VTO4202.sh angelegt.

    Inhalt:

    Code
    #!/usr/local/apache/bin/php
    
    chmod +x /share/Tom/Tuerklingel/VTO4202.php

    Nur leider funktioniert das nicht. Es passiert nichts.

    Im autorun.log ist folgender Eintrag:

    Code
    Fri Oct 22 04:18:23 CEST 2021 -- autorun.sh is processing --


    Wenn ich über Putty das Script manuell ausführe, dann läuft es wie gewünscht. Allerdings nur solange Putty offen ist.

    Putty:

    Code
    /mnt/ext/opt/apache/bin/php /share/Tom/Tuerklingel/VTO4202.php

    Kann mir jemand erklären was ich da falsch mache?


    Vielen Dank

  • Hallo, ich habe nun den Inhalt der Datei Run_VTO4202.sh  wie folgt geändert:

    Code
    #!/usr/local/apache/bin/php /share/Tom/Tuerklingel/VTO4202.php

    Jetzt läuft es.

    Danke

  • Etwas unorthodox, aber so geht es natürlich auch.


    Trotzdem noch zur Erläuterung: die ursprüngliche Version der Datei Run_VTO4202.sh hatte zwei Fehler.

    1. Zeile 1 besagte, dass die Datei selbst mit dem PHP-Interpreter zu verarbeiten sei. Sie war und ist aber kein PHP-Skript, sondern ein Shellskript. Richtig wäre also gewesen: #!/bin/sh oder #!/bin/bash
    2. Das Shell-Kommando in Zeile 3 führte (selbst wenn es von der Shell verarbeitet wurde) die PHP-Datei nicht aus, sondern setzte lediglich das Executable-Bit in der Berechtigungsmaske, sodass man sie anschließend durch Eingabe von /share/Tom/Tuerklingel/VTO4202.php auf der Kommandozeile hätte ausführen können - vorausgesetzt sie begann mit #!/usr/local/apache/bin/php.

    Mit der neuen Version gibst Du nun vor, dass die Datei Run_VTO4202.sh mit dem Befehl #!/usr/local/apache/bin/php /share/Tom/Tuerklingel/VTO4202.php zu verarbeiten sei. Dadurch wird der Befehl wie von Dir gewünscht ausgeführt, und dass er den Rest der Datei als Eingabe verfüttert bekommt stört weiter nicht, weil der leer ist und das Skript wahrscheinlich eh keine Eingabe erwartet.


    Die klassische Lösung wäre gewesen:

    Bash
    #!/bin/bash
    
    /usr/local/apache/bin/php /share/Tom/Tuerklingel/VTO4202.php