ngx_php7 正在参加 2020 年度 OSC 中国开源项目评选,请投票支持!
ngx_php7 在 2020 年度 OSC 中国开源项目评选 中已获得 {{ projectVoteCount }} 票,请投票支持!
投票让它出道
已投票
授权协议: BSD
开发语言: C/C++ PHP
操作系统: 跨平台
收录时间: 2018-04-10
提 交 者: rryqszq

ngx_php7 是一个嵌入 php7 脚本的 nginx 模块。

环境

  • Linux only
  • PHP-7.0.* ~ PHP-7.4.*
  • nginx-1.4.7 ~ nginx-1.17.8

安装

$ wget 'http://php.net/distributions/php-7.3.10.tar.gz'
$ tar xf php-7.3.10.tar.gz
$ cd php-7.3.10

$ ./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

摘要

worker_processes  auto;

events {
    worker_connections  102400;
}

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_block {
                echo "hello ngx_php7";
            }
        }

        location = /ngx_request {
            content_by_php_block {
                echo ngx_request_document_uri();
            }
        }

        # curl /ngx_get?a=1&b=2
        location = /ngx_get {
            content_by_php_block {
                echo "ngx_query_args()\n";
                var_dump(ngx_query_args());
            }
        }

        # curl -d 'a=1&b=2' /ngx_post
        location = /ngx_post {
            content_by_php_block {
                echo "ngx_post_args()\n";
                var_dump(ngx_post_args());
            }
        }

        location = /ngx_sleep {
            content_by_php_block {
                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_block {
                $fd = ngx_socket_create();

                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_block {
                $a = ngx_var_get("a");
                var_dump($a);
            }
        }
        
        # set content-type of response headers
        location = /ngx_header {
            content_by_php_block {
                ngx_header_set("Content-Type", "text/html; charset=UTF-8");
            }
        }

        # run a php file
        location = /php {
            content_by_php_block {
                include "name_of_php_file.php";
            }
        }
        
        # run any php file in root
        location = / {
            content_by_php_block {
                include ngx_var_get("uri");
            }
        }

    }
}
展开阅读全文

代码

ngx_php7 的相关资讯

ngx_php7 的相关博客

ngx_sprintf

第六章本来是个杂项章,今天填写其中之一,格式化字符串的ngx_sprintf。 需要介绍的是格式化参数%系列,因为如果误用的话,轻...

安装php7

./configure --prefix=/usr/local/php7.1.5 --with-curl --with-iconv-dir --with-mysqli --with-openssl --with-pcre-regex ...

ngx限流模块

服务器流量异常,负载过大 ngx_http_limit_conn_module模块实现对同一个 ip 的连接数,并发数进行限制。 语法: limit_conn_zo...

关于PHP7

目前一直使用php7也看了许多文档视频等,整理一下相关细节(仅为记录~),对于PHP7性能,如下图所示。 * 在wordpress3.0.1中...

安装PHP7

一、下载 地址:http://php.net/ 二、编译PHP7 ./configure --prefix=/usr/local/php --with-config-file-path=/usr/local/p...

php7 教程

标量类型声明 1. 分为强制模式和严格模式 2. 这些类型的函数参数可以执行声明 int, float, bool, string, interfaces, array,...

PHP7变化

php7 Alpha1版本已经在2015.06.11发布了, 预计在2015.11.12发布正式的PHP7版本,期待中。。。...

ngx_lua_waf

  Web应用防护系统Web Application Firewall,简称WAF。针对HTTP/HTTPS的安全策略专门为Web应用提供保护的产品。 OpenRest...

ngx_lua 内幕

http://wenku.it168.com/d_000434400.shtml ngx_lua 内幕

ngx_php7 的相关问答

还没有任何问答,马上提问

评论 (4)

加载中
性能比fast_cgi强?
09/14 17:37
回复
举报
头一次看见把nginx用的这么歪的 失敬
09/14 16:31
回复
举报
这有什么用?
09/14 12:53
回复
举报
这个挺有意思
03/25 13:55
回复
举报
更多评论
4 评论
17 收藏
分享
返回顶部
顶部