Windows에서 Node.js와 함께 PHP 사용
10401 단어 phpjavascriptnodewebdev
PHP와 Node.js는 웹용으로 만들어진 두 가지 코딩 표준입니다. Node.js는 그 자체로 언어가 아니며 Javascript의 새로운 구현이자 프로그래밍의 다른 철학입니다.
PHP는 Composer의 패키지 관리자 NPM과 같은 Node의 일부 기능을 채택했으며 유사성은 Laravel과 같은 일부 프레임워크의 대부분을 만듭니다.
. 라이브러리의 도움으로 Node.js는 Python과 거의 동일한 완전한 언어를 수행할 수 있습니다. 데스크탑 애플리케이션용 새 버전Electron.JS은 백그라운드에서 노드를 사용합니다. VS Code 또는 Spotify 데스크톱 클라이언트와 같은 일부 애플리케이션의 기반입니다. PHP는 데스크톱용이 아니며 1995년 Rasmus Lerdorf에 의해 생성된 이후 동일한 목적으로 폐쇄된 상태로 유지됩니다.
http 모듈에서 제공하는 노드 독립형 서버와 FastCGI PHP 클라이언트를 사용하여 노드 내에서 PHP 파일을 제공할 수 있습니다. 방법을 보여드리겠습니다.
PHP 5.4는 PHP에 새로운 독립 실행형 내장 웹 서버를 도입했습니다. 노드 서버가 PHP의 요청과 응답을 프록시화하도록 할 수 있지만 여기서는 그렇게 하지 않습니다.
FastCGI은 bash와 같은 일반적인 바이너리 런타임이 웹 페이지를 제공할 수 있는 다양한 방식에 유연성과 표준화를 추가하기 위해 도입되었습니다. PHP가 등장하기 전에 Perl과 같은 언어는 동적 웹 콘텐츠를 생성하는 데 사용되었습니다.
공유 라이브러리를 통해 액세스할 수 없는 일부 웹 서버의 경우 PHP-CGI(Linux에서는 PHP-FPM, FastCGI PHP Manager에서)가 이를 수행하는 방법입니다. 전면 웹 서버는 PHP 스크립트에 대한 요청을 수신하고 웹 스크립트 이름, 문자열 쿼리 및 최종 요청 본문과 같은 세부 정보를 포함하여 PHP CGI 클라이언트에 요청합니다. CGI 클라이언트는 HTML 또는 PHP에서 출력되는 다른 형식으로 응답합니다.
Nginx와 Lighttpd는 PHP 웹 콘텐츠 서버에 이 방법을 사용하고 NodeJS는 노드php-fpm 모듈을 통해 FastCGI와 인터페이스할 수도 있습니다.
코드는 다음과 같습니다.
const phpFpm = require ('php-fpm');
const php = phpFpm({
host: '127.0.0.1',
port: 9123,
documentRoot: __dirname + '\\www',
});
PHP CGI 클라이언트는 이미 포트 9123에서 수신 중이어야 하며 args:
php-cgi -b 127.0.0.1:9123
로 시작되었습니다. Linux에서는 php-fpm
이고 args는 동일해야 하지만 시도하지는 않았습니다.여기서 내 문서 루트는 프로젝트 루트의 하위 디렉터리 아래에 있습니다. 루트 및 conf 디렉토리에서 구성 파일을 사용하고 있기 때문에 이렇게 합니다. 웹 방문자는 여기에 액세스할 수 없습니다.
파일 이름을
server.js
로 지정하고 node server.js
로 노드 웹 서버를 시작하고 www/
의 루트 디렉토리에서 다음 PHP 코드를 가질 수 있습니다.<?php
echo "<H1>Hello, today's date is " . date("Y-m-d") . " and more!</H1>";
이 파일의 이름을
index.php
로 지정하고 www
에 저장한 다음 http://localhost:3000/index.php 으로 이동하면 다음과 같은 내용이 표시됩니다.server.js
의 전체 코드는 다음과 같습니다.const http = require ('http');
const fs = require ('fs');
const phpFpm = require ('php-fpm');
const php = phpFpm({
host: '127.0.0.1',
port: 9123,
documentRoot: __dirname + '\\www',
debug: false
});
const server = http.createServer((req, res) => {
let url = req.url;
let method = req.method;
console.log('Serving request: ' + method + ' ' + url );
if (url == '/') {
readAndServe('index.html', res);
} else if (url.endsWith('.php')) {
php(req,res);
} else {
readAndServe(url, res);
}
}).listen(3000, '127.0.0.1',function() {
let {address, port} = server.address();
console.log('Server started at '+ address+ ':'+ port);
});
// Helper function
function readAndServe(path, res) {
fs.readFile('www/' + path, function (err, data) {
if (err) {
console.error(err);
res.writeHead(404, { 'Content-Type': 'text/plain' });
data = '404 Not Found\n';
}
res.end(data);
});
}
Reference
이 문제에 관하여(Windows에서 Node.js와 함께 PHP 사용), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/digfish/using-php-with-nodejs-in-windows-54na텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)