Exec-Problem

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Exec-Problem

    Guten Abend,

    habe folgende zwei kleine Scripte:
    PHP-Code:
    //test.php

        
    include('db.class.php');
        
    $id $argv[1]; 
       
        
    $db = new db();     
        
    $db->update_user($id 'active''0');
        echo 
    "Test"
    PHP-Code:
    //test2.php

        
    $param 2;
        
    exec('php -f test.php "'.$param.'"'$output);
        echo 
    '<pre>';
        
    print_r($output);
        echo 
    '</pre>'
    Zu meinem Problem. Wenn ich mit test2.php test.php via Exec und php -f aufrufe und einfach nur eine Ausgabe, ein simples echo in die test.php schreibe ohne die Klasse einzubinden, funktioniert die Ausgabe. Der übergebene Parameter lässt sich auch ausgeben.

    Wenn ich jetzt die Klasse einbinde und die function aufrufen möchte wird keine Ausgabe mehr erzeugt, geschweige denn der DB query ausgegeben. Es wird nicht einmal eine Error-Message ausgegeben.

    An der Klasse und der Function ist nichts falsch, beim manuellen Aufrufen von test.php mit einem beliebigen Parameter wird der query ausgeführt, nur eben nicht über Exec.

    Ich hoffe jemand hat eine Idee und kann mir weiterhelfen!

    Vielen Danke,

    liebe Grüße

    c0re
    Zuletzt geändert von c0restalker; 10.06.2011, 23:09.

  • #2
    Zitat von c0restalker Beitrag anzeigen
    Wenn ich jetzt die Klasse einbinde und die function aufrufen möchte wird keine Ausgabe mehr erzeugt, geschweige denn der DB query ausgegeben. Es wird nicht einmal eine Error-Message ausgegeben.
    Dann stell mal über error_log ein, dass PHP dir Fehlermeldungen in eine Datei schreiben soll. (Wenn du das über eine php.ini machst, dann darauf achten, dass du auch die „richtige“ bearbeitest - bei Ausführung von PHP über CLI ist das oft eine andere.)

    An der Klasse und der Function ist nichts falsch
    Aber der Pfad der include-Datei ist vermutlich „falsch“ - jedenfalls in dem Kontext, in dem das Script über CLI ausgeführt wird. Dabei ist das Arbeitsverzeichnis ein anderes, und damit funktionieren relative Pfadangaben auch nicht auf die gleiche Weise, wie bei Scriptausführung über den Webserver.
    I don't believe in rebirth. Actually, I never did in my whole lives.

    Kommentar


    • #3
      Zitat von wahsaga Beitrag anzeigen
      Dann stell mal über error_log ein, dass PHP dir Fehlermeldungen in eine Datei schreiben soll. (Wenn du das über eine php.ini machst, dann darauf achten, dass du auch die „richtige“ bearbeitest - bei Ausführung von PHP über CLI ist das oft eine andere.)


      Aber der Pfad der include-Datei ist vermutlich „falsch“ - jedenfalls in dem Kontext, in dem das Script über CLI ausgeführt wird. Dabei ist das Arbeitsverzeichnis ein anderes, und damit funktionieren relative Pfadangaben auch nicht auf die gleiche Weise, wie bei Scriptausführung über den Webserver.
      Danke das hat mir sehr weitergeholfen. Er beschwert sich nun darüber:

      Code:
      [10-Jun-2011 23:22:47] PHP Fatal error:  Call to undefined function mysql_connect()
      Ich verwende für meine DB-Connection die mysql_connect()-function. Diese funktioniert ohne die Exec-Anweisung und den Script Aufruf jedoch. Eine Idee warum er nun Probleme macht?

      Vielen Dank nochmals

      Kommentar


      • #4
        Wie gesagt, schau erst mal nach, welche php.ini für CLI gilt (php_ini_loaded_file hilft) - ggf. ist da die Erweiterung einfach nicht aktiviert.
        I don't believe in rebirth. Actually, I never did in my whole lives.

        Kommentar


        • #5
          Zitat von wahsaga Beitrag anzeigen
          Wie gesagt, schau erst mal nach, welche php.ini für CLI gilt (php_ini_loaded_file hilft) - ggf. ist da die Erweiterung einfach nicht aktiviert.

          Daaankeschön, daran lag es!
          Habe in mein Script die Function 'php_ini_loaded' eingebunden und der Pfad zur php.ini der eingebunden wurde stimmt nicht mit dem Pfad der XAMPP-Installation überein. Er bindet nämlich die php.ini einer uralten PHP-Installation von mir ein.

          Schon komisch, dass er sonst immer die ini von Xampp benutzt und nun plötzlich nach Konsolen-Start die ini aus einem total anderen Verzeichnis. Da muss irgendwas schief gelaufen sein.

          Jetzt muss ich ihm das nur noch ausreden und dann habe ich es endlich geschafft! Vielen vielen Dank!

          Liebe Grüße

          Kommentar

          Lädt...
          X