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
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
php und shell_exec? Schau mal ob du hier fündig wirst!
Ergänzend sei gesagt, das passiert mit dem User und dessen Rechten unter dem der Webserver läuft.
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
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.
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
Ich sehe grade du hast auch einen Fehler im Script.
Du schreibst mit PHP die Datei t.0 und liest mittels exec d.0
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.
Auch für 'date' und für 'whoami' hat PHP eine interne Lösung. Steht alles hier: http://www.php.net/manual/de/
benutz anstatt shell_exec(); lieber exec(); und nutze das extra array von dem befehl.
siehe dazu auch forumsuche nach "sudowebscript" (zb hier)
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
Du hast noch kein Benutzerkonto auf unserer Seite? Registriere dich kostenlos und nimm an unserer Community teil!