ngx_php7 嵌入 php7 脚本的 nginx 模块 项目简介
ngx_php7 是一个嵌入 php7 脚本的 nginx 模块。环境- PHP-7.0.* ~ PHP-7.2.*- nginx-1.4.7 ~ nginx-1.10.3安装$ wget 'http://php.net/distributions/php-7.2.14.tar.gz'
$ tar xf php-7.2.14.tar.gz
$ cd php-7.2.14
$ ./configure --prefix=/path/to/php --enable-embed
$ make && make install
$ git clone https://github.com/rryqszq4/ngx_php7.git
$ wget 'http://nginx.org/download/nginx-1.12.2.tar.gz'
$ tar -zxvf nginx-1.12.2.tar.gz
$ cd nginx-1.12.2
$ export PHP_CONFIG=/path/to/php/bin/php-config
$ export PHP_BIN=/path/to/php/bin
$ export PHP_INC=/path/to/php/include/php
$ export PHP_LIB=/path/to/php/lib
$ ./configure --user=www --group=www \
$ --prefix=/path/to/nginx \
$ --with-ld-opt="-Wl,-rpath,$PHP_LIB" \
$ --add-module=/path/to/ngx_php7/third_party/ngx_devel_kit \
$ --add-module=/path/to/ngx_php7
$ make && make install摘要user www www;
worker_processes 4;
events {
worker_connections 1024;
}
http {
include mime.types;
default_type application/octet-stream;
keepalive_timeout 65;
client_max_body_size 64k;
client_body_buffer_size 64k;
php_ini_path /usr/local/php/etc/php.ini;
server {
listen 80;
server_name localhost;
default_type 'application/json; charset=UTF-8';
location /php {
content_by_php '
echo "hello ngx_php7";
';
}
location = /ngx_request {
content_by_php '
echo ngx_request::document_uri();
';
}
# curl /ngx_get?a=1&b=2
location = /ngx_get {
content_by_php '
echo "ngx::query_args()\n";
var_dump(ngx::query_args());
';
}
# curl -d 'a=1&b=2' /ngx_post
location = /ngx_post {
content_by_php '
echo "ngx::post_args()\n";
var_dump(ngx::post_args());
';
}
location = /ngx_sleep {
content_by_php '
echo "ngx_sleep start\n";
yield ngx::sleep(1);
echo "ngx_sleep end\n";
';
}
location = /ngx_socket2 {
default_type 'application/json;charset=UTF-8';
content_by_php '
$fd = ngx_socket_create();
var_dump($fd);
yield ngx_socket_connect($fd, "hq.sinajs.cn", 80);
$send_buf = "GET /list=s_sh000001 HTTP/1.0\r\n
Host: hq.sinajs.cn\r\nConnection: close\r\n\r\n";
yield ngx_socket_send($fd, $send_buf, strlen($send_buf));
$recv_buf = "";
yield ngx_socket_recv($fd, $recv_buf);
var_dump($recv_buf);
yield ngx_socket_close($fd);
';
}
location = /ngx_var {
set $a 1234567890;
content_by_php '
$a = ngx_var::get("a");
var_dump($a);
';
}
# set content-type of response headers
location = /ngx_header {
content_by_php '
ngx_header_set("Content-Type", "text/html; charset=UTF-8");
';
}
# run a php file
location = /php {
content_by_php '
include "name_of_php_file.php";
';
}
# run any php file in root
location = / {
content_by_php '
include ngx_var::get("uri");
';
}
}
}
$ tar xf php-7.2.14.tar.gz
$ cd php-7.2.14
$ ./configure --prefix=/path/to/php --enable-embed
$ make && make install
$ git clone https://github.com/rryqszq4/ngx_php7.git
$ wget 'http://nginx.org/download/nginx-1.12.2.tar.gz'
$ tar -zxvf nginx-1.12.2.tar.gz
$ cd nginx-1.12.2
$ export PHP_CONFIG=/path/to/php/bin/php-config
$ export PHP_BIN=/path/to/php/bin
$ export PHP_INC=/path/to/php/include/php
$ export PHP_LIB=/path/to/php/lib
$ ./configure --user=www --group=www \
$ --prefix=/path/to/nginx \
$ --with-ld-opt="-Wl,-rpath,$PHP_LIB" \
$ --add-module=/path/to/ngx_php7/third_party/ngx_devel_kit \
$ --add-module=/path/to/ngx_php7
$ make && make install摘要user www www;
worker_processes 4;
events {
worker_connections 1024;
}
http {
include mime.types;
default_type application/octet-stream;
keepalive_timeout 65;
client_max_body_size 64k;
client_body_buffer_size 64k;
php_ini_path /usr/local/php/etc/php.ini;
server {
listen 80;
server_name localhost;
default_type 'application/json; charset=UTF-8';
location /php {
content_by_php '
echo "hello ngx_php7";
';
}
location = /ngx_request {
content_by_php '
echo ngx_request::document_uri();
';
}
# curl /ngx_get?a=1&b=2
location = /ngx_get {
content_by_php '
echo "ngx::query_args()\n";
var_dump(ngx::query_args());
';
}
# curl -d 'a=1&b=2' /ngx_post
location = /ngx_post {
content_by_php '
echo "ngx::post_args()\n";
var_dump(ngx::post_args());
';
}
location = /ngx_sleep {
content_by_php '
echo "ngx_sleep start\n";
yield ngx::sleep(1);
echo "ngx_sleep end\n";
';
}
location = /ngx_socket2 {
default_type 'application/json;charset=UTF-8';
content_by_php '
$fd = ngx_socket_create();
var_dump($fd);
yield ngx_socket_connect($fd, "hq.sinajs.cn", 80);
$send_buf = "GET /list=s_sh000001 HTTP/1.0\r\n
Host: hq.sinajs.cn\r\nConnection: close\r\n\r\n";
yield ngx_socket_send($fd, $send_buf, strlen($send_buf));
$recv_buf = "";
yield ngx_socket_recv($fd, $recv_buf);
var_dump($recv_buf);
yield ngx_socket_close($fd);
';
}
location = /ngx_var {
set $a 1234567890;
content_by_php '
$a = ngx_var::get("a");
var_dump($a);
';
}
# set content-type of response headers
location = /ngx_header {
content_by_php '
ngx_header_set("Content-Type", "text/html; charset=UTF-8");
';
}
# run a php file
location = /php {
content_by_php '
include "name_of_php_file.php";
';
}
# run any php file in root
location = / {
content_by_php '
include ngx_var::get("uri");
';
}
}
}