首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在.php上运行node.js脚本

如何在.php上运行node.js脚本
EN

Stack Overflow用户
提问于 2013-04-30 10:55:47
回答 3查看 11.9K关注 0票数 3

我使用wamp服务器和node.js运行我的应用程序(server.js),但是当我想要执行.php脚本时,总是会出现一个错误:POST http://localhost:8080/login.php 404 (Not Found)

server.js

代码语言:javascript
复制
var app = require('express')();
var server = require('http').createServer(app);
var webRTC = require('webrtc.io').listen(server);
var exec = require("child_process").exec;

var port = process.env.PORT || 8080;
server.listen(port);

app.get('/', function(req, res){
  res.sendfile(__dirname + '/index.html');
});

app.get('/login.php', function(req, res){
exec("wget -q -O - http://localhost/login.php", function (error, stdout, stderr) {res.send(stdout);});});

index.html中,调用login.php:

代码语言:javascript
复制
$("#login").click(function(){
  username=$("#user_name").val();
  password=$("#password").val();
  $.ajax({
      type: "POST",
      url: "login.php",
      data: "name="+username+"&pwd="+password,
      success: function(html)
               {......

我想问一问,是否有必要安装其他工具或其他东西?

谢谢。

EN

回答 3

Stack Overflow用户

发布于 2013-04-30 11:19:52

Node.js不会执行您的PHP代码,Apache将执行。正如我理解您的问题一样,您有一个Apache服务器监听端口80,一个Node.js服务器侦听8080,您希望由Node.js提供的HTML在Apache login.php上执行Ajax发布。如果这个断言是正确的,那么问题是您的Ajax请求指向localhost:8080而不是localhost:80。

您必须为Ajax请求参数提供一个绝对URL,才能正确地指向Apache (端口80),给出一个相对URL,就像现在这样做将执行对localhost:8080的请求,这是您的Node.js服务器。

因此,取代:

代码语言:javascript
复制
$.ajax({
  type: "POST",
  url: "login.php",
  data: "name="+username+"&pwd="+password,

通过

代码语言:javascript
复制
$.ajax({
  type: "POST",
  url: "http://localhost:80/login.php",
  data: "name="+username+"&pwd="+password,

应该能起作用。

您当然希望从实际页面中获取服务器地址,在JavaScript中可以这样做:

代码语言:javascript
复制
$.ajax({
  type: "POST",
  url: window.location.href.replace(/^(https?:\/\/[^\/]+/,'$1:80/') + "login.php",
  data: "name="+username+"&pwd="+password,
票数 8
EN

Stack Overflow用户

发布于 2015-04-29 08:07:12

要安装到Node.js:

代码语言:javascript
复制
npm install node-php

使用

若要使用WordPress和Node.js运行Node.js,请执行以下操作:

代码语言:javascript
复制
var express = require('express');
var php = require("php");
var path = require("path");

var app = express();

app.use("/", php.cgi("/path/to/wordpress"));

app.listen(9090);

console.log("Server listening!");
票数 2
EN

Stack Overflow用户

发布于 2020-12-07 12:14:47

您需要使用与HTTP方法相对应的Express方法app对象定义路由。

代码语言:javascript
复制
var express = require('express')
var app = express()

// respond with "hello world" when a GET request is made to the homepage
app.get('/', function (req, res) {
  res.send('hello world')
})
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16298161

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档