php und shell_exec

  • Ich möchte mittels php auf dem Pi eine Datei erzeugen:
    ..
    $o=shell_exec('echo \"etwas\" |tee t.0');
    echo "<pre>$o</pre>";
    ..

    ich vermute mal, dass der 'apache' selbiges verhindert :(

    any hints

    mfg sortable

  • Warum shell_exec ? Nimm PHP.

    Code
    <?PHP
    $fh=fopen("t.0","w");
    fputs($fh,"etwas");
    fclose($fh);
    ?>

    Offizieller Schmier und Schmutzfink des Forum.
    Warum einfach wenn's auch schwer geht ?

    Kein Support per PN !
    Fragen bitte hier im Forum stellen. So hat jeder etwas davon.

  • Erstmal danke für die raschen Antworten,
    (ähm shell_exec ist im Übrigen ein php-Kommando)

    also hilft der Code vom Imperator nix weiter,

    das Problem muss mit der Rechtevergabe zu tun haben:

    <?php
    $fh=fopen("t.0","w");
    fputs($fh,"etwas");
    fclose($fh);

    $output=shell_exec('file d.0');
    echo "<pre>$output</pre>";
    ?>

    Fehlerausgabe:


    d.0: ERROR: cannot open `d.0' (No such file or directory)

    mfg Sortable

    • Offizieller Beitrag

    der imperator hat recht, shell_exec ist eine Schnittstelle um Systembefehle auszuführen. Wenn php das nativ kann, ohne den umweg über die bash zu gehen, ist dieser weg immer zu bevorzugen. Das zählt nicht nur für php sondern für alle Sprachen.

    Der Unterschied zwischen Genie und Wahnsinn definiert sich im Erfolg.

  • das Problem muss mit der Rechtevergabe zu tun haben:

    Ja, das ist richtig.
    Du solltest dich mal schlau machen unter welchem Benutzer dein shell_exec ausgeführt wird, ob der User berechtigung hat den Befehl auszuführen und zuletzt ob der Benutzer die rechte hat in dem Verzeichnis zu lesen und zu schreiben.

    Lies dich mal in das Rechtesystem ein oder nutze PHP

    Code
    <?PHP
    $output=file("t.0");
    print_r($output);
    ?>



    Ich sehe grade du hast auch einen Fehler im Script.

    Du schreibst mit PHP die Datei t.0 und liest mittels exec d.0

    Offizieller Schmier und Schmutzfink des Forum.
    Warum einfach wenn's auch schwer geht ?

    Kein Support per PN !
    Fragen bitte hier im Forum stellen. So hat jeder etwas davon.

    Einmal editiert, zuletzt von Der_Imperator (14. Mai 2014 um 11:30)

  • Ah ich bin jetzt ein gutes stück weiter
    [code=php]
    <html><body>
    <h1>Raspberry Pi</h1>
    <p></p>

    <?php

    $output=shell_exec('date');
    echo "<pre>$output</pre>";


    $output=shell_exec('whoami');
    echo "<pre>$output</pre>";

    $output=shell_exec('echo \"Hallo\" > t.0');
    echo "<pre>$output</pre><br>";


    $output=file("t.0");
    print_r($output);


    ?>

    </body></html>
    [/php]

    ich hab vorher einfach mittels 'touch' die Datei erzeugt und 'chown' angepasst:

    Browserausgabe:
    =================================================
    Raspberry Pi

    Wed May 14 12:15:53 CEST 2014

    www-data


    Array ( [0] => "Hallo" )

    =================================================
    thx Sortable

  • Ich verstehe immer noch nicht so richtig warum du mit shell_exec schreibst.

    Offizieller Schmier und Schmutzfink des Forum.
    Warum einfach wenn's auch schwer geht ?

    Kein Support per PN !
    Fragen bitte hier im Forum stellen. So hat jeder etwas davon.


  • Ich verstehe immer noch nicht so richtig warum du mit shell_exec schreibst.

    Wie solltest Du auch, ich versuche über den Aufruf einer Seite ein aktuelles
    Diagramm via gnuplot zu erstellen, als erste Hürde hatte sich bislang diese Rechte-Geschichte
    herausgestellt.

    bis dann Sortable

  • Imperator hat völlig recht:
    Solange Du lediglich eine Datei zum Schreiben bzw. Lesen öffnen möchtest, ist fopen/fputs/fclose wesentlich effizienter anstelle von "shell_exec", wofür erst ein eigener Shell-Prozess angelegt werden muss um das externe Kommando auszuführen.

    Gruß, mmi

Jetzt mitmachen!

Du hast noch kein Benutzerkonto auf unserer Seite? Registriere dich kostenlos und nimm an unserer Community teil!