1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/mirrors-ngx_php7

Присоединиться к Gitlife
Откройте для себя и примите участие в публичных проектах с открытым исходным кодом с участием более 10 миллионов разработчиков. Приватные репозитории также полностью бесплатны :)
Присоединиться бесплатно
Это зеркальный репозиторий, синхронизируется ежедневно с исходного репозитория.
Клонировать/Скачать
Внести вклад в разработку кода
Синхронизировать код
Отмена
Подсказка: Поскольку Git не поддерживает пустые директории, создание директории приведёт к созданию пустого файла .keep.
Loading...
README.md

Mac osx

https://github.com/rryqszq4/ngx-php/blob/master/docs/zh-cn/osx_install.md

Docker

$ docker build -t nginx-php7 .
$ : "app.conf: Create nginx config"
$ docker run -p 80:80 -v $PWD/app.conf:/etc/nginx/conf.d/default.conf nginx-php7

Synopsis

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-php";
            }
        }

        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, "httpbin.org", 80);

                $send_buf = "GET /get HTTP/1.1\r\n
                                            Host: httpbin.org\r\n
                                            Connection: 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");
            }
        }

    }
}

Test

Using the perl of Test::Nginx module to testing, searching and finding out problem in ngx-php.

Ngx-php test ...
nginx version: nginx/1.22.1
built by gcc 9.4.0 (Ubuntu 9.4.0-1ubuntu1~20.04.1) 
configure arguments: --prefix=/home/runner/work/ngx-php/ngx-php/nginx --with-ld-opt=-Wl,-rpath,/usr/lib --add-module=../third_party/ngx_devel_kit --add-module=..
/home/runner/work/ngx-php/ngx-php
t/001-hello.t ..................... ok
t/002-ini.t ....................... ok
t/003-error.t ..................... ok
t/004-ngx_request.t ............... ok
t/005-ngx_log.t ................... ok
t/006-ngx_sleep.t ................. ok
t/007-ngx_socket.t ................ ok
t/008-ngx_exit.t .................. ok
t/009-ngx_query_args.t ............ ok
t/010-ngx_post_args.t ............. ok
t/011-ngx_constants.t ............. ok **Синтаксис:** body_filter_by_php — `<код на языке PHP>`

**Контекст:** http, server, location, location if

**Фаза:** output-body-filter

body_filter_by_php_block
------------------------
**Синтаксис:** body_filter_by_php_block — `{код на языке PHP}`

**Контекст:** location, location if

**Фаза:** output-body-filter

php_keepalive
-------------
**Синтаксис:** php_keepalive — `<размер>`

**По умолчанию:** 0

**Контекст:** http, server

В PHP устанавливается размер пула соединений вышестоящего сервера.

php_set
-------
**Синтаксис:** php_set — `$переменная``<код на языке PHP>`

**Контекст:** http, server, location, location if

**Фаза:** loading-config

Устанавливает обработчик PHP для указанной переменной.

php_socket_keepalive
--------------------
**Синтаксис:** php_socket_keepalive — `<размер>`

**По умолчанию:** 0

**Контекст:** http, server

php_socket_buffer_size
----------------------
**Синтаксис:** php_socket_buffer_size — `<размер>`

**По умолчанию:** 4k

**Контекст:** http, server, location, location if

Nginx API для PHP
-----------------
* [ngx_exit](#ngx_exit)
* [ngx_query_args](#ngx_query_args)
* [ngx_post_args](#ngx_post_args)
* [ngx_log_error](#ngx_log_error)
* [ngx_request_method](#ngx_request_method)
* [ngx_request_document_root](#ngx_request_document_root)
* [ngx_request_document_uri](#ngx_request_document_uri)
* [ngx_request_script_name](#ngx_request_script_name)
* [ngx_request_script_filename](#ngx_request_script_filename)
* [ngx_request_query_string](#ngx_request_query_string)
* [ngx_request_uri](#ngx_request_uri)
* [ngx_request_server_protocol](#ngx_request_server_protocol)
* [ngx_request_remote_addr](#ngx_request_remote_addr)
* [ngx_request_server_addr](#ngx_request_server_addr)
* [ngx_request_remote_port](#ngx_request_remote_port)
* [ngx_request_server_port](#ngx_request_server_port)
* [ngx_request_server_name](#ngx_request_server_name)
* [ngx_request_headers](#ngx_request_headers)
* [ngx_var_get](#ngx_var_get)
* [ngx_var_set](#ngx_var_set)
* [ngx_header_set](#ngx_header_set)
* [ngx_header_get](#ngx_header_get)
* [ngx_header_get_all](#ngx_header_get_all)
* [ngx_redirect](#ngx_redirect)
* [ngx_cookie_get_all](#ngx_cookie_get_all)
* [ngx_cookie_get](#ngx_cookie_get)
* [ngx_cookie_set](#ngx_cookie_set)

ngx_exit
--------
**Синтаксис:** ngx_exit(int $status) : void

**Параметры:**
- `status: int`

**Контекст:** rewrite_by_PHP*, access_by_PHP*, content_by_PHP*

Завершает текущий запрос и возвращает код состояния HTTP.

ngx_query_args
--------------
**Синтаксис:** ngx_query_args(void) : array или ngx::query_args(void) : array

**Параметры:**
- `void`

**Контекст:** rewrite_by_PHP*, access_by_PHP*, content_by_PHP*

Ассоциативный массив переменных, переданных текущему скрипту через параметры URL (также известные как строка запроса). Вместо официальной константы PHP $_GET.

ngx_post_args
-------------
**Синтаксис:** ngx_post_args(void) : array или ngx::post_args(void) : array

**Параметры:**
- `void`

**Контекст:** rewrite_by_PHP*, access_by_PHP*, content_by_PHP*

Ассоциативный массив переменных, передаваемых текущему скрипту с помощью метода HTTP POST при использовании application/x-www-form-urlencoded или multipart/form-data в качестве типа содержимого HTTP в запросе. Вместо официальной константы PHP $_POST.

ngx_log_error
-------------
**Синтаксис:** ngx_log_error(int $level, string $log_str) : void или ngx_log::error(int $level, string $log_str) : void

**Параметры:**
- `level: int`
- `log_str: string`

**Контекст:** rewrite_by_PHP*, access_by_PHP*, content_by_PHP*

ngx_request_method
------------------
**Синтаксис:** ngx_request_method(void) : string или ngx_request::method(void) : string

**Параметры:**
- `void`

**Контекст:** rewrite_by_PHP*, access_by_PHP*, content_by_PHP*

Метод запроса, который использовался для доступа к странице, например «GET», «POST», «PUT», «DELETE» и так далее.

ngx_request_document_root
-------------------------
**Синтаксис:** ngx_request_document_root(void) : string или ngx_request::document_root(void) : string

**Параметры:**
- `void`

**Контекст:** rewrite_by_PHP*, access_by_PHP*, content_by_PHP*

Корневой каталог документа. **ngx_var_get**

**Синтаксис:** `ngx_var_get(string $key) : string` или `ngx_var::get(string $key) : string`.

**Параметры:**
- `key: string`.

**Контекст:** `rewrite_by_php*, access_by_php*, content_by_php*`.

Получает переменные в конфигурации nginx.

**ngx_var_set**

**Синтаксис:** `ngx_var_set(string $key, string $value) : void` или `ngx_var::set(string $key, string $value) : void`.

**Параметры:**
- `key: string`;
- `value: string`.

**Контекст:** `rewrite_by_php*, access_by_php*, content_by_php*`.

Устанавливает переменные в конфигурации nginx.

**ngx_header_set**

**Синтаксис:** `ngx_header_set(string $key, string $value) : bool`.

**Параметры:**
- `key: string`;
- `value: string`.

**Контекст:** `rewrite_by_php*, access_by_php*, content_by_php*`.

Задаёт информацию заголовка HTTP-ответа.

**ngx_header_get**

**Синтаксис:** `ngx_header_get(string $key) : string`.

**Параметры:**
- `key: string`.

**Контекст:** `rewrite_by_php*, access_by_php*, content_by_php*`.

Извлекает информацию заголовка HTTP-ответа.

**ngx_header_gets**

**Синтаксис:** `ngx_header_gets(void) : array`.

**Параметры:**
- `void`.

**Контекст:** `rewrite_by_php*, access_by_php*, content_by_php*`.

Возвращает полную информацию заголовка HTTP-ответа.

**ngx_redirect**

**Синтаксис:** `ngx_redirect(string $uri, int $status) : bool`.

**Параметры:**
- `uri: string`;
- `status: int`.

**Контекст:** `rewrite_by_php*, access_by_php*, content_by_php*`.

Настраивает перенаправление заголовка ответа.

**ngx_cookie_get_all**

**Синтаксис:** `ngx_cookie_get_all(void) : string`.

**Параметры:**
- `void`.

**Контекст:** `rewrite_by_php*, access_by_php*, content_by_php*`.

**ngx_cookie_get**

**Синтаксис:** `ngx_cookie_get(string $key) : string`.

**Параметры:**
- `key: string`.

**Контекст:** `rewrite_by_php*, access_by_php*, content_by_php*`.

**ngx_cookie_set**

**Синтаксис:** `ngx_cookie_set(string $data): bool`.

**Параметры:**
- `data: string`.

**Контекст:** `rewrite_by_php*, access_by_php*, content_by_php*`.

Nginx неблокирующий API для PHP
------------------------------
* [yield ngx_sleep](#ngx_sleep).
* [yield ngx_msleep](#ngx_msleep).
* [ngx_socket_create](#ngx_socket_create).
* [ngx_socket_iskeepalive](#ngx_socket_iskeepalive).
* [yield ngx_socket_connect](#ngx_socket_connect).
* [yield ngx_socket_close](#ngx_socket_close).
* [yield ngx_socket_send](#ngx_socket_send).
* [yield ngx_socket_recv](#ngx_socket_recv).
* [yield ngx_socket_recvpage](#ngx_socket_recvpage).
* [ngx_socket_recvsync](#ngx_socket_recvsync).
* [ngx_socket_clear](#ngx_socket_clear).

**ngx_sleep**

**Синтаксис:** `yield ngx_sleep(int seconds)`.

**Параметры:**
- `secodes: int`.

**Контекст:** `rewrite_by_php*, access_by_php*, content_by_php*`

Приостанавливает выполнение программы на заданное количество секунд.

**ngx_msleep**

**Синтаксис:** `yield ngx_msleep(int milliseconds)`.

**Параметры:**
- `milliseconds: int`.

**Контекст:** `rewrite_by_php*, access_by_php*, content_by_php*`

Приостанавливает выполнение программы на заданное количество миллисекунд.

**ngx_socket_create**

**Синтаксис:** `ngx_socket_create(int $domain, int $type, int $protocol) : resource`.

**Параметры:**
- `domain: int`;
- `type: int`;
- `protocol: int`.

**Контекст:** `rewrite_by_php*, access_by_php*, content_by_php*`

Создаёт и возвращает ресурс сокета, также называемый конечной точкой связи. Типичное сетевое соединение состоит из двух сокетов, один из которых выполняет роль клиента, а другой — роль сервера.

**ngx_socket_iskeepalive**

**Синтаксис:** `ngx_socket_iskeepalive(void) : bool`.

**Параметры:**
- `void`.

**Контекст:** `rewrite_by_php*, access_by_php*, content_by_php*`

**ngx_socket_connect**

**(yield ngx_socket_connect(resource $socket, string $address, int $port)) : bool**.

**Параметры:**
- `socket: resource`;
- `address: string`;
- `port: int`.

**Контекст:** `rewrite_by_php*, access_by_php*, content_by_php*`

Инициирует подключение к адресу с использованием ресурса сокета socket, который должен быть действительным. **Создание ресурса сокета с помощью ngx_socket_create()**

ngx_socket_close
----------------
**Синтаксис:** `(yield ngx_socket_close(resource $socket)) : bool`

**Параметры:**
- `socket: resource`

**Контекст:** `rewrite_by_php*, access_by_php*, content_by_php*`

Функция ngx_socket_close() закрывает ресурс сокета, указанный в параметре socket. Эта функция специфична для сокетов и не может быть использована для других типов ресурсов.

**Отправка данных с помощью функции ngx_socket_send**

ngx_socket_send
---------------
**Синтаксис:** `(yield ngx_socket_send(resource $socket, string $buf, int $len)) : int`

**Параметры:**
- `socket: resource`
- `buf: string`
- `len: int`

**Контекст:** `rewrite_by_php*, access_by_php*, content_by_php*`

Функция ngx_socket_send() отправляет len байт из buf на сокет, указанный в socket.

**Получение данных с помощью функции ngx_socket_recv**

ngx_socket_recv
---------------
**Синтаксис:** `(yield ngx_socket_recv(resource $socket, string &$buf, int $len)) : int`

**Параметры:**
- `socket: resource`
- `buf: string`
- `len: int`

**Контекст:** `rewrite_by_php*, access_by_php*, content_by_php*`

Функция ngx_socket_recv() получает len байт данных в buf из сокета. Функция ngx_socket_recv() может использоваться для сбора данных из подключённых сокетов.

Переменная buf передаётся по ссылке, поэтому она должна быть указана как переменная в списке аргументов. Данные, считанные из сокета функцией ngx_socket_recv(), будут возвращены в buf.

**Чтение данных с использованием функции ngx_socket_recvpage**

ngx_socket_recvpage
-------------------
**Синтаксис:** `(yield ngx_socket_recvpage(resource $socket, string &$buf, int &$rc)) : int`

**Параметры:**
- `socket: resource`
- `buf: string`
- `$rc: int`

**Контекст:** `rewrite_by_php*, access_by_php*, content_by_php*`

**Синхронное чтение данных с помощью функции ngx_socket_recvsync**

ngx_socket_recvsync
-------------------
**Синтаксис:** `ngx_socket_recvsync(resource $socket, string &$buf, int $len) : int`

**Параметры:**
- `socket: resource`
- `buf: string`
- `len: int`

**Контекст:** `rewrite_by_php*, access_by_php*, content_by_php*`

**Закрытие сокета и очистка буфера с помощью функции ngx_socket_clear**

ngx_socket_clear
----------------
**Синтаксис:** `ngx_socket_recv(resource $socket) : bool`

**Параметры:**
- `socket: resource`

**Контекст:** `rewrite_by_php*, access_by_php*, content_by_php*`

Эта функция закрывает ресурс сокета и является блокирующей, но обеспечивает высокую производительность.

**Константы Nginx**

Nginx предоставляет различные константы, которые могут быть использованы в коде. Эти константы включают версии, логирование, статус и HTTP-коды.

* **Версионные константы:**
    * NGINX_VAR — NGINX;
    * NGINX_VERSION — 1.12.2;
    * NGX_HTTP_PHP_MODULE_VERSION — 0.0.21;
    * NGX_HTTP_PHP_MODULE_NAME — ngx_php.

* **Логирование:**
    * NGX_OK — 0;
    * NGX_ERROR — -1;
    * NGX_AGAIN — -2;
    * NGX_BUSY — -3;
    * NGX_DONE — -4;
    * NGX_DECLINED — -5;
    * NGX_ABORT — -6.

* **Статус:**
    * NGX_LOG_STDERR — 0;
    * NGX_LOG_EMERG — 1;
    * NGX_LOG_ALERT — 2;
    * NGX_LOG_CRIT — 3;
    * NGX_LOG_ERR — 4;
    * NGX_LOG_WARN — 5;
    * NGX_LOG_NOTICE — 6;
    * NGX_LOG_INFO — 7;
    * NGX_LOG_DEBUG — 8.

* **HTTP-коды:**
    * NGX_HTTP_CONTINUE — 100;
    * NGX_HTTP_SWITCHING_PROTOCOLS — 101;
    * NGX_HTTP_PROCESSING — 102;
    * NGX_HTTP_OK — 200;
    * NGX_HTTP_CREATED — 201;
    * NGX_HTTP_ACCEPTED — 202;
    * NGX_HTTP_NO_CONTENT — 204;
    * NGX_HTTP_PARTIAL_CONTENT — 206;
    * NGX_HTTP_SPECIAL_RESPONSE — 300;
    * NGX_HTTP_MOVED_PERMANENTLY — 301;
    * NGX_HTTP_MOVED_TEMPORARILY — 302;
    * NGX_HTTP_SEE_OTHER — 303;
    * NGX_HTTP_NOT_MODIFIED — 304;
    * NGX_HTTP_TEMPORARY_REDIRECT — 307;
    * NGX_HTTP_PERMANENT_REDIRECT — 308;
    * NGX_HTTP_BAD_REQUEST — 400;
    * NGX_HTTP_UNAUTHORIZED — 401;
    * NGX_HTTP_FORBIDDEN — 403;
    * NGX_HTTP_NOT_FOUND — 404;
    * NGX_HTTP_NOT_ALLOWED — 405;
    * NGX_HTTP_REQUEST_TIME_OUT — 408;
    * NGX_HTTP_CONFLICT — 409;
    * NGX_HTTP_LENGTH_REQUIRED — 411;
    * NGX_HTTP_PRECONDITION_FAILED — 412. **NGX_HTTP_REQUEST_ENTITY_TOO_LARGE | 413**

**NGX_HTTP_REQUEST_URI_TOO_LARGE | 414**

**NGX_HTTP_UNSUPPORTED_MEDIA_TYPE | 415**

**NGX_HTTP_RANGE_NOT_SATISFIABLE | 416**

**NGX_HTTP_CLOSE | 444**

**NGX_HTTP_NGINX_CODES | 494**

**NGX_HTTP_REQUEST_HEADER_TOO_LARGE | 494**

**NGX_HTTPS_CERT_ERROR | 495**

**NGX_HTTPS_NO_CERT | 496**

**NGX_HTTP_TO_HTTPS | 497**

**NGX_HTTP_CLIENT_CLOSED_REQUEST | 499**

**NGX_HTTP_INTERNAL_SERVER_ERROR | 500**

**NGX_HTTP_NOT_IMPLEMENTED | 501**

**NGX_HTTP_BAD_GATEWAY | 502**

**NGX_HTTP_SERVICE_UNAVAILABLE | 503**

**NGX_HTTP_GATEWAY_TIME_OUT | 504**

**NGX_HTTP_INSUFFICIENT_STORAGE | 507**

*Авторские права и лицензия*

Copyright (c) 2016-2020, rryqszq4 rryqszq@gmail.com All rights reserved.

Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:

  • Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.

  • Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.

THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.


Комментарии ( 0 )

Вы можете оставить комментарий после Вход в систему

Введение

ngx_php7 — это модуль nginx для встраивания скриптов php7. Расширить Свернуть
BSD-2-Clause
Отмена

Обновления

Пока нет обновлений

Участники

все

Недавние действия

Загрузить больше
Больше нет результатов для загрузки
1
https://gitlife.ru/oschina-mirror/mirrors-ngx_php7.git
git@gitlife.ru:oschina-mirror/mirrors-ngx_php7.git
oschina-mirror
mirrors-ngx_php7
mirrors-ngx_php7
master