Probleme mit PHP Script

dragon001

New Member
Ich hab ein kleines Problem mit einem meiner Scripte.
Ich hab mir gerade ein Script geschrieben welches einen PHP Daemon erzeugt.
(Basis ist System_daemon aus dem Pear Repository).
Der Daemon läuft stabil.
Jetzt hab ich mir folgenden aufruf geschrieben um zu ermitteln ob der Daemon läuft:

PHP:
$f = ENV_LIB.'worker/'.strtolower("Spectware".ENV_SET).'/'.strtolower("Spectware".ENV_SET).'.pid';
            if(file_exists($f)){
                $p = file_get_contents($f);
                $cmd = "ps $p";
                exec($cmd, $output, $result);
                if(count($output) >= 2)
                    $file = ENV_HTML.'images/actions/dialog-ok-2.png';
                else
                    $file = ENV_HTML.'images/actions/dialog-close-2.png';
            }else
                $file = ENV_HTML.'images/actions/dialog-close-2.png';
            $type = 'image/jpeg';
            header('Content-Type:'.$type);
            header('Content-Length: ' . filesize($file));
            readfile($file);


Funktioniert fehlerfrei.
Aber jetzt zum Problem:

Ich wollte den Daemon auch auf Webcommando Basis aus starten und stoppen lassen.

Hier die Script teile

Stopen

PHP:
            exec('/usr/bin/php '.ENV_LIB.'worker/stop.php', $output, $result);
            var_dump($output,$result);

Starten

PHP:
            $cmd = '/usr/bin/php '.ENV_LIB.'worker/start.php';
            $output = shell_exec($cmd);

Keines der beiden wird ausgeführt.
Bin jetzt ein wenig verwirrt.
PS läuft, aber das Script auf Basis von PHP nicht.
Geb ich das oben zusammen gesetzte Kommando mittels Echo aus und hämmere es in die Schell, läuft es.
Aber eben nicht vom Web aus.
Bei exec bleibt die ausgabe für start genauso wie shell_exec leer.
Kein Rückgabe wert, obwohl ein zwei zeiler ausgegeben werden sollte.

Kennt jemand vielleicht eine Lösung?
 
was sagt das logfile (error log) dazu?

Sieht aber ganz danach aus, als wäre exec + shell_exec Mitglied der disabled_functions
 
Als welcher Benutzer hast du das in die Shell gehämmert?
Vielleicht braucht es erhöhte Rechte um den Deamon steuern zu können...
 
bei /usr/bin/php solltest du eine PHP.ini mit angeben, da er sonst diverse Einstellungen /Pfade/Timeouts etc. nicht zur Verfügung hat.

Geh auf die shell und tipp php -h ein, und schau dir die examples an.
 
das mit php -h und quelle der php.ini angeben hat auch nicht funktioniert.

Hab jetzt ein script geschrieben:

Code:
#!/bin/bash
script_dir="$(dirname "$(readlink -f ${BASH_SOURCE[0]})")"

/usr/bin/php -c /etc/php5/cli/php.ini -f $script_dir/start.php

hab das als start.sh gespeichert.

Aufruf sollte durch
PHP:
exec(ENV_LIB.'worker/start.sh', $output, $result);
var_dump($output,$result);
funktionieren. aber selbst das klapt nicht. :(

Ich möchte mir und den anderen Admins die Arbeit erleichtern den Daemon neu zu starten.
Das Backend ist stark geschützt und erlaubt nur das der Hintergrund Task neustartet oder nicht.

Start und stop läuft bestens auf der Shell aber nicht in PHP.
Die exec funktion muß laufen da ich in vardump das hier hab:

array(0) { } int(0)

Also leere rückgabe.
Kapier das nicht. mit ps hauts doch auch hin. Warum macht er mir das leben nur so schwer?
 
Back
Top