per php einen shell script ausführen

Vom einfachen Programm zum fertigen Debian-Paket, Fragen rund um Programmiersprachen, Scripting und Lizenzierung.
Antworten
Lui2004
Beiträge: 5
Registriert: 20.03.2011 12:51:51

per php einen shell script ausführen

Beitrag von Lui2004 » 20.03.2011 13:03:11

hi zusammen habe ein kleines problem womit ich schon ca 2 tage rum mache und per google auch nichts gutes gefunden womit ich erfolgreich war.

wenn ich per putty die shell ausführen geht der befehl,hoffe ihr könnt mir helfen



System: Linux cccam-server 2.6.32-5-686
debian 6 ( squeeze )
PHP Version 5.3.3-7
Apache2

mein php script ( Rechte 755 ):

Code: Alles auswählen

<?
system('cd /var/www/ipc/page/; ./cccam-stop.sh ');
?> 
Bash script ( Rechte 755 ):

Code: Alles auswählen

#bash
c stop
exit 1
gruss

Danke schon mal

DeletedUserReAsG

Re: per php einen shell script ausführen

Beitrag von DeletedUserReAsG » 20.03.2011 13:58:25

She-Bang-Zeile fehlt?

cu,
niemand

Lui2004
Beiträge: 5
Registriert: 20.03.2011 12:51:51

Re: per php einen shell script ausführen

Beitrag von Lui2004 » 20.03.2011 14:08:13

die wäre ?

so ?

Code: Alles auswählen

#!/bin/sh
Edit: eingefügt es pasiert immer noch nichts wie gesagt die sh datei mit ausführung per putty geht einwandfrei

nur über php macht das mir probleme

danke

Benutzeravatar
feltel
Webmaster
Beiträge: 10458
Registriert: 20.12.2001 13:08:23
Lizenz eigener Beiträge: MIT Lizenz
Wohnort: Leipzig, Germany
Kontaktdaten:

Re: per php einen shell script ausführen

Beitrag von feltel » 20.03.2011 15:20:11

Für PHP-Scripts wäre es

Code: Alles auswählen

#!/usr/bin/php5
Dazu muss aber Debianphp5-cli installiert sein. Alternativ kannst dann das Script auch über

Code: Alles auswählen

php5 /pfad/zum/script.php
starten.

Lui2004
Beiträge: 5
Registriert: 20.03.2011 12:51:51

Re: per php einen shell script ausführen

Beitrag von Lui2004 » 20.03.2011 17:45:19

hi

danke für eure antworten.

php5-cli habe ich schon die aktuelle drauf.

ich will das die die commandos über ein button laufen lassen,wenn ich den button drück,soll die php denn befehl weiter an sh weitergeben damit der prozess beendet wird

wo muss ich genau diese zeile einfügen ?

oder mir ein beispiel machen bzw meine sachen von oben als beispiel nehmen wie das aussehen soll

Code: Alles auswählen

    php5 /pfad/zum/script.php
gruss und Danke

Lui2004
Beiträge: 5
Registriert: 20.03.2011 12:51:51

Re: per php einen shell script ausführen

Beitrag von Lui2004 » 21.03.2011 15:22:32

hi

keine mehr ein tipp ?

gruss

Benutzeravatar
bmario
Beiträge: 1257
Registriert: 05.09.2007 12:15:47
Lizenz eigener Beiträge: MIT Lizenz
Wohnort: Dresden

Re: per php einen shell script ausführen

Beitrag von bmario » 21.03.2011 15:52:20

Probiere es mal so:

Code: Alles auswählen

<?php
// (Fast) alle Fehler anzeigen
error_reporting(E_ALL);
echo '<pre>';
// Ausgabe von system() anzeigen
echo system('/var/www/ipc/page/cccam-stop.sh ');
echo '</pre>';
?>

Code: Alles auswählen

#!/bin/bash
c stop
Wenn das nicht gehen sollte, glaube ich das es an den Rechten liegt. Darf den jeder das Programm "c" ausführen?
Mal unter PuTTY mit "su www-data" zum "Apache werden" und das Skript noch mal testen!
Nichts zu tun ist viel besser,
als mit viel Mühe nichts zu schaffen. - Laotse

Lui2004
Beiträge: 5
Registriert: 20.03.2011 12:51:51

Re: per php einen shell script ausführen

Beitrag von Lui2004 » 21.03.2011 16:26:11

hi

danke für deine hilfe

habe mal als erstes das mit den rechten versucht und gleube es liegt wirklich daran

auszug von putty:

Code: Alles auswählen

root@server ~ > su www-data
\[\033[1;33m\]\u\[\033[1;37m\]@\[\033[1;32m\]\h\[\033[1;37m\] \[\033[1;31m\]\w \[\033[1;37m\]> \[\033[0m\]
\[\033[1;33m\]\u\[\033[1;37m\]@\[\033[1;32m\]\h\[\033[1;37m\] \[\033[1;31m\]\w \[\033[1;37m\]> \[\033[0m\]c stop
/bin/c: Zeile 31: /var/log/ipc/CCcam.OK: Datei oder Verzeichnis nicht gefunden
pkill: 1376 - Operation not permitted
pkill: 1376 - Operation not permitted
CCcam : gekillt
Cron  : beendet
/etc/init.d/cron: 103: start-stop-daemon: not found
\[\033[1;33m\]\u\[\033[1;37m\]@\[\033[1;32m\]\h\[\033[1;37m\] \[\033[1;31m\]\w \[\033[1;37m\]> \[\033[0m\]cd var/www/ipc/page
cd: 3: can't cd to var/www/ipc/page
\[\033[1;33m\]\u\[\033[1;37m\]@\[\033[1;32m\]\h\[\033[1;37m\] \[\033[1;31m\]\w \[\033[1;37m\]> \[\033[0m\]cccam stop
/bin/cccam: Zeile 31: /var/log/ipc/CCcam.OK: Datei oder Verzeichnis nicht gefunden
pkill: 1376 - Operation not permitted
pkill: 1376 - Operation not permitted
CCcam : gekillt
Cron  : beendet
/etc/init.d/cron: 103: start-stop-daemon: not found
\[\033[1;33m\]\u\[\033[1;37m\]@\[\033[1;32m\]\h\[\033[1;37m\] \[\033[1;31m\]\w \[\033[1;37m\]> \[\033[0m\]

alexander_ro
Beiträge: 298
Registriert: 16.01.2006 17:44:21
Lizenz eigener Beiträge: GNU General Public License

Re: per php einen shell script ausführen

Beitrag von alexander_ro » 22.03.2011 14:02:07

Ich habe das immer so gemacht:

Code: Alles auswählen

#!/usr/bin/php

<?php
// Evtl. ins richtige Verzeichnis wechseln.
  chdir ('/home/<user>');

// Shell Kommando zusammen setzen.
  $Befehl = "/bin/ls";

  exec ($Befehl, $Ausgabe, $ReturnCode);

  if ($Ausgabe[0] != "")
    foreach ($Ausgabe as $Index => $Text)
      print $Text . "\n";
  unset ($Ausgabe);

  if ($ReturnCode != 0)
  {
    print " Irgendwas ist kaputt ... \n";
    exit (1);
  }
?>
Sollte sich in der Kommandozeile einfach aufrufen lassen.
Bei Shellscripten mußt Du darauf achten das die Verzeichnisse stimmen relativ zu dem Verzeichnis in dem Du das Script aufrufst und das der User der es Aufruft auch die Berechtigungen dafür hat. Am einfachsten ist es wenn Du den Pfad absolut an gibst also ausgehend vom Root-Verseichnis.

[Edit]
Ist mir grade noch eingefallen: bei der ersten Zeile musst Du darauf achten das der Text in Spalte 1 beginnt.
[/Edit]

Alexander

Antworten