3

wamp サーバーと node.js を使用してアプリ (server.js) を実行していますが、.php スクリプトを実行しようとすると、常にエラーが発生しました。 POST http://localhost:8080/login.php 404 (Not Found)

サーバー.js

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);});});

login.php へのindex.html呼び出しで:

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

お聞きしたいのですが、別のツールなどをインストールする必要がありますか?

ありがとうございました。

4

3 に答える 3

7

Node.js は PHP コードを実行しません。Apache サーバーが実行します。あなたの質問を理解しているように、ポート 80 でリッスンする Apache サーバーと 8080 でリッスンする Node.js サーバーがあり、Node.js によって提供される HTML ページで、Apache が提供する login.php で Ajax 投稿を実行する必要があります。このアサーションが true の場合、問題は Ajax リクエストが localhost:80 ではなく localhost:8080 を指していることです。

Apache サーバー (ポート 80) を正しく指すように Ajax 要求パラメーターに絶対 URL を指定する必要があります。現在のように相対 URL を指定すると、Node.js サーバーである localhost:8080 への要求が実行されます。

したがって、次のように置き換えます。

$.ajax({
  type: "POST",
  url: "login.php",
  data: "name="+username+"&pwd="+password,

$.ajax({
  type: "POST",
  url: "http://localhost:80/login.php",
  data: "name="+username+"&pwd="+password,

トリックを行う必要があります。

JavaScript で次のように実行できる実際のページからサーバー アドレスを取得する必要があります。

$.ajax({
  type: "POST",
  url: window.location.href.replace(/^(https?:\/\/[^\/]+/,'$1:80/') + "login.php",
  data: "name="+username+"&pwd="+password,
于 2013-04-30T11:19:52.583 に答える
2

Node.js にインストールするには:

npm install node-php

使用法

Node.js と Express で WordPress を実行するには、次のようにします。

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!");
于 2015-04-29T08:07:12.090 に答える