Ergebnis 1 bis 11 von 11
  1. #1
    Avatar von xorg1990
    xorg1990 ist offline König
    registriert
    19-12-2013
    Beiträge
    872

    PHP unter NodeJs via ExpressJS nutzen

    Hallo Leute, ich komme absolut nicht weiter.
    Ich möchte das Analyse tool piwik unter Nodejs nutzen.
    Das benötigt aber php.

    Habe da mal bei npm geguckt was es da so gibt und habe mich für das Modul node-php entschinden, da ist zumindest von Wordpress die rede und das ist ähnlich komplex wie piwik.

    Problem ich erhallte immer die selbe Fehlermeldung

    Uncaught exception: The configuration file {/home/xorg1990/workspace/http_server/phpdocs/piwik/config/config.ini.php} has not been found or could not be read. If the file exists, please check that /home/xorg1990/workspace/http_server/phpdocs/piwik/config/config.ini.php is readable by the user 'xorg1990'. in /home/xorg1990/workspace/http_server/phpdocs/piwik/core/Application/Kernel/EnvironmentValidator.php line 63 #0 /home/xorg1990/workspace/http_server/phpdocs/piwik/core/Application/Kernel/EnvironmentValidator.php(44): Piwik\Application\Kernel\EnvironmentValidator->checkConfigFileExists('/home/xorg1990/...', false) #1 /home/xorg1990/workspace/http_server/phpdocs/piwik/core/Application/Environment.php(185): Piwik\Application\Kernel\EnvironmentValidator->validate() #2 /home/xorg1990/workspace/http_server/phpdocs/piwik/core/Application/Environment.php(94): Piwik\Application\Environment->validateEnvironment() #3 /home/xorg1990/workspace/http_server/phpdocs/piwik/core/dispatch.php(28): Piwik\Application\Environment->init() #4 /home/xorg1990/workspace/http_server/phpdocs/piwik/index.php(27): require_once('/home/xorg1990/...') #5 {main}
    Selbe show auch bei php-express

    Das Modul express-php schaft es wenigstens was auszugeben, aber dann kann ich meine normalen routes nicht nutzen, 2tens bei den Formularen wo man sein DB Daten eingeben muss geht es nicht mehr weiter - Timeout.

    Ich arbeite unter Linux/Debian mit express 4.x

    Die Express konfiguration ist wie folgt:
    app.use("/piwik", php.cgi(__dirname+"/phpdocs/piwik"))

    Irgendwelche ideen?

    Im Prinzip ist es mir egal welche Modul genutzt wird, funktionieren muss es.
    Geändert von mikdoe (24-04-2016 um 20:50 Uhr) Grund: Gelöst

  2. #2
    Avatar von kkapsner
    kkapsner ist offline Super Moderator
    registriert
    28-03-2008
    Beiträge
    17.757

    AW: PHP unter NodeJs via ExpressJS nutzen

    Die Fehlermeldung ist doch ziemlich aussagekräftig. Welche Berechtigungen hat denn diese Datei?

  3. #3
    Avatar von xorg1990
    xorg1990 ist offline König
    registriert
    19-12-2013
    Beiträge
    872

    AW: PHP unter NodeJs via ExpressJS nutzen

    Die Datei config.ini.php existiert nicht im Ordner config. Schon in den zip, den man bei piwik.org zieht existiert die Datei nicht, das ist ja das komische. So wie ich ich das gelesen habe wird die Datei erst angelegt. Der Ordner hat die höchsten rechte chmod 755.

    Wie gesagt das Modul express-php schaft es wenigsten bis zur Ausgabe, kann aber keine Formulardaten verarbeiten. Kommt immer Timeout nach 10min Laden

    Habe such schon mehrfach die Ordner phpdocs/piwik neu angelegt im Fall das da schon config Dateien rumliegen -erfolglos.
    Geändert von xorg1990 (19-04-2016 um 19:11 Uhr)

  4. #4
    Avatar von kkapsner
    kkapsner ist offline Super Moderator
    registriert
    28-03-2008
    Beiträge
    17.757

    AW: PHP unter NodeJs via ExpressJS nutzen

    Dann muss die config.ini.php innerhalb irgendeiner Installationsroutine angelegt werden. Gibt es da nicht irgendein Installationsscript?

  5. #5
    Avatar von xorg1990
    xorg1990 ist offline König
    registriert
    19-12-2013
    Beiträge
    872

    AW: PHP unter NodeJs via ExpressJS nutzen

    Die Installationsroutine startet eigentlich beim erstmaligen Aufruf von piwik.
    Habe schon an exec gedacht und via stdout zu arbeiten qick and dirty.

  6. #6
    Avatar von kkapsner
    kkapsner ist offline Super Moderator
    registriert
    28-03-2008
    Beiträge
    17.757

    AW: PHP unter NodeJs via ExpressJS nutzen

    Zitat Zitat von xorg1990 Beitrag anzeigen
    Habe schon an exec gedacht und via stdout zu arbeiten
    Ich denke mal, dass das node-Modul genau das macht...

  7. #7
    Avatar von xorg1990
    xorg1990 ist offline König
    registriert
    19-12-2013
    Beiträge
    872

    AW: PHP unter NodeJs via ExpressJS nutzen

    Nicht ganz, die spawnen php als child. Habe exec probiert selbes Problem. Habe nochmal express-php rum gespielt kann jetzt php und meine node routes parallel nutzen aber Formulare gehen immer noch nicht . Verstehe nicht war das eine geht und das andere nicht, der Quellcode ist fast identisch.

  8. #8
    Avatar von xorg1990
    xorg1990 ist offline König
    registriert
    19-12-2013
    Beiträge
    872

    AW: PHP unter NodeJs via ExpressJS nutzen

    Gelöst.
    Geht einwandfrei mit den modul express-php.
    Wichtg ist das man das cgi vor den bodyParser initalisert. Dann gehen auch die Formulare.
    Code:
    app.use("/piwik/plugins", express.static(__dirname + "/phpdocs/piwik/plugins"))
    app.use("/piwik/libs", express.static(__dirname + "/phpdocs/piwik/libs"))
    app.all(/.+\.php$/, php.cgi("./phpdocs"))
    //....
    app.use(bodyParser());
    Manchmal kann es passiren das die Ports durcheinader kommen, dann steht da x.x.x.x:8011. dann muss man im modul in der index.js den eintrag SERVER_PORT: auf den port ändern denn expressjs nutzt.

    Achtung niemals expressjs auf port 80 laufen lassen, dann muss man nodejs als root starten, damit wären alle einstellung fürn Ar*** . Die Pfade stimme dann auch nicht mher, lieber eine Portweiterleiung einrichten.

    Fast vergessen,
    Die Pfade sehen so aus DOCUMENT_ROOT//phpdocs/piwik/ <- darin ist die index.php
    die URL ist dann x.x.x.x:2000/piwik/index.php

    THX to: HansHammel für den hinweis mit der Initialisierung
    https://github.com/HansHammel
    Geändert von xorg1990 (24-04-2016 um 18:13 Uhr)

  9. #9
    Avatar von alphakanal
    alphakanal ist offline Foren As
    registriert
    03-12-2016
    Beiträge
    92

    AW: PHP unter NodeJs via ExpressJS nutzen

    Hi!

    Versuche auch gerade express-php zum Laufen zu bekommen. Leider ist der Beispiel-Code auf der Seite für mich nicht sehr hilfreich -> da ich mich damit überhaupt nicht auskenne. Und auch keine Ahung habe ob ich sonst noch irgendwas installieren muss bevor das unter VS Code + Express läuft. Vielleicht könnte mir hier wer weiterhelfen ??

    Express-php habe ich installiert und meine app.js sieht soweit so aus:
    Code:
    var express = require('express');
    var app = express();
    var php = require('express-php');
    var bodyParser = require('body-parser');
    var port = process.env.PORT || 8080;
    ...
    var environment = process.env.NODE_ENV;
    
    app.use(bodyParser.urlencoded({
      extended: true
    }));
    app.use(bodyParser.json());
    
    ...
    
    switch (environment) {
      case 'build':
        console.log('** BUILD **');
        app.use(express.static('./build/'));
        app.use('/*', express.static('./build/index.html'));
        break;
      default:
        console.log('** DEV **');
        app.use(express.static('./src/client/'));
        app.use(php.cgi('./src/client/')); // ist das hier richtig ?
        app.use(express.static('./'));
        app.use(express.static('./tmp'));
        app.use('/*', express.static('./src/client/index.html'));
        break;
    }
    ...
    In meiner SPA ( mit AngularJS ) greif ich auf eine PHP Datei zu, die mir Daten aus einer DB ( MySQL ) zurückgibt:
    Code:
    var $promise = $http.post('php/login.php', user);
    Wenn ich die Anwendung unter XAMP laufen lasse bekomme ich Feedback aus der PHP - aber wenn ich in VS Code den Express Server starte bekomme ich 404-Status für die PHP Datei.

    • Stimmt überhaupt die Stelle an der ich app.use(php.cgi('./src/client/')); einsetze ?
    • Mein angegebener Pfad dafür ist das Root-Verzeichnis meiner SPA.
    • Habe das mit dem BodyParser hinter das switch-case gestellt -> löst aber das Problem nicht
    • Muss ich noch irgendetwas zusätzlich installieren um PHP zu 'aktivieren'?


    Wäre auf jeden Fall für jeden Hinweis dankbar :-)
    Geändert von alphakanal (07-03-2017 um 19:28 Uhr)
    "640 Kilobyte ought to be enough for anybody."
    Bill Gates, 1981

  10. #10
    Avatar von kkapsner
    kkapsner ist offline Super Moderator
    registriert
    28-03-2008
    Beiträge
    17.757

    AW: PHP unter NodeJs via ExpressJS nutzen

    Muss das .cgi nicht vor das .static? Aber wenn da ein 404er kommt, heißt das, das deine PHP-Dateien gar nicht gefudnen werden. Also irgendeine Pfadangabe falsch ist.

  11. #11
    Avatar von xorg1990
    xorg1990 ist offline König
    registriert
    19-12-2013
    Beiträge
    872

    AW: PHP unter NodeJs via ExpressJS nutzen

    Oha, das kommt jetzt ein wenig unerwartet, da ich schon länger nix mehr mit nodejs gemacht habe.

    Aber was ich sehe, die Reihenfolge ist falsch und de Befehl heißt app.all().

    Also das app.use(php.cgi('./src/client/')); // ist das hier richtig ? ist flasch.

    Richtig : app.all(/.+\.php$", php.cgi("./phpdocs"))
    Heist soviel wie alle Dateien die mit .php enden und im Ordner phpdocs liegen werden von php.cgi ausgeführt.

    Erst danach darfst du den BodyParser aufrufen.

    Bei einem Windows System kann es hier zu Problemen führen. Native Module also welche die in c oder php geschrieben sind buggen rum.

    Zitat Zitat von alphakanal
    Habe das mit dem BodyParser hinter das switch-case gestellt
    Ich weiß ja nicht was du da genau treibst, aber das switch brachst du eigentlich nicht. Das express.static() sagt ja deinem Server nur unter welchem Pfad er die Statischen Dateien findet.

    Bsp:
    app.use("/styles", express.static(__dirname + "/css"));

    Dein Browser findet die css Dateien nun unter /styles statt /css.

    Zitat Zitat von alphakanal
    greif ich auf eine PHP Datei zu, die mir Daten aus einer DB ( MySQL ) zurückgibt:
    Warum nutzt du für die DB abfragen php? Habe das bei mir alles in nodejs geschrieben.

Ähnliche Themen

  1. expressjs response zu JqueryAjax will nicht
    Von xorg1990 im Forum Ajax
    Antworten: 4
    Letzter Beitrag: 01-09-2015, 21:22
  2. [FRAGE] nodejs Mongoskin ergebnis ausgeben
    Von m1xm im Forum JavaScript
    Antworten: 17
    Letzter Beitrag: 15-03-2015, 14:15
  3. wieder mal ein Problem mit audiolib.js in NodeJS
    Von xorg1990 im Forum JavaScript
    Antworten: 31
    Letzter Beitrag: 06-10-2014, 17:16
  4. Stdin Nodejs
    Von xorg1990 im Forum JavaScript
    Antworten: 6
    Letzter Beitrag: 03-02-2014, 00:07
  5. NodeJs Mysql
    Von gentleben im Forum Serverseitige Programmierung
    Antworten: 3
    Letzter Beitrag: 04-10-2012, 06:53

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •