嵌入 php7 脚本的 nginx 模块 ngx_php7

BSD
C/C++ PHP
跨平台
2018-04-10
rryqszq

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

    }
}
加载中

评论(0)

暂无评论

暂无资讯

暂无问答

Docker入门基础之应用实战

当我们掌握了Docker镜像和容器的基本用法后,我们现在能做些什么事情呢?现在我们就来看看使用Docker容器如何安装常见的软件,然后运行一个动态网站。 下面我们来学习: 1、安装Nginx 2、安装...

07/18 17:40
6
0
编译安装PHP7并安装Redis扩展Swoole扩展

编译安装PHP7并安装Redis扩展Swoole扩展 在编译php7的机器上已经有编译安装过php5.3以上的版本,从而依赖库都有了 本php7是编译成fpm-php 使用的, 如果是apache那么编译参数应该为 --with-apx...

2016/02/15 22:09
98
1
Linux 安装 php7 ([sapi/cli/php] Error 1)

http://weibo.com/p/1001603917384300815444 快速编译安装PHP7步骤: 第一步: 安装必要一些依赖 # yum install php-mcrypt libmcrypt libmcrypt-devel libxml2-devel openssl-devel libcurl...

2016/01/18 17:24
729
1
OneinStack PHP多版本共存教程

教程基于《OneinStack》一键PHP/JAVA安装工具中lnmp模式,很用户希望一个网站运行在php5.4,另一个网站运行在php7下,一台服务器上同时支持多个PHP版本,步骤如下: 1. 安装OneinStack 选择l...

2016/03/04 03:52
77
1
lnmp基本使用2

0、nginx代理 反向代理的代码如下: proxy_pass http://172.96.16.245; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forw......

2018/07/02 22:10
67
0
php7添加memcached扩展

即使网站的访问量不大,memcached也能就SESSION的存储问题上做很好的处理 因为SESSION是以文件的方式存储在服务器上的,这样一样磁盘I/O负荷就是个很大的问题,哪怕文件在小,数量多了就麻烦...

2016/11/13 20:23
620
0

没有更多内容

加载失败,请刷新页面

返回顶部
顶部