【问题标题】:Browser automatically downloads PHP files浏览器自动下载 PHP 文件
【发布时间】:2014-08-14 16:30:00
【问题描述】:

我正在阅读“面向 PHP 开发人员的 Node.js”一书。我创建了一个 NodeJS Web 服务器,它也接收请求并给出响应。但是每当我访问 PHP 文件以将其重新路由到 JS 文件时(这是必需的),我的浏览器都会自动下载 PHP 文件。

这是我的 JS 代码,据此它还下载 JS 文件(例如,当我访问 localhost:1337/first.njs 时)

var http = require('http');
var url = require('url');
var file = require('./first.njs');

http.createServer(function(req, res) {
if(url.parse(req.url).pathname == 'first.php')
    file.serve(req, res);
else
    res.end('The file doesn\'t exist');
}).listen(1337, '127.0.0.1');

console.log('Server is running on 1337');

如果重要的话,这是我的 PHP 文件

<?php
  echo "ASD";
?>

我知道这感觉像是一个非常愚蠢的问题,但我不知道为什么会这样。

经过测试的浏览器:Chrome 和 Firefox。

更新 无法找出确切的问题,也无法复制问题 - 但这是我最新的代码,如果有人想将请求的 PHP 文件重新路由到 JS 文件并提供它(JS 文件)

var http = require('http');
var url = require('url');
var file = require('./first.njs');

http.createServer(function(req, res) {
if(url.parse(req.url).pathname == '/first.php')
    file.serve(req, res);
else
    res.end('File not found');
}).listen(1337, '127.0.0.1');

console.log('Server is running on 1337');

【问题讨论】:

  • 直接访问php文件会得到什么?
  • 你没有安装 PHP。
  • @Nicolas 没有 apache 就意味着没有 Web 服务器,这意味着甚至没有机会获得任何东西(甚至没有下载文件)。
  • @CharlotteDunois 我的 PHP 代码
  • 您没有安装 PHP 或没有激活 apache 模块。

标签: javascript php node.js


【解决方案1】:

如果您想检查是否可以在不实际将其渲染到页面的情况下渲染 PHP 页面,您可以在 JavaScript/jQuery 中使用 ajax 请求。

    $.ajax({
        type: "POST",
        url: 'YOUR PHP FILE PATH',
        success: function (dataCheck) {
            // file was accessed
        }
    });

在您的成功函数中,您可以输出 PHP 文件已成功访问。

【讨论】:

  • 我有一个 Web 服务器(WAMP 和 XAMPP)并且是 PHP Web 开发人员,我只想获取 URL 名称,我不想通过提供 PHP 文件来响应.每当我使用“localhost:1337/first.php”发送请求时,我只想让服务器打印“/first.php”。
  • 我不太确定你想要发生什么。请准确说明您要做什么。
  • 好的。我不想提供文件。我只想要访问的文件的路径。就像我访问 first.php 一样,它必须以字符串“您访问 first.php”作为响应。这不可能发生?
  • 哦,我明白你在说什么。如果 PHP 页面被访问并打印我们访问的 URL,jQuery 中的 ajax 请求怎么样?
  • 嗯,看起来不错。谢谢。
【解决方案2】:

一旦你对 node 有了更好的处理,你可能会想要使用 expressjs,看看expressjs routing

app.get('/first.php', function(req, res){
    res.send('You accessed first.php!');
});

如果你想显示 php,你可以使用php-node 在 node.js 中渲染 php。

【讨论】:

  • 我不想渲染 PHP 伙伴。我希望这种情况发生 -> 我不想提供文件。我只想要访问的文件的路径。就像我访问 first.php 一样,它必须以字符串“您访问 first.php”作为响应。这不可能发生?
  • @AbdussamiTayyab 啊,相信你在找routing
  • 哦,mayn,看看更新,哈哈永远不会忘记分号、括号和正斜杠。
  • 是的,谢谢伙计。我实际上是想了解 NodeJS,因为当我学习 ExpressJS 时,它只是代码复制粘贴。
  • @AbdussamiTayyab 没问题。我做了同样的事情。
【解决方案3】:

您似乎没有配置 Apache(或其他服务器)或 PHP。请求必须首先转到 PHP 脚本。所以你必须点击 localhost:80/file.php 然后在 PHP 脚本中重定向到 localhost:1337/file.js。

一个更好的建议实际上是从 Apache 到 Node.js 的反向代理,然后让 Node.js 读取路径。

【讨论】:

  • 请参考@Nicholas 回答中的评论。这本书做到了,它起作用了,它描述了他的代码是如何工作的。我的不行。
猜你喜欢
  • 2021-12-28
  • 1970-01-01
  • 1970-01-01
  • 2011-07-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多