sendFile скачивает файл, при расширении файла "php"
Пытаюсь открыть клиенту при подключении к серверу файл с интерфейсом. При расширении файла HTML - страница открывается и все хорошо, но, если поставить файлу расширение .php, то файл просто загружается на носитель клиента. Попытался скачать php-express, но проблему это не решило.
Вот код:
var express = require('express');
var app = express();
var phpExpress = require('php-express')({
// assumes php is in your PATH
binPath: 'php'
});
// set view engine to php-express
app.set('views', './views');
app.engine('php', phpExpress.engine);
app.set('view engine', 'php');
// routing all .php file to php-express
app.all(/.+\.php$/, phpExpress.router);
var server = app.listen(3000, function () {
var host = "localhost"//server.address().address;
console.log(host);
var port = server.address().port;
console.log(port);
console.log('PHPExpress app listening at http://%s:%s', host, port);
});
var io = require('socket.io').listen(server);
//var server = require('http').createServer(app);
//server.listen(3000);
app.get('/', function (request, response) {
response.sendFile(__dirname + '/index.php');
});
Ответы (1 шт):
У вас в последних строчках явно задано: если пользователь обратится по адресу / - прочитай с диска файл index.php и отдай ему:
app.get('/', function (request, response) {
response.sendFile(__dirname + '/index.php');
});
Этот код нужно удалить.
В строке app.set('views', './views') вы задаете движку папку, где должны лежать файлы которые будут отображатся. И именно там php-express будет искать .php-файлы.
Таким образом, нужно переместить php-файлы в папку ./views (хотя, если в этой папке будут только php-файлы, советую пеерименовать папку на что-то соответствующее).
Тогда остается одна проблема: движок отзывается только по адресам ....php, если перейти по адресу localhost:3000/ - в адресе нету .php и express не передаст запрос php.
Поэтому я добавил строчку app.all('/', phpExpress.router) - она добавляет соответствующий адрес на управление php-express.
В итоге, получился вот такой код:
var express = require('express');
var app = express();
var phpExpress = require('php-express')({
// assumes php is in your PATH
binPath: 'php'
});
// set view engine to php-express
app.set('views', './views');
app.engine('php', phpExpress.engine);
app.set('view engine', 'php');
// routing all .php file to php-express
app.all(/.+\.php$/, phpExpress.router);
app.all('/', phpExpress.router);
var server = app.listen(3000, function () {
var host = "localhost"//server.address().address;
console.log(host);
var port = server.address().port;
console.log(port);
console.log('PHPExpress app listening at http://%s:%s', host, port);
});
var io = require('socket.io').listen(server);