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