اذهب إلى المحتوى

السؤال

نشر

لدي مشروع مبني ضمن node.js، ولكن لدي أيضاً بعض الصفحات المبنية بلغة PHP ضمن نفس المشروع. وخادم الويب لدي هو apache.

ولكن كيف يمكنني الدمج بين node.js و PHP؟ هل يمكن تشغيل صفحات PHP من خلال node.js؟ أو هنالك طريقة أخرى لتحقيق ذلك؟

Recommended Posts

  • 0
نشر

يمكنك استخدام apache في تخديم صفحات PHP الموجودة في مشروعك من خلال استخدام proxyPass ضمن ملف httpd.conf في apache والتي ستقوم باستقبال جميع الطلبات من مسار محدد وتوجّهه إلى مشروعك:

ProxyPass /project http://localhost:8000

ثم يجب عليك إزالة التعليق من الأسطر التالية:

LoadModule proxy_module modules/mod_proxy.so

LoadModule proxy_http_module modules/mod_proxy_http.so

وبعدها سيتم إعادة توجيه أي طلبات من المسار project إلى مشروعك المبني ضمن node.js والذي يجب أن يكون أيضاً على نفس المنفذ الذي قمنا بتعريفه ضمن proxyPass:

var http = require('http');

http.createServer(function (req, res) {
  res.writeHead(200, {'Content-Type': 'text/plain'});
  res.end('Node js back-end is running, port = 8000 ');
}).listen(8000, '127.0.0.1');

أما بقية الطلبات والتي هي تابعة إلى PHP فسيتم تخديمها من قبل Apache

  • 0
نشر

يمكنك تثبيت حزمة node-php وإستخدامها كالآتي

var php = require('nodephp');
php.nodephp({
    fcgi: {
        port: '/tmp/php-fpm.sock',
        host: null,
    },
    server: {
        port: 9998
    }
});

وإذا أردت التعامل مع الملفات الثابتة static files

var php = require('nodephp');
php.nodephp({
    fcgi: {
        port: 9001,
        host: 'localhost',
    },
    server: {
        port: 9111
    }
}, {
    "\.(js|css|png|jpg|jpeg|gif|txt|less)$": php.NODEPHP_TYPE_STATIC,
    "\.php$": php.NODEPHP_TYPE_FCGI,
    "index": "index.php"
});

ويمكنك ايضاً إستخدام حزمة أخرى تسمى sphp

npm install sphp

وفي تطبيق node

var express = require('express');
var sphp = require('sphp');

var app = express();
var server = app.listen(8080);

app.use(sphp.express('public/'));
app.use(express.static('public/'));

 

انضم إلى النقاش

يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.

زائر
أجب على هذا السؤال...

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   جرى استعادة المحتوى السابق..   امسح المحرر

×   You cannot paste images directly. Upload or insert images from URL.

  • إعلانات

  • تابعنا على



×
×
  • أضف...