Bonjour à tous voilà je suis en train de m'initier a node js et express en créant ma toute première application,
lorsque j'utilise le code suivant pour servir une page html sur laquelle tournera mon application sa fonctionne normalement
const path=require('path');
app.get('/sugarchat', (req, res) => {
res.sendFile(path.join(__dirname,'public','index.php'));
// app.use(express.static(path.join(__dirname,'public')));
});```
le problème ici est que la page que je souhaite servir est une page php, elle contient des scripts que je suis obligé d'exécuter avec php alors comment est - ce que je dois m'y prendre parce que quand je j'utilise index.php au lieu de index.html dans res.sendFile c'est un fichier étrange qui est téléchargé au lieu de voir ma page apparaître , thank you.....
Hello Frageinstein07.
Alors voici ce que je te consiel si tu dois absolument servir du PHP.
Explications:
En Node.js + Express, ton code actuel :
app.get('/sugarchat', (req, res) => {
res.sendFile(path.join(__dirname,'public','index.php'));
});
fonctionne pour un fichier statique (HTML, CSS, JS…), mais Express ne sait pas interpréter du PHP.
Si tu veux que ta page .php soit réellement exécutée (scripts PHP interprétés), il faut passer par PHP-FPM ou un serveur PHP séparé, et faire en sorte que Node redirige ou proxifie vers celui-ci.
Solution simple (serveur PHP à côté)
1. Lancer PHP intégré dans le dossier public :
php -S localhost:8000 -t public
2.Dire à Express de proxifier /sugarchat vers ce serveur PHP :
const express = require('express');
const { createProxyMiddleware } = require('http-proxy-middleware');
const app = express();
app.use('/sugarchat', createProxyMiddleware({
target: 'http://localhost:8000',
changeOrigin: true
}));
app.listen(3000, () => {
console.log('Node écoute sur http://localhost:3000');
});
Quand tu vas sur http://localhost:3000/sugarchat, Node envoie la requête au serveur PHP (localhost:8000), qui lui exécute ton index.php et renvoie le HTML final.
Solution plus propre (production)
• Utiliser Nginx ou Apache devant Node.js :
• Nginx sert /sugarchat via PHP-FPM
• Node.js sert tes routes Express
• Les deux cohabitent sur le même domaine
⸻
📌 Important : Node.js ne remplacera jamais l’interpréteur PHP.
Si tu veux exécuter du PHP depuis Node, soit tu proxifies vers un serveur PHP, soit tu lances un processus PHP via child_process (moins conseillé).
Merci énormément pour ta réponse je vais essayer le profixage et je te tiendrai au courant
en fait j'explique le contexte , après avoir renseigné son mail et son mot de passe pour se connecter a son espace client , une vérification est effectué en back end a l'aide de mon script php, quand tout est bon une session est créée avec php et l'utilisateur est redirigé vers son espace client , le problème c'est que sur l'espace client tourne une application nodeJS et comme la page est supposée etre en php, voilà que sa ne marche pas... si la page n'est pas en php je peux paps faire de session start pour récupérer les informatiions de mon client et encore moins les afficher, raison pour laquelle je demandais comment servir une page php avec express... donc dans mes recherches j'ai cru comprendre qu'on peut uiliser des variables de session avec express du coup je me dis que c'est peut etre plus simple que les méthodes que nous avons évoquées plus tôt, vous en pensez quoi?
Hello, je suis pas sur d'avoir compris en detail le fonctionnement de ton appli mais je vois deux choix possibles :