diff --git a/.coveralls.yml b/.coveralls.yml
new file mode 100644
index 0000000..9160059
--- /dev/null
+++ b/.coveralls.yml
@@ -0,0 +1 @@
+service_name: travis-ci
diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000..61ead86
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1 @@
+/vendor
diff --git a/.travis.yml b/.travis.yml
new file mode 100644
index 0000000..b06a67b
--- /dev/null
+++ b/.travis.yml
@@ -0,0 +1,25 @@
+language: php
+
+php:
+ - 7.1
+ - 7.2
+ - 7.3
+
+matrix:
+ allow_failures:
+ - php: 7.3
+
+before_install:
+ - composer self-update
+
+install:
+ - composer install --dev --no-interaction
+
+before_script:
+ - mkdir -p build/logs
+
+script:
+ - php vendor/bin/phpunit
+
+after_success:
+ - travis_retry php vendor/bin/php-coveralls
diff --git a/README.md b/README.md
new file mode 100644
index 0000000..d5dc736
--- /dev/null
+++ b/README.md
@@ -0,0 +1,76 @@
+# PhpinfoComparator
+
+[](https://travis-ci.org/ngmy/phpinfocmp)
+[](https://coveralls.io/github/ngmy/phpinfocmp?branch=master)
+
+PhpinfoComparator is compare two `phpinfo()` files.
+
+## Requirements
+
+PhpinfoComparator has the following requirements:
+
+* PHP >= 7.1.0
+
+## Installation
+
+Install PhpinfoComparator globally as a system wide by using the Composer:
+
+```sh
+composer global require ngmy/phpinfocmp
+```
+
+Or alternatively, install PhpinfoComparator locally as part of your project by using the Composer:
+
+```sh
+composer require ngmy/phpinfocmp
+```
+
+## Usage
+
+Compare two `phpinfo()` files on two remote servers:
+
+```sh
+phpinfocmp http://server1/phpinfo http://server2/phpinfo > phpinfo_diff.html
+```
+
+Compare two html `phpinfo()` files on one local machine:
+
+```sh
+phpinfocmp --fetch-mode1=file --fetch-mode2=file phpinfo1.html phpinfo2.html > phpinfo_diff.html
+```
+
+Compare two text `phpinfo()` files on one local machine:
+
+```sh
+phpinfocmp --fetch-mode1=file --fetch-mode2=file --file-format1=text --file-format2=text phpinfo1.txt phpinfo2.txt > phpinfo_diff.html
+```
+
+You can combine different fetch modes and file formats:
+
+```sh
+phpinfocmp --fetch-mode2=file http://server1/phpinfo phpinfo.html > phpinfo_diff.html
+```
+
+```sh
+phpinfocmp --fetch-mode1=file --fetch-mode2=file --file-format2=text phpinfo.html phpinfo.txt > phpinfo_diff.html
+```
+
+You can read fetch options from a specified PHP file:
+
+```sh
+phpinfocmp --fetch-options1=fetch_options.php --fetch-options2=fetch_options.php https://server1/phpinfo https://server2/phpinfo > phpinfo_diff.html
+```
+
+The PHP file must be an array format that can be passed to `curl_setopt_array()` as following:
+
+```php
+ false,
+];
+```
+
+## License
+
+PhpinfoComparator is open-sourced software licensed under the [MIT license](http://opensource.org/licenses/MIT).
diff --git a/bin/phpinfocmp b/bin/phpinfocmp
new file mode 100755
index 0000000..5d4e3a7
--- /dev/null
+++ b/bin/phpinfocmp
@@ -0,0 +1,18 @@
+#!/usr/bin/env php
+runPhpinfocmp();
+
+exit($exitCode);
diff --git a/composer.json b/composer.json
new file mode 100644
index 0000000..93aa4d9
--- /dev/null
+++ b/composer.json
@@ -0,0 +1,50 @@
+{
+ "name": "ngmy/phpinfocmp",
+ "description": "PhpinfoComparator is compare two phpinfo() files.",
+ "type": "library",
+ "license": "MIT",
+ "keywords": [
+ "phpinfo",
+ "comparator",
+ "comparison",
+ "diff"
+ ],
+ "authors": [
+ {
+ "name": "Yuta Nagamiya",
+ "email": "y.nagamiya@gmail.com"
+ }
+ ],
+ "require": {
+ "php": ">=7.1.0",
+ "aura/di": "^3.0",
+ "cogpowered/finediff": "^0.3",
+ "pear/console_commandline": "^1.0"
+ },
+ "require-dev": {
+ "mockery/mockery": "^1.0",
+ "php-coveralls/php-coveralls": "^2.1",
+ "phpunit/phpunit": "^7.0"
+ },
+ "autoload": {
+ "psr-4": {
+ "Ngmy\\PhpinfoComparator\\": "src/"
+ }
+ },
+ "autoload-dev": {
+ "psr-4": {
+ "Ngmy\\PhpinfoComparator\\": "tests/"
+ }
+ },
+ "config": {
+ "preferred-install": "dist",
+ "sort-packages": true,
+ "optimize-autoloader": true,
+ "platform": {
+ "php": "7.1.0"
+ }
+ },
+ "bin": [
+ "bin/phpinfocmp"
+ ]
+}
diff --git a/composer.lock b/composer.lock
new file mode 100644
index 0000000..8ff88f8
--- /dev/null
+++ b/composer.lock
@@ -0,0 +1,2662 @@
+{
+ "_readme": [
+ "This file locks the dependencies of your project to a known state",
+ "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies",
+ "This file is @generated automatically"
+ ],
+ "content-hash": "ec8e9ae9d84061a6105824fda4c76e8c",
+ "packages": [
+ {
+ "name": "aura/di",
+ "version": "3.4.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/auraphp/Aura.Di.git",
+ "reference": "f676b38a0d1c3b0d7897b0a082f4811eb8b08faa"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/auraphp/Aura.Di/zipball/f676b38a0d1c3b0d7897b0a082f4811eb8b08faa",
+ "reference": "f676b38a0d1c3b0d7897b0a082f4811eb8b08faa",
+ "shasum": ""
+ },
+ "require": {
+ "container-interop/container-interop": "~1.0",
+ "php": ">=5.5.0"
+ },
+ "provide": {
+ "container-interop/container-interop-implementation": "^1.0"
+ },
+ "require-dev": {
+ "acclimate/container": "~1.0",
+ "mouf/picotainer": "~1.0",
+ "phpunit/phpunit": "~5.7 || ~4.8"
+ },
+ "type": "library",
+ "autoload": {
+ "psr-4": {
+ "Aura\\Di\\": "src/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Aura.Di Contributors",
+ "homepage": "https://github.com/auraphp/Aura.Di/contributors"
+ }
+ ],
+ "description": "A serializable dependency injection container with constructor and setter injection, interface and trait awareness, configuration inheritance, and much more.",
+ "homepage": "https://github.com/auraphp/Aura.Di",
+ "keywords": [
+ "container",
+ "dependency injection",
+ "dependency injection container",
+ "di",
+ "di container"
+ ],
+ "time": "2017-07-30T04:14:30+00:00"
+ },
+ {
+ "name": "cogpowered/finediff",
+ "version": "0.3.1",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/cogpowered/FineDiff.git",
+ "reference": "339ddc8c3afb656efed4f2f0a80e5c3d026f8ea8"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/cogpowered/FineDiff/zipball/339ddc8c3afb656efed4f2f0a80e5c3d026f8ea8",
+ "reference": "339ddc8c3afb656efed4f2f0a80e5c3d026f8ea8",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=5.3.0"
+ },
+ "require-dev": {
+ "mockery/mockery": "*",
+ "phpunit/phpunit": "*"
+ },
+ "type": "library",
+ "autoload": {
+ "psr-0": {
+ "cogpowered\\FineDiff": "src/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Rob Crowe",
+ "email": "rob@cogpowered.com"
+ },
+ {
+ "name": "Raymond Hill"
+ }
+ ],
+ "description": "PHP implementation of a Fine granularity Diff engine",
+ "homepage": "https://github.com/cogpowered/FineDiff",
+ "keywords": [
+ "diff",
+ "finediff",
+ "opcode",
+ "string",
+ "text"
+ ],
+ "time": "2014-05-19T10:25:02+00:00"
+ },
+ {
+ "name": "container-interop/container-interop",
+ "version": "1.2.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/container-interop/container-interop.git",
+ "reference": "79cbf1341c22ec75643d841642dd5d6acd83bdb8"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/container-interop/container-interop/zipball/79cbf1341c22ec75643d841642dd5d6acd83bdb8",
+ "reference": "79cbf1341c22ec75643d841642dd5d6acd83bdb8",
+ "shasum": ""
+ },
+ "require": {
+ "psr/container": "^1.0"
+ },
+ "type": "library",
+ "autoload": {
+ "psr-4": {
+ "Interop\\Container\\": "src/Interop/Container/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "description": "Promoting the interoperability of container objects (DIC, SL, etc.)",
+ "homepage": "https://github.com/container-interop/container-interop",
+ "time": "2017-02-14T19:40:03+00:00"
+ },
+ {
+ "name": "pear/console_commandline",
+ "version": "v1.2.2",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/pear/Console_CommandLine.git",
+ "reference": "7a8afa50bdc8dbfdc0cf394f1101106e8b8f8e67"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/pear/Console_CommandLine/zipball/7a8afa50bdc8dbfdc0cf394f1101106e8b8f8e67",
+ "reference": "7a8afa50bdc8dbfdc0cf394f1101106e8b8f8e67",
+ "shasum": ""
+ },
+ "require": {
+ "ext-dom": "*",
+ "ext-xml": "*",
+ "pear/pear_exception": "^1.0.0",
+ "php": ">=5.3.0"
+ },
+ "require-dev": {
+ "phpunit/phpunit": "*"
+ },
+ "type": "library",
+ "autoload": {
+ "psr-0": {
+ "Console": "./"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "include-path": [
+ ""
+ ],
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Richard Quadling",
+ "email": "RQuadling@GMail.com"
+ },
+ {
+ "name": "David Jean Louis",
+ "email": "izimobil@gmail.com"
+ }
+ ],
+ "description": "A full featured command line options and arguments parser.",
+ "homepage": "https://github.com/pear/Console_CommandLine",
+ "keywords": [
+ "console"
+ ],
+ "time": "2016-07-14T06:00:57+00:00"
+ },
+ {
+ "name": "pear/pear_exception",
+ "version": "v1.0.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/pear/PEAR_Exception.git",
+ "reference": "8c18719fdae000b690e3912be401c76e406dd13b"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/pear/PEAR_Exception/zipball/8c18719fdae000b690e3912be401c76e406dd13b",
+ "reference": "8c18719fdae000b690e3912be401c76e406dd13b",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=4.4.0"
+ },
+ "require-dev": {
+ "phpunit/phpunit": "*"
+ },
+ "type": "class",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "1.0.x-dev"
+ }
+ },
+ "autoload": {
+ "psr-0": {
+ "PEAR": ""
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "include-path": [
+ "."
+ ],
+ "license": [
+ "BSD-2-Clause"
+ ],
+ "authors": [
+ {
+ "name": "Helgi Thormar",
+ "email": "dufuz@php.net"
+ },
+ {
+ "name": "Greg Beaver",
+ "email": "cellog@php.net"
+ }
+ ],
+ "description": "The PEAR Exception base class.",
+ "homepage": "https://github.com/pear/PEAR_Exception",
+ "keywords": [
+ "exception"
+ ],
+ "time": "2015-02-10T20:07:52+00:00"
+ },
+ {
+ "name": "psr/container",
+ "version": "1.0.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/php-fig/container.git",
+ "reference": "b7ce3b176482dbbc1245ebf52b181af44c2cf55f"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/php-fig/container/zipball/b7ce3b176482dbbc1245ebf52b181af44c2cf55f",
+ "reference": "b7ce3b176482dbbc1245ebf52b181af44c2cf55f",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=5.3.0"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "1.0.x-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Psr\\Container\\": "src/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "PHP-FIG",
+ "homepage": "http://www.php-fig.org/"
+ }
+ ],
+ "description": "Common Container Interface (PHP FIG PSR-11)",
+ "homepage": "https://github.com/php-fig/container",
+ "keywords": [
+ "PSR-11",
+ "container",
+ "container-interface",
+ "container-interop",
+ "psr"
+ ],
+ "time": "2017-02-14T16:28:37+00:00"
+ }
+ ],
+ "packages-dev": [
+ {
+ "name": "doctrine/instantiator",
+ "version": "1.1.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/doctrine/instantiator.git",
+ "reference": "185b8868aa9bf7159f5f953ed5afb2d7fcdc3bda"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/doctrine/instantiator/zipball/185b8868aa9bf7159f5f953ed5afb2d7fcdc3bda",
+ "reference": "185b8868aa9bf7159f5f953ed5afb2d7fcdc3bda",
+ "shasum": ""
+ },
+ "require": {
+ "php": "^7.1"
+ },
+ "require-dev": {
+ "athletic/athletic": "~0.1.8",
+ "ext-pdo": "*",
+ "ext-phar": "*",
+ "phpunit/phpunit": "^6.2.3",
+ "squizlabs/php_codesniffer": "^3.0.2"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "1.2.x-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Doctrine\\Instantiator\\": "src/Doctrine/Instantiator/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Marco Pivetta",
+ "email": "ocramius@gmail.com",
+ "homepage": "http://ocramius.github.com/"
+ }
+ ],
+ "description": "A small, lightweight utility to instantiate objects in PHP without invoking their constructors",
+ "homepage": "https://github.com/doctrine/instantiator",
+ "keywords": [
+ "constructor",
+ "instantiate"
+ ],
+ "time": "2017-07-22T11:58:36+00:00"
+ },
+ {
+ "name": "guzzlehttp/guzzle",
+ "version": "6.3.3",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/guzzle/guzzle.git",
+ "reference": "407b0cb880ace85c9b63c5f9551db498cb2d50ba"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/guzzle/guzzle/zipball/407b0cb880ace85c9b63c5f9551db498cb2d50ba",
+ "reference": "407b0cb880ace85c9b63c5f9551db498cb2d50ba",
+ "shasum": ""
+ },
+ "require": {
+ "guzzlehttp/promises": "^1.0",
+ "guzzlehttp/psr7": "^1.4",
+ "php": ">=5.5"
+ },
+ "require-dev": {
+ "ext-curl": "*",
+ "phpunit/phpunit": "^4.8.35 || ^5.7 || ^6.4 || ^7.0",
+ "psr/log": "^1.0"
+ },
+ "suggest": {
+ "psr/log": "Required for using the Log middleware"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "6.3-dev"
+ }
+ },
+ "autoload": {
+ "files": [
+ "src/functions_include.php"
+ ],
+ "psr-4": {
+ "GuzzleHttp\\": "src/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Michael Dowling",
+ "email": "mtdowling@gmail.com",
+ "homepage": "https://github.com/mtdowling"
+ }
+ ],
+ "description": "Guzzle is a PHP HTTP client library",
+ "homepage": "http://guzzlephp.org/",
+ "keywords": [
+ "client",
+ "curl",
+ "framework",
+ "http",
+ "http client",
+ "rest",
+ "web service"
+ ],
+ "time": "2018-04-22T15:46:56+00:00"
+ },
+ {
+ "name": "guzzlehttp/promises",
+ "version": "v1.3.1",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/guzzle/promises.git",
+ "reference": "a59da6cf61d80060647ff4d3eb2c03a2bc694646"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/guzzle/promises/zipball/a59da6cf61d80060647ff4d3eb2c03a2bc694646",
+ "reference": "a59da6cf61d80060647ff4d3eb2c03a2bc694646",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=5.5.0"
+ },
+ "require-dev": {
+ "phpunit/phpunit": "^4.0"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "1.4-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "GuzzleHttp\\Promise\\": "src/"
+ },
+ "files": [
+ "src/functions_include.php"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Michael Dowling",
+ "email": "mtdowling@gmail.com",
+ "homepage": "https://github.com/mtdowling"
+ }
+ ],
+ "description": "Guzzle promises library",
+ "keywords": [
+ "promise"
+ ],
+ "time": "2016-12-20T10:07:11+00:00"
+ },
+ {
+ "name": "guzzlehttp/psr7",
+ "version": "1.4.2",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/guzzle/psr7.git",
+ "reference": "f5b8a8512e2b58b0071a7280e39f14f72e05d87c"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/guzzle/psr7/zipball/f5b8a8512e2b58b0071a7280e39f14f72e05d87c",
+ "reference": "f5b8a8512e2b58b0071a7280e39f14f72e05d87c",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=5.4.0",
+ "psr/http-message": "~1.0"
+ },
+ "provide": {
+ "psr/http-message-implementation": "1.0"
+ },
+ "require-dev": {
+ "phpunit/phpunit": "~4.0"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "1.4-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "GuzzleHttp\\Psr7\\": "src/"
+ },
+ "files": [
+ "src/functions_include.php"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Michael Dowling",
+ "email": "mtdowling@gmail.com",
+ "homepage": "https://github.com/mtdowling"
+ },
+ {
+ "name": "Tobias Schultze",
+ "homepage": "https://github.com/Tobion"
+ }
+ ],
+ "description": "PSR-7 message implementation that also provides common utility methods",
+ "keywords": [
+ "http",
+ "message",
+ "request",
+ "response",
+ "stream",
+ "uri",
+ "url"
+ ],
+ "time": "2017-03-20T17:10:46+00:00"
+ },
+ {
+ "name": "hamcrest/hamcrest-php",
+ "version": "v2.0.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/hamcrest/hamcrest-php.git",
+ "reference": "776503d3a8e85d4f9a1148614f95b7a608b046ad"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/hamcrest/hamcrest-php/zipball/776503d3a8e85d4f9a1148614f95b7a608b046ad",
+ "reference": "776503d3a8e85d4f9a1148614f95b7a608b046ad",
+ "shasum": ""
+ },
+ "require": {
+ "php": "^5.3|^7.0"
+ },
+ "replace": {
+ "cordoval/hamcrest-php": "*",
+ "davedevelopment/hamcrest-php": "*",
+ "kodova/hamcrest-php": "*"
+ },
+ "require-dev": {
+ "phpunit/php-file-iterator": "1.3.3",
+ "phpunit/phpunit": "~4.0",
+ "satooshi/php-coveralls": "^1.0"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "2.0-dev"
+ }
+ },
+ "autoload": {
+ "classmap": [
+ "hamcrest"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "BSD"
+ ],
+ "description": "This is the PHP port of Hamcrest Matchers",
+ "keywords": [
+ "test"
+ ],
+ "time": "2016-01-20T08:20:44+00:00"
+ },
+ {
+ "name": "mockery/mockery",
+ "version": "1.2.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/mockery/mockery.git",
+ "reference": "100633629bf76d57430b86b7098cd6beb996a35a"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/mockery/mockery/zipball/100633629bf76d57430b86b7098cd6beb996a35a",
+ "reference": "100633629bf76d57430b86b7098cd6beb996a35a",
+ "shasum": ""
+ },
+ "require": {
+ "hamcrest/hamcrest-php": "~2.0",
+ "lib-pcre": ">=7.0",
+ "php": ">=5.6.0"
+ },
+ "require-dev": {
+ "phpunit/phpunit": "~5.7.10|~6.5|~7.0"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "1.0.x-dev"
+ }
+ },
+ "autoload": {
+ "psr-0": {
+ "Mockery": "library/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "BSD-3-Clause"
+ ],
+ "authors": [
+ {
+ "name": "Pádraic Brady",
+ "email": "padraic.brady@gmail.com",
+ "homepage": "http://blog.astrumfutura.com"
+ },
+ {
+ "name": "Dave Marshall",
+ "email": "dave.marshall@atstsolutions.co.uk",
+ "homepage": "http://davedevelopment.co.uk"
+ }
+ ],
+ "description": "Mockery is a simple yet flexible PHP mock object framework",
+ "homepage": "https://github.com/mockery/mockery",
+ "keywords": [
+ "BDD",
+ "TDD",
+ "library",
+ "mock",
+ "mock objects",
+ "mockery",
+ "stub",
+ "test",
+ "test double",
+ "testing"
+ ],
+ "time": "2018-10-02T21:52:37+00:00"
+ },
+ {
+ "name": "myclabs/deep-copy",
+ "version": "1.8.1",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/myclabs/DeepCopy.git",
+ "reference": "3e01bdad3e18354c3dce54466b7fbe33a9f9f7f8"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/myclabs/DeepCopy/zipball/3e01bdad3e18354c3dce54466b7fbe33a9f9f7f8",
+ "reference": "3e01bdad3e18354c3dce54466b7fbe33a9f9f7f8",
+ "shasum": ""
+ },
+ "require": {
+ "php": "^7.1"
+ },
+ "replace": {
+ "myclabs/deep-copy": "self.version"
+ },
+ "require-dev": {
+ "doctrine/collections": "^1.0",
+ "doctrine/common": "^2.6",
+ "phpunit/phpunit": "^7.1"
+ },
+ "type": "library",
+ "autoload": {
+ "psr-4": {
+ "DeepCopy\\": "src/DeepCopy/"
+ },
+ "files": [
+ "src/DeepCopy/deep_copy.php"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "description": "Create deep copies (clones) of your objects",
+ "keywords": [
+ "clone",
+ "copy",
+ "duplicate",
+ "object",
+ "object graph"
+ ],
+ "time": "2018-06-11T23:09:50+00:00"
+ },
+ {
+ "name": "phar-io/manifest",
+ "version": "1.0.3",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/phar-io/manifest.git",
+ "reference": "7761fcacf03b4d4f16e7ccb606d4879ca431fcf4"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/phar-io/manifest/zipball/7761fcacf03b4d4f16e7ccb606d4879ca431fcf4",
+ "reference": "7761fcacf03b4d4f16e7ccb606d4879ca431fcf4",
+ "shasum": ""
+ },
+ "require": {
+ "ext-dom": "*",
+ "ext-phar": "*",
+ "phar-io/version": "^2.0",
+ "php": "^5.6 || ^7.0"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "1.0.x-dev"
+ }
+ },
+ "autoload": {
+ "classmap": [
+ "src/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "BSD-3-Clause"
+ ],
+ "authors": [
+ {
+ "name": "Arne Blankerts",
+ "email": "arne@blankerts.de",
+ "role": "Developer"
+ },
+ {
+ "name": "Sebastian Heuer",
+ "email": "sebastian@phpeople.de",
+ "role": "Developer"
+ },
+ {
+ "name": "Sebastian Bergmann",
+ "email": "sebastian@phpunit.de",
+ "role": "Developer"
+ }
+ ],
+ "description": "Component for reading phar.io manifest information from a PHP Archive (PHAR)",
+ "time": "2018-07-08T19:23:20+00:00"
+ },
+ {
+ "name": "phar-io/version",
+ "version": "2.0.1",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/phar-io/version.git",
+ "reference": "45a2ec53a73c70ce41d55cedef9063630abaf1b6"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/phar-io/version/zipball/45a2ec53a73c70ce41d55cedef9063630abaf1b6",
+ "reference": "45a2ec53a73c70ce41d55cedef9063630abaf1b6",
+ "shasum": ""
+ },
+ "require": {
+ "php": "^5.6 || ^7.0"
+ },
+ "type": "library",
+ "autoload": {
+ "classmap": [
+ "src/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "BSD-3-Clause"
+ ],
+ "authors": [
+ {
+ "name": "Arne Blankerts",
+ "email": "arne@blankerts.de",
+ "role": "Developer"
+ },
+ {
+ "name": "Sebastian Heuer",
+ "email": "sebastian@phpeople.de",
+ "role": "Developer"
+ },
+ {
+ "name": "Sebastian Bergmann",
+ "email": "sebastian@phpunit.de",
+ "role": "Developer"
+ }
+ ],
+ "description": "Library for handling version information and constraints",
+ "time": "2018-07-08T19:19:57+00:00"
+ },
+ {
+ "name": "php-coveralls/php-coveralls",
+ "version": "v2.1.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/php-coveralls/php-coveralls.git",
+ "reference": "3b00c229726f892bfdadeaf01ea430ffd04a939d"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/php-coveralls/php-coveralls/zipball/3b00c229726f892bfdadeaf01ea430ffd04a939d",
+ "reference": "3b00c229726f892bfdadeaf01ea430ffd04a939d",
+ "shasum": ""
+ },
+ "require": {
+ "ext-json": "*",
+ "ext-simplexml": "*",
+ "guzzlehttp/guzzle": "^6.0",
+ "php": "^5.5 || ^7.0",
+ "psr/log": "^1.0",
+ "symfony/config": "^2.1 || ^3.0 || ^4.0",
+ "symfony/console": "^2.1 || ^3.0 || ^4.0",
+ "symfony/stopwatch": "^2.0 || ^3.0 || ^4.0",
+ "symfony/yaml": "^2.0 || ^3.0 || ^4.0"
+ },
+ "require-dev": {
+ "phpunit/phpunit": "^4.8.35 || ^5.4.3 || ^6.0"
+ },
+ "suggest": {
+ "symfony/http-kernel": "Allows Symfony integration"
+ },
+ "bin": [
+ "bin/php-coveralls"
+ ],
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "2.1-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "PhpCoveralls\\": "src/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Kitamura Satoshi",
+ "email": "with.no.parachute@gmail.com",
+ "homepage": "https://www.facebook.com/satooshi.jp",
+ "role": "Original creator"
+ },
+ {
+ "name": "Takashi Matsuo",
+ "email": "tmatsuo@google.com"
+ },
+ {
+ "name": "Google Inc"
+ },
+ {
+ "name": "Dariusz Ruminski",
+ "email": "dariusz.ruminski@gmail.com",
+ "homepage": "https://github.com/keradus"
+ },
+ {
+ "name": "Contributors",
+ "homepage": "https://github.com/php-coveralls/php-coveralls/graphs/contributors"
+ }
+ ],
+ "description": "PHP client library for Coveralls API",
+ "homepage": "https://github.com/php-coveralls/php-coveralls",
+ "keywords": [
+ "ci",
+ "coverage",
+ "github",
+ "test"
+ ],
+ "time": "2018-05-22T23:11:08+00:00"
+ },
+ {
+ "name": "phpdocumentor/reflection-common",
+ "version": "1.0.1",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/phpDocumentor/ReflectionCommon.git",
+ "reference": "21bdeb5f65d7ebf9f43b1b25d404f87deab5bfb6"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/phpDocumentor/ReflectionCommon/zipball/21bdeb5f65d7ebf9f43b1b25d404f87deab5bfb6",
+ "reference": "21bdeb5f65d7ebf9f43b1b25d404f87deab5bfb6",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=5.5"
+ },
+ "require-dev": {
+ "phpunit/phpunit": "^4.6"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "1.0.x-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "phpDocumentor\\Reflection\\": [
+ "src"
+ ]
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Jaap van Otterdijk",
+ "email": "opensource@ijaap.nl"
+ }
+ ],
+ "description": "Common reflection classes used by phpdocumentor to reflect the code structure",
+ "homepage": "http://www.phpdoc.org",
+ "keywords": [
+ "FQSEN",
+ "phpDocumentor",
+ "phpdoc",
+ "reflection",
+ "static analysis"
+ ],
+ "time": "2017-09-11T18:02:19+00:00"
+ },
+ {
+ "name": "phpdocumentor/reflection-docblock",
+ "version": "4.3.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/phpDocumentor/ReflectionDocBlock.git",
+ "reference": "94fd0001232e47129dd3504189fa1c7225010d08"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/phpDocumentor/ReflectionDocBlock/zipball/94fd0001232e47129dd3504189fa1c7225010d08",
+ "reference": "94fd0001232e47129dd3504189fa1c7225010d08",
+ "shasum": ""
+ },
+ "require": {
+ "php": "^7.0",
+ "phpdocumentor/reflection-common": "^1.0.0",
+ "phpdocumentor/type-resolver": "^0.4.0",
+ "webmozart/assert": "^1.0"
+ },
+ "require-dev": {
+ "doctrine/instantiator": "~1.0.5",
+ "mockery/mockery": "^1.0",
+ "phpunit/phpunit": "^6.4"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "4.x-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "phpDocumentor\\Reflection\\": [
+ "src/"
+ ]
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Mike van Riel",
+ "email": "me@mikevanriel.com"
+ }
+ ],
+ "description": "With this component, a library can provide support for annotations via DocBlocks or otherwise retrieve information that is embedded in a DocBlock.",
+ "time": "2017-11-30T07:14:17+00:00"
+ },
+ {
+ "name": "phpdocumentor/type-resolver",
+ "version": "0.4.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/phpDocumentor/TypeResolver.git",
+ "reference": "9c977708995954784726e25d0cd1dddf4e65b0f7"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/phpDocumentor/TypeResolver/zipball/9c977708995954784726e25d0cd1dddf4e65b0f7",
+ "reference": "9c977708995954784726e25d0cd1dddf4e65b0f7",
+ "shasum": ""
+ },
+ "require": {
+ "php": "^5.5 || ^7.0",
+ "phpdocumentor/reflection-common": "^1.0"
+ },
+ "require-dev": {
+ "mockery/mockery": "^0.9.4",
+ "phpunit/phpunit": "^5.2||^4.8.24"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "1.0.x-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "phpDocumentor\\Reflection\\": [
+ "src/"
+ ]
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Mike van Riel",
+ "email": "me@mikevanriel.com"
+ }
+ ],
+ "time": "2017-07-14T14:27:02+00:00"
+ },
+ {
+ "name": "phpspec/prophecy",
+ "version": "1.8.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/phpspec/prophecy.git",
+ "reference": "4ba436b55987b4bf311cb7c6ba82aa528aac0a06"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/phpspec/prophecy/zipball/4ba436b55987b4bf311cb7c6ba82aa528aac0a06",
+ "reference": "4ba436b55987b4bf311cb7c6ba82aa528aac0a06",
+ "shasum": ""
+ },
+ "require": {
+ "doctrine/instantiator": "^1.0.2",
+ "php": "^5.3|^7.0",
+ "phpdocumentor/reflection-docblock": "^2.0|^3.0.2|^4.0",
+ "sebastian/comparator": "^1.1|^2.0|^3.0",
+ "sebastian/recursion-context": "^1.0|^2.0|^3.0"
+ },
+ "require-dev": {
+ "phpspec/phpspec": "^2.5|^3.2",
+ "phpunit/phpunit": "^4.8.35 || ^5.7 || ^6.5 || ^7.1"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "1.8.x-dev"
+ }
+ },
+ "autoload": {
+ "psr-0": {
+ "Prophecy\\": "src/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Konstantin Kudryashov",
+ "email": "ever.zet@gmail.com",
+ "homepage": "http://everzet.com"
+ },
+ {
+ "name": "Marcello Duarte",
+ "email": "marcello.duarte@gmail.com"
+ }
+ ],
+ "description": "Highly opinionated mocking framework for PHP 5.3+",
+ "homepage": "https://github.com/phpspec/prophecy",
+ "keywords": [
+ "Double",
+ "Dummy",
+ "fake",
+ "mock",
+ "spy",
+ "stub"
+ ],
+ "time": "2018-08-05T17:53:17+00:00"
+ },
+ {
+ "name": "phpunit/php-code-coverage",
+ "version": "6.1.3",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/sebastianbergmann/php-code-coverage.git",
+ "reference": "4d3ae9b21a7d7e440bd0cf65565533117976859f"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/4d3ae9b21a7d7e440bd0cf65565533117976859f",
+ "reference": "4d3ae9b21a7d7e440bd0cf65565533117976859f",
+ "shasum": ""
+ },
+ "require": {
+ "ext-dom": "*",
+ "ext-xmlwriter": "*",
+ "php": "^7.1",
+ "phpunit/php-file-iterator": "^2.0",
+ "phpunit/php-text-template": "^1.2.1",
+ "phpunit/php-token-stream": "^3.0",
+ "sebastian/code-unit-reverse-lookup": "^1.0.1",
+ "sebastian/environment": "^3.1 || ^4.0",
+ "sebastian/version": "^2.0.1",
+ "theseer/tokenizer": "^1.1"
+ },
+ "require-dev": {
+ "phpunit/phpunit": "^7.0"
+ },
+ "suggest": {
+ "ext-xdebug": "^2.6.0"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "6.1-dev"
+ }
+ },
+ "autoload": {
+ "classmap": [
+ "src/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "BSD-3-Clause"
+ ],
+ "authors": [
+ {
+ "name": "Sebastian Bergmann",
+ "email": "sebastian@phpunit.de",
+ "role": "lead"
+ }
+ ],
+ "description": "Library that provides collection, processing, and rendering functionality for PHP code coverage information.",
+ "homepage": "https://github.com/sebastianbergmann/php-code-coverage",
+ "keywords": [
+ "coverage",
+ "testing",
+ "xunit"
+ ],
+ "time": "2018-10-23T05:59:32+00:00"
+ },
+ {
+ "name": "phpunit/php-file-iterator",
+ "version": "2.0.2",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/sebastianbergmann/php-file-iterator.git",
+ "reference": "050bedf145a257b1ff02746c31894800e5122946"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/sebastianbergmann/php-file-iterator/zipball/050bedf145a257b1ff02746c31894800e5122946",
+ "reference": "050bedf145a257b1ff02746c31894800e5122946",
+ "shasum": ""
+ },
+ "require": {
+ "php": "^7.1"
+ },
+ "require-dev": {
+ "phpunit/phpunit": "^7.1"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "2.0.x-dev"
+ }
+ },
+ "autoload": {
+ "classmap": [
+ "src/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "BSD-3-Clause"
+ ],
+ "authors": [
+ {
+ "name": "Sebastian Bergmann",
+ "email": "sebastian@phpunit.de",
+ "role": "lead"
+ }
+ ],
+ "description": "FilterIterator implementation that filters files based on a list of suffixes.",
+ "homepage": "https://github.com/sebastianbergmann/php-file-iterator/",
+ "keywords": [
+ "filesystem",
+ "iterator"
+ ],
+ "time": "2018-09-13T20:33:42+00:00"
+ },
+ {
+ "name": "phpunit/php-text-template",
+ "version": "1.2.1",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/sebastianbergmann/php-text-template.git",
+ "reference": "31f8b717e51d9a2afca6c9f046f5d69fc27c8686"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/sebastianbergmann/php-text-template/zipball/31f8b717e51d9a2afca6c9f046f5d69fc27c8686",
+ "reference": "31f8b717e51d9a2afca6c9f046f5d69fc27c8686",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=5.3.3"
+ },
+ "type": "library",
+ "autoload": {
+ "classmap": [
+ "src/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "BSD-3-Clause"
+ ],
+ "authors": [
+ {
+ "name": "Sebastian Bergmann",
+ "email": "sebastian@phpunit.de",
+ "role": "lead"
+ }
+ ],
+ "description": "Simple template engine.",
+ "homepage": "https://github.com/sebastianbergmann/php-text-template/",
+ "keywords": [
+ "template"
+ ],
+ "time": "2015-06-21T13:50:34+00:00"
+ },
+ {
+ "name": "phpunit/php-timer",
+ "version": "2.0.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/sebastianbergmann/php-timer.git",
+ "reference": "8b8454ea6958c3dee38453d3bd571e023108c91f"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/sebastianbergmann/php-timer/zipball/8b8454ea6958c3dee38453d3bd571e023108c91f",
+ "reference": "8b8454ea6958c3dee38453d3bd571e023108c91f",
+ "shasum": ""
+ },
+ "require": {
+ "php": "^7.1"
+ },
+ "require-dev": {
+ "phpunit/phpunit": "^7.0"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "2.0-dev"
+ }
+ },
+ "autoload": {
+ "classmap": [
+ "src/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "BSD-3-Clause"
+ ],
+ "authors": [
+ {
+ "name": "Sebastian Bergmann",
+ "email": "sebastian@phpunit.de",
+ "role": "lead"
+ }
+ ],
+ "description": "Utility class for timing",
+ "homepage": "https://github.com/sebastianbergmann/php-timer/",
+ "keywords": [
+ "timer"
+ ],
+ "time": "2018-02-01T13:07:23+00:00"
+ },
+ {
+ "name": "phpunit/php-token-stream",
+ "version": "3.0.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/sebastianbergmann/php-token-stream.git",
+ "reference": "21ad88bbba7c3d93530d93994e0a33cd45f02ace"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/sebastianbergmann/php-token-stream/zipball/21ad88bbba7c3d93530d93994e0a33cd45f02ace",
+ "reference": "21ad88bbba7c3d93530d93994e0a33cd45f02ace",
+ "shasum": ""
+ },
+ "require": {
+ "ext-tokenizer": "*",
+ "php": "^7.1"
+ },
+ "require-dev": {
+ "phpunit/phpunit": "^7.0"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "3.0-dev"
+ }
+ },
+ "autoload": {
+ "classmap": [
+ "src/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "BSD-3-Clause"
+ ],
+ "authors": [
+ {
+ "name": "Sebastian Bergmann",
+ "email": "sebastian@phpunit.de"
+ }
+ ],
+ "description": "Wrapper around PHP's tokenizer extension.",
+ "homepage": "https://github.com/sebastianbergmann/php-token-stream/",
+ "keywords": [
+ "tokenizer"
+ ],
+ "time": "2018-02-01T13:16:43+00:00"
+ },
+ {
+ "name": "phpunit/phpunit",
+ "version": "7.4.3",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/sebastianbergmann/phpunit.git",
+ "reference": "c151651fb6ed264038d486ea262e243af72e5e64"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/c151651fb6ed264038d486ea262e243af72e5e64",
+ "reference": "c151651fb6ed264038d486ea262e243af72e5e64",
+ "shasum": ""
+ },
+ "require": {
+ "doctrine/instantiator": "^1.1",
+ "ext-dom": "*",
+ "ext-json": "*",
+ "ext-libxml": "*",
+ "ext-mbstring": "*",
+ "ext-xml": "*",
+ "myclabs/deep-copy": "^1.7",
+ "phar-io/manifest": "^1.0.2",
+ "phar-io/version": "^2.0",
+ "php": "^7.1",
+ "phpspec/prophecy": "^1.7",
+ "phpunit/php-code-coverage": "^6.0.7",
+ "phpunit/php-file-iterator": "^2.0.1",
+ "phpunit/php-text-template": "^1.2.1",
+ "phpunit/php-timer": "^2.0",
+ "sebastian/comparator": "^3.0",
+ "sebastian/diff": "^3.0",
+ "sebastian/environment": "^3.1 || ^4.0",
+ "sebastian/exporter": "^3.1",
+ "sebastian/global-state": "^2.0",
+ "sebastian/object-enumerator": "^3.0.3",
+ "sebastian/resource-operations": "^2.0",
+ "sebastian/version": "^2.0.1"
+ },
+ "conflict": {
+ "phpunit/phpunit-mock-objects": "*"
+ },
+ "require-dev": {
+ "ext-pdo": "*"
+ },
+ "suggest": {
+ "ext-soap": "*",
+ "ext-xdebug": "*",
+ "phpunit/php-invoker": "^2.0"
+ },
+ "bin": [
+ "phpunit"
+ ],
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "7.4-dev"
+ }
+ },
+ "autoload": {
+ "classmap": [
+ "src/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "BSD-3-Clause"
+ ],
+ "authors": [
+ {
+ "name": "Sebastian Bergmann",
+ "email": "sebastian@phpunit.de",
+ "role": "lead"
+ }
+ ],
+ "description": "The PHP Unit Testing framework.",
+ "homepage": "https://phpunit.de/",
+ "keywords": [
+ "phpunit",
+ "testing",
+ "xunit"
+ ],
+ "time": "2018-10-23T05:57:41+00:00"
+ },
+ {
+ "name": "psr/http-message",
+ "version": "1.0.1",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/php-fig/http-message.git",
+ "reference": "f6561bf28d520154e4b0ec72be95418abe6d9363"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/php-fig/http-message/zipball/f6561bf28d520154e4b0ec72be95418abe6d9363",
+ "reference": "f6561bf28d520154e4b0ec72be95418abe6d9363",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=5.3.0"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "1.0.x-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Psr\\Http\\Message\\": "src/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "PHP-FIG",
+ "homepage": "http://www.php-fig.org/"
+ }
+ ],
+ "description": "Common interface for HTTP messages",
+ "homepage": "https://github.com/php-fig/http-message",
+ "keywords": [
+ "http",
+ "http-message",
+ "psr",
+ "psr-7",
+ "request",
+ "response"
+ ],
+ "time": "2016-08-06T14:39:51+00:00"
+ },
+ {
+ "name": "psr/log",
+ "version": "1.0.2",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/php-fig/log.git",
+ "reference": "4ebe3a8bf773a19edfe0a84b6585ba3d401b724d"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/php-fig/log/zipball/4ebe3a8bf773a19edfe0a84b6585ba3d401b724d",
+ "reference": "4ebe3a8bf773a19edfe0a84b6585ba3d401b724d",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=5.3.0"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "1.0.x-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Psr\\Log\\": "Psr/Log/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "PHP-FIG",
+ "homepage": "http://www.php-fig.org/"
+ }
+ ],
+ "description": "Common interface for logging libraries",
+ "homepage": "https://github.com/php-fig/log",
+ "keywords": [
+ "log",
+ "psr",
+ "psr-3"
+ ],
+ "time": "2016-10-10T12:19:37+00:00"
+ },
+ {
+ "name": "sebastian/code-unit-reverse-lookup",
+ "version": "1.0.1",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/sebastianbergmann/code-unit-reverse-lookup.git",
+ "reference": "4419fcdb5eabb9caa61a27c7a1db532a6b55dd18"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/sebastianbergmann/code-unit-reverse-lookup/zipball/4419fcdb5eabb9caa61a27c7a1db532a6b55dd18",
+ "reference": "4419fcdb5eabb9caa61a27c7a1db532a6b55dd18",
+ "shasum": ""
+ },
+ "require": {
+ "php": "^5.6 || ^7.0"
+ },
+ "require-dev": {
+ "phpunit/phpunit": "^5.7 || ^6.0"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "1.0.x-dev"
+ }
+ },
+ "autoload": {
+ "classmap": [
+ "src/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "BSD-3-Clause"
+ ],
+ "authors": [
+ {
+ "name": "Sebastian Bergmann",
+ "email": "sebastian@phpunit.de"
+ }
+ ],
+ "description": "Looks up which function or method a line of code belongs to",
+ "homepage": "https://github.com/sebastianbergmann/code-unit-reverse-lookup/",
+ "time": "2017-03-04T06:30:41+00:00"
+ },
+ {
+ "name": "sebastian/comparator",
+ "version": "3.0.2",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/sebastianbergmann/comparator.git",
+ "reference": "5de4fc177adf9bce8df98d8d141a7559d7ccf6da"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/sebastianbergmann/comparator/zipball/5de4fc177adf9bce8df98d8d141a7559d7ccf6da",
+ "reference": "5de4fc177adf9bce8df98d8d141a7559d7ccf6da",
+ "shasum": ""
+ },
+ "require": {
+ "php": "^7.1",
+ "sebastian/diff": "^3.0",
+ "sebastian/exporter": "^3.1"
+ },
+ "require-dev": {
+ "phpunit/phpunit": "^7.1"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "3.0-dev"
+ }
+ },
+ "autoload": {
+ "classmap": [
+ "src/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "BSD-3-Clause"
+ ],
+ "authors": [
+ {
+ "name": "Jeff Welch",
+ "email": "whatthejeff@gmail.com"
+ },
+ {
+ "name": "Volker Dusch",
+ "email": "github@wallbash.com"
+ },
+ {
+ "name": "Bernhard Schussek",
+ "email": "bschussek@2bepublished.at"
+ },
+ {
+ "name": "Sebastian Bergmann",
+ "email": "sebastian@phpunit.de"
+ }
+ ],
+ "description": "Provides the functionality to compare PHP values for equality",
+ "homepage": "https://github.com/sebastianbergmann/comparator",
+ "keywords": [
+ "comparator",
+ "compare",
+ "equality"
+ ],
+ "time": "2018-07-12T15:12:46+00:00"
+ },
+ {
+ "name": "sebastian/diff",
+ "version": "3.0.1",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/sebastianbergmann/diff.git",
+ "reference": "366541b989927187c4ca70490a35615d3fef2dce"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/sebastianbergmann/diff/zipball/366541b989927187c4ca70490a35615d3fef2dce",
+ "reference": "366541b989927187c4ca70490a35615d3fef2dce",
+ "shasum": ""
+ },
+ "require": {
+ "php": "^7.1"
+ },
+ "require-dev": {
+ "phpunit/phpunit": "^7.0",
+ "symfony/process": "^2 || ^3.3 || ^4"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "3.0-dev"
+ }
+ },
+ "autoload": {
+ "classmap": [
+ "src/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "BSD-3-Clause"
+ ],
+ "authors": [
+ {
+ "name": "Kore Nordmann",
+ "email": "mail@kore-nordmann.de"
+ },
+ {
+ "name": "Sebastian Bergmann",
+ "email": "sebastian@phpunit.de"
+ }
+ ],
+ "description": "Diff implementation",
+ "homepage": "https://github.com/sebastianbergmann/diff",
+ "keywords": [
+ "diff",
+ "udiff",
+ "unidiff",
+ "unified diff"
+ ],
+ "time": "2018-06-10T07:54:39+00:00"
+ },
+ {
+ "name": "sebastian/environment",
+ "version": "3.1.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/sebastianbergmann/environment.git",
+ "reference": "cd0871b3975fb7fc44d11314fd1ee20925fce4f5"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/sebastianbergmann/environment/zipball/cd0871b3975fb7fc44d11314fd1ee20925fce4f5",
+ "reference": "cd0871b3975fb7fc44d11314fd1ee20925fce4f5",
+ "shasum": ""
+ },
+ "require": {
+ "php": "^7.0"
+ },
+ "require-dev": {
+ "phpunit/phpunit": "^6.1"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "3.1.x-dev"
+ }
+ },
+ "autoload": {
+ "classmap": [
+ "src/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "BSD-3-Clause"
+ ],
+ "authors": [
+ {
+ "name": "Sebastian Bergmann",
+ "email": "sebastian@phpunit.de"
+ }
+ ],
+ "description": "Provides functionality to handle HHVM/PHP environments",
+ "homepage": "http://www.github.com/sebastianbergmann/environment",
+ "keywords": [
+ "Xdebug",
+ "environment",
+ "hhvm"
+ ],
+ "time": "2017-07-01T08:51:00+00:00"
+ },
+ {
+ "name": "sebastian/exporter",
+ "version": "3.1.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/sebastianbergmann/exporter.git",
+ "reference": "234199f4528de6d12aaa58b612e98f7d36adb937"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/sebastianbergmann/exporter/zipball/234199f4528de6d12aaa58b612e98f7d36adb937",
+ "reference": "234199f4528de6d12aaa58b612e98f7d36adb937",
+ "shasum": ""
+ },
+ "require": {
+ "php": "^7.0",
+ "sebastian/recursion-context": "^3.0"
+ },
+ "require-dev": {
+ "ext-mbstring": "*",
+ "phpunit/phpunit": "^6.0"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "3.1.x-dev"
+ }
+ },
+ "autoload": {
+ "classmap": [
+ "src/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "BSD-3-Clause"
+ ],
+ "authors": [
+ {
+ "name": "Jeff Welch",
+ "email": "whatthejeff@gmail.com"
+ },
+ {
+ "name": "Volker Dusch",
+ "email": "github@wallbash.com"
+ },
+ {
+ "name": "Bernhard Schussek",
+ "email": "bschussek@2bepublished.at"
+ },
+ {
+ "name": "Sebastian Bergmann",
+ "email": "sebastian@phpunit.de"
+ },
+ {
+ "name": "Adam Harvey",
+ "email": "aharvey@php.net"
+ }
+ ],
+ "description": "Provides the functionality to export PHP variables for visualization",
+ "homepage": "http://www.github.com/sebastianbergmann/exporter",
+ "keywords": [
+ "export",
+ "exporter"
+ ],
+ "time": "2017-04-03T13:19:02+00:00"
+ },
+ {
+ "name": "sebastian/global-state",
+ "version": "2.0.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/sebastianbergmann/global-state.git",
+ "reference": "e8ba02eed7bbbb9e59e43dedd3dddeff4a56b0c4"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/sebastianbergmann/global-state/zipball/e8ba02eed7bbbb9e59e43dedd3dddeff4a56b0c4",
+ "reference": "e8ba02eed7bbbb9e59e43dedd3dddeff4a56b0c4",
+ "shasum": ""
+ },
+ "require": {
+ "php": "^7.0"
+ },
+ "require-dev": {
+ "phpunit/phpunit": "^6.0"
+ },
+ "suggest": {
+ "ext-uopz": "*"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "2.0-dev"
+ }
+ },
+ "autoload": {
+ "classmap": [
+ "src/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "BSD-3-Clause"
+ ],
+ "authors": [
+ {
+ "name": "Sebastian Bergmann",
+ "email": "sebastian@phpunit.de"
+ }
+ ],
+ "description": "Snapshotting of global state",
+ "homepage": "http://www.github.com/sebastianbergmann/global-state",
+ "keywords": [
+ "global state"
+ ],
+ "time": "2017-04-27T15:39:26+00:00"
+ },
+ {
+ "name": "sebastian/object-enumerator",
+ "version": "3.0.3",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/sebastianbergmann/object-enumerator.git",
+ "reference": "7cfd9e65d11ffb5af41198476395774d4c8a84c5"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/sebastianbergmann/object-enumerator/zipball/7cfd9e65d11ffb5af41198476395774d4c8a84c5",
+ "reference": "7cfd9e65d11ffb5af41198476395774d4c8a84c5",
+ "shasum": ""
+ },
+ "require": {
+ "php": "^7.0",
+ "sebastian/object-reflector": "^1.1.1",
+ "sebastian/recursion-context": "^3.0"
+ },
+ "require-dev": {
+ "phpunit/phpunit": "^6.0"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "3.0.x-dev"
+ }
+ },
+ "autoload": {
+ "classmap": [
+ "src/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "BSD-3-Clause"
+ ],
+ "authors": [
+ {
+ "name": "Sebastian Bergmann",
+ "email": "sebastian@phpunit.de"
+ }
+ ],
+ "description": "Traverses array structures and object graphs to enumerate all referenced objects",
+ "homepage": "https://github.com/sebastianbergmann/object-enumerator/",
+ "time": "2017-08-03T12:35:26+00:00"
+ },
+ {
+ "name": "sebastian/object-reflector",
+ "version": "1.1.1",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/sebastianbergmann/object-reflector.git",
+ "reference": "773f97c67f28de00d397be301821b06708fca0be"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/sebastianbergmann/object-reflector/zipball/773f97c67f28de00d397be301821b06708fca0be",
+ "reference": "773f97c67f28de00d397be301821b06708fca0be",
+ "shasum": ""
+ },
+ "require": {
+ "php": "^7.0"
+ },
+ "require-dev": {
+ "phpunit/phpunit": "^6.0"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "1.1-dev"
+ }
+ },
+ "autoload": {
+ "classmap": [
+ "src/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "BSD-3-Clause"
+ ],
+ "authors": [
+ {
+ "name": "Sebastian Bergmann",
+ "email": "sebastian@phpunit.de"
+ }
+ ],
+ "description": "Allows reflection of object attributes, including inherited and non-public ones",
+ "homepage": "https://github.com/sebastianbergmann/object-reflector/",
+ "time": "2017-03-29T09:07:27+00:00"
+ },
+ {
+ "name": "sebastian/recursion-context",
+ "version": "3.0.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/sebastianbergmann/recursion-context.git",
+ "reference": "5b0cd723502bac3b006cbf3dbf7a1e3fcefe4fa8"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/sebastianbergmann/recursion-context/zipball/5b0cd723502bac3b006cbf3dbf7a1e3fcefe4fa8",
+ "reference": "5b0cd723502bac3b006cbf3dbf7a1e3fcefe4fa8",
+ "shasum": ""
+ },
+ "require": {
+ "php": "^7.0"
+ },
+ "require-dev": {
+ "phpunit/phpunit": "^6.0"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "3.0.x-dev"
+ }
+ },
+ "autoload": {
+ "classmap": [
+ "src/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "BSD-3-Clause"
+ ],
+ "authors": [
+ {
+ "name": "Jeff Welch",
+ "email": "whatthejeff@gmail.com"
+ },
+ {
+ "name": "Sebastian Bergmann",
+ "email": "sebastian@phpunit.de"
+ },
+ {
+ "name": "Adam Harvey",
+ "email": "aharvey@php.net"
+ }
+ ],
+ "description": "Provides functionality to recursively process PHP variables",
+ "homepage": "http://www.github.com/sebastianbergmann/recursion-context",
+ "time": "2017-03-03T06:23:57+00:00"
+ },
+ {
+ "name": "sebastian/resource-operations",
+ "version": "2.0.1",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/sebastianbergmann/resource-operations.git",
+ "reference": "4d7a795d35b889bf80a0cc04e08d77cedfa917a9"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/sebastianbergmann/resource-operations/zipball/4d7a795d35b889bf80a0cc04e08d77cedfa917a9",
+ "reference": "4d7a795d35b889bf80a0cc04e08d77cedfa917a9",
+ "shasum": ""
+ },
+ "require": {
+ "php": "^7.1"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "2.0-dev"
+ }
+ },
+ "autoload": {
+ "classmap": [
+ "src/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "BSD-3-Clause"
+ ],
+ "authors": [
+ {
+ "name": "Sebastian Bergmann",
+ "email": "sebastian@phpunit.de"
+ }
+ ],
+ "description": "Provides a list of PHP built-in functions that operate on resources",
+ "homepage": "https://www.github.com/sebastianbergmann/resource-operations",
+ "time": "2018-10-04T04:07:39+00:00"
+ },
+ {
+ "name": "sebastian/version",
+ "version": "2.0.1",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/sebastianbergmann/version.git",
+ "reference": "99732be0ddb3361e16ad77b68ba41efc8e979019"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/sebastianbergmann/version/zipball/99732be0ddb3361e16ad77b68ba41efc8e979019",
+ "reference": "99732be0ddb3361e16ad77b68ba41efc8e979019",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=5.6"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "2.0.x-dev"
+ }
+ },
+ "autoload": {
+ "classmap": [
+ "src/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "BSD-3-Clause"
+ ],
+ "authors": [
+ {
+ "name": "Sebastian Bergmann",
+ "email": "sebastian@phpunit.de",
+ "role": "lead"
+ }
+ ],
+ "description": "Library that helps with managing the version number of Git-hosted PHP projects",
+ "homepage": "https://github.com/sebastianbergmann/version",
+ "time": "2016-10-03T07:35:21+00:00"
+ },
+ {
+ "name": "symfony/config",
+ "version": "v3.4.17",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/symfony/config.git",
+ "reference": "e5389132dc6320682de3643091121c048ff796b3"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/symfony/config/zipball/e5389132dc6320682de3643091121c048ff796b3",
+ "reference": "e5389132dc6320682de3643091121c048ff796b3",
+ "shasum": ""
+ },
+ "require": {
+ "php": "^5.5.9|>=7.0.8",
+ "symfony/filesystem": "~2.8|~3.0|~4.0",
+ "symfony/polyfill-ctype": "~1.8"
+ },
+ "conflict": {
+ "symfony/dependency-injection": "<3.3",
+ "symfony/finder": "<3.3"
+ },
+ "require-dev": {
+ "symfony/dependency-injection": "~3.3|~4.0",
+ "symfony/event-dispatcher": "~3.3|~4.0",
+ "symfony/finder": "~3.3|~4.0",
+ "symfony/yaml": "~3.0|~4.0"
+ },
+ "suggest": {
+ "symfony/yaml": "To use the yaml reference dumper"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "3.4-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Symfony\\Component\\Config\\": ""
+ },
+ "exclude-from-classmap": [
+ "/Tests/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Fabien Potencier",
+ "email": "fabien@symfony.com"
+ },
+ {
+ "name": "Symfony Community",
+ "homepage": "https://symfony.com/contributors"
+ }
+ ],
+ "description": "Symfony Config Component",
+ "homepage": "https://symfony.com",
+ "time": "2018-09-08T13:15:14+00:00"
+ },
+ {
+ "name": "symfony/console",
+ "version": "v3.4.17",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/symfony/console.git",
+ "reference": "3b2b415d4c48fbefca7dc742aa0a0171bfae4e0b"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/symfony/console/zipball/3b2b415d4c48fbefca7dc742aa0a0171bfae4e0b",
+ "reference": "3b2b415d4c48fbefca7dc742aa0a0171bfae4e0b",
+ "shasum": ""
+ },
+ "require": {
+ "php": "^5.5.9|>=7.0.8",
+ "symfony/debug": "~2.8|~3.0|~4.0",
+ "symfony/polyfill-mbstring": "~1.0"
+ },
+ "conflict": {
+ "symfony/dependency-injection": "<3.4",
+ "symfony/process": "<3.3"
+ },
+ "require-dev": {
+ "psr/log": "~1.0",
+ "symfony/config": "~3.3|~4.0",
+ "symfony/dependency-injection": "~3.4|~4.0",
+ "symfony/event-dispatcher": "~2.8|~3.0|~4.0",
+ "symfony/lock": "~3.4|~4.0",
+ "symfony/process": "~3.3|~4.0"
+ },
+ "suggest": {
+ "psr/log-implementation": "For using the console logger",
+ "symfony/event-dispatcher": "",
+ "symfony/lock": "",
+ "symfony/process": ""
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "3.4-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Symfony\\Component\\Console\\": ""
+ },
+ "exclude-from-classmap": [
+ "/Tests/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Fabien Potencier",
+ "email": "fabien@symfony.com"
+ },
+ {
+ "name": "Symfony Community",
+ "homepage": "https://symfony.com/contributors"
+ }
+ ],
+ "description": "Symfony Console Component",
+ "homepage": "https://symfony.com",
+ "time": "2018-10-02T16:33:53+00:00"
+ },
+ {
+ "name": "symfony/debug",
+ "version": "v3.4.17",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/symfony/debug.git",
+ "reference": "0a612e9dfbd2ccce03eb174365f31ecdca930ff6"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/symfony/debug/zipball/0a612e9dfbd2ccce03eb174365f31ecdca930ff6",
+ "reference": "0a612e9dfbd2ccce03eb174365f31ecdca930ff6",
+ "shasum": ""
+ },
+ "require": {
+ "php": "^5.5.9|>=7.0.8",
+ "psr/log": "~1.0"
+ },
+ "conflict": {
+ "symfony/http-kernel": ">=2.3,<2.3.24|~2.4.0|>=2.5,<2.5.9|>=2.6,<2.6.2"
+ },
+ "require-dev": {
+ "symfony/http-kernel": "~2.8|~3.0|~4.0"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "3.4-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Symfony\\Component\\Debug\\": ""
+ },
+ "exclude-from-classmap": [
+ "/Tests/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Fabien Potencier",
+ "email": "fabien@symfony.com"
+ },
+ {
+ "name": "Symfony Community",
+ "homepage": "https://symfony.com/contributors"
+ }
+ ],
+ "description": "Symfony Debug Component",
+ "homepage": "https://symfony.com",
+ "time": "2018-10-02T16:33:53+00:00"
+ },
+ {
+ "name": "symfony/filesystem",
+ "version": "v3.4.17",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/symfony/filesystem.git",
+ "reference": "d69930fc337d767607267d57c20a7403d0a822a4"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/symfony/filesystem/zipball/d69930fc337d767607267d57c20a7403d0a822a4",
+ "reference": "d69930fc337d767607267d57c20a7403d0a822a4",
+ "shasum": ""
+ },
+ "require": {
+ "php": "^5.5.9|>=7.0.8",
+ "symfony/polyfill-ctype": "~1.8"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "3.4-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Symfony\\Component\\Filesystem\\": ""
+ },
+ "exclude-from-classmap": [
+ "/Tests/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Fabien Potencier",
+ "email": "fabien@symfony.com"
+ },
+ {
+ "name": "Symfony Community",
+ "homepage": "https://symfony.com/contributors"
+ }
+ ],
+ "description": "Symfony Filesystem Component",
+ "homepage": "https://symfony.com",
+ "time": "2018-10-02T12:28:39+00:00"
+ },
+ {
+ "name": "symfony/polyfill-ctype",
+ "version": "v1.9.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/symfony/polyfill-ctype.git",
+ "reference": "e3d826245268269cd66f8326bd8bc066687b4a19"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/e3d826245268269cd66f8326bd8bc066687b4a19",
+ "reference": "e3d826245268269cd66f8326bd8bc066687b4a19",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=5.3.3"
+ },
+ "suggest": {
+ "ext-ctype": "For best performance"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "1.9-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Symfony\\Polyfill\\Ctype\\": ""
+ },
+ "files": [
+ "bootstrap.php"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Symfony Community",
+ "homepage": "https://symfony.com/contributors"
+ },
+ {
+ "name": "Gert de Pagter",
+ "email": "BackEndTea@gmail.com"
+ }
+ ],
+ "description": "Symfony polyfill for ctype functions",
+ "homepage": "https://symfony.com",
+ "keywords": [
+ "compatibility",
+ "ctype",
+ "polyfill",
+ "portable"
+ ],
+ "time": "2018-08-06T14:22:27+00:00"
+ },
+ {
+ "name": "symfony/polyfill-mbstring",
+ "version": "v1.9.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/symfony/polyfill-mbstring.git",
+ "reference": "d0cd638f4634c16d8df4508e847f14e9e43168b8"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/d0cd638f4634c16d8df4508e847f14e9e43168b8",
+ "reference": "d0cd638f4634c16d8df4508e847f14e9e43168b8",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=5.3.3"
+ },
+ "suggest": {
+ "ext-mbstring": "For best performance"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "1.9-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Symfony\\Polyfill\\Mbstring\\": ""
+ },
+ "files": [
+ "bootstrap.php"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Nicolas Grekas",
+ "email": "p@tchwork.com"
+ },
+ {
+ "name": "Symfony Community",
+ "homepage": "https://symfony.com/contributors"
+ }
+ ],
+ "description": "Symfony polyfill for the Mbstring extension",
+ "homepage": "https://symfony.com",
+ "keywords": [
+ "compatibility",
+ "mbstring",
+ "polyfill",
+ "portable",
+ "shim"
+ ],
+ "time": "2018-08-06T14:22:27+00:00"
+ },
+ {
+ "name": "symfony/stopwatch",
+ "version": "v3.4.17",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/symfony/stopwatch.git",
+ "reference": "05e52a39de52ba690aebaed462b2bc8a9649f0a4"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/symfony/stopwatch/zipball/05e52a39de52ba690aebaed462b2bc8a9649f0a4",
+ "reference": "05e52a39de52ba690aebaed462b2bc8a9649f0a4",
+ "shasum": ""
+ },
+ "require": {
+ "php": "^5.5.9|>=7.0.8"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "3.4-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Symfony\\Component\\Stopwatch\\": ""
+ },
+ "exclude-from-classmap": [
+ "/Tests/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Fabien Potencier",
+ "email": "fabien@symfony.com"
+ },
+ {
+ "name": "Symfony Community",
+ "homepage": "https://symfony.com/contributors"
+ }
+ ],
+ "description": "Symfony Stopwatch Component",
+ "homepage": "https://symfony.com",
+ "time": "2018-10-02T12:28:39+00:00"
+ },
+ {
+ "name": "symfony/yaml",
+ "version": "v3.4.17",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/symfony/yaml.git",
+ "reference": "640b6c27fed4066d64b64d5903a86043f4a4de7f"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/symfony/yaml/zipball/640b6c27fed4066d64b64d5903a86043f4a4de7f",
+ "reference": "640b6c27fed4066d64b64d5903a86043f4a4de7f",
+ "shasum": ""
+ },
+ "require": {
+ "php": "^5.5.9|>=7.0.8",
+ "symfony/polyfill-ctype": "~1.8"
+ },
+ "conflict": {
+ "symfony/console": "<3.4"
+ },
+ "require-dev": {
+ "symfony/console": "~3.4|~4.0"
+ },
+ "suggest": {
+ "symfony/console": "For validating YAML files using the lint command"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "3.4-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Symfony\\Component\\Yaml\\": ""
+ },
+ "exclude-from-classmap": [
+ "/Tests/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Fabien Potencier",
+ "email": "fabien@symfony.com"
+ },
+ {
+ "name": "Symfony Community",
+ "homepage": "https://symfony.com/contributors"
+ }
+ ],
+ "description": "Symfony Yaml Component",
+ "homepage": "https://symfony.com",
+ "time": "2018-10-02T16:33:53+00:00"
+ },
+ {
+ "name": "theseer/tokenizer",
+ "version": "1.1.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/theseer/tokenizer.git",
+ "reference": "cb2f008f3f05af2893a87208fe6a6c4985483f8b"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/theseer/tokenizer/zipball/cb2f008f3f05af2893a87208fe6a6c4985483f8b",
+ "reference": "cb2f008f3f05af2893a87208fe6a6c4985483f8b",
+ "shasum": ""
+ },
+ "require": {
+ "ext-dom": "*",
+ "ext-tokenizer": "*",
+ "ext-xmlwriter": "*",
+ "php": "^7.0"
+ },
+ "type": "library",
+ "autoload": {
+ "classmap": [
+ "src/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "BSD-3-Clause"
+ ],
+ "authors": [
+ {
+ "name": "Arne Blankerts",
+ "email": "arne@blankerts.de",
+ "role": "Developer"
+ }
+ ],
+ "description": "A small library for converting tokenized PHP source code into XML and potentially other formats",
+ "time": "2017-04-07T12:08:54+00:00"
+ },
+ {
+ "name": "webmozart/assert",
+ "version": "1.3.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/webmozart/assert.git",
+ "reference": "0df1908962e7a3071564e857d86874dad1ef204a"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/webmozart/assert/zipball/0df1908962e7a3071564e857d86874dad1ef204a",
+ "reference": "0df1908962e7a3071564e857d86874dad1ef204a",
+ "shasum": ""
+ },
+ "require": {
+ "php": "^5.3.3 || ^7.0"
+ },
+ "require-dev": {
+ "phpunit/phpunit": "^4.6",
+ "sebastian/version": "^1.0.1"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "1.3-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Webmozart\\Assert\\": "src/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Bernhard Schussek",
+ "email": "bschussek@gmail.com"
+ }
+ ],
+ "description": "Assertions to validate method input/output with nice error messages.",
+ "keywords": [
+ "assert",
+ "check",
+ "validate"
+ ],
+ "time": "2018-01-29T19:49:41+00:00"
+ }
+ ],
+ "aliases": [],
+ "minimum-stability": "stable",
+ "stability-flags": [],
+ "prefer-stable": false,
+ "prefer-lowest": false,
+ "platform": {
+ "php": ">=7.1.0"
+ },
+ "platform-dev": [],
+ "platform-overrides": {
+ "php": "7.1.0"
+ }
+}
diff --git a/phpunit.xml b/phpunit.xml
new file mode 100644
index 0000000..c243b40
--- /dev/null
+++ b/phpunit.xml
@@ -0,0 +1,28 @@
+
+
+
+
+ ./tests
+
+
+
+
+ ./src
+
+ ./src
+
+
+
+
+
+
+
+
diff --git a/src/Application/Runner.php b/src/Application/Runner.php
new file mode 100644
index 0000000..9887caf
--- /dev/null
+++ b/src/Application/Runner.php
@@ -0,0 +1,34 @@
+commandReadWriter = $commandReadWriter;
+ }
+
+ public function runPhpinfocmp(): int
+ {
+ try {
+ $command = $this->commandReadWriter->read();
+
+ $phpinfoPair = $command->fetchInput();
+
+ $command->generateOutput($phpinfoPair);
+
+ return 0;
+ } catch (Exception $exception) {
+ $this->commandReadWriter->displayError($exception);
+
+ return 1;
+ }
+ }
+}
diff --git a/src/ContainerAdapter.php b/src/ContainerAdapter.php
new file mode 100644
index 0000000..32666ee
--- /dev/null
+++ b/src/ContainerAdapter.php
@@ -0,0 +1,15 @@
+newInstance();
+
+ $container->params[CurlHttpRequest::class]['url'] = $container->lazyValue('fetch_url');
+ $container->params[CurlHttpRequest::class]['options'] = $container->lazyValue('fetch_options');
+ $container->params[HttpPhpinfoFetcher::class]['request'] = $container->lazyNew(CurlHttpRequest::class);
+ $container->params[HttpInput::class]['url'] = $container->lazyNew(Url::class, ['value' => $container->lazyValue('input_url')]);
+ $container->setters[HttpInput::class]['setFetcher'] = $container->lazyNew(HttpPhpinfoFetcher::class);
+
+ $container->params[HtmlFilePhpinfoFetcher::class]['path'] = $container->lazyNew(Path::class, ['value' => $container->lazyValue('fetch_path')]);
+ $container->params[HtmlFileInput::class]['path'] = $container->lazyNew(Path::class, ['value' => $container->lazyValue('input_path')]);
+ $container->setters[HtmlFileInput::class]['setFetcher'] = $container->lazyNew(HtmlFilePhpinfoFetcher::class);
+
+ $container->params[TextFilePhpinfoFetcher::class]['path'] = $container->lazyNew(Path::class, ['value' => $container->lazyValue('fetch_path')]);
+ $container->params[TextFileInput::class]['path'] = $container->lazyNew(Path::class, ['value' => $container->lazyValue('input_path')]);
+ $container->setters[TextFileInput::class]['setFetcher'] = $container->lazyNew(TextFilePhpinfoFetcher::class);
+
+ $granularity = new Word();
+ $diff = new Diff($granularity);
+ $outputGenerator = new HtmlConsoleOutputGenerator($diff);
+ $container->setters[HtmlConsoleOutput::class]['setGenerator'] = $outputGenerator;
+
+ return $container;
+ }
+}
diff --git a/src/Domain/Model/AbstractEntity.php b/src/Domain/Model/AbstractEntity.php
new file mode 100644
index 0000000..395cb0d
--- /dev/null
+++ b/src/Domain/Model/AbstractEntity.php
@@ -0,0 +1,8 @@
+inputPair = $inputPair;
+ $this->output = $output;
+ }
+
+ public function fetchInput(): PhpinfoPair
+ {
+ return $this->inputPair->fetch();
+ }
+
+ public function generateOutput(PhpinfoPair $phpinfoPair): void
+ {
+ $this->output->generate($phpinfoPair);
+ }
+}
diff --git a/src/Domain/Model/Command/CommandReadWriterInterface.php b/src/Domain/Model/Command/CommandReadWriterInterface.php
new file mode 100644
index 0000000..f9749d3
--- /dev/null
+++ b/src/Domain/Model/Command/CommandReadWriterInterface.php
@@ -0,0 +1,14 @@
+path = $path;
+ }
+}
diff --git a/src/Domain/Model/Command/Input/AbstractInput.php b/src/Domain/Model/Command/Input/AbstractInput.php
new file mode 100644
index 0000000..bc56adb
--- /dev/null
+++ b/src/Domain/Model/Command/Input/AbstractInput.php
@@ -0,0 +1,41 @@
+mode = $mode;
+ $this->format = $format;
+ }
+
+ public function setFetcher(PhpinfoFetcherInterface $fetcher): void
+ {
+ $this->fetcher = $fetcher;
+ }
+
+ public function fetcher(): PhpinfoFetcherInterface
+ {
+ return $this->fetcher;
+ }
+
+ public function equals($object): bool
+ {
+ return $object == $this;
+ }
+}
diff --git a/src/Domain/Model/Command/Input/AbstractInputFactory.php b/src/Domain/Model/Command/Input/AbstractInputFactory.php
new file mode 100644
index 0000000..abe09c9
--- /dev/null
+++ b/src/Domain/Model/Command/Input/AbstractInputFactory.php
@@ -0,0 +1,39 @@
+phpinfo = $phpinfo;
+ $this->options = $options;
+ }
+}
diff --git a/src/Domain/Model/Command/Input/Format.php b/src/Domain/Model/Command/Input/Format.php
new file mode 100644
index 0000000..8ebff79
--- /dev/null
+++ b/src/Domain/Model/Command/Input/Format.php
@@ -0,0 +1,24 @@
+ 'http',
+ 'text' => 'text',
+ ];
+
+ public function equals($object): bool
+ {
+ return $object == $this;
+ }
+}
diff --git a/src/Domain/Model/Command/Input/HtmlFileInput.php b/src/Domain/Model/Command/Input/HtmlFileInput.php
new file mode 100644
index 0000000..2845220
--- /dev/null
+++ b/src/Domain/Model/Command/Input/HtmlFileInput.php
@@ -0,0 +1,18 @@
+values['input_path'] = $this->phpinfo;
+ $container->values['fetch_path'] = $this->phpinfo;
+ $input = $container->newInstance(HtmlFileInput::class);
+ return $input;
+ }
+}
diff --git a/src/Domain/Model/Command/Input/HttpInput.php b/src/Domain/Model/Command/Input/HttpInput.php
new file mode 100644
index 0000000..da9722d
--- /dev/null
+++ b/src/Domain/Model/Command/Input/HttpInput.php
@@ -0,0 +1,23 @@
+url = $url;
+ }
+}
diff --git a/src/Domain/Model/Command/Input/HttpInputFactory.php b/src/Domain/Model/Command/Input/HttpInputFactory.php
new file mode 100644
index 0000000..a2cea05
--- /dev/null
+++ b/src/Domain/Model/Command/Input/HttpInputFactory.php
@@ -0,0 +1,32 @@
+options['fetch_options'])) {
+ if (!file_exists($this->options['fetch_options'])) {
+ throw new InvalidArgumentException("The file does not exists (got \"{$this->options['fetch_options']}\").");
+ }
+ $fetchOptions = include $this->options['fetch_options'];
+ }
+ $container = ContainerAdapter::getContainer();
+ $container->values['input_url'] = $this->phpinfo;
+ $container->values['fetch_url'] = $this->phpinfo;
+ $container->values['fetch_options'] = $fetchOptions;
+ $input = $container->newInstance(HttpInput::class);
+ return $input;
+ }
+}
diff --git a/src/Domain/Model/Command/Input/InputPair.php b/src/Domain/Model/Command/Input/InputPair.php
new file mode 100644
index 0000000..d346562
--- /dev/null
+++ b/src/Domain/Model/Command/Input/InputPair.php
@@ -0,0 +1,28 @@
+input1 = $input1;
+ $this->input2 = $input2;
+ }
+
+ public function fetch(): PhpinfoPair
+ {
+ $phpinfo1 = $this->input1->fetcher()->fetch();
+ $phpinfo2 = $this->input2->fetcher()->fetch();
+
+ return new PhpinfoPair($phpinfo1, $phpinfo2);
+ }
+}
diff --git a/src/Domain/Model/Command/Input/Mode.php b/src/Domain/Model/Command/Input/Mode.php
new file mode 100644
index 0000000..eeba432
--- /dev/null
+++ b/src/Domain/Model/Command/Input/Mode.php
@@ -0,0 +1,24 @@
+ 'http',
+ 'file' => 'file',
+ ];
+
+ public function equals($object): bool
+ {
+ return $object == $this;
+ }
+}
diff --git a/src/Domain/Model/Command/Input/Path.php b/src/Domain/Model/Command/Input/Path.php
new file mode 100644
index 0000000..9a10206
--- /dev/null
+++ b/src/Domain/Model/Command/Input/Path.php
@@ -0,0 +1,30 @@
+value = $value;
+ }
+
+ public function value(): string
+ {
+ return $this->value;
+ }
+
+ public function equals($object): bool
+ {
+ return $object == $this;
+ }
+}
diff --git a/src/Domain/Model/Command/Input/TextFileInput.php b/src/Domain/Model/Command/Input/TextFileInput.php
new file mode 100644
index 0000000..ee515e3
--- /dev/null
+++ b/src/Domain/Model/Command/Input/TextFileInput.php
@@ -0,0 +1,18 @@
+values['input_path'] = $this->phpinfo;
+ $container->values['fetch_path'] = $this->phpinfo;
+ $input = $container->newInstance(TextFileInput::class);
+ return $input;
+ }
+}
diff --git a/src/Domain/Model/Command/Input/Url.php b/src/Domain/Model/Command/Input/Url.php
new file mode 100644
index 0000000..b976ea2
--- /dev/null
+++ b/src/Domain/Model/Command/Input/Url.php
@@ -0,0 +1,30 @@
+value = $value;
+ }
+
+ public function value(): string
+ {
+ return $this->value;
+ }
+
+ public function equals($object): bool
+ {
+ return $object == $this;
+ }
+}
diff --git a/src/Domain/Model/Command/Output/AbstractOutput.php b/src/Domain/Model/Command/Output/AbstractOutput.php
new file mode 100644
index 0000000..0491a73
--- /dev/null
+++ b/src/Domain/Model/Command/Output/AbstractOutput.php
@@ -0,0 +1,28 @@
+generator = $generator;
+ }
+
+ public function generate(PhpinfoPair $phpinfoPair): void
+ {
+ $this->generator->generate($phpinfoPair);
+ }
+
+ public function equals($object): bool
+ {
+ return $object == $this;
+ }
+}
diff --git a/src/Domain/Model/Command/Output/AbstractOutputFactory.php b/src/Domain/Model/Command/Output/AbstractOutputFactory.php
new file mode 100644
index 0000000..2bb6b2e
--- /dev/null
+++ b/src/Domain/Model/Command/Output/AbstractOutputFactory.php
@@ -0,0 +1,24 @@
+newInstance(HtmlConsoleOutput::class);
+ return $output;
+ }
+}
diff --git a/src/Domain/Model/Command/Output/OutputGeneratorInterface.php b/src/Domain/Model/Command/Output/OutputGeneratorInterface.php
new file mode 100644
index 0000000..ac6d8b4
--- /dev/null
+++ b/src/Domain/Model/Command/Output/OutputGeneratorInterface.php
@@ -0,0 +1,11 @@
+scalar = $value;
+ }
+
+ final public static function isValidValue($value): bool
+ {
+ return in_array($value, self::ENUM, true);
+ }
+
+ final public static function isValidKey(string $key): bool
+ {
+ return array_key_exists($key, self::ENUM);
+ }
+
+ final public static function __callStatic(string $method, array $args)
+ {
+ if (!self::isValidKey($method)) {
+ throw new BadMethodCallException("Undefined static method (method='{$method}')");
+ }
+
+ return new self(self::ENUM[$method]);
+ }
+
+ final public function __toString(): string
+ {
+ return (string) $this->scalar;
+ }
+
+ final public function value()
+ {
+ return $this->scalar;
+ }
+
+ final public function __set($key, $value): void
+ {
+ throw new BadMethodCallException('All setter is forbbiden');
+ }
+}
diff --git a/src/Domain/Model/Phpinfo/Data/Data.php b/src/Domain/Model/Phpinfo/Data/Data.php
new file mode 100644
index 0000000..d2ac297
--- /dev/null
+++ b/src/Domain/Model/Phpinfo/Data/Data.php
@@ -0,0 +1,45 @@
+name();
+ }, $this->data);
+ }
+
+ public function get(Name $name): ?Datum
+ {
+ $data = array_filter($this->data, function (Datum $datum) use ($name) {
+ return $datum->name()->equals($name);
+ });
+ return array_shift($data);
+ }
+
+ public function equals($object): bool
+ {
+ return $object == $this;
+ }
+
+ private function addDatum(Datum $datum): void
+ {
+ $this->data[] = $datum;
+ }
+}
diff --git a/src/Domain/Model/Phpinfo/Data/DataFactory.php b/src/Domain/Model/Phpinfo/Data/DataFactory.php
new file mode 100644
index 0000000..7d7f591
--- /dev/null
+++ b/src/Domain/Model/Phpinfo/Data/DataFactory.php
@@ -0,0 +1,14 @@
+parse();
+ }
+}
diff --git a/src/Domain/Model/Phpinfo/Data/Datum.php b/src/Domain/Model/Phpinfo/Data/Datum.php
new file mode 100644
index 0000000..7194ecd
--- /dev/null
+++ b/src/Domain/Model/Phpinfo/Data/Datum.php
@@ -0,0 +1,38 @@
+name = $name;
+ $this->value = $value;
+ }
+
+ public function name(): Name
+ {
+ return $this->name;
+ }
+
+ public function value(): Value
+ {
+ return $this->value;
+ }
+
+ public function equals($object): bool
+ {
+ return $object == $this;
+ }
+}
diff --git a/src/Domain/Model/Phpinfo/Data/Name.php b/src/Domain/Model/Phpinfo/Data/Name.php
new file mode 100644
index 0000000..53d55c9
--- /dev/null
+++ b/src/Domain/Model/Phpinfo/Data/Name.php
@@ -0,0 +1,36 @@
+value = $value;
+ }
+
+ public function value(): string
+ {
+ return $this->value;
+ }
+
+ public function toHtml(): string
+ {
+ return '' . htmlentities($this->value, ENT_QUOTES) . '
';
+ }
+
+ public function equals($object): bool
+ {
+ return $object == $this;
+ }
+}
diff --git a/src/Domain/Model/Phpinfo/Data/Value.php b/src/Domain/Model/Phpinfo/Data/Value.php
new file mode 100644
index 0000000..c90a115
--- /dev/null
+++ b/src/Domain/Model/Phpinfo/Data/Value.php
@@ -0,0 +1,52 @@
+value;
+ }
+
+ public function toHtml(string $label): string
+ {
+ return $label . ': ' . htmlentities($this->value, ENT_QUOTES) . '
';
+ }
+
+ public function equals($object): bool
+ {
+ return $object == $this;
+ }
+
+ private function __construct(string $value)
+ {
+ $this->value = $value;
+ }
+}
diff --git a/src/Domain/Model/Phpinfo/HtmlPhpinfoParser.php b/src/Domain/Model/Phpinfo/HtmlPhpinfoParser.php
new file mode 100644
index 0000000..13dbf59
--- /dev/null
+++ b/src/Domain/Model/Phpinfo/HtmlPhpinfoParser.php
@@ -0,0 +1,39 @@
+html = $html;
+ }
+
+ public function parse(): Data
+ {
+ $data = [];
+ $matches = [];
+ if (preg_match_all('/
(.*?)<\/td> | (.*?)<\/td>(:? | (.*?)<\/td>)?<\/tr>/', $this->html, $matches, PREG_SET_ORDER)) {
+ foreach ($matches as $match) {
+ $name = trim($match[1]);
+ $value = trim($match[2]);
+ $value = strip_tags($value);
+ $data[] = new Datum(
+ Name::createFromHtml($name),
+ Value::createFromHtml($value)
+ );
+ }
+ }
+ return new Data($data);
+ }
+}
diff --git a/src/Domain/Model/Phpinfo/Phpinfo.php b/src/Domain/Model/Phpinfo/Phpinfo.php
new file mode 100644
index 0000000..d6ac284
--- /dev/null
+++ b/src/Domain/Model/Phpinfo/Phpinfo.php
@@ -0,0 +1,44 @@
+name = $name;
+ $this->data = $data;
+ }
+
+ public function name(): PhpinfoName
+ {
+ return $this->name;
+ }
+
+ public function data(): Data
+ {
+ return $this->data;
+ }
+
+ public function equals($object): bool
+ {
+ $equalObjects = false;
+
+ if (!is_null($object) && $object instanceof self) {
+ $equalObjects = $this->name()->equals($object->name());
+ }
+
+ return $equalObjects;
+ }
+}
diff --git a/src/Domain/Model/Phpinfo/PhpinfoFactory.php b/src/Domain/Model/Phpinfo/PhpinfoFactory.php
new file mode 100644
index 0000000..79e6c7e
--- /dev/null
+++ b/src/Domain/Model/Phpinfo/PhpinfoFactory.php
@@ -0,0 +1,21 @@
+value = $value;
+ }
+
+ public function value(): string
+ {
+ return $this->value;
+ }
+
+ public function equals($object): bool
+ {
+ return $object == $this;
+ }
+}
diff --git a/src/Domain/Model/Phpinfo/PhpinfoPair.php b/src/Domain/Model/Phpinfo/PhpinfoPair.php
new file mode 100644
index 0000000..dd6e418
--- /dev/null
+++ b/src/Domain/Model/Phpinfo/PhpinfoPair.php
@@ -0,0 +1,62 @@
+phpinfo1 = $phpinfo1;
+ $this->phpinfo2 = $phpinfo2;
+ }
+
+ public function toPhpinfoNamesHtml(): string
+ {
+ return '' . $this->phpinfo1->name()->value() . ' and ' . $this->phpinfo2->name()->value() . '';
+ }
+
+ public function toDiffHtml(Diff $diff): string
+ {
+ $out = '';
+ foreach ($this->uniqueNames() as $name) {
+ $datum1 = $this->phpinfo1->data()->get($name);
+ $datum2 = $this->phpinfo2->data()->get($name);
+ $value1 = is_null($datum1) ? Value::createEmpty() : $datum1->value();
+ $value2 = is_null($datum2) ? Value::createEmpty() : $datum2->value();
+ $out .= $name->toHtml() . PHP_EOL;
+ $out .= $value1->toHtml('value1') . PHP_EOL;
+ $out .= $value2->toHtml('value2') . PHP_EOL;
+ if (!$value1->equals($value2)) {
+ $out .= 'diff ' . PHP_EOL;
+ $out .= $diff->render($value1->value(), $value2->value()) . ' ' . PHP_EOL;
+ }
+ $out .= ' ' . PHP_EOL;
+ }
+ return $out;
+ }
+
+ public function uniqueNames(): array
+ {
+ $nameHash = [];
+ foreach ([$this->phpinfo1->data()->names(), $this->phpinfo2->data()->names()] as $names) {
+ foreach ($names as $name) {
+ $nameHash[$name->value()] = null;
+ }
+ }
+ return array_map(function (string $name) {
+ return new Name($name);
+ }, array_keys($nameHash));
+ }
+}
diff --git a/src/Domain/Model/Phpinfo/PhpinfoParserInterface.php b/src/Domain/Model/Phpinfo/PhpinfoParserInterface.php
new file mode 100644
index 0000000..f5d01b4
--- /dev/null
+++ b/src/Domain/Model/Phpinfo/PhpinfoParserInterface.php
@@ -0,0 +1,11 @@
+text = $text;
+ }
+
+ public function parse(): Data
+ {
+ $data = [];
+ $matches = [];
+ if (preg_match_all('/(.*)=>(.*)/', $this->text, $matches, PREG_SET_ORDER)) {
+ foreach ($matches as $match) {
+ $name = trim($match[1]);
+ $value = trim($match[2]);
+ $value = strip_tags($value);
+ if (preg_match('/(.*)=>(.*)/', $name, $matches2)) {
+ $name = trim($matches2[1]);
+ }
+ if (preg_match('/^\$_SERVER\[\'(.*)\']/', $name, $matches2)) {
+ $name = '_SERVER["'. $matches2[1] . '"]';
+ }
+ $data[] = new Datum(
+ new Name($name),
+ Value::createFromText($value)
+ );
+ }
+ }
+ return new Data($data);
+ }
+}
diff --git a/src/Infrastructure/ConsoleCommandLineCommandReadWriter.php b/src/Infrastructure/ConsoleCommandLineCommandReadWriter.php
new file mode 100644
index 0000000..060d708
--- /dev/null
+++ b/src/Infrastructure/ConsoleCommandLineCommandReadWriter.php
@@ -0,0 +1,61 @@
+parser = $parser;
+ }
+
+ public function read(): Command
+ {
+ $result = $this->parser->parse();
+
+ $inputFactory1 = AbstractInputFactory::createFactory(
+ $result->args['phpinfo1'],
+ [
+ 'fetch_mode' => $result->options['fetch_mode1'],
+ 'fetch_options' => $result->options['fetch_options1'],
+ 'file_format' => $result->options['file_format1'],
+ ]
+ );
+ $inputFactory2 = AbstractInputFactory::createFactory(
+ $result->args['phpinfo2'],
+ [
+ 'fetch_mode' => $result->options['fetch_mode2'],
+ 'fetch_options' => $result->options['fetch_options2'],
+ 'file_format' => $result->options['file_format2'],
+ ]
+ );
+ $input1 = $inputFactory1->createInput();
+ $input2 = $inputFactory2->createInput();
+ $inputPair = new InputPair($input1, $input2);
+
+ $outputFactory = AbstractOutputFactory::createFactory('html');
+ $output = $outputFactory->createOutput();
+
+ return new Command($inputPair, $output);
+ }
+
+ public function displayError(Exception $exception): void
+ {
+ $this->parser->displayError($exception->getMessage(), false);
+ }
+}
diff --git a/src/Infrastructure/ConsoleCommandLineParserFactory.php b/src/Infrastructure/ConsoleCommandLineParserFactory.php
new file mode 100644
index 0000000..fe3751a
--- /dev/null
+++ b/src/Infrastructure/ConsoleCommandLineParserFactory.php
@@ -0,0 +1,67 @@
+ 'phpinfo comparator',
+ 'version' => '0.1.0',
+ ]);
+
+ $parser->addOption('fetch_mode1', [
+ 'long_name' => '--fetch-mode1',
+ 'action' => 'StoreString',
+ 'default' => 'http',
+ 'choices' => ['http', 'file'],
+ 'description' => 'Uses either the "http" or "file" fetcher for phpinfo1 (uses the "http" fetcher by default)',
+ ]);
+ $parser->addOption('fetch_mode2', [
+ 'long_name' => '--fetch-mode2',
+ 'action' => 'StoreString',
+ 'default' => 'http',
+ 'choices' => ['http', 'file'],
+ 'description' => 'Uses either the "http" or "file" fetcher for phpinfo2 (uses the "http" fetcher by default)',
+ ]);
+
+ $parser->addOption('file_format1', [
+ 'long_name' => '--file-format1',
+ 'action' => 'StoreString',
+ 'default' => 'html',
+ 'choices' => ['html', 'text'],
+ 'description' => 'Specify whether file format is the "html" or "text" for phpinfo1 (works only when using the "file" fetcher for phpinfo1, specify the "html" file format by default)',
+ ]);
+ $parser->addOption('file_format2', [
+ 'long_name' => '--file-format2',
+ 'action' => 'StoreString',
+ 'default' => 'html',
+ 'choices' => ['html', 'text'],
+ 'description' => 'Specify whether file format is the "html" or "text" for phpinfo2 (works only when using the "file" fetcher for phpinfo2, specify the "html" file format by default)',
+ ]);
+
+ $parser->addOption('fetch_options1', [
+ 'long_name' => '--fetch-options1',
+ 'action' => 'StoreString',
+ 'description' => 'Read fetch options from a specified PHP file for phpinfo1 (works only when using the "http" fetcher for phpinfo1)',
+ ]);
+ $parser->addOption('fetch_options2', [
+ 'long_name' => '--fetch-options2',
+ 'action' => 'StoreString',
+ 'description' => 'Read fetch options from a specified PHP file for phpinfo2 (works only when using the "http" fetcher for phpinfo2)',
+ ]);
+
+ $parser->addArgument('phpinfo1', [
+ 'description' => 'The URL or path of the phpinfo() file to compare',
+ ]);
+ $parser->addArgument('phpinfo2', [
+ 'description' => 'The URL or path of the phpinfo() file to compare',
+ ]);
+
+ return $parser;
+ }
+}
diff --git a/src/Infrastructure/HtmlConsoleOutputGenerator.php b/src/Infrastructure/HtmlConsoleOutputGenerator.php
new file mode 100644
index 0000000..43b1c09
--- /dev/null
+++ b/src/Infrastructure/HtmlConsoleOutputGenerator.php
@@ -0,0 +1,67 @@
+diff = $diff;
+ }
+
+ public function generate(PhpinfoPair $phpinfoPair): void
+ {
+ ob_start();
+ $this->printHeader($phpinfoPair);
+
+ echo $phpinfoPair->toDiffHtml($this->diff);
+
+ $this->printFooter();
+
+ $content = ob_get_contents();
+ ob_end_clean();
+
+ echo $content;
+ }
+
+ private function printHeader(PhpinfoPair $phpinfoPair): void
+ {
+ echo <<
+
+
+PhpinfoComparator
+
+
+
+Compare Two phpinfo() Files
+Comparison between {$phpinfoPair->toPhpinfoNamesHtml()}
+side-by-side comparison
+HTML;
+ }
+
+ private function printFooter()
+ {
+ echo <<
+
+HTML;
+ }
+}
diff --git a/src/Infrastructure/HtmlFilePhpinfoFetcher.php b/src/Infrastructure/HtmlFilePhpinfoFetcher.php
new file mode 100644
index 0000000..f64181c
--- /dev/null
+++ b/src/Infrastructure/HtmlFilePhpinfoFetcher.php
@@ -0,0 +1,32 @@
+path = $path;
+ }
+
+ public function fetch(): Phpinfo
+ {
+ $html = file_get_contents($this->path->value());
+
+ return PhpinfoFactory::create(
+ $this->path->value(),
+ new HtmlPhpinfoParser($html)
+ );
+ }
+}
diff --git a/src/Infrastructure/HttpPhpinfoFetcher.php b/src/Infrastructure/HttpPhpinfoFetcher.php
new file mode 100644
index 0000000..7257d42
--- /dev/null
+++ b/src/Infrastructure/HttpPhpinfoFetcher.php
@@ -0,0 +1,44 @@
+request = $request;
+ }
+
+ public function fetch(): Phpinfo
+ {
+ $body = $this->request->execute();
+ $info = $this->request->getInfo();
+
+ $error = $this->request->getError();
+ $errno = $this->request->getErrorCode();
+
+ $this->request->close();
+
+ if (!is_null($error)) {
+ throw new RuntimeException($error, $errno);
+ }
+
+ return PhpinfoFactory::create(
+ $info['url'],
+ new HtmlPhpinfoParser($body)
+ );
+ }
+}
diff --git a/src/Infrastructure/Library/Http/CurlHttpRequest.php b/src/Infrastructure/Library/Http/CurlHttpRequest.php
new file mode 100644
index 0000000..6d7565e
--- /dev/null
+++ b/src/Infrastructure/Library/Http/CurlHttpRequest.php
@@ -0,0 +1,55 @@
+handler = curl_init($url);
+ $this->setOption(CURLOPT_HEADER, 0);
+ $this->setOption(CURLOPT_RETURNTRANSFER, 1);
+ foreach ($options as $name => $value) {
+ $this->setOption($name, $value);
+ }
+ }
+
+ public function setOption($name, $value): void
+ {
+ curl_setopt($this->handler, $name, $value);
+ }
+
+ public function execute(): ?string
+ {
+ $body = curl_exec($this->handler);
+ return $body === false ? null : $body;
+ }
+
+ public function getInfo(): array
+ {
+ $info = curl_getinfo($this->handler);
+ return $info === false ? [] : $info;
+ }
+
+ public function getError(): ?string
+ {
+ $error = curl_error($this->handler);
+ return empty($error) ? null : $error;
+ }
+
+ public function getErrorCode(): ?int
+ {
+ $errorCode = curl_errno($this->handler);
+ return $errorCode === false || $errorCode === 0 ? null : $errorCode;
+ }
+
+ public function close(): void
+ {
+ curl_close($this->handler);
+ }
+}
diff --git a/src/Infrastructure/Library/Http/HttpRequestInterface.php b/src/Infrastructure/Library/Http/HttpRequestInterface.php
new file mode 100644
index 0000000..6ff0462
--- /dev/null
+++ b/src/Infrastructure/Library/Http/HttpRequestInterface.php
@@ -0,0 +1,19 @@
+path = $path;
+ }
+
+ public function fetch(): Phpinfo
+ {
+ $text = file_get_contents($this->path->value());
+
+ return PhpinfoFactory::create(
+ $this->path->value(),
+ new TextPhpinfoParser($text)
+ );
+ }
+}
diff --git a/tests/Application/RunnerTest.php b/tests/Application/RunnerTest.php
new file mode 100644
index 0000000..04c6a8e
--- /dev/null
+++ b/tests/Application/RunnerTest.php
@@ -0,0 +1,199 @@
+params[HttpPhpinfoFetcher::class]['request'] = $this->createHttpRequest([
+ 'request_url' => $phpinfo1,
+ 'response_body' => file_get_contents($this->testDataDir . '/phpinfo1.html'),
+ ]);
+ $container2 = ContainerFactory::create();
+ $container2->params[HttpPhpinfoFetcher::class]['request'] = $this->createHttpRequest([
+ 'request_url' => $phpinfo2,
+ 'response_body' => file_get_contents($this->testDataDir . '/phpinfo2.html'),
+ ]);
+ $applicationManager = Mockery::mock('alias:' . ContainerAdapter::class);
+ $applicationManager->shouldReceive('getContainer')->andReturn($container1, $container2);
+
+ $consoleCommandLineResult = Mockery::mock(Console_CommandLine_Result::class);
+ $consoleCommandLineResult->args['phpinfo1'] = $phpinfo1;
+ $consoleCommandLineResult->options['fetch_mode1'] = 'http';
+ $consoleCommandLineResult->options['fetch_options1'] = null;
+ $consoleCommandLineResult->options['file_format1'] = 'html';
+ $consoleCommandLineResult->args['phpinfo2'] = $phpinfo2;
+ $consoleCommandLineResult->options['fetch_mode2'] = 'http';
+ $consoleCommandLineResult->options['fetch_options2'] = null;
+ $consoleCommandLineResult->options['file_format2'] = 'html';
+
+ $runner = $this->createNormalEndRunner($consoleCommandLineResult);
+
+ $actualResult = $runner->runPhpinfocmp();
+
+ $this->assertEquals($expectedResult, $actualResult);
+ }
+
+ /**
+ * @test
+ */
+ public function Should_NormalEnd_When_CompareTwoHtmlPhpinfoFilesOnTheLocalMachine()
+ {
+ $expectedResult = 0;
+
+ $consoleCommandLineResult = Mockery::mock(Console_CommandLine_Result::class);
+ $consoleCommandLineResult->args['phpinfo1'] = $this->testDataDir . '/phpinfo1.html';
+ $consoleCommandLineResult->options['fetch_mode1'] = 'file';
+ $consoleCommandLineResult->options['fetch_options1'] = null;
+ $consoleCommandLineResult->options['file_format1'] = 'html';
+ $consoleCommandLineResult->args['phpinfo2'] = $this->testDataDir . '/phpinfo2.html';
+ $consoleCommandLineResult->options['fetch_mode2'] = 'file';
+ $consoleCommandLineResult->options['fetch_options2'] = null;
+ $consoleCommandLineResult->options['file_format2'] = 'html';
+
+ $runner = $this->createNormalEndRunner($consoleCommandLineResult);
+
+ $actualResult = $runner->runPhpinfocmp();
+
+ $this->assertEquals($expectedResult, $actualResult);
+ }
+
+ /**
+ * @test
+ */
+ public function Should_NormalEnd_When_CompareTwoTextPhpinfoFilesOnTheLocalMachine()
+ {
+ $expectedResult = 0;
+
+ $consoleCommandLineResult = Mockery::mock(Console_CommandLine_Result::class);
+ $consoleCommandLineResult->args['phpinfo1'] = $this->testDataDir . '/phpinfo1.txt';
+ $consoleCommandLineResult->options['fetch_mode1'] = 'file';
+ $consoleCommandLineResult->options['fetch_options1'] = null;
+ $consoleCommandLineResult->options['file_format1'] = 'text';
+ $consoleCommandLineResult->args['phpinfo2'] = $this->testDataDir . '/phpinfo2.txt';
+ $consoleCommandLineResult->options['fetch_mode2'] = 'file';
+ $consoleCommandLineResult->options['fetch_options2'] = null;
+ $consoleCommandLineResult->options['file_format2'] = 'text';
+
+ $runner = $this->createNormalEndRunner($consoleCommandLineResult);
+
+ $actualResult = $runner->runPhpinfocmp();
+
+ $this->assertEquals($expectedResult, $actualResult);
+ }
+
+ /**
+ * @test
+ */
+ public function Should_AbnormalEnd_When_AnExceptionIsThrown()
+ {
+ $expectedResult = 1;
+
+ $consoleCommandLineResult = Mockery::mock(Console_CommandLine_Result::class);
+ $consoleCommandLineResult->args['phpinfo1'] = 'https://127.0.0.1/phpinfo1';
+ $consoleCommandLineResult->options['fetch_mode1'] = 'http';
+ $consoleCommandLineResult->options['fetch_options1'] = null;
+ $consoleCommandLineResult->options['file_format1'] = 'html';
+ $consoleCommandLineResult->args['phpinfo2'] = 'https://127.0.0.1/phpinfo2';
+ $consoleCommandLineResult->options['fetch_mode2'] = 'http';
+ $consoleCommandLineResult->options['fetch_options2'] = null;
+ $consoleCommandLineResult->options['file_format2'] = 'html';
+
+ $runner = $this->createAbnormalEndRunner();
+
+ $actualResult = $runner->runPhpinfocmp();
+
+ $this->assertEquals($expectedResult, $actualResult);
+ }
+
+ private function createNormalEndRunner(Console_CommandLine_Result $consoleCommandLineResult): Runner
+ {
+ $consoleCommandLineParser = Mockery::mock(Console_CommandLine::class);
+ $consoleCommandLineParser->shouldReceive('parse')->andReturn($consoleCommandLineResult);
+ $commandReadWriter = new ConsoleCommandLineCommandReadWriter($consoleCommandLineParser);
+ $runner = new Runner($commandReadWriter);
+ return $runner;
+ }
+
+ private function createAbnormalEndRunner(): Runner
+ {
+ $exception = new Exception();
+ $consoleCommandLineParser = Mockery::mock(Console_CommandLine::class);
+ $consoleCommandLineParser->shouldReceive('parse')->andThrow($exception);
+ $consoleCommandLineParser->shouldReceive('displayError')->with($exception->getMessage(), false);
+ $commandReadWriter = new ConsoleCommandLineCommandReadWriter($consoleCommandLineParser);
+ $runner = new Runner($commandReadWriter);
+ return $runner;
+ }
+
+ private function createHttpRequest(array $params): HttpRequestInterface
+ {
+ return new class($params['request_url'], $params['response_body']) implements HttpRequestInterface {
+ private $requestUrl;
+
+ private $responseBody;
+
+ public function __construct(string $requestUrl, string $responseBody)
+ {
+ $this->requestUrl = $requestUrl;
+ $this->responseBody = $responseBody;
+ }
+
+ public function setOption($name, $value): void
+ {
+ }
+
+ public function execute(): ?string
+ {
+ return $this->responseBody;
+ }
+
+ public function getInfo(): array
+ {
+ return ['url' => $this->requestUrl];
+ }
+
+ public function getError(): ?string
+ {
+ return null;
+ }
+
+ public function getErrorCode(): ?int
+ {
+ return null;
+ }
+
+ public function close(): void
+ {
+ }
+ };
+ }
+}
diff --git a/tests/TestCase.php b/tests/TestCase.php
new file mode 100644
index 0000000..7731c97
--- /dev/null
+++ b/tests/TestCase.php
@@ -0,0 +1,17 @@
+
+
+
+phpinfo()
+
+
+
+ PHP Version 7.2.12
+ |
+
+
+System | Linux server1-df84845d-5jr7m 4.9.125-linuxkit #1 SMP Fri Sep 7 08:20:28 UTC 2018 x86_64 |
+Build Date | Nov 16 2018 04:03:42 |
+Configure Command | './configure' '--build=x86_64-linux-musl' '--with-config-file-path=/usr/local/etc/php' '--with-config-file-scan-dir=/usr/local/etc/php/conf.d' '--enable-option-checking=fatal' '--with-mhash' '--enable-ftp' '--enable-mbstring' '--enable-mysqlnd' '--with-password-argon2' '--with-sodium=shared' '--with-curl' '--with-libedit' '--with-openssl' '--with-zlib' '--enable-fpm' '--with-fpm-user=www-data' '--with-fpm-group=www-data' '--disable-cgi' 'build_alias=x86_64-linux-musl' |
+Server API | FPM/FastCGI |
+Virtual Directory Support | disabled |
+Configuration File (php.ini) Path | /usr/local/etc/php |
+Loaded Configuration File | (none) |
+Scan this dir for additional .ini files | /usr/local/etc/php/conf.d |
+Additional .ini files parsed | /usr/local/etc/php/conf.d/docker-php-ext-sodium.ini
+ |
+PHP API | 20170718 |
+PHP Extension | 20170718 |
+Zend Extension | 320170718 |
+Zend Extension Build | API320170718,NTS |
+PHP Extension Build | API20170718,NTS |
+Debug Build | no |
+Thread Safety | disabled |
+Zend Signal Handling | enabled |
+Zend Memory Manager | enabled |
+Zend Multibyte Support | provided by mbstring |
+IPv6 Support | enabled |
+DTrace Support | disabled |
+Registered PHP Streams | https, ftps, compress.zlib, php, file, glob, data, http, ftp, phar |
+Registered Stream Socket Transports | tcp, udp, unix, udg, ssl, tls, tlsv1.0, tlsv1.1, tlsv1.2 |
+Registered Stream Filters | zlib.*, convert.iconv.*, string.rot13, string.toupper, string.tolower, string.strip_tags, convert.*, consumed, dechunk |
+
+
+
+
+This program makes use of the Zend Scripting Language Engine: Zend Engine v3.2.0, Copyright (c) 1998-2018 Zend Technologies
|
+
+
+ Configuration
+
+
+
+Directive | Local Value | Master Value |
+cgi.discard_path | 0 | 0 |
+cgi.fix_pathinfo | 1 | 1 |
+cgi.force_redirect | 1 | 1 |
+cgi.nph | 0 | 0 |
+cgi.redirect_status_env | no value | no value |
+cgi.rfc2616_headers | 0 | 0 |
+fastcgi.error_header | no value | no value |
+fastcgi.logging | 1 | 1 |
+fpm.config | no value | no value |
+
+
+
+
+Directive | Local Value | Master Value |
+allow_url_fopen | On | On |
+allow_url_include | Off | Off |
+arg_separator.input | & | & |
+arg_separator.output | & | & |
+auto_append_file | no value | no value |
+auto_globals_jit | On | On |
+auto_prepend_file | no value | no value |
+browscap | no value | no value |
+default_charset | UTF-8 | UTF-8 |
+default_mimetype | text/html | text/html |
+disable_classes | no value | no value |
+disable_functions | no value | no value |
+display_errors | On | On |
+display_startup_errors | Off | Off |
+doc_root | no value | no value |
+docref_ext | no value | no value |
+docref_root | no value | no value |
+enable_dl | On | On |
+enable_post_data_reading | On | On |
+error_append_string | no value | no value |
+error_log | no value | no value |
+error_prepend_string | no value | no value |
+error_reporting | no value | no value |
+expose_php | On | On |
+extension_dir | /usr/local/lib/php/extensions/no-debug-non-zts-20170718 | /usr/local/lib/php/extensions/no-debug-non-zts-20170718 |
+file_uploads | On | On |
+hard_timeout | 2 | 2 |
+highlight.comment | #FF8000 | #FF8000 |
+highlight.default | #0000BB | #0000BB |
+highlight.html | #000000 | #000000 |
+highlight.keyword | #007700 | #007700 |
+highlight.string | #DD0000 | #DD0000 |
+html_errors | On | On |
+ignore_repeated_errors | Off | Off |
+ignore_repeated_source | Off | Off |
+ignore_user_abort | Off | Off |
+implicit_flush | Off | Off |
+include_path | .:/usr/local/lib/php | .:/usr/local/lib/php |
+input_encoding | no value | no value |
+internal_encoding | no value | no value |
+log_errors | Off | Off |
+log_errors_max_len | 1024 | 1024 |
+mail.add_x_header | Off | Off |
+mail.force_extra_parameters | no value | no value |
+mail.log | no value | no value |
+max_execution_time | 30 | 30 |
+max_file_uploads | 20 | 20 |
+max_input_nesting_level | 64 | 64 |
+max_input_time | -1 | -1 |
+max_input_vars | 1000 | 1000 |
+memory_limit | 128M | 128M |
+open_basedir | no value | no value |
+output_buffering | 0 | 0 |
+output_encoding | no value | no value |
+output_handler | no value | no value |
+post_max_size | 8M | 8M |
+precision | 14 | 14 |
+realpath_cache_size | 4096K | 4096K |
+realpath_cache_ttl | 120 | 120 |
+register_argc_argv | On | On |
+report_memleaks | On | On |
+report_zend_debug | On | On |
+request_order | no value | no value |
+sendmail_from | no value | no value |
+sendmail_path | /usr/sbin/sendmail -t -i | /usr/sbin/sendmail -t -i |
+serialize_precision | -1 | -1 |
+short_open_tag | On | On |
+SMTP | localhost | localhost |
+smtp_port | 25 | 25 |
+sys_temp_dir | no value | no value |
+track_errors | Off | Off |
+unserialize_callback_func | no value | no value |
+upload_max_filesize | 2M | 2M |
+upload_tmp_dir | no value | no value |
+user_dir | no value | no value |
+user_ini.cache_ttl | 300 | 300 |
+user_ini.filename | .user.ini | .user.ini |
+variables_order | EGPCS | EGPCS |
+xmlrpc_error_number | 0 | 0 |
+xmlrpc_errors | Off | Off |
+zend.assertions | 1 | 1 |
+zend.detect_unicode | On | On |
+zend.enable_gc | On | On |
+zend.multibyte | Off | Off |
+zend.script_encoding | no value | no value |
+zend.signal_check | Off | Off |
+
+
+
+ctype functions | enabled |
+
+
+
+cURL support | enabled |
+cURL Information | 7.61.1 |
+Age | 4 |
+Features |
+AsynchDNS | Yes |
+CharConv | No |
+Debug | No |
+GSS-Negotiate | No |
+IDN | No |
+IPv6 | Yes |
+krb4 | No |
+Largefile | Yes |
+libz | Yes |
+NTLM | Yes |
+NTLMWB | Yes |
+SPNEGO | No |
+SSL | Yes |
+SSPI | No |
+TLS-SRP | No |
+HTTP2 | Yes |
+GSSAPI | No |
+KERBEROS5 | No |
+UNIX_SOCKETS | Yes |
+PSL | No |
+Protocols | dict, file, ftp, ftps, gopher, http, https, imap, imaps, pop3, pop3s, rtsp, scp, sftp, smb, smbs, smtp, smtps, telnet, tftp |
+Host | x86_64-alpine-linux-musl |
+SSL Version | LibreSSL/2.0.0 |
+ZLib Version | 1.2.11 |
+libSSH Version | libssh2/1.8.0 |
+
+
+
+date/time support | enabled |
+timelib version | 2017.08 |
+"Olson" Timezone Database Version | 2018.6 |
+Timezone Database | internal |
+Default timezone | UTC |
+
+
+Directive | Local Value | Master Value |
+date.default_latitude | 31.7667 | 31.7667 |
+date.default_longitude | 35.2333 | 35.2333 |
+date.sunrise_zenith | 90.583333 | 90.583333 |
+date.sunset_zenith | 90.583333 | 90.583333 |
+date.timezone | no value | no value |
+
+
+
+DOM/XML | enabled |
+DOM/XML API Version | 20031129 |
+libxml Version | 2.9.8 |
+HTML Support | enabled |
+XPath Support | enabled |
+XPointer Support | enabled |
+Schema Support | enabled |
+RelaxNG Support | enabled |
+
+
+
+fileinfo support | enabled |
+version | 1.0.5 |
+libmagic | 531 |
+
+
+
+Input Validation and Filtering | enabled |
+Revision | $Id: 5a34caaa246b9df197f4b43af8ac66a07464fe4b $ |
+
+
+Directive | Local Value | Master Value |
+filter.default | unsafe_raw | unsafe_raw |
+filter.default_flags | no value | no value |
+
+
+
+FTP support | enabled |
+FTPS support | enabled |
+
+
+
+hash support | enabled |
+Hashing Engines | md2 md4 md5 sha1 sha224 sha256 sha384 sha512/224 sha512/256 sha512 sha3-224 sha3-256 sha3-384 sha3-512 ripemd128 ripemd160 ripemd256 ripemd320 whirlpool tiger128,3 tiger160,3 tiger192,3 tiger128,4 tiger160,4 tiger192,4 snefru snefru256 gost gost-crypto adler32 crc32 crc32b fnv132 fnv1a32 fnv164 fnv1a64 joaat haval128,3 haval160,3 haval192,3 haval224,3 haval256,3 haval128,4 haval160,4 haval192,4 haval224,4 haval256,4 haval128,5 haval160,5 haval192,5 haval224,5 haval256,5 |
+
+
+MHASH support | Enabled |
+MHASH API Version | Emulated Support |
+
+
+
+iconv support | enabled |
+iconv implementation | unknown |
+iconv library version | unknown |
+
+
+Directive | Local Value | Master Value |
+iconv.input_encoding | no value | no value |
+iconv.internal_encoding | no value | no value |
+iconv.output_encoding | no value | no value |
+
+
+
+json support | enabled |
+json version | 1.6.0 |
+
+
+
+libXML support | active |
+libXML Compiled Version | 2.9.8 |
+libXML Loaded Version | 20908 |
+libXML streams | enabled |
+
+
+
+Multibyte Support | enabled |
+Multibyte string engine | libmbfl |
+HTTP input encoding translation | disabled |
+libmbfl version | 1.3.2 |
+oniguruma version | 6.3.0 |
+
+
+mbstring extension makes use of "streamable kanji code filter and converter", which is distributed under the GNU Lesser General Public License version 2.1. |
+
+
+Multibyte (japanese) regex support | enabled |
+Multibyte regex (oniguruma) backtrack check | On |
+Multibyte regex (oniguruma) version | 6.3.0 |
+
+
+Directive | Local Value | Master Value |
+mbstring.detect_order | no value | no value |
+mbstring.encoding_translation | Off | Off |
+mbstring.func_overload | 0 | 0 |
+mbstring.http_input | no value | no value |
+mbstring.http_output | no value | no value |
+mbstring.http_output_conv_mimetypes | ^(text/|application/xhtml\+xml) | ^(text/|application/xhtml\+xml) |
+mbstring.internal_encoding | no value | no value |
+mbstring.language | neutral | neutral |
+mbstring.strict_detection | Off | Off |
+mbstring.substitute_character | no value | no value |
+
+
+
+mysqlnd | enabled |
+Version | mysqlnd 5.0.12-dev - 20150407 - $Id: 38fea24f2847fa7519001be390c98ae0acafe387 $ |
+Compression | supported |
+core SSL | supported |
+extended SSL | supported |
+Command buffer size | 4096 |
+Read buffer size | 32768 |
+Read timeout | 86400 |
+Collecting statistics | Yes |
+Collecting memory statistics | No |
+Tracing | n/a |
+Loaded plugins | mysqlnd,debug_trace,auth_plugin_mysql_native_password,auth_plugin_mysql_clear_password,auth_plugin_sha256_password |
+API Extensions | no value |
+
+
+mysqlnd statistics | |
+bytes_sent | 0 |
+bytes_received | 0 |
+packets_sent | 0 |
+packets_received | 0 |
+protocol_overhead_in | 0 |
+protocol_overhead_out | 0 |
+bytes_received_ok_packet | 0 |
+bytes_received_eof_packet | 0 |
+bytes_received_rset_header_packet | 0 |
+bytes_received_rset_field_meta_packet | 0 |
+bytes_received_rset_row_packet | 0 |
+bytes_received_prepare_response_packet | 0 |
+bytes_received_change_user_packet | 0 |
+packets_sent_command | 0 |
+packets_received_ok | 0 |
+packets_received_eof | 0 |
+packets_received_rset_header | 0 |
+packets_received_rset_field_meta | 0 |
+packets_received_rset_row | 0 |
+packets_received_prepare_response | 0 |
+packets_received_change_user | 0 |
+result_set_queries | 0 |
+non_result_set_queries | 0 |
+no_index_used | 0 |
+bad_index_used | 0 |
+slow_queries | 0 |
+buffered_sets | 0 |
+unbuffered_sets | 0 |
+ps_buffered_sets | 0 |
+ps_unbuffered_sets | 0 |
+flushed_normal_sets | 0 |
+flushed_ps_sets | 0 |
+ps_prepared_never_executed | 0 |
+ps_prepared_once_executed | 0 |
+rows_fetched_from_server_normal | 0 |
+rows_fetched_from_server_ps | 0 |
+rows_buffered_from_client_normal | 0 |
+rows_buffered_from_client_ps | 0 |
+rows_fetched_from_client_normal_buffered | 0 |
+rows_fetched_from_client_normal_unbuffered | 0 |
+rows_fetched_from_client_ps_buffered | 0 |
+rows_fetched_from_client_ps_unbuffered | 0 |
+rows_fetched_from_client_ps_cursor | 0 |
+rows_affected_normal | 0 |
+rows_affected_ps | 0 |
+rows_skipped_normal | 0 |
+rows_skipped_ps | 0 |
+copy_on_write_saved | 0 |
+copy_on_write_performed | 0 |
+command_buffer_too_small | 0 |
+connect_success | 0 |
+connect_failure | 0 |
+connection_reused | 0 |
+reconnect | 0 |
+pconnect_success | 0 |
+active_connections | 0 |
+active_persistent_connections | 0 |
+explicit_close | 0 |
+implicit_close | 0 |
+disconnect_close | 0 |
+in_middle_of_command_close | 0 |
+explicit_free_result | 0 |
+implicit_free_result | 0 |
+explicit_stmt_close | 0 |
+implicit_stmt_close | 0 |
+mem_emalloc_count | 0 |
+mem_emalloc_amount | 0 |
+mem_ecalloc_count | 0 |
+mem_ecalloc_amount | 0 |
+mem_erealloc_count | 0 |
+mem_erealloc_amount | 0 |
+mem_efree_count | 0 |
+mem_efree_amount | 0 |
+mem_malloc_count | 0 |
+mem_malloc_amount | 0 |
+mem_calloc_count | 0 |
+mem_calloc_amount | 0 |
+mem_realloc_count | 0 |
+mem_realloc_amount | 0 |
+mem_free_count | 0 |
+mem_free_amount | 0 |
+mem_estrndup_count | 0 |
+mem_strndup_count | 0 |
+mem_estrdup_count | 0 |
+mem_strdup_count | 0 |
+mem_edupl_count | 0 |
+mem_dupl_count | 0 |
+proto_text_fetched_null | 0 |
+proto_text_fetched_bit | 0 |
+proto_text_fetched_tinyint | 0 |
+proto_text_fetched_short | 0 |
+proto_text_fetched_int24 | 0 |
+proto_text_fetched_int | 0 |
+proto_text_fetched_bigint | 0 |
+proto_text_fetched_decimal | 0 |
+proto_text_fetched_float | 0 |
+proto_text_fetched_double | 0 |
+proto_text_fetched_date | 0 |
+proto_text_fetched_year | 0 |
+proto_text_fetched_time | 0 |
+proto_text_fetched_datetime | 0 |
+proto_text_fetched_timestamp | 0 |
+proto_text_fetched_string | 0 |
+proto_text_fetched_blob | 0 |
+proto_text_fetched_enum | 0 |
+proto_text_fetched_set | 0 |
+proto_text_fetched_geometry | 0 |
+proto_text_fetched_other | 0 |
+proto_binary_fetched_null | 0 |
+proto_binary_fetched_bit | 0 |
+proto_binary_fetched_tinyint | 0 |
+proto_binary_fetched_short | 0 |
+proto_binary_fetched_int24 | 0 |
+proto_binary_fetched_int | 0 |
+proto_binary_fetched_bigint | 0 |
+proto_binary_fetched_decimal | 0 |
+proto_binary_fetched_float | 0 |
+proto_binary_fetched_double | 0 |
+proto_binary_fetched_date | 0 |
+proto_binary_fetched_year | 0 |
+proto_binary_fetched_time | 0 |
+proto_binary_fetched_datetime | 0 |
+proto_binary_fetched_timestamp | 0 |
+proto_binary_fetched_string | 0 |
+proto_binary_fetched_json | 0 |
+proto_binary_fetched_blob | 0 |
+proto_binary_fetched_enum | 0 |
+proto_binary_fetched_set | 0 |
+proto_binary_fetched_geometry | 0 |
+proto_binary_fetched_other | 0 |
+init_command_executed_count | 0 |
+init_command_failed_count | 0 |
+com_quit | 0 |
+com_init_db | 0 |
+com_query | 0 |
+com_field_list | 0 |
+com_create_db | 0 |
+com_drop_db | 0 |
+com_refresh | 0 |
+com_shutdown | 0 |
+com_statistics | 0 |
+com_process_info | 0 |
+com_connect | 0 |
+com_process_kill | 0 |
+com_debug | 0 |
+com_ping | 0 |
+com_time | 0 |
+com_delayed_insert | 0 |
+com_change_user | 0 |
+com_binlog_dump | 0 |
+com_table_dump | 0 |
+com_connect_out | 0 |
+com_register_slave | 0 |
+com_stmt_prepare | 0 |
+com_stmt_execute | 0 |
+com_stmt_send_long_data | 0 |
+com_stmt_close | 0 |
+com_stmt_reset | 0 |
+com_stmt_set_option | 0 |
+com_stmt_fetch | 0 |
+com_deamon | 0 |
+bytes_received_real_data_normal | 0 |
+bytes_received_real_data_ps | 0 |
+
+
+
+OpenSSL support | enabled |
+OpenSSL Library Version | LibreSSL 2.7.4 |
+OpenSSL Header Version | LibreSSL 2.7.4 |
+Openssl default config | /etc/ssl/openssl.cnf |
+
+
+Directive | Local Value | Master Value |
+openssl.cafile | no value | no value |
+openssl.capath | no value | no value |
+
+
+
+PCRE (Perl Compatible Regular Expressions) Support | enabled |
+PCRE Library Version | 8.41 2017-07-05 |
+PCRE JIT Support | enabled |
+
+
+Directive | Local Value | Master Value |
+pcre.backtrack_limit | 1000000 | 1000000 |
+pcre.jit | 1 | 1 |
+pcre.recursion_limit | 100000 | 100000 |
+
+
+
+PDO support | enabled |
+PDO drivers | sqlite |
+
+
+
+PDO Driver for SQLite 3.x | enabled |
+SQLite Library | 3.20.1 |
+
+
+
+Phar: PHP Archive support | enabled |
+Phar EXT version | 2.0.2 |
+Phar API version | 1.1.1 |
+SVN revision | $Id: 11c9d270a69dbd9589cbea10a0ad9731a286a147 $ |
+Phar-based phar archives | enabled |
+Tar-based phar archives | enabled |
+ZIP-based phar archives | enabled |
+gzip compression | enabled |
+bzip2 compression | disabled (install pecl/bz2) |
+Native OpenSSL support | enabled |
+
+
+
+Phar based on pear/PHP_Archive, original concept by Davey Shafik. Phar fully realized by Gregory Beaver and Marcus Boerger. Portions of tar implementation Copyright (c) 2003-2009 Tim Kientzle. |
+
+
+Directive | Local Value | Master Value |
+phar.cache_list | no value | no value |
+phar.readonly | On | On |
+phar.require_hash | On | On |
+
+
+
+Revision | $Id: 0a764bab332255746424a1e6cfbaaeebab998e4c $ |
+
+
+
+Readline Support | enabled |
+Readline library | EditLine wrapper |
+
+
+Directive | Local Value | Master Value |
+cli.pager | no value | no value |
+cli.prompt | \b \> | \b \> |
+
+
+
+Reflection | enabled |
+Version | $Id: f1096fbe817b0413895286a603375570e78fb553 $ |
+
+
+
+Session Support | enabled |
+Registered save handlers | files user |
+Registered serializer handlers | php_serialize php php_binary |
+
+
+Directive | Local Value | Master Value |
+session.auto_start | Off | Off |
+session.cache_expire | 180 | 180 |
+session.cache_limiter | nocache | nocache |
+session.cookie_domain | no value | no value |
+session.cookie_httponly | 0 | 0 |
+session.cookie_lifetime | 0 | 0 |
+session.cookie_path | / | / |
+session.cookie_secure | 0 | 0 |
+session.gc_divisor | 100 | 100 |
+session.gc_maxlifetime | 1440 | 1440 |
+session.gc_probability | 1 | 1 |
+session.lazy_write | On | On |
+session.name | PHPSESSID | PHPSESSID |
+session.referer_check | no value | no value |
+session.save_handler | files | files |
+session.save_path | no value | no value |
+session.serialize_handler | php | php |
+session.sid_bits_per_character | 4 | 4 |
+session.sid_length | 32 | 32 |
+session.upload_progress.cleanup | On | On |
+session.upload_progress.enabled | On | On |
+session.upload_progress.freq | 1% | 1% |
+session.upload_progress.min_freq | 1 | 1 |
+session.upload_progress.name | PHP_SESSION_UPLOAD_PROGRESS | PHP_SESSION_UPLOAD_PROGRESS |
+session.upload_progress.prefix | upload_progress_ | upload_progress_ |
+session.use_cookies | 1 | 1 |
+session.use_only_cookies | 1 | 1 |
+session.use_strict_mode | 0 | 0 |
+session.use_trans_sid | 0 | 0 |
+
+
+
+Simplexml support | enabled |
+Revision | $Id: 341daed0ee94ea8f728bfd0ba4626e6ed365c0d1 $ |
+Schema support | enabled |
+
+
+
+sodium support | enabled |
+libsodium headers version | 1.0.16 |
+libsodium library version | 1.0.16 |
+
+
+
+SPL support | enabled |
+Interfaces | OuterIterator, RecursiveIterator, SeekableIterator, SplObserver, SplSubject |
+Classes | AppendIterator, ArrayIterator, ArrayObject, BadFunctionCallException, BadMethodCallException, CachingIterator, CallbackFilterIterator, DirectoryIterator, DomainException, EmptyIterator, FilesystemIterator, FilterIterator, GlobIterator, InfiniteIterator, InvalidArgumentException, IteratorIterator, LengthException, LimitIterator, LogicException, MultipleIterator, NoRewindIterator, OutOfBoundsException, OutOfRangeException, OverflowException, ParentIterator, RangeException, RecursiveArrayIterator, RecursiveCachingIterator, RecursiveCallbackFilterIterator, RecursiveDirectoryIterator, RecursiveFilterIterator, RecursiveIteratorIterator, RecursiveRegexIterator, RecursiveTreeIterator, RegexIterator, RuntimeException, SplDoublyLinkedList, SplFileInfo, SplFileObject, SplFixedArray, SplHeap, SplMinHeap, SplMaxHeap, SplObjectStorage, SplPriorityQueue, SplQueue, SplStack, SplTempFileObject, UnderflowException, UnexpectedValueException |
+
+
+
+SQLite3 support | enabled |
+SQLite3 module version | 7.2.12 |
+SQLite Library | 3.20.1 |
+
+
+Directive | Local Value | Master Value |
+sqlite3.extension_dir | no value | no value |
+
+
+
+Dynamic Library Support | enabled |
+Path to sendmail | /usr/sbin/sendmail -t -i |
+
+
+Directive | Local Value | Master Value |
+assert.active | 1 | 1 |
+assert.bail | 0 | 0 |
+assert.callback | no value | no value |
+assert.exception | 0 | 0 |
+assert.quiet_eval | 0 | 0 |
+assert.warning | 1 | 1 |
+auto_detect_line_endings | 0 | 0 |
+default_socket_timeout | 60 | 60 |
+from | no value | no value |
+session.trans_sid_hosts | no value | no value |
+session.trans_sid_tags | a=href,area=href,frame=src,form= | a=href,area=href,frame=src,form= |
+url_rewriter.hosts | no value | no value |
+url_rewriter.tags | form= | form= |
+user_agent | no value | no value |
+
+
+
+Tokenizer Support | enabled |
+
+
+
+XML Support | active |
+XML Namespace Support | active |
+libxml2 Version | 2.9.8 |
+
+
+
+
+
+
+
+ZLib Support | enabled |
+Stream Wrapper | compress.zlib:// |
+Stream Filter | zlib.inflate, zlib.deflate |
+Compiled Version | 1.2.11 |
+Linked Version | 1.2.11 |
+
+
+Directive | Local Value | Master Value |
+zlib.output_compression | Off | Off |
+zlib.output_compression_level | -1 | -1 |
+zlib.output_handler | no value | no value |
+
+ Additional Modules
+
+ Environment
+
+Variable | Value |
+SERVICE_SERVER2_SERVICE_HOST | 10.111.252.137 |
+KUBERNETES_SERVICE_PORT | 443 |
+KUBERNETES_PORT | tcp://10.96.0.1:443 |
+PHP_EXTRA_CONFIGURE_ARGS | --enable-fpm --with-fpm-user=www-data --with-fpm-group=www-data --disable-cgi |
+HOSTNAME | server1-df84845d-5jr7m |
+PHP_INI_DIR | /usr/local/etc/php |
+SHLVL | 1 |
+SERVICE_SERVER1_PORT | tcp://10.104.213.123:80 |
+SERVICE_SERVER1_SERVICE_PORT | 80 |
+HOME | /home/www-data |
+SERVICE_SERVER2_PORT | tcp://10.111.252.137:80 |
+SERVICE_SERVER2_SERVICE_PORT | 80 |
+PHP_LDFLAGS | -Wl,-O1 -Wl,--hash-style=both -pie |
+PHP_CFLAGS | -fstack-protector-strong -fpic -fpie -O2 |
+PHP_MD5 | no value |
+SERVICE_SERVER1_PORT_80_TCP_ADDR | 10.104.213.123 |
+PHP_VERSION | 7.2.12 |
+SERVICE_SERVER2_PORT_80_TCP_ADDR | 10.111.252.137 |
+GPG_KEYS | 1729F83938DA44E27BA0F4D3DBDB397470D12172 B1B44D8F021E4E2D6021E995DC9FF8D3EE5AF27F |
+SERVICE_SERVER1_PORT_80_TCP_PORT | 80 |
+PHP_CPPFLAGS | -fstack-protector-strong -fpic -fpie -O2 |
+PHP_ASC_URL | https://secure.php.net/get/php-7.2.12.tar.xz.asc/from/this/mirror |
+SERVICE_SERVER1_PORT_80_TCP_PROTO | tcp |
+SERVICE_SERVER2_PORT_80_TCP_PORT | 80 |
+SERVICE_SERVER2_PORT_80_TCP_PROTO | tcp |
+PHP_URL | https://secure.php.net/get/php-7.2.12.tar.xz/from/this/mirror |
+KUBERNETES_PORT_443_TCP_ADDR | 10.96.0.1 |
+PATH | /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin |
+KUBERNETES_PORT_443_TCP_PORT | 443 |
+KUBERNETES_PORT_443_TCP_PROTO | tcp |
+SERVICE_SERVER1_PORT_80_TCP | tcp://10.104.213.123:80 |
+SERVICE_SERVER2_PORT_80_TCP | tcp://10.111.252.137:80 |
+SERVICE_SERVER1_SERVICE_PORT_HTTP | 80 |
+KUBERNETES_SERVICE_PORT_HTTPS | 443 |
+KUBERNETES_PORT_443_TCP | tcp://10.96.0.1:443 |
+SERVICE_SERVER2_SERVICE_PORT_HTTP | 80 |
+KUBERNETES_SERVICE_HOST | 10.96.0.1 |
+PHPIZE_DEPS | autoconf dpkg-dev dpkg file g++ gcc libc-dev make pkgconf re2c |
+PWD | /var/www/html |
+PHP_SHA256 | 989c04cc879ee71a5e1131db867f3c5102f1f7565f805e2bb8bde33f93147fe1 |
+SERVICE_SERVER1_SERVICE_HOST | 10.104.213.123 |
+USER | www-data |
+
+ PHP Variables
+
+Variable | Value |
+$_SERVER['SERVICE_SERVER2_SERVICE_HOST'] | 10.111.252.137 |
+$_SERVER['KUBERNETES_SERVICE_PORT'] | 443 |
+$_SERVER['KUBERNETES_PORT'] | tcp://10.96.0.1:443 |
+$_SERVER['PHP_EXTRA_CONFIGURE_ARGS'] | --enable-fpm --with-fpm-user=www-data --with-fpm-group=www-data --disable-cgi |
+$_SERVER['HOSTNAME'] | server1-df84845d-5jr7m |
+$_SERVER['PHP_INI_DIR'] | /usr/local/etc/php |
+$_SERVER['SHLVL'] | 1 |
+$_SERVER['SERVICE_SERVER1_PORT'] | tcp://10.104.213.123:80 |
+$_SERVER['SERVICE_SERVER1_SERVICE_PORT'] | 80 |
+$_SERVER['HOME'] | /home/www-data |
+$_SERVER['SERVICE_SERVER2_PORT'] | tcp://10.111.252.137:80 |
+$_SERVER['SERVICE_SERVER2_SERVICE_PORT'] | 80 |
+$_SERVER['PHP_LDFLAGS'] | -Wl,-O1 -Wl,--hash-style=both -pie |
+$_SERVER['PHP_CFLAGS'] | -fstack-protector-strong -fpic -fpie -O2 |
+$_SERVER['PHP_MD5'] | no value |
+$_SERVER['SERVICE_SERVER1_PORT_80_TCP_ADDR'] | 10.104.213.123 |
+$_SERVER['PHP_VERSION'] | 7.2.12 |
+$_SERVER['SERVICE_SERVER2_PORT_80_TCP_ADDR'] | 10.111.252.137 |
+$_SERVER['GPG_KEYS'] | 1729F83938DA44E27BA0F4D3DBDB397470D12172 B1B44D8F021E4E2D6021E995DC9FF8D3EE5AF27F |
+$_SERVER['SERVICE_SERVER1_PORT_80_TCP_PORT'] | 80 |
+$_SERVER['PHP_CPPFLAGS'] | -fstack-protector-strong -fpic -fpie -O2 |
+$_SERVER['PHP_ASC_URL'] | https://secure.php.net/get/php-7.2.12.tar.xz.asc/from/this/mirror |
+$_SERVER['SERVICE_SERVER1_PORT_80_TCP_PROTO'] | tcp |
+$_SERVER['SERVICE_SERVER2_PORT_80_TCP_PORT'] | 80 |
+$_SERVER['SERVICE_SERVER2_PORT_80_TCP_PROTO'] | tcp |
+$_SERVER['PHP_URL'] | https://secure.php.net/get/php-7.2.12.tar.xz/from/this/mirror |
+$_SERVER['KUBERNETES_PORT_443_TCP_ADDR'] | 10.96.0.1 |
+$_SERVER['PATH'] | /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin |
+$_SERVER['KUBERNETES_PORT_443_TCP_PORT'] | 443 |
+$_SERVER['KUBERNETES_PORT_443_TCP_PROTO'] | tcp |
+$_SERVER['SERVICE_SERVER1_PORT_80_TCP'] | tcp://10.104.213.123:80 |
+$_SERVER['SERVICE_SERVER2_PORT_80_TCP'] | tcp://10.111.252.137:80 |
+$_SERVER['SERVICE_SERVER1_SERVICE_PORT_HTTP'] | 80 |
+$_SERVER['KUBERNETES_SERVICE_PORT_HTTPS'] | 443 |
+$_SERVER['KUBERNETES_PORT_443_TCP'] | tcp://10.96.0.1:443 |
+$_SERVER['SERVICE_SERVER2_SERVICE_PORT_HTTP'] | 80 |
+$_SERVER['KUBERNETES_SERVICE_HOST'] | 10.96.0.1 |
+$_SERVER['PHPIZE_DEPS'] | autoconf dpkg-dev dpkg file g++ gcc libc-dev make pkgconf re2c |
+$_SERVER['PWD'] | /var/www/html |
+$_SERVER['PHP_SHA256'] | 989c04cc879ee71a5e1131db867f3c5102f1f7565f805e2bb8bde33f93147fe1 |
+$_SERVER['SERVICE_SERVER1_SERVICE_HOST'] | 10.104.213.123 |
+$_SERVER['USER'] | www-data |
+$_SERVER['HTTP_ACCEPT_ENCODING'] | identity |
+$_SERVER['HTTP_ACCEPT'] | */* |
+$_SERVER['HTTP_USER_AGENT'] | Wget/1.18 (darwin15.5.0) |
+$_SERVER['HTTP_X_SCHEME'] | http |
+$_SERVER['HTTP_X_ORIGINAL_URI'] | /phpinfo |
+$_SERVER['HTTP_X_FORWARDED_PROTO'] | http |
+$_SERVER['HTTP_X_FORWARDED_PORT'] | 80 |
+$_SERVER['HTTP_X_FORWARDED_HOST'] | server1 |
+$_SERVER['HTTP_X_FORWARDED_FOR'] | 192.168.65.3 |
+$_SERVER['HTTP_X_REAL_IP'] | 192.168.65.3 |
+$_SERVER['HTTP_X_REQUEST_ID'] | f9d4f3c841b669ddb9aaa1cd5fee1d3c |
+$_SERVER['HTTP_HOST'] | server1 |
+$_SERVER['REDIRECT_STATUS'] | 200 |
+$_SERVER['SERVER_NAME'] | _ |
+$_SERVER['SERVER_PORT'] | 80 |
+$_SERVER['SERVER_ADDR'] | 10.1.7.25 |
+$_SERVER['REMOTE_PORT'] | 33406 |
+$_SERVER['REMOTE_ADDR'] | 10.1.7.23 |
+$_SERVER['SERVER_SOFTWARE'] | nginx/1.15.6 |
+$_SERVER['GATEWAY_INTERFACE'] | CGI/1.1 |
+$_SERVER['REQUEST_SCHEME'] | http |
+$_SERVER['SERVER_PROTOCOL'] | HTTP/1.1 |
+$_SERVER['DOCUMENT_ROOT'] | /var/www/app |
+$_SERVER['DOCUMENT_URI'] | /index.php |
+$_SERVER['REQUEST_URI'] | /phpinfo |
+$_SERVER['SCRIPT_NAME'] | /index.php |
+$_SERVER['CONTENT_LENGTH'] | no value |
+$_SERVER['CONTENT_TYPE'] | no value |
+$_SERVER['REQUEST_METHOD'] | GET |
+$_SERVER['QUERY_STRING'] | no value |
+$_SERVER['SCRIPT_FILENAME'] | /var/www/app/index.php |
+$_SERVER['FCGI_ROLE'] | RESPONDER |
+$_SERVER['PHP_SELF'] | /index.php |
+$_SERVER['REQUEST_TIME_FLOAT'] | 1543133025.898 |
+$_SERVER['REQUEST_TIME'] | 1543133025 |
+$_SERVER['argv'] | Array
+(
+)
+ |
+$_SERVER['argc'] | 0 |
+$_ENV['SERVICE_SERVER2_SERVICE_HOST'] | 10.111.252.137 |
+$_ENV['KUBERNETES_SERVICE_PORT'] | 443 |
+$_ENV['KUBERNETES_PORT'] | tcp://10.96.0.1:443 |
+$_ENV['PHP_EXTRA_CONFIGURE_ARGS'] | --enable-fpm --with-fpm-user=www-data --with-fpm-group=www-data --disable-cgi |
+$_ENV['HOSTNAME'] | server1-df84845d-5jr7m |
+$_ENV['PHP_INI_DIR'] | /usr/local/etc/php |
+$_ENV['SHLVL'] | 1 |
+$_ENV['SERVICE_SERVER1_PORT'] | tcp://10.104.213.123:80 |
+$_ENV['SERVICE_SERVER1_SERVICE_PORT'] | 80 |
+$_ENV['HOME'] | /home/www-data |
+$_ENV['SERVICE_SERVER2_PORT'] | tcp://10.111.252.137:80 |
+$_ENV['SERVICE_SERVER2_SERVICE_PORT'] | 80 |
+$_ENV['PHP_LDFLAGS'] | -Wl,-O1 -Wl,--hash-style=both -pie |
+$_ENV['PHP_CFLAGS'] | -fstack-protector-strong -fpic -fpie -O2 |
+$_ENV['PHP_MD5'] | no value |
+$_ENV['SERVICE_SERVER1_PORT_80_TCP_ADDR'] | 10.104.213.123 |
+$_ENV['PHP_VERSION'] | 7.2.12 |
+$_ENV['SERVICE_SERVER2_PORT_80_TCP_ADDR'] | 10.111.252.137 |
+$_ENV['GPG_KEYS'] | 1729F83938DA44E27BA0F4D3DBDB397470D12172 B1B44D8F021E4E2D6021E995DC9FF8D3EE5AF27F |
+$_ENV['SERVICE_SERVER1_PORT_80_TCP_PORT'] | 80 |
+$_ENV['PHP_CPPFLAGS'] | -fstack-protector-strong -fpic -fpie -O2 |
+$_ENV['PHP_ASC_URL'] | https://secure.php.net/get/php-7.2.12.tar.xz.asc/from/this/mirror |
+$_ENV['SERVICE_SERVER1_PORT_80_TCP_PROTO'] | tcp |
+$_ENV['SERVICE_SERVER2_PORT_80_TCP_PORT'] | 80 |
+$_ENV['SERVICE_SERVER2_PORT_80_TCP_PROTO'] | tcp |
+$_ENV['PHP_URL'] | https://secure.php.net/get/php-7.2.12.tar.xz/from/this/mirror |
+$_ENV['KUBERNETES_PORT_443_TCP_ADDR'] | 10.96.0.1 |
+$_ENV['PATH'] | /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin |
+$_ENV['KUBERNETES_PORT_443_TCP_PORT'] | 443 |
+$_ENV['KUBERNETES_PORT_443_TCP_PROTO'] | tcp |
+$_ENV['SERVICE_SERVER1_PORT_80_TCP'] | tcp://10.104.213.123:80 |
+$_ENV['SERVICE_SERVER2_PORT_80_TCP'] | tcp://10.111.252.137:80 |
+$_ENV['SERVICE_SERVER1_SERVICE_PORT_HTTP'] | 80 |
+$_ENV['KUBERNETES_SERVICE_PORT_HTTPS'] | 443 |
+$_ENV['KUBERNETES_PORT_443_TCP'] | tcp://10.96.0.1:443 |
+$_ENV['SERVICE_SERVER2_SERVICE_PORT_HTTP'] | 80 |
+$_ENV['KUBERNETES_SERVICE_HOST'] | 10.96.0.1 |
+$_ENV['PHPIZE_DEPS'] | autoconf dpkg-dev dpkg file g++ gcc libc-dev make pkgconf re2c |
+$_ENV['PWD'] | /var/www/html |
+$_ENV['PHP_SHA256'] | 989c04cc879ee71a5e1131db867f3c5102f1f7565f805e2bb8bde33f93147fe1 |
+$_ENV['SERVICE_SERVER1_SERVICE_HOST'] | 10.104.213.123 |
+$_ENV['USER'] | www-data |
+$_ENV['HTTP_ACCEPT_ENCODING'] | identity |
+$_ENV['HTTP_ACCEPT'] | */* |
+$_ENV['HTTP_USER_AGENT'] | Wget/1.18 (darwin15.5.0) |
+$_ENV['HTTP_X_SCHEME'] | http |
+$_ENV['HTTP_X_ORIGINAL_URI'] | /phpinfo |
+$_ENV['HTTP_X_FORWARDED_PROTO'] | http |
+$_ENV['HTTP_X_FORWARDED_PORT'] | 80 |
+$_ENV['HTTP_X_FORWARDED_HOST'] | server1 |
+$_ENV['HTTP_X_FORWARDED_FOR'] | 192.168.65.3 |
+$_ENV['HTTP_X_REAL_IP'] | 192.168.65.3 |
+$_ENV['HTTP_X_REQUEST_ID'] | f9d4f3c841b669ddb9aaa1cd5fee1d3c |
+$_ENV['HTTP_HOST'] | server1 |
+$_ENV['REDIRECT_STATUS'] | 200 |
+$_ENV['SERVER_NAME'] | _ |
+$_ENV['SERVER_PORT'] | 80 |
+$_ENV['SERVER_ADDR'] | 10.1.7.25 |
+$_ENV['REMOTE_PORT'] | 33406 |
+$_ENV['REMOTE_ADDR'] | 10.1.7.23 |
+$_ENV['SERVER_SOFTWARE'] | nginx/1.15.6 |
+$_ENV['GATEWAY_INTERFACE'] | CGI/1.1 |
+$_ENV['REQUEST_SCHEME'] | http |
+$_ENV['SERVER_PROTOCOL'] | HTTP/1.1 |
+$_ENV['DOCUMENT_ROOT'] | /var/www/app |
+$_ENV['DOCUMENT_URI'] | /index.php |
+$_ENV['REQUEST_URI'] | /phpinfo |
+$_ENV['SCRIPT_NAME'] | /index.php |
+$_ENV['CONTENT_LENGTH'] | no value |
+$_ENV['CONTENT_TYPE'] | no value |
+$_ENV['REQUEST_METHOD'] | GET |
+$_ENV['QUERY_STRING'] | no value |
+$_ENV['SCRIPT_FILENAME'] | /var/www/app/index.php |
+$_ENV['FCGI_ROLE'] | RESPONDER |
+$_ENV['PHP_SELF'] | /index.php |
+$_ENV['REQUEST_TIME_FLOAT'] | 1543133025.898 |
+$_ENV['REQUEST_TIME'] | 1543133025 |
+$_ENV['argv'] | Array
+(
+)
+ |
+$_ENV['argc'] | 0 |
+
+
+ PHP Credits
+
+PHP Group |
+Thies C. Arntzen, Stig Bakken, Shane Caraveo, Andi Gutmans, Rasmus Lerdorf, Sam Ruby, Sascha Schumann, Zeev Suraski, Jim Winstead, Andrei Zmievski |
+
+
+Language Design & Concept |
+Andi Gutmans, Rasmus Lerdorf, Zeev Suraski, Marcus Boerger |
+
+
+PHP Authors |
+Contribution | Authors |
+Zend Scripting Language Engine | Andi Gutmans, Zeev Suraski, Stanislav Malyshev, Marcus Boerger, Dmitry Stogov, Xinchen Hui, Nikita Popov |
+Extension Module API | Andi Gutmans, Zeev Suraski, Andrei Zmievski |
+UNIX Build and Modularization | Stig Bakken, Sascha Schumann, Jani Taskinen |
+Windows Support | Shane Caraveo, Zeev Suraski, Wez Furlong, Pierre-Alain Joye, Anatol Belski, Kalle Sommer Nielsen |
+Server API (SAPI) Abstraction Layer | Andi Gutmans, Shane Caraveo, Zeev Suraski |
+Streams Abstraction Layer | Wez Furlong, Sara Golemon |
+PHP Data Objects Layer | Wez Furlong, Marcus Boerger, Sterling Hughes, George Schlossnagle, Ilia Alshanetsky |
+Output Handler | Zeev Suraski, Thies C. Arntzen, Marcus Boerger, Michael Wallner |
+Consistent 64 bit support | Anthony Ferrara, Anatol Belski |
+
+
+SAPI Modules |
+Contribution | Authors |
+Apache 2.0 Handler | Ian Holsman, Justin Erenkrantz (based on Apache 2.0 Filter code) |
+CGI / FastCGI | Rasmus Lerdorf, Stig Bakken, Shane Caraveo, Dmitry Stogov |
+CLI | Edin Kadribasic, Marcus Boerger, Johannes Schlueter, Moriyoshi Koizumi, Xinchen Hui |
+Embed | Edin Kadribasic |
+FastCGI Process Manager | Andrei Nigmatulin, dreamcat4, Antony Dovgal, Jerome Loyet |
+litespeed | George Wang |
+phpdbg | Felipe Pena, Joe Watkins, Bob Weinand |
+
+
+Module Authors |
+Module | Authors |
+BC Math | Andi Gutmans |
+Bzip2 | Sterling Hughes |
+Calendar | Shane Caraveo, Colin Viebrock, Hartmut Holzgraefe, Wez Furlong |
+COM and .Net | Wez Furlong |
+ctype | Hartmut Holzgraefe |
+cURL | Sterling Hughes |
+Date/Time Support | Derick Rethans |
+DB-LIB (MS SQL, Sybase) | Wez Furlong, Frank M. Kromann, Adam Baratz |
+DBA | Sascha Schumann, Marcus Boerger |
+DOM | Christian Stocker, Rob Richards, Marcus Boerger |
+enchant | Pierre-Alain Joye, Ilia Alshanetsky |
+EXIF | Rasmus Lerdorf, Marcus Boerger |
+fileinfo | Ilia Alshanetsky, Pierre Alain Joye, Scott MacVicar, Derick Rethans, Anatol Belski |
+Firebird driver for PDO | Ard Biesheuvel |
+FTP | Stefan Esser, Andrew Skalski |
+GD imaging | Rasmus Lerdorf, Stig Bakken, Jim Winstead, Jouni Ahto, Ilia Alshanetsky, Pierre-Alain Joye, Marcus Boerger |
+GetText | Alex Plotnick |
+GNU GMP support | Stanislav Malyshev |
+Iconv | Rui Hirokawa, Stig Bakken, Moriyoshi Koizumi |
+IMAP | Rex Logan, Mark Musone, Brian Wang, Kaj-Michael Lang, Antoni Pamies Olive, Rasmus Lerdorf, Andrew Skalski, Chuck Hagenbuch, Daniel R Kalowsky |
+Input Filter | Rasmus Lerdorf, Derick Rethans, Pierre-Alain Joye, Ilia Alshanetsky |
+InterBase | Jouni Ahto, Andrew Avdeev, Ard Biesheuvel |
+Internationalization | Ed Batutis, Vladimir Iordanov, Dmitry Lakhtyuk, Stanislav Malyshev, Vadim Savchuk, Kirti Velankar |
+JSON | Jakub Zelenka, Omar Kilani, Scott MacVicar |
+LDAP | Amitay Isaacs, Eric Warnke, Rasmus Lerdorf, Gerrit Thomson, Stig Venaas |
+LIBXML | Christian Stocker, Rob Richards, Marcus Boerger, Wez Furlong, Shane Caraveo |
+Multibyte String Functions | Tsukada Takuya, Rui Hirokawa |
+MySQL driver for PDO | George Schlossnagle, Wez Furlong, Ilia Alshanetsky, Johannes Schlueter |
+MySQLi | Zak Greant, Georg Richter, Andrey Hristov, Ulf Wendel |
+MySQLnd | Andrey Hristov, Ulf Wendel, Georg Richter, Johannes Schlüter |
+OCI8 | Stig Bakken, Thies C. Arntzen, Andy Sautins, David Benson, Maxim Maletsky, Harald Radi, Antony Dovgal, Andi Gutmans, Wez Furlong, Christopher Jones, Oracle Corporation |
+ODBC driver for PDO | Wez Furlong |
+ODBC | Stig Bakken, Andreas Karajannis, Frank M. Kromann, Daniel R. Kalowsky |
+Opcache | Andi Gutmans, Zeev Suraski, Stanislav Malyshev, Dmitry Stogov, Xinchen Hui |
+OpenSSL | Stig Venaas, Wez Furlong, Sascha Kettler, Scott MacVicar |
+Oracle (OCI) driver for PDO | Wez Furlong |
+pcntl | Jason Greene, Arnaud Le Blanc |
+Perl Compatible Regexps | Andrei Zmievski |
+PHP Archive | Gregory Beaver, Marcus Boerger |
+PHP Data Objects | Wez Furlong, Marcus Boerger, Sterling Hughes, George Schlossnagle, Ilia Alshanetsky |
+PHP hash | Sara Golemon, Rasmus Lerdorf, Stefan Esser, Michael Wallner, Scott MacVicar |
+Posix | Kristian Koehntopp |
+PostgreSQL driver for PDO | Edin Kadribasic, Ilia Alshanetsky |
+PostgreSQL | Jouni Ahto, Zeev Suraski, Yasuo Ohgaki, Chris Kings-Lynne |
+Pspell | Vlad Krupin |
+Readline | Thies C. Arntzen |
+Recode | Kristian Koehntopp |
+Reflection | Marcus Boerger, Timm Friebe, George Schlossnagle, Andrei Zmievski, Johannes Schlueter |
+Sessions | Sascha Schumann, Andrei Zmievski |
+Shared Memory Operations | Slava Poliakov, Ilia Alshanetsky |
+SimpleXML | Sterling Hughes, Marcus Boerger, Rob Richards |
+SNMP | Rasmus Lerdorf, Harrie Hazewinkel, Mike Jackson, Steven Lawrance, Johann Hanne, Boris Lytochkin |
+SOAP | Brad Lafountain, Shane Caraveo, Dmitry Stogov |
+Sockets | Chris Vandomelen, Sterling Hughes, Daniel Beulshausen, Jason Greene |
+Sodium | Frank Denis |
+SPL | Marcus Boerger, Etienne Kneuss |
+SQLite 3.x driver for PDO | Wez Furlong |
+SQLite3 | Scott MacVicar, Ilia Alshanetsky, Brad Dewar |
+System V Message based IPC | Wez Furlong |
+System V Semaphores | Tom May |
+System V Shared Memory | Christian Cartus |
+tidy | John Coggeshall, Ilia Alshanetsky |
+tokenizer | Andrei Zmievski, Johannes Schlueter |
+WDDX | Andrei Zmievski |
+XML | Stig Bakken, Thies C. Arntzen, Sterling Hughes |
+XMLReader | Rob Richards |
+xmlrpc | Dan Libby |
+XMLWriter | Rob Richards, Pierre-Alain Joye |
+XSL | Christian Stocker, Rob Richards |
+Zip | Pierre-Alain Joye, Remi Collet |
+Zlib | Rasmus Lerdorf, Stefan Roehrich, Zeev Suraski, Jade Nicoletti, Michael Wallner |
+
+
+PHP Documentation |
+Authors | Mehdi Achour, Friedhelm Betz, Antony Dovgal, Nuno Lopes, Hannes Magnusson, Philip Olson, Georg Richter, Damien Seguy, Jakub Vrana, Adam Harvey |
+Editor | Peter Cowburn |
+User Note Maintainers | Daniel P. Brown, Thiago Henrique Pojda |
+Other Contributors | Previously active authors, editors and other contributors are listed in the manual. |
+
+
+PHP Quality Assurance Team |
+Ilia Alshanetsky, Joerg Behrens, Antony Dovgal, Stefan Esser, Moriyoshi Koizumi, Magnus Maatta, Sebastian Nohn, Derick Rethans, Melvyn Sopacua, Jani Taskinen, Pierre-Alain Joye, Dmitry Stogov, Felipe Pena, David Soria Parra, Stanislav Malyshev, Julien Pauli, Stephen Zarkos, Anatol Belski, Remi Collet, Ferenc Kovacs |
+
+
+Websites and Infrastructure team |
+PHP Websites Team | Rasmus Lerdorf, Hannes Magnusson, Philip Olson, Lukas Kahwe Smith, Pierre-Alain Joye, Kalle Sommer Nielsen, Peter Cowburn, Adam Harvey, Ferenc Kovacs, Levi Morrison |
+Event Maintainers | Damien Seguy, Daniel P. Brown |
+Network Infrastructure | Daniel P. Brown |
+Windows Infrastructure | Alex Schoenmaker |
+
+ PHP License
+
+
+
+This program is free software; you can redistribute it and/or modify it under the terms of the PHP License as published by the PHP Group and included in the distribution in the file: LICENSE
+
+This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+
+If you did not receive a copy of the PHP license, or have any questions about PHP licensing, please contact license@php.net.
+
+ |
+
+
\ No newline at end of file
diff --git a/tests/data/phpinfo1.txt b/tests/data/phpinfo1.txt
new file mode 100644
index 0000000..15d60d8
--- /dev/null
+++ b/tests/data/phpinfo1.txt
@@ -0,0 +1,795 @@
+phpinfo()
+PHP Version => 7.2.12
+
+System => Linux server1-df84845d-5jr7m 4.9.125-linuxkit #1 SMP Fri Sep 7 08:20:28 UTC 2018 x86_64
+Build Date => Nov 16 2018 04:03:42
+Configure Command => './configure' '--build=x86_64-linux-musl' '--with-config-file-path=/usr/local/etc/php' '--with-config-file-scan-dir=/usr/local/etc/php/conf.d' '--enable-option-checking=fatal' '--with-mhash' '--enable-ftp' '--enable-mbstring' '--enable-mysqlnd' '--with-password-argon2' '--with-sodium=shared' '--with-curl' '--with-libedit' '--with-openssl' '--with-zlib' '--enable-fpm' '--with-fpm-user=www-data' '--with-fpm-group=www-data' '--disable-cgi' 'build_alias=x86_64-linux-musl'
+Server API => Command Line Interface
+Virtual Directory Support => disabled
+Configuration File (php.ini) Path => /usr/local/etc/php
+Loaded Configuration File => (none)
+Scan this dir for additional .ini files => /usr/local/etc/php/conf.d
+Additional .ini files parsed => /usr/local/etc/php/conf.d/docker-php-ext-sodium.ini
+
+PHP API => 20170718
+PHP Extension => 20170718
+Zend Extension => 320170718
+Zend Extension Build => API320170718,NTS
+PHP Extension Build => API20170718,NTS
+Debug Build => no
+Thread Safety => disabled
+Zend Signal Handling => enabled
+Zend Memory Manager => enabled
+Zend Multibyte Support => provided by mbstring
+IPv6 Support => enabled
+DTrace Support => disabled
+
+Registered PHP Streams => https, ftps, compress.zlib, php, file, glob, data, http, ftp, phar
+Registered Stream Socket Transports => tcp, udp, unix, udg, ssl, tls, tlsv1.0, tlsv1.1, tlsv1.2
+Registered Stream Filters => zlib.*, convert.iconv.*, string.rot13, string.toupper, string.tolower, string.strip_tags, convert.*, consumed, dechunk
+
+This program makes use of the Zend Scripting Language Engine:
+Zend Engine v3.2.0, Copyright (c) 1998-2018 Zend Technologies
+
+
+ _______________________________________________________________________
+
+
+Configuration
+
+Core
+
+PHP Version => 7.2.12
+
+Directive => Local Value => Master Value
+allow_url_fopen => On => On
+allow_url_include => Off => Off
+arg_separator.input => & => &
+arg_separator.output => & => &
+auto_append_file => no value => no value
+auto_globals_jit => On => On
+auto_prepend_file => no value => no value
+browscap => no value => no value
+default_charset => UTF-8 => UTF-8
+default_mimetype => text/html => text/html
+disable_classes => no value => no value
+disable_functions => no value => no value
+display_errors => STDOUT => STDOUT
+display_startup_errors => Off => Off
+doc_root => no value => no value
+docref_ext => no value => no value
+docref_root => no value => no value
+enable_dl => On => On
+enable_post_data_reading => On => On
+error_append_string => no value => no value
+error_log => no value => no value
+error_prepend_string => no value => no value
+error_reporting => no value => no value
+expose_php => On => On
+extension_dir => /usr/local/lib/php/extensions/no-debug-non-zts-20170718 => /usr/local/lib/php/extensions/no-debug-non-zts-20170718
+file_uploads => On => On
+hard_timeout => 2 => 2
+highlight.comment => #FF8000 => #FF8000
+highlight.default => #0000BB => #0000BB
+highlight.html => #000000 => #000000
+highlight.keyword => #007700 => #007700
+highlight.string => #DD0000 => #DD0000
+html_errors => Off => Off
+ignore_repeated_errors => Off => Off
+ignore_repeated_source => Off => Off
+ignore_user_abort => Off => Off
+implicit_flush => On => On
+include_path => .:/usr/local/lib/php => .:/usr/local/lib/php
+input_encoding => no value => no value
+internal_encoding => no value => no value
+log_errors => Off => Off
+log_errors_max_len => 1024 => 1024
+mail.add_x_header => Off => Off
+mail.force_extra_parameters => no value => no value
+mail.log => no value => no value
+max_execution_time => 0 => 0
+max_file_uploads => 20 => 20
+max_input_nesting_level => 64 => 64
+max_input_time => -1 => -1
+max_input_vars => 1000 => 1000
+memory_limit => 128M => 128M
+open_basedir => no value => no value
+output_buffering => 0 => 0
+output_encoding => no value => no value
+output_handler => no value => no value
+post_max_size => 8M => 8M
+precision => 14 => 14
+realpath_cache_size => 4096K => 4096K
+realpath_cache_ttl => 120 => 120
+register_argc_argv => On => On
+report_memleaks => On => On
+report_zend_debug => Off => Off
+request_order => no value => no value
+sendmail_from => no value => no value
+sendmail_path => /usr/sbin/sendmail -t -i => /usr/sbin/sendmail -t -i
+serialize_precision => -1 => -1
+short_open_tag => On => On
+SMTP => localhost => localhost
+smtp_port => 25 => 25
+sys_temp_dir => no value => no value
+track_errors => Off => Off
+unserialize_callback_func => no value => no value
+upload_max_filesize => 2M => 2M
+upload_tmp_dir => no value => no value
+user_dir => no value => no value
+user_ini.cache_ttl => 300 => 300
+user_ini.filename => .user.ini => .user.ini
+variables_order => EGPCS => EGPCS
+xmlrpc_error_number => 0 => 0
+xmlrpc_errors => Off => Off
+zend.assertions => 1 => 1
+zend.detect_unicode => On => On
+zend.enable_gc => On => On
+zend.multibyte => Off => Off
+zend.script_encoding => no value => no value
+zend.signal_check => Off => Off
+
+ctype
+
+ctype functions => enabled
+
+curl
+
+cURL support => enabled
+cURL Information => 7.61.1
+Age => 4
+Features
+AsynchDNS => Yes
+CharConv => No
+Debug => No
+GSS-Negotiate => No
+IDN => No
+IPv6 => Yes
+krb4 => No
+Largefile => Yes
+libz => Yes
+NTLM => Yes
+NTLMWB => Yes
+SPNEGO => No
+SSL => Yes
+SSPI => No
+TLS-SRP => No
+HTTP2 => Yes
+GSSAPI => No
+KERBEROS5 => No
+UNIX_SOCKETS => Yes
+PSL => No
+Protocols => dict, file, ftp, ftps, gopher, http, https, imap, imaps, pop3, pop3s, rtsp, scp, sftp, smb, smbs, smtp, smtps, telnet, tftp
+Host => x86_64-alpine-linux-musl
+SSL Version => LibreSSL/2.0.0
+ZLib Version => 1.2.11
+libSSH Version => libssh2/1.8.0
+
+date
+
+date/time support => enabled
+timelib version => 2017.08
+"Olson" Timezone Database Version => 2018.6
+Timezone Database => internal
+Default timezone => UTC
+
+Directive => Local Value => Master Value
+date.default_latitude => 31.7667 => 31.7667
+date.default_longitude => 35.2333 => 35.2333
+date.sunrise_zenith => 90.583333 => 90.583333
+date.sunset_zenith => 90.583333 => 90.583333
+date.timezone => no value => no value
+
+dom
+
+DOM/XML => enabled
+DOM/XML API Version => 20031129
+libxml Version => 2.9.8
+HTML Support => enabled
+XPath Support => enabled
+XPointer Support => enabled
+Schema Support => enabled
+RelaxNG Support => enabled
+
+fileinfo
+
+fileinfo support => enabled
+version => 1.0.5
+libmagic => 531
+
+filter
+
+Input Validation and Filtering => enabled
+Revision => $Id: 5a34caaa246b9df197f4b43af8ac66a07464fe4b $
+
+Directive => Local Value => Master Value
+filter.default => unsafe_raw => unsafe_raw
+filter.default_flags => no value => no value
+
+ftp
+
+FTP support => enabled
+FTPS support => enabled
+
+hash
+
+hash support => enabled
+Hashing Engines => md2 md4 md5 sha1 sha224 sha256 sha384 sha512/224 sha512/256 sha512 sha3-224 sha3-256 sha3-384 sha3-512 ripemd128 ripemd160 ripemd256 ripemd320 whirlpool tiger128,3 tiger160,3 tiger192,3 tiger128,4 tiger160,4 tiger192,4 snefru snefru256 gost gost-crypto adler32 crc32 crc32b fnv132 fnv1a32 fnv164 fnv1a64 joaat haval128,3 haval160,3 haval192,3 haval224,3 haval256,3 haval128,4 haval160,4 haval192,4 haval224,4 haval256,4 haval128,5 haval160,5 haval192,5 haval224,5 haval256,5
+
+MHASH support => Enabled
+MHASH API Version => Emulated Support
+
+iconv
+
+iconv support => enabled
+iconv implementation => unknown
+iconv library version => unknown
+
+Directive => Local Value => Master Value
+iconv.input_encoding => no value => no value
+iconv.internal_encoding => no value => no value
+iconv.output_encoding => no value => no value
+
+json
+
+json support => enabled
+json version => 1.6.0
+
+libxml
+
+libXML support => active
+libXML Compiled Version => 2.9.8
+libXML Loaded Version => 20908
+libXML streams => enabled
+
+mbstring
+
+Multibyte Support => enabled
+Multibyte string engine => libmbfl
+HTTP input encoding translation => disabled
+libmbfl version => 1.3.2
+oniguruma version => 6.3.0
+
+mbstring extension makes use of "streamable kanji code filter and converter", which is distributed under the GNU Lesser General Public License version 2.1.
+
+Multibyte (japanese) regex support => enabled
+Multibyte regex (oniguruma) backtrack check => On
+Multibyte regex (oniguruma) version => 6.3.0
+
+Directive => Local Value => Master Value
+mbstring.detect_order => no value => no value
+mbstring.encoding_translation => Off => Off
+mbstring.func_overload => 0 => 0
+mbstring.http_input => no value => no value
+mbstring.http_output => no value => no value
+mbstring.http_output_conv_mimetypes => ^(text/|application/xhtml\+xml) => ^(text/|application/xhtml\+xml)
+mbstring.internal_encoding => no value => no value
+mbstring.language => neutral => neutral
+mbstring.strict_detection => Off => Off
+mbstring.substitute_character => no value => no value
+
+mysqlnd
+
+mysqlnd => enabled
+Version => mysqlnd 5.0.12-dev - 20150407 - $Id: 38fea24f2847fa7519001be390c98ae0acafe387 $
+Compression => supported
+core SSL => supported
+extended SSL => supported
+Command buffer size => 4096
+Read buffer size => 32768
+Read timeout => 86400
+Collecting statistics => Yes
+Collecting memory statistics => No
+Tracing => n/a
+Loaded plugins => mysqlnd,debug_trace,auth_plugin_mysql_native_password,auth_plugin_mysql_clear_password,auth_plugin_sha256_password
+API Extensions =>
+
+mysqlnd statistics =>
+bytes_sent => 0
+bytes_received => 0
+packets_sent => 0
+packets_received => 0
+protocol_overhead_in => 0
+protocol_overhead_out => 0
+bytes_received_ok_packet => 0
+bytes_received_eof_packet => 0
+bytes_received_rset_header_packet => 0
+bytes_received_rset_field_meta_packet => 0
+bytes_received_rset_row_packet => 0
+bytes_received_prepare_response_packet => 0
+bytes_received_change_user_packet => 0
+packets_sent_command => 0
+packets_received_ok => 0
+packets_received_eof => 0
+packets_received_rset_header => 0
+packets_received_rset_field_meta => 0
+packets_received_rset_row => 0
+packets_received_prepare_response => 0
+packets_received_change_user => 0
+result_set_queries => 0
+non_result_set_queries => 0
+no_index_used => 0
+bad_index_used => 0
+slow_queries => 0
+buffered_sets => 0
+unbuffered_sets => 0
+ps_buffered_sets => 0
+ps_unbuffered_sets => 0
+flushed_normal_sets => 0
+flushed_ps_sets => 0
+ps_prepared_never_executed => 0
+ps_prepared_once_executed => 0
+rows_fetched_from_server_normal => 0
+rows_fetched_from_server_ps => 0
+rows_buffered_from_client_normal => 0
+rows_buffered_from_client_ps => 0
+rows_fetched_from_client_normal_buffered => 0
+rows_fetched_from_client_normal_unbuffered => 0
+rows_fetched_from_client_ps_buffered => 0
+rows_fetched_from_client_ps_unbuffered => 0
+rows_fetched_from_client_ps_cursor => 0
+rows_affected_normal => 0
+rows_affected_ps => 0
+rows_skipped_normal => 0
+rows_skipped_ps => 0
+copy_on_write_saved => 0
+copy_on_write_performed => 0
+command_buffer_too_small => 0
+connect_success => 0
+connect_failure => 0
+connection_reused => 0
+reconnect => 0
+pconnect_success => 0
+active_connections => 0
+active_persistent_connections => 0
+explicit_close => 0
+implicit_close => 0
+disconnect_close => 0
+in_middle_of_command_close => 0
+explicit_free_result => 0
+implicit_free_result => 0
+explicit_stmt_close => 0
+implicit_stmt_close => 0
+mem_emalloc_count => 0
+mem_emalloc_amount => 0
+mem_ecalloc_count => 0
+mem_ecalloc_amount => 0
+mem_erealloc_count => 0
+mem_erealloc_amount => 0
+mem_efree_count => 0
+mem_efree_amount => 0
+mem_malloc_count => 0
+mem_malloc_amount => 0
+mem_calloc_count => 0
+mem_calloc_amount => 0
+mem_realloc_count => 0
+mem_realloc_amount => 0
+mem_free_count => 0
+mem_free_amount => 0
+mem_estrndup_count => 0
+mem_strndup_count => 0
+mem_estrdup_count => 0
+mem_strdup_count => 0
+mem_edupl_count => 0
+mem_dupl_count => 0
+proto_text_fetched_null => 0
+proto_text_fetched_bit => 0
+proto_text_fetched_tinyint => 0
+proto_text_fetched_short => 0
+proto_text_fetched_int24 => 0
+proto_text_fetched_int => 0
+proto_text_fetched_bigint => 0
+proto_text_fetched_decimal => 0
+proto_text_fetched_float => 0
+proto_text_fetched_double => 0
+proto_text_fetched_date => 0
+proto_text_fetched_year => 0
+proto_text_fetched_time => 0
+proto_text_fetched_datetime => 0
+proto_text_fetched_timestamp => 0
+proto_text_fetched_string => 0
+proto_text_fetched_blob => 0
+proto_text_fetched_enum => 0
+proto_text_fetched_set => 0
+proto_text_fetched_geometry => 0
+proto_text_fetched_other => 0
+proto_binary_fetched_null => 0
+proto_binary_fetched_bit => 0
+proto_binary_fetched_tinyint => 0
+proto_binary_fetched_short => 0
+proto_binary_fetched_int24 => 0
+proto_binary_fetched_int => 0
+proto_binary_fetched_bigint => 0
+proto_binary_fetched_decimal => 0
+proto_binary_fetched_float => 0
+proto_binary_fetched_double => 0
+proto_binary_fetched_date => 0
+proto_binary_fetched_year => 0
+proto_binary_fetched_time => 0
+proto_binary_fetched_datetime => 0
+proto_binary_fetched_timestamp => 0
+proto_binary_fetched_string => 0
+proto_binary_fetched_json => 0
+proto_binary_fetched_blob => 0
+proto_binary_fetched_enum => 0
+proto_binary_fetched_set => 0
+proto_binary_fetched_geometry => 0
+proto_binary_fetched_other => 0
+init_command_executed_count => 0
+init_command_failed_count => 0
+com_quit => 0
+com_init_db => 0
+com_query => 0
+com_field_list => 0
+com_create_db => 0
+com_drop_db => 0
+com_refresh => 0
+com_shutdown => 0
+com_statistics => 0
+com_process_info => 0
+com_connect => 0
+com_process_kill => 0
+com_debug => 0
+com_ping => 0
+com_time => 0
+com_delayed_insert => 0
+com_change_user => 0
+com_binlog_dump => 0
+com_table_dump => 0
+com_connect_out => 0
+com_register_slave => 0
+com_stmt_prepare => 0
+com_stmt_execute => 0
+com_stmt_send_long_data => 0
+com_stmt_close => 0
+com_stmt_reset => 0
+com_stmt_set_option => 0
+com_stmt_fetch => 0
+com_deamon => 0
+bytes_received_real_data_normal => 0
+bytes_received_real_data_ps => 0
+
+openssl
+
+OpenSSL support => enabled
+OpenSSL Library Version => LibreSSL 2.7.4
+OpenSSL Header Version => LibreSSL 2.7.4
+Openssl default config => /etc/ssl/openssl.cnf
+
+Directive => Local Value => Master Value
+openssl.cafile => no value => no value
+openssl.capath => no value => no value
+
+pcre
+
+PCRE (Perl Compatible Regular Expressions) Support => enabled
+PCRE Library Version => 8.41 2017-07-05
+PCRE JIT Support => enabled
+
+Directive => Local Value => Master Value
+pcre.backtrack_limit => 1000000 => 1000000
+pcre.jit => 1 => 1
+pcre.recursion_limit => 100000 => 100000
+
+PDO
+
+PDO support => enabled
+PDO drivers => sqlite
+
+pdo_sqlite
+
+PDO Driver for SQLite 3.x => enabled
+SQLite Library => 3.20.1
+
+Phar
+
+Phar: PHP Archive support => enabled
+Phar EXT version => 2.0.2
+Phar API version => 1.1.1
+SVN revision => $Id: 11c9d270a69dbd9589cbea10a0ad9731a286a147 $
+Phar-based phar archives => enabled
+Tar-based phar archives => enabled
+ZIP-based phar archives => enabled
+gzip compression => enabled
+bzip2 compression => disabled (install pecl/bz2)
+Native OpenSSL support => enabled
+
+
+Phar based on pear/PHP_Archive, original concept by Davey Shafik.
+Phar fully realized by Gregory Beaver and Marcus Boerger.
+Portions of tar implementation Copyright (c) 2003-2009 Tim Kientzle.
+Directive => Local Value => Master Value
+phar.cache_list => no value => no value
+phar.readonly => On => On
+phar.require_hash => On => On
+
+posix
+
+Revision => $Id: 0a764bab332255746424a1e6cfbaaeebab998e4c $
+
+readline
+
+Readline Support => enabled
+Readline library => EditLine wrapper
+
+Directive => Local Value => Master Value
+cli.pager => no value => no value
+cli.prompt => \b \> => \b \>
+
+Reflection
+
+Reflection => enabled
+Version => $Id: f1096fbe817b0413895286a603375570e78fb553 $
+
+session
+
+Session Support => enabled
+Registered save handlers => files user
+Registered serializer handlers => php_serialize php php_binary
+
+Directive => Local Value => Master Value
+session.auto_start => Off => Off
+session.cache_expire => 180 => 180
+session.cache_limiter => nocache => nocache
+session.cookie_domain => no value => no value
+session.cookie_httponly => 0 => 0
+session.cookie_lifetime => 0 => 0
+session.cookie_path => / => /
+session.cookie_secure => 0 => 0
+session.gc_divisor => 100 => 100
+session.gc_maxlifetime => 1440 => 1440
+session.gc_probability => 1 => 1
+session.lazy_write => On => On
+session.name => PHPSESSID => PHPSESSID
+session.referer_check => no value => no value
+session.save_handler => files => files
+session.save_path => no value => no value
+session.serialize_handler => php => php
+session.sid_bits_per_character => 4 => 4
+session.sid_length => 32 => 32
+session.upload_progress.cleanup => On => On
+session.upload_progress.enabled => On => On
+session.upload_progress.freq => 1% => 1%
+session.upload_progress.min_freq => 1 => 1
+session.upload_progress.name => PHP_SESSION_UPLOAD_PROGRESS => PHP_SESSION_UPLOAD_PROGRESS
+session.upload_progress.prefix => upload_progress_ => upload_progress_
+session.use_cookies => 1 => 1
+session.use_only_cookies => 1 => 1
+session.use_strict_mode => 0 => 0
+session.use_trans_sid => 0 => 0
+
+SimpleXML
+
+Simplexml support => enabled
+Revision => $Id: 341daed0ee94ea8f728bfd0ba4626e6ed365c0d1 $
+Schema support => enabled
+
+sodium
+
+sodium support => enabled
+libsodium headers version => 1.0.16
+libsodium library version => 1.0.16
+
+SPL
+
+SPL support => enabled
+Interfaces => OuterIterator, RecursiveIterator, SeekableIterator, SplObserver, SplSubject
+Classes => AppendIterator, ArrayIterator, ArrayObject, BadFunctionCallException, BadMethodCallException, CachingIterator, CallbackFilterIterator, DirectoryIterator, DomainException, EmptyIterator, FilesystemIterator, FilterIterator, GlobIterator, InfiniteIterator, InvalidArgumentException, IteratorIterator, LengthException, LimitIterator, LogicException, MultipleIterator, NoRewindIterator, OutOfBoundsException, OutOfRangeException, OverflowException, ParentIterator, RangeException, RecursiveArrayIterator, RecursiveCachingIterator, RecursiveCallbackFilterIterator, RecursiveDirectoryIterator, RecursiveFilterIterator, RecursiveIteratorIterator, RecursiveRegexIterator, RecursiveTreeIterator, RegexIterator, RuntimeException, SplDoublyLinkedList, SplFileInfo, SplFileObject, SplFixedArray, SplHeap, SplMinHeap, SplMaxHeap, SplObjectStorage, SplPriorityQueue, SplQueue, SplStack, SplTempFileObject, UnderflowException, UnexpectedValueException
+
+sqlite3
+
+SQLite3 support => enabled
+SQLite3 module version => 7.2.12
+SQLite Library => 3.20.1
+
+Directive => Local Value => Master Value
+sqlite3.extension_dir => no value => no value
+
+standard
+
+Dynamic Library Support => enabled
+Path to sendmail => /usr/sbin/sendmail -t -i
+
+Directive => Local Value => Master Value
+assert.active => 1 => 1
+assert.bail => 0 => 0
+assert.callback => no value => no value
+assert.exception => 0 => 0
+assert.quiet_eval => 0 => 0
+assert.warning => 1 => 1
+auto_detect_line_endings => 0 => 0
+default_socket_timeout => 60 => 60
+from => no value => no value
+session.trans_sid_hosts => no value => no value
+session.trans_sid_tags => a=href,area=href,frame=src,form= => a=href,area=href,frame=src,form=
+url_rewriter.hosts => no value => no value
+url_rewriter.tags => form= => form=
+user_agent => no value => no value
+
+tokenizer
+
+Tokenizer Support => enabled
+
+xml
+
+XML Support => active
+XML Namespace Support => active
+libxml2 Version => 2.9.8
+
+xmlreader
+
+XMLReader => enabled
+
+xmlwriter
+
+XMLWriter => enabled
+
+zlib
+
+ZLib Support => enabled
+Stream Wrapper => compress.zlib://
+Stream Filter => zlib.inflate, zlib.deflate
+Compiled Version => 1.2.11
+Linked Version => 1.2.11
+
+Directive => Local Value => Master Value
+zlib.output_compression => Off => Off
+zlib.output_compression_level => -1 => -1
+zlib.output_handler => no value => no value
+
+Additional Modules
+
+Module Name
+
+Environment
+
+Variable => Value
+PATH => /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
+HOSTNAME => server1-df84845d-5jr7m
+TERM => xterm
+SERVICE_SERVER2_PORT => tcp://10.111.252.137:80
+SERVICE_SERVER2_PORT_80_TCP_PROTO => tcp
+KUBERNETES_PORT_443_TCP_PROTO => tcp
+SERVICE_SERVER1_SERVICE_HOST => 10.104.213.123
+SERVICE_SERVER1_SERVICE_PORT_HTTP => 80
+SERVICE_SERVER1_PORT => tcp://10.104.213.123:80
+SERVICE_SERVER1_PORT_80_TCP_PROTO => tcp
+SERVICE_SERVER2_SERVICE_PORT_HTTP => 80
+SERVICE_SERVER1_SERVICE_PORT => 80
+SERVICE_SERVER1_PORT_80_TCP => tcp://10.104.213.123:80
+KUBERNETES_SERVICE_PORT_HTTPS => 443
+SERVICE_SERVER1_PORT_80_TCP_PORT => 80
+SERVICE_SERVER1_PORT_80_TCP_ADDR => 10.104.213.123
+SERVICE_SERVER2_PORT_80_TCP => tcp://10.111.252.137:80
+KUBERNETES_PORT_443_TCP_PORT => 443
+KUBERNETES_PORT_443_TCP_ADDR => 10.96.0.1
+KUBERNETES_SERVICE_PORT => 443
+KUBERNETES_PORT => tcp://10.96.0.1:443
+KUBERNETES_PORT_443_TCP => tcp://10.96.0.1:443
+SERVICE_SERVER2_SERVICE_HOST => 10.111.252.137
+SERVICE_SERVER2_SERVICE_PORT => 80
+SERVICE_SERVER2_PORT_80_TCP_PORT => 80
+SERVICE_SERVER2_PORT_80_TCP_ADDR => 10.111.252.137
+KUBERNETES_SERVICE_HOST => 10.96.0.1
+PHPIZE_DEPS => autoconf dpkg-dev dpkg file g++ gcc libc-dev make pkgconf re2c
+PHP_INI_DIR => /usr/local/etc/php
+PHP_EXTRA_CONFIGURE_ARGS => --enable-fpm --with-fpm-user=www-data --with-fpm-group=www-data --disable-cgi
+PHP_CFLAGS => -fstack-protector-strong -fpic -fpie -O2
+PHP_CPPFLAGS => -fstack-protector-strong -fpic -fpie -O2
+PHP_LDFLAGS => -Wl,-O1 -Wl,--hash-style=both -pie
+GPG_KEYS => 1729F83938DA44E27BA0F4D3DBDB397470D12172 B1B44D8F021E4E2D6021E995DC9FF8D3EE5AF27F
+PHP_VERSION => 7.2.12
+PHP_URL => https://secure.php.net/get/php-7.2.12.tar.xz/from/this/mirror
+PHP_ASC_URL => https://secure.php.net/get/php-7.2.12.tar.xz.asc/from/this/mirror
+PHP_SHA256 => 989c04cc879ee71a5e1131db867f3c5102f1f7565f805e2bb8bde33f93147fe1
+PHP_MD5 =>
+HOME => /root
+
+PHP Variables
+
+Variable => Value
+$_SERVER['PATH'] => /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
+$_SERVER['HOSTNAME'] => server1-df84845d-5jr7m
+$_SERVER['TERM'] => xterm
+$_SERVER['SERVICE_SERVER2_PORT'] => tcp://10.111.252.137:80
+$_SERVER['SERVICE_SERVER2_PORT_80_TCP_PROTO'] => tcp
+$_SERVER['KUBERNETES_PORT_443_TCP_PROTO'] => tcp
+$_SERVER['SERVICE_SERVER1_SERVICE_HOST'] => 10.104.213.123
+$_SERVER['SERVICE_SERVER1_SERVICE_PORT_HTTP'] => 80
+$_SERVER['SERVICE_SERVER1_PORT'] => tcp://10.104.213.123:80
+$_SERVER['SERVICE_SERVER1_PORT_80_TCP_PROTO'] => tcp
+$_SERVER['SERVICE_SERVER2_SERVICE_PORT_HTTP'] => 80
+$_SERVER['SERVICE_SERVER1_SERVICE_PORT'] => 80
+$_SERVER['SERVICE_SERVER1_PORT_80_TCP'] => tcp://10.104.213.123:80
+$_SERVER['KUBERNETES_SERVICE_PORT_HTTPS'] => 443
+$_SERVER['SERVICE_SERVER1_PORT_80_TCP_PORT'] => 80
+$_SERVER['SERVICE_SERVER1_PORT_80_TCP_ADDR'] => 10.104.213.123
+$_SERVER['SERVICE_SERVER2_PORT_80_TCP'] => tcp://10.111.252.137:80
+$_SERVER['KUBERNETES_PORT_443_TCP_PORT'] => 443
+$_SERVER['KUBERNETES_PORT_443_TCP_ADDR'] => 10.96.0.1
+$_SERVER['KUBERNETES_SERVICE_PORT'] => 443
+$_SERVER['KUBERNETES_PORT'] => tcp://10.96.0.1:443
+$_SERVER['KUBERNETES_PORT_443_TCP'] => tcp://10.96.0.1:443
+$_SERVER['SERVICE_SERVER2_SERVICE_HOST'] => 10.111.252.137
+$_SERVER['SERVICE_SERVER2_SERVICE_PORT'] => 80
+$_SERVER['SERVICE_SERVER2_PORT_80_TCP_PORT'] => 80
+$_SERVER['SERVICE_SERVER2_PORT_80_TCP_ADDR'] => 10.111.252.137
+$_SERVER['KUBERNETES_SERVICE_HOST'] => 10.96.0.1
+$_SERVER['PHPIZE_DEPS'] => autoconf dpkg-dev dpkg file g++ gcc libc-dev make pkgconf re2c
+$_SERVER['PHP_INI_DIR'] => /usr/local/etc/php
+$_SERVER['PHP_EXTRA_CONFIGURE_ARGS'] => --enable-fpm --with-fpm-user=www-data --with-fpm-group=www-data --disable-cgi
+$_SERVER['PHP_CFLAGS'] => -fstack-protector-strong -fpic -fpie -O2
+$_SERVER['PHP_CPPFLAGS'] => -fstack-protector-strong -fpic -fpie -O2
+$_SERVER['PHP_LDFLAGS'] => -Wl,-O1 -Wl,--hash-style=both -pie
+$_SERVER['GPG_KEYS'] => 1729F83938DA44E27BA0F4D3DBDB397470D12172 B1B44D8F021E4E2D6021E995DC9FF8D3EE5AF27F
+$_SERVER['PHP_VERSION'] => 7.2.12
+$_SERVER['PHP_URL'] => https://secure.php.net/get/php-7.2.12.tar.xz/from/this/mirror
+$_SERVER['PHP_ASC_URL'] => https://secure.php.net/get/php-7.2.12.tar.xz.asc/from/this/mirror
+$_SERVER['PHP_SHA256'] => 989c04cc879ee71a5e1131db867f3c5102f1f7565f805e2bb8bde33f93147fe1
+$_SERVER['PHP_MD5'] =>
+$_SERVER['HOME'] => /root
+$_SERVER['PHP_SELF'] => phpinfo.php
+$_SERVER['SCRIPT_NAME'] => phpinfo.php
+$_SERVER['SCRIPT_FILENAME'] => phpinfo.php
+$_SERVER['PATH_TRANSLATED'] => phpinfo.php
+$_SERVER['DOCUMENT_ROOT'] =>
+$_SERVER['REQUEST_TIME_FLOAT'] => 1543133226.0155
+$_SERVER['REQUEST_TIME'] => 1543133226
+$_SERVER['argv'] => Array
+(
+ [0] => phpinfo.php
+)
+
+$_SERVER['argc'] => 1
+$_ENV['PATH'] => /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
+$_ENV['HOSTNAME'] => server1-df84845d-5jr7m
+$_ENV['TERM'] => xterm
+$_ENV['SERVICE_SERVER2_PORT'] => tcp://10.111.252.137:80
+$_ENV['SERVICE_SERVER2_PORT_80_TCP_PROTO'] => tcp
+$_ENV['KUBERNETES_PORT_443_TCP_PROTO'] => tcp
+$_ENV['SERVICE_SERVER1_SERVICE_HOST'] => 10.104.213.123
+$_ENV['SERVICE_SERVER1_SERVICE_PORT_HTTP'] => 80
+$_ENV['SERVICE_SERVER1_PORT'] => tcp://10.104.213.123:80
+$_ENV['SERVICE_SERVER1_PORT_80_TCP_PROTO'] => tcp
+$_ENV['SERVICE_SERVER2_SERVICE_PORT_HTTP'] => 80
+$_ENV['SERVICE_SERVER1_SERVICE_PORT'] => 80
+$_ENV['SERVICE_SERVER1_PORT_80_TCP'] => tcp://10.104.213.123:80
+$_ENV['KUBERNETES_SERVICE_PORT_HTTPS'] => 443
+$_ENV['SERVICE_SERVER1_PORT_80_TCP_PORT'] => 80
+$_ENV['SERVICE_SERVER1_PORT_80_TCP_ADDR'] => 10.104.213.123
+$_ENV['SERVICE_SERVER2_PORT_80_TCP'] => tcp://10.111.252.137:80
+$_ENV['KUBERNETES_PORT_443_TCP_PORT'] => 443
+$_ENV['KUBERNETES_PORT_443_TCP_ADDR'] => 10.96.0.1
+$_ENV['KUBERNETES_SERVICE_PORT'] => 443
+$_ENV['KUBERNETES_PORT'] => tcp://10.96.0.1:443
+$_ENV['KUBERNETES_PORT_443_TCP'] => tcp://10.96.0.1:443
+$_ENV['SERVICE_SERVER2_SERVICE_HOST'] => 10.111.252.137
+$_ENV['SERVICE_SERVER2_SERVICE_PORT'] => 80
+$_ENV['SERVICE_SERVER2_PORT_80_TCP_PORT'] => 80
+$_ENV['SERVICE_SERVER2_PORT_80_TCP_ADDR'] => 10.111.252.137
+$_ENV['KUBERNETES_SERVICE_HOST'] => 10.96.0.1
+$_ENV['PHPIZE_DEPS'] => autoconf dpkg-dev dpkg file g++ gcc libc-dev make pkgconf re2c
+$_ENV['PHP_INI_DIR'] => /usr/local/etc/php
+$_ENV['PHP_EXTRA_CONFIGURE_ARGS'] => --enable-fpm --with-fpm-user=www-data --with-fpm-group=www-data --disable-cgi
+$_ENV['PHP_CFLAGS'] => -fstack-protector-strong -fpic -fpie -O2
+$_ENV['PHP_CPPFLAGS'] => -fstack-protector-strong -fpic -fpie -O2
+$_ENV['PHP_LDFLAGS'] => -Wl,-O1 -Wl,--hash-style=both -pie
+$_ENV['GPG_KEYS'] => 1729F83938DA44E27BA0F4D3DBDB397470D12172 B1B44D8F021E4E2D6021E995DC9FF8D3EE5AF27F
+$_ENV['PHP_VERSION'] => 7.2.12
+$_ENV['PHP_URL'] => https://secure.php.net/get/php-7.2.12.tar.xz/from/this/mirror
+$_ENV['PHP_ASC_URL'] => https://secure.php.net/get/php-7.2.12.tar.xz.asc/from/this/mirror
+$_ENV['PHP_SHA256'] => 989c04cc879ee71a5e1131db867f3c5102f1f7565f805e2bb8bde33f93147fe1
+$_ENV['PHP_MD5'] =>
+$_ENV['HOME'] => /root
+
+PHP License
+This program is free software; you can redistribute it and/or modify
+it under the terms of the PHP License as published by the PHP Group
+and included in the distribution in the file: LICENSE
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+
+If you did not receive a copy of the PHP license, or have any
+questions about PHP licensing, please contact license@php.net.
diff --git a/tests/data/phpinfo2.html b/tests/data/phpinfo2.html
new file mode 100644
index 0000000..666f116
--- /dev/null
+++ b/tests/data/phpinfo2.html
@@ -0,0 +1,1054 @@
+
+
+
+phpinfo()
+
+
+
+ PHP Version 7.2.12
+ |
+
+
+System | Linux server2-6fc44d988b-25qsf 4.9.125-linuxkit #1 SMP Fri Sep 7 08:20:28 UTC 2018 x86_64 |
+Build Date | Nov 16 2018 04:03:42 |
+Configure Command | './configure' '--build=x86_64-linux-musl' '--with-config-file-path=/usr/local/etc/php' '--with-config-file-scan-dir=/usr/local/etc/php/conf.d' '--enable-option-checking=fatal' '--with-mhash' '--enable-ftp' '--enable-mbstring' '--enable-mysqlnd' '--with-password-argon2' '--with-sodium=shared' '--with-curl' '--with-libedit' '--with-openssl' '--with-zlib' '--enable-fpm' '--with-fpm-user=www-data' '--with-fpm-group=www-data' '--disable-cgi' 'build_alias=x86_64-linux-musl' |
+Server API | FPM/FastCGI |
+Virtual Directory Support | disabled |
+Configuration File (php.ini) Path | /usr/local/etc/php |
+Loaded Configuration File | (none) |
+Scan this dir for additional .ini files | /usr/local/etc/php/conf.d |
+Additional .ini files parsed | /usr/local/etc/php/conf.d/docker-php-ext-sodium.ini
+ |
+PHP API | 20170718 |
+PHP Extension | 20170718 |
+Zend Extension | 320170718 |
+Zend Extension Build | API320170718,NTS |
+PHP Extension Build | API20170718,NTS |
+Debug Build | no |
+Thread Safety | disabled |
+Zend Signal Handling | enabled |
+Zend Memory Manager | enabled |
+Zend Multibyte Support | provided by mbstring |
+IPv6 Support | enabled |
+DTrace Support | disabled |
+Registered PHP Streams | https, ftps, compress.zlib, php, file, glob, data, http, ftp, phar |
+Registered Stream Socket Transports | tcp, udp, unix, udg, ssl, tls, tlsv1.0, tlsv1.1, tlsv1.2 |
+Registered Stream Filters | zlib.*, convert.iconv.*, string.rot13, string.toupper, string.tolower, string.strip_tags, convert.*, consumed, dechunk |
+
+
+
+
+This program makes use of the Zend Scripting Language Engine: Zend Engine v3.2.0, Copyright (c) 1998-2018 Zend Technologies
|
+
+
+ Configuration
+
+
+
+Directive | Local Value | Master Value |
+cgi.discard_path | 0 | 0 |
+cgi.fix_pathinfo | 1 | 1 |
+cgi.force_redirect | 1 | 1 |
+cgi.nph | 0 | 0 |
+cgi.redirect_status_env | no value | no value |
+cgi.rfc2616_headers | 0 | 0 |
+fastcgi.error_header | no value | no value |
+fastcgi.logging | 1 | 1 |
+fpm.config | no value | no value |
+
+
+
+
+Directive | Local Value | Master Value |
+allow_url_fopen | On | On |
+allow_url_include | Off | Off |
+arg_separator.input | & | & |
+arg_separator.output | & | & |
+auto_append_file | no value | no value |
+auto_globals_jit | On | On |
+auto_prepend_file | no value | no value |
+browscap | no value | no value |
+default_charset | UTF-8 | UTF-8 |
+default_mimetype | text/html | text/html |
+disable_classes | no value | no value |
+disable_functions | no value | no value |
+display_errors | On | On |
+display_startup_errors | Off | Off |
+doc_root | no value | no value |
+docref_ext | no value | no value |
+docref_root | no value | no value |
+enable_dl | On | On |
+enable_post_data_reading | On | On |
+error_append_string | no value | no value |
+error_log | no value | no value |
+error_prepend_string | no value | no value |
+error_reporting | no value | no value |
+expose_php | On | On |
+extension_dir | /usr/local/lib/php/extensions/no-debug-non-zts-20170718 | /usr/local/lib/php/extensions/no-debug-non-zts-20170718 |
+file_uploads | On | On |
+hard_timeout | 2 | 2 |
+highlight.comment | #FF8000 | #FF8000 |
+highlight.default | #0000BB | #0000BB |
+highlight.html | #000000 | #000000 |
+highlight.keyword | #007700 | #007700 |
+highlight.string | #DD0000 | #DD0000 |
+html_errors | On | On |
+ignore_repeated_errors | Off | Off |
+ignore_repeated_source | Off | Off |
+ignore_user_abort | Off | Off |
+implicit_flush | Off | Off |
+include_path | .:/usr/local/lib/php | .:/usr/local/lib/php |
+input_encoding | no value | no value |
+internal_encoding | no value | no value |
+log_errors | Off | Off |
+log_errors_max_len | 1024 | 1024 |
+mail.add_x_header | Off | Off |
+mail.force_extra_parameters | no value | no value |
+mail.log | no value | no value |
+max_execution_time | 30 | 30 |
+max_file_uploads | 20 | 20 |
+max_input_nesting_level | 64 | 64 |
+max_input_time | -1 | -1 |
+max_input_vars | 1000 | 1000 |
+memory_limit | 128M | 128M |
+open_basedir | no value | no value |
+output_buffering | 0 | 0 |
+output_encoding | no value | no value |
+output_handler | no value | no value |
+post_max_size | 8M | 8M |
+precision | 14 | 14 |
+realpath_cache_size | 4096K | 4096K |
+realpath_cache_ttl | 120 | 120 |
+register_argc_argv | On | On |
+report_memleaks | On | On |
+report_zend_debug | On | On |
+request_order | no value | no value |
+sendmail_from | no value | no value |
+sendmail_path | /usr/sbin/sendmail -t -i | /usr/sbin/sendmail -t -i |
+serialize_precision | -1 | -1 |
+short_open_tag | On | On |
+SMTP | localhost | localhost |
+smtp_port | 25 | 25 |
+sys_temp_dir | no value | no value |
+track_errors | Off | Off |
+unserialize_callback_func | no value | no value |
+upload_max_filesize | 2M | 2M |
+upload_tmp_dir | no value | no value |
+user_dir | no value | no value |
+user_ini.cache_ttl | 300 | 300 |
+user_ini.filename | .user.ini | .user.ini |
+variables_order | EGPCS | EGPCS |
+xmlrpc_error_number | 0 | 0 |
+xmlrpc_errors | Off | Off |
+zend.assertions | 1 | 1 |
+zend.detect_unicode | On | On |
+zend.enable_gc | On | On |
+zend.multibyte | Off | Off |
+zend.script_encoding | no value | no value |
+zend.signal_check | Off | Off |
+
+
+
+ctype functions | enabled |
+
+
+
+cURL support | enabled |
+cURL Information | 7.61.1 |
+Age | 4 |
+Features |
+AsynchDNS | Yes |
+CharConv | No |
+Debug | No |
+GSS-Negotiate | No |
+IDN | No |
+IPv6 | Yes |
+krb4 | No |
+Largefile | Yes |
+libz | Yes |
+NTLM | Yes |
+NTLMWB | Yes |
+SPNEGO | No |
+SSL | Yes |
+SSPI | No |
+TLS-SRP | No |
+HTTP2 | Yes |
+GSSAPI | No |
+KERBEROS5 | No |
+UNIX_SOCKETS | Yes |
+PSL | No |
+Protocols | dict, file, ftp, ftps, gopher, http, https, imap, imaps, pop3, pop3s, rtsp, scp, sftp, smb, smbs, smtp, smtps, telnet, tftp |
+Host | x86_64-alpine-linux-musl |
+SSL Version | LibreSSL/2.0.0 |
+ZLib Version | 1.2.11 |
+libSSH Version | libssh2/1.8.0 |
+
+
+
+date/time support | enabled |
+timelib version | 2017.08 |
+"Olson" Timezone Database Version | 2018.6 |
+Timezone Database | internal |
+Default timezone | UTC |
+
+
+Directive | Local Value | Master Value |
+date.default_latitude | 31.7667 | 31.7667 |
+date.default_longitude | 35.2333 | 35.2333 |
+date.sunrise_zenith | 90.583333 | 90.583333 |
+date.sunset_zenith | 90.583333 | 90.583333 |
+date.timezone | no value | no value |
+
+
+
+DOM/XML | enabled |
+DOM/XML API Version | 20031129 |
+libxml Version | 2.9.8 |
+HTML Support | enabled |
+XPath Support | enabled |
+XPointer Support | enabled |
+Schema Support | enabled |
+RelaxNG Support | enabled |
+
+
+
+fileinfo support | enabled |
+version | 1.0.5 |
+libmagic | 531 |
+
+
+
+Input Validation and Filtering | enabled |
+Revision | $Id: 5a34caaa246b9df197f4b43af8ac66a07464fe4b $ |
+
+
+Directive | Local Value | Master Value |
+filter.default | unsafe_raw | unsafe_raw |
+filter.default_flags | no value | no value |
+
+
+
+FTP support | enabled |
+FTPS support | enabled |
+
+
+
+hash support | enabled |
+Hashing Engines | md2 md4 md5 sha1 sha224 sha256 sha384 sha512/224 sha512/256 sha512 sha3-224 sha3-256 sha3-384 sha3-512 ripemd128 ripemd160 ripemd256 ripemd320 whirlpool tiger128,3 tiger160,3 tiger192,3 tiger128,4 tiger160,4 tiger192,4 snefru snefru256 gost gost-crypto adler32 crc32 crc32b fnv132 fnv1a32 fnv164 fnv1a64 joaat haval128,3 haval160,3 haval192,3 haval224,3 haval256,3 haval128,4 haval160,4 haval192,4 haval224,4 haval256,4 haval128,5 haval160,5 haval192,5 haval224,5 haval256,5 |
+
+
+MHASH support | Enabled |
+MHASH API Version | Emulated Support |
+
+
+
+iconv support | enabled |
+iconv implementation | unknown |
+iconv library version | unknown |
+
+
+Directive | Local Value | Master Value |
+iconv.input_encoding | no value | no value |
+iconv.internal_encoding | no value | no value |
+iconv.output_encoding | no value | no value |
+
+
+
+json support | enabled |
+json version | 1.6.0 |
+
+
+
+libXML support | active |
+libXML Compiled Version | 2.9.8 |
+libXML Loaded Version | 20908 |
+libXML streams | enabled |
+
+
+
+Multibyte Support | enabled |
+Multibyte string engine | libmbfl |
+HTTP input encoding translation | disabled |
+libmbfl version | 1.3.2 |
+oniguruma version | 6.3.0 |
+
+
+mbstring extension makes use of "streamable kanji code filter and converter", which is distributed under the GNU Lesser General Public License version 2.1. |
+
+
+Multibyte (japanese) regex support | enabled |
+Multibyte regex (oniguruma) backtrack check | On |
+Multibyte regex (oniguruma) version | 6.3.0 |
+
+
+Directive | Local Value | Master Value |
+mbstring.detect_order | no value | no value |
+mbstring.encoding_translation | Off | Off |
+mbstring.func_overload | 0 | 0 |
+mbstring.http_input | no value | no value |
+mbstring.http_output | no value | no value |
+mbstring.http_output_conv_mimetypes | ^(text/|application/xhtml\+xml) | ^(text/|application/xhtml\+xml) |
+mbstring.internal_encoding | no value | no value |
+mbstring.language | neutral | neutral |
+mbstring.strict_detection | Off | Off |
+mbstring.substitute_character | no value | no value |
+
+
+
+mysqlnd | enabled |
+Version | mysqlnd 5.0.12-dev - 20150407 - $Id: 38fea24f2847fa7519001be390c98ae0acafe387 $ |
+Compression | supported |
+core SSL | supported |
+extended SSL | supported |
+Command buffer size | 4096 |
+Read buffer size | 32768 |
+Read timeout | 86400 |
+Collecting statistics | Yes |
+Collecting memory statistics | No |
+Tracing | n/a |
+Loaded plugins | mysqlnd,debug_trace,auth_plugin_mysql_native_password,auth_plugin_mysql_clear_password,auth_plugin_sha256_password |
+API Extensions | no value |
+
+
+mysqlnd statistics | |
+bytes_sent | 0 |
+bytes_received | 0 |
+packets_sent | 0 |
+packets_received | 0 |
+protocol_overhead_in | 0 |
+protocol_overhead_out | 0 |
+bytes_received_ok_packet | 0 |
+bytes_received_eof_packet | 0 |
+bytes_received_rset_header_packet | 0 |
+bytes_received_rset_field_meta_packet | 0 |
+bytes_received_rset_row_packet | 0 |
+bytes_received_prepare_response_packet | 0 |
+bytes_received_change_user_packet | 0 |
+packets_sent_command | 0 |
+packets_received_ok | 0 |
+packets_received_eof | 0 |
+packets_received_rset_header | 0 |
+packets_received_rset_field_meta | 0 |
+packets_received_rset_row | 0 |
+packets_received_prepare_response | 0 |
+packets_received_change_user | 0 |
+result_set_queries | 0 |
+non_result_set_queries | 0 |
+no_index_used | 0 |
+bad_index_used | 0 |
+slow_queries | 0 |
+buffered_sets | 0 |
+unbuffered_sets | 0 |
+ps_buffered_sets | 0 |
+ps_unbuffered_sets | 0 |
+flushed_normal_sets | 0 |
+flushed_ps_sets | 0 |
+ps_prepared_never_executed | 0 |
+ps_prepared_once_executed | 0 |
+rows_fetched_from_server_normal | 0 |
+rows_fetched_from_server_ps | 0 |
+rows_buffered_from_client_normal | 0 |
+rows_buffered_from_client_ps | 0 |
+rows_fetched_from_client_normal_buffered | 0 |
+rows_fetched_from_client_normal_unbuffered | 0 |
+rows_fetched_from_client_ps_buffered | 0 |
+rows_fetched_from_client_ps_unbuffered | 0 |
+rows_fetched_from_client_ps_cursor | 0 |
+rows_affected_normal | 0 |
+rows_affected_ps | 0 |
+rows_skipped_normal | 0 |
+rows_skipped_ps | 0 |
+copy_on_write_saved | 0 |
+copy_on_write_performed | 0 |
+command_buffer_too_small | 0 |
+connect_success | 0 |
+connect_failure | 0 |
+connection_reused | 0 |
+reconnect | 0 |
+pconnect_success | 0 |
+active_connections | 0 |
+active_persistent_connections | 0 |
+explicit_close | 0 |
+implicit_close | 0 |
+disconnect_close | 0 |
+in_middle_of_command_close | 0 |
+explicit_free_result | 0 |
+implicit_free_result | 0 |
+explicit_stmt_close | 0 |
+implicit_stmt_close | 0 |
+mem_emalloc_count | 0 |
+mem_emalloc_amount | 0 |
+mem_ecalloc_count | 0 |
+mem_ecalloc_amount | 0 |
+mem_erealloc_count | 0 |
+mem_erealloc_amount | 0 |
+mem_efree_count | 0 |
+mem_efree_amount | 0 |
+mem_malloc_count | 0 |
+mem_malloc_amount | 0 |
+mem_calloc_count | 0 |
+mem_calloc_amount | 0 |
+mem_realloc_count | 0 |
+mem_realloc_amount | 0 |
+mem_free_count | 0 |
+mem_free_amount | 0 |
+mem_estrndup_count | 0 |
+mem_strndup_count | 0 |
+mem_estrdup_count | 0 |
+mem_strdup_count | 0 |
+mem_edupl_count | 0 |
+mem_dupl_count | 0 |
+proto_text_fetched_null | 0 |
+proto_text_fetched_bit | 0 |
+proto_text_fetched_tinyint | 0 |
+proto_text_fetched_short | 0 |
+proto_text_fetched_int24 | 0 |
+proto_text_fetched_int | 0 |
+proto_text_fetched_bigint | 0 |
+proto_text_fetched_decimal | 0 |
+proto_text_fetched_float | 0 |
+proto_text_fetched_double | 0 |
+proto_text_fetched_date | 0 |
+proto_text_fetched_year | 0 |
+proto_text_fetched_time | 0 |
+proto_text_fetched_datetime | 0 |
+proto_text_fetched_timestamp | 0 |
+proto_text_fetched_string | 0 |
+proto_text_fetched_blob | 0 |
+proto_text_fetched_enum | 0 |
+proto_text_fetched_set | 0 |
+proto_text_fetched_geometry | 0 |
+proto_text_fetched_other | 0 |
+proto_binary_fetched_null | 0 |
+proto_binary_fetched_bit | 0 |
+proto_binary_fetched_tinyint | 0 |
+proto_binary_fetched_short | 0 |
+proto_binary_fetched_int24 | 0 |
+proto_binary_fetched_int | 0 |
+proto_binary_fetched_bigint | 0 |
+proto_binary_fetched_decimal | 0 |
+proto_binary_fetched_float | 0 |
+proto_binary_fetched_double | 0 |
+proto_binary_fetched_date | 0 |
+proto_binary_fetched_year | 0 |
+proto_binary_fetched_time | 0 |
+proto_binary_fetched_datetime | 0 |
+proto_binary_fetched_timestamp | 0 |
+proto_binary_fetched_string | 0 |
+proto_binary_fetched_json | 0 |
+proto_binary_fetched_blob | 0 |
+proto_binary_fetched_enum | 0 |
+proto_binary_fetched_set | 0 |
+proto_binary_fetched_geometry | 0 |
+proto_binary_fetched_other | 0 |
+init_command_executed_count | 0 |
+init_command_failed_count | 0 |
+com_quit | 0 |
+com_init_db | 0 |
+com_query | 0 |
+com_field_list | 0 |
+com_create_db | 0 |
+com_drop_db | 0 |
+com_refresh | 0 |
+com_shutdown | 0 |
+com_statistics | 0 |
+com_process_info | 0 |
+com_connect | 0 |
+com_process_kill | 0 |
+com_debug | 0 |
+com_ping | 0 |
+com_time | 0 |
+com_delayed_insert | 0 |
+com_change_user | 0 |
+com_binlog_dump | 0 |
+com_table_dump | 0 |
+com_connect_out | 0 |
+com_register_slave | 0 |
+com_stmt_prepare | 0 |
+com_stmt_execute | 0 |
+com_stmt_send_long_data | 0 |
+com_stmt_close | 0 |
+com_stmt_reset | 0 |
+com_stmt_set_option | 0 |
+com_stmt_fetch | 0 |
+com_deamon | 0 |
+bytes_received_real_data_normal | 0 |
+bytes_received_real_data_ps | 0 |
+
+
+
+OpenSSL support | enabled |
+OpenSSL Library Version | LibreSSL 2.7.4 |
+OpenSSL Header Version | LibreSSL 2.7.4 |
+Openssl default config | /etc/ssl/openssl.cnf |
+
+
+Directive | Local Value | Master Value |
+openssl.cafile | no value | no value |
+openssl.capath | no value | no value |
+
+
+
+PCRE (Perl Compatible Regular Expressions) Support | enabled |
+PCRE Library Version | 8.41 2017-07-05 |
+PCRE JIT Support | enabled |
+
+
+Directive | Local Value | Master Value |
+pcre.backtrack_limit | 1000000 | 1000000 |
+pcre.jit | 1 | 1 |
+pcre.recursion_limit | 100000 | 100000 |
+
+
+
+PDO support | enabled |
+PDO drivers | sqlite |
+
+
+
+PDO Driver for SQLite 3.x | enabled |
+SQLite Library | 3.20.1 |
+
+
+
+Phar: PHP Archive support | enabled |
+Phar EXT version | 2.0.2 |
+Phar API version | 1.1.1 |
+SVN revision | $Id: 11c9d270a69dbd9589cbea10a0ad9731a286a147 $ |
+Phar-based phar archives | enabled |
+Tar-based phar archives | enabled |
+ZIP-based phar archives | enabled |
+gzip compression | enabled |
+bzip2 compression | disabled (install pecl/bz2) |
+Native OpenSSL support | enabled |
+
+
+
+Phar based on pear/PHP_Archive, original concept by Davey Shafik. Phar fully realized by Gregory Beaver and Marcus Boerger. Portions of tar implementation Copyright (c) 2003-2009 Tim Kientzle. |
+
+
+Directive | Local Value | Master Value |
+phar.cache_list | no value | no value |
+phar.readonly | On | On |
+phar.require_hash | On | On |
+
+
+
+Revision | $Id: 0a764bab332255746424a1e6cfbaaeebab998e4c $ |
+
+
+
+Readline Support | enabled |
+Readline library | EditLine wrapper |
+
+
+Directive | Local Value | Master Value |
+cli.pager | no value | no value |
+cli.prompt | \b \> | \b \> |
+
+
+
+Reflection | enabled |
+Version | $Id: f1096fbe817b0413895286a603375570e78fb553 $ |
+
+
+
+Session Support | enabled |
+Registered save handlers | files user |
+Registered serializer handlers | php_serialize php php_binary |
+
+
+Directive | Local Value | Master Value |
+session.auto_start | Off | Off |
+session.cache_expire | 180 | 180 |
+session.cache_limiter | nocache | nocache |
+session.cookie_domain | no value | no value |
+session.cookie_httponly | 0 | 0 |
+session.cookie_lifetime | 0 | 0 |
+session.cookie_path | / | / |
+session.cookie_secure | 0 | 0 |
+session.gc_divisor | 100 | 100 |
+session.gc_maxlifetime | 1440 | 1440 |
+session.gc_probability | 1 | 1 |
+session.lazy_write | On | On |
+session.name | PHPSESSID | PHPSESSID |
+session.referer_check | no value | no value |
+session.save_handler | files | files |
+session.save_path | no value | no value |
+session.serialize_handler | php | php |
+session.sid_bits_per_character | 4 | 4 |
+session.sid_length | 32 | 32 |
+session.upload_progress.cleanup | On | On |
+session.upload_progress.enabled | On | On |
+session.upload_progress.freq | 1% | 1% |
+session.upload_progress.min_freq | 1 | 1 |
+session.upload_progress.name | PHP_SESSION_UPLOAD_PROGRESS | PHP_SESSION_UPLOAD_PROGRESS |
+session.upload_progress.prefix | upload_progress_ | upload_progress_ |
+session.use_cookies | 1 | 1 |
+session.use_only_cookies | 1 | 1 |
+session.use_strict_mode | 0 | 0 |
+session.use_trans_sid | 0 | 0 |
+
+
+
+Simplexml support | enabled |
+Revision | $Id: 341daed0ee94ea8f728bfd0ba4626e6ed365c0d1 $ |
+Schema support | enabled |
+
+
+
+sodium support | enabled |
+libsodium headers version | 1.0.16 |
+libsodium library version | 1.0.16 |
+
+
+
+SPL support | enabled |
+Interfaces | OuterIterator, RecursiveIterator, SeekableIterator, SplObserver, SplSubject |
+Classes | AppendIterator, ArrayIterator, ArrayObject, BadFunctionCallException, BadMethodCallException, CachingIterator, CallbackFilterIterator, DirectoryIterator, DomainException, EmptyIterator, FilesystemIterator, FilterIterator, GlobIterator, InfiniteIterator, InvalidArgumentException, IteratorIterator, LengthException, LimitIterator, LogicException, MultipleIterator, NoRewindIterator, OutOfBoundsException, OutOfRangeException, OverflowException, ParentIterator, RangeException, RecursiveArrayIterator, RecursiveCachingIterator, RecursiveCallbackFilterIterator, RecursiveDirectoryIterator, RecursiveFilterIterator, RecursiveIteratorIterator, RecursiveRegexIterator, RecursiveTreeIterator, RegexIterator, RuntimeException, SplDoublyLinkedList, SplFileInfo, SplFileObject, SplFixedArray, SplHeap, SplMinHeap, SplMaxHeap, SplObjectStorage, SplPriorityQueue, SplQueue, SplStack, SplTempFileObject, UnderflowException, UnexpectedValueException |
+
+
+
+SQLite3 support | enabled |
+SQLite3 module version | 7.2.12 |
+SQLite Library | 3.20.1 |
+
+
+Directive | Local Value | Master Value |
+sqlite3.extension_dir | no value | no value |
+
+
+
+Dynamic Library Support | enabled |
+Path to sendmail | /usr/sbin/sendmail -t -i |
+
+
+Directive | Local Value | Master Value |
+assert.active | 1 | 1 |
+assert.bail | 0 | 0 |
+assert.callback | no value | no value |
+assert.exception | 0 | 0 |
+assert.quiet_eval | 0 | 0 |
+assert.warning | 1 | 1 |
+auto_detect_line_endings | 0 | 0 |
+default_socket_timeout | 60 | 60 |
+from | no value | no value |
+session.trans_sid_hosts | no value | no value |
+session.trans_sid_tags | a=href,area=href,frame=src,form= | a=href,area=href,frame=src,form= |
+url_rewriter.hosts | no value | no value |
+url_rewriter.tags | form= | form= |
+user_agent | no value | no value |
+
+
+
+Tokenizer Support | enabled |
+
+
+
+XML Support | active |
+XML Namespace Support | active |
+libxml2 Version | 2.9.8 |
+
+
+
+
+
+
+
+ZLib Support | enabled |
+Stream Wrapper | compress.zlib:// |
+Stream Filter | zlib.inflate, zlib.deflate |
+Compiled Version | 1.2.11 |
+Linked Version | 1.2.11 |
+
+
+Directive | Local Value | Master Value |
+zlib.output_compression | Off | Off |
+zlib.output_compression_level | -1 | -1 |
+zlib.output_handler | no value | no value |
+
+ Additional Modules
+
+ Environment
+
+Variable | Value |
+SERVICE_SERVER2_SERVICE_HOST | 10.111.252.137 |
+KUBERNETES_PORT | tcp://10.96.0.1:443 |
+KUBERNETES_SERVICE_PORT | 443 |
+PHP_EXTRA_CONFIGURE_ARGS | --enable-fpm --with-fpm-user=www-data --with-fpm-group=www-data --disable-cgi |
+HOSTNAME | server2-6fc44d988b-25qsf |
+PHP_INI_DIR | /usr/local/etc/php |
+SHLVL | 1 |
+SERVICE_SERVER1_PORT | tcp://10.104.213.123:80 |
+SERVICE_SERVER1_SERVICE_PORT | 80 |
+HOME | /home/www-data |
+SERVICE_SERVER2_PORT | tcp://10.111.252.137:80 |
+SERVICE_SERVER2_SERVICE_PORT | 80 |
+PHP_LDFLAGS | -Wl,-O1 -Wl,--hash-style=both -pie |
+PHP_CFLAGS | -fstack-protector-strong -fpic -fpie -O2 |
+PHP_MD5 | no value |
+SERVICE_SERVER1_PORT_80_TCP_ADDR | 10.104.213.123 |
+PHP_VERSION | 7.2.12 |
+SERVICE_SERVER2_PORT_80_TCP_ADDR | 10.111.252.137 |
+GPG_KEYS | 1729F83938DA44E27BA0F4D3DBDB397470D12172 B1B44D8F021E4E2D6021E995DC9FF8D3EE5AF27F |
+SERVICE_SERVER1_PORT_80_TCP_PORT | 80 |
+PHP_CPPFLAGS | -fstack-protector-strong -fpic -fpie -O2 |
+PHP_ASC_URL | https://secure.php.net/get/php-7.2.12.tar.xz.asc/from/this/mirror |
+SERVICE_SERVER1_PORT_80_TCP_PROTO | tcp |
+SERVICE_SERVER2_PORT_80_TCP_PORT | 80 |
+SERVICE_SERVER2_PORT_80_TCP_PROTO | tcp |
+PHP_URL | https://secure.php.net/get/php-7.2.12.tar.xz/from/this/mirror |
+KUBERNETES_PORT_443_TCP_ADDR | 10.96.0.1 |
+PATH | /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin |
+KUBERNETES_PORT_443_TCP_PORT | 443 |
+KUBERNETES_PORT_443_TCP_PROTO | tcp |
+SERVICE_SERVER1_PORT_80_TCP | tcp://10.104.213.123:80 |
+SERVICE_SERVER2_PORT_80_TCP | tcp://10.111.252.137:80 |
+SERVICE_SERVER1_SERVICE_PORT_HTTP | 80 |
+KUBERNETES_PORT_443_TCP | tcp://10.96.0.1:443 |
+KUBERNETES_SERVICE_PORT_HTTPS | 443 |
+SERVICE_SERVER2_SERVICE_PORT_HTTP | 80 |
+KUBERNETES_SERVICE_HOST | 10.96.0.1 |
+PHPIZE_DEPS | autoconf dpkg-dev dpkg file g++ gcc libc-dev make pkgconf re2c |
+PWD | /var/www/html |
+PHP_SHA256 | 989c04cc879ee71a5e1131db867f3c5102f1f7565f805e2bb8bde33f93147fe1 |
+SERVICE_SERVER1_SERVICE_HOST | 10.104.213.123 |
+USER | www-data |
+
+ PHP Variables
+
+Variable | Value |
+$_SERVER['SERVICE_SERVER2_SERVICE_HOST'] | 10.111.252.137 |
+$_SERVER['KUBERNETES_PORT'] | tcp://10.96.0.1:443 |
+$_SERVER['KUBERNETES_SERVICE_PORT'] | 443 |
+$_SERVER['PHP_EXTRA_CONFIGURE_ARGS'] | --enable-fpm --with-fpm-user=www-data --with-fpm-group=www-data --disable-cgi |
+$_SERVER['HOSTNAME'] | server2-6fc44d988b-25qsf |
+$_SERVER['PHP_INI_DIR'] | /usr/local/etc/php |
+$_SERVER['SHLVL'] | 1 |
+$_SERVER['SERVICE_SERVER1_PORT'] | tcp://10.104.213.123:80 |
+$_SERVER['SERVICE_SERVER1_SERVICE_PORT'] | 80 |
+$_SERVER['HOME'] | /home/www-data |
+$_SERVER['SERVICE_SERVER2_PORT'] | tcp://10.111.252.137:80 |
+$_SERVER['SERVICE_SERVER2_SERVICE_PORT'] | 80 |
+$_SERVER['PHP_LDFLAGS'] | -Wl,-O1 -Wl,--hash-style=both -pie |
+$_SERVER['PHP_CFLAGS'] | -fstack-protector-strong -fpic -fpie -O2 |
+$_SERVER['PHP_MD5'] | no value |
+$_SERVER['SERVICE_SERVER1_PORT_80_TCP_ADDR'] | 10.104.213.123 |
+$_SERVER['PHP_VERSION'] | 7.2.12 |
+$_SERVER['SERVICE_SERVER2_PORT_80_TCP_ADDR'] | 10.111.252.137 |
+$_SERVER['GPG_KEYS'] | 1729F83938DA44E27BA0F4D3DBDB397470D12172 B1B44D8F021E4E2D6021E995DC9FF8D3EE5AF27F |
+$_SERVER['SERVICE_SERVER1_PORT_80_TCP_PORT'] | 80 |
+$_SERVER['PHP_CPPFLAGS'] | -fstack-protector-strong -fpic -fpie -O2 |
+$_SERVER['PHP_ASC_URL'] | https://secure.php.net/get/php-7.2.12.tar.xz.asc/from/this/mirror |
+$_SERVER['SERVICE_SERVER1_PORT_80_TCP_PROTO'] | tcp |
+$_SERVER['SERVICE_SERVER2_PORT_80_TCP_PORT'] | 80 |
+$_SERVER['SERVICE_SERVER2_PORT_80_TCP_PROTO'] | tcp |
+$_SERVER['PHP_URL'] | https://secure.php.net/get/php-7.2.12.tar.xz/from/this/mirror |
+$_SERVER['KUBERNETES_PORT_443_TCP_ADDR'] | 10.96.0.1 |
+$_SERVER['PATH'] | /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin |
+$_SERVER['KUBERNETES_PORT_443_TCP_PORT'] | 443 |
+$_SERVER['KUBERNETES_PORT_443_TCP_PROTO'] | tcp |
+$_SERVER['SERVICE_SERVER1_PORT_80_TCP'] | tcp://10.104.213.123:80 |
+$_SERVER['SERVICE_SERVER2_PORT_80_TCP'] | tcp://10.111.252.137:80 |
+$_SERVER['SERVICE_SERVER1_SERVICE_PORT_HTTP'] | 80 |
+$_SERVER['KUBERNETES_PORT_443_TCP'] | tcp://10.96.0.1:443 |
+$_SERVER['KUBERNETES_SERVICE_PORT_HTTPS'] | 443 |
+$_SERVER['SERVICE_SERVER2_SERVICE_PORT_HTTP'] | 80 |
+$_SERVER['KUBERNETES_SERVICE_HOST'] | 10.96.0.1 |
+$_SERVER['PHPIZE_DEPS'] | autoconf dpkg-dev dpkg file g++ gcc libc-dev make pkgconf re2c |
+$_SERVER['PWD'] | /var/www/html |
+$_SERVER['PHP_SHA256'] | 989c04cc879ee71a5e1131db867f3c5102f1f7565f805e2bb8bde33f93147fe1 |
+$_SERVER['SERVICE_SERVER1_SERVICE_HOST'] | 10.104.213.123 |
+$_SERVER['USER'] | www-data |
+$_SERVER['HTTP_ACCEPT_ENCODING'] | identity |
+$_SERVER['HTTP_ACCEPT'] | */* |
+$_SERVER['HTTP_USER_AGENT'] | Wget/1.18 (darwin15.5.0) |
+$_SERVER['HTTP_X_SCHEME'] | http |
+$_SERVER['HTTP_X_ORIGINAL_URI'] | /phpinfo |
+$_SERVER['HTTP_X_FORWARDED_PROTO'] | http |
+$_SERVER['HTTP_X_FORWARDED_PORT'] | 80 |
+$_SERVER['HTTP_X_FORWARDED_HOST'] | server2 |
+$_SERVER['HTTP_X_FORWARDED_FOR'] | 192.168.65.3 |
+$_SERVER['HTTP_X_REAL_IP'] | 192.168.65.3 |
+$_SERVER['HTTP_X_REQUEST_ID'] | 17081741e108403058892a872d85a2ae |
+$_SERVER['HTTP_HOST'] | server2 |
+$_SERVER['REDIRECT_STATUS'] | 200 |
+$_SERVER['SERVER_NAME'] | _ |
+$_SERVER['SERVER_PORT'] | 80 |
+$_SERVER['SERVER_ADDR'] | 10.1.7.24 |
+$_SERVER['REMOTE_PORT'] | 52084 |
+$_SERVER['REMOTE_ADDR'] | 10.1.7.23 |
+$_SERVER['SERVER_SOFTWARE'] | nginx/1.15.6 |
+$_SERVER['GATEWAY_INTERFACE'] | CGI/1.1 |
+$_SERVER['REQUEST_SCHEME'] | http |
+$_SERVER['SERVER_PROTOCOL'] | HTTP/1.1 |
+$_SERVER['DOCUMENT_ROOT'] | /var/www/app |
+$_SERVER['DOCUMENT_URI'] | /index.php |
+$_SERVER['REQUEST_URI'] | /phpinfo |
+$_SERVER['SCRIPT_NAME'] | /index.php |
+$_SERVER['CONTENT_LENGTH'] | no value |
+$_SERVER['CONTENT_TYPE'] | no value |
+$_SERVER['REQUEST_METHOD'] | GET |
+$_SERVER['QUERY_STRING'] | no value |
+$_SERVER['SCRIPT_FILENAME'] | /var/www/app/index.php |
+$_SERVER['FCGI_ROLE'] | RESPONDER |
+$_SERVER['PHP_SELF'] | /index.php |
+$_SERVER['REQUEST_TIME_FLOAT'] | 1543133030.2107 |
+$_SERVER['REQUEST_TIME'] | 1543133030 |
+$_SERVER['argv'] | Array
+(
+)
+ |
+$_SERVER['argc'] | 0 |
+$_ENV['SERVICE_SERVER2_SERVICE_HOST'] | 10.111.252.137 |
+$_ENV['KUBERNETES_PORT'] | tcp://10.96.0.1:443 |
+$_ENV['KUBERNETES_SERVICE_PORT'] | 443 |
+$_ENV['PHP_EXTRA_CONFIGURE_ARGS'] | --enable-fpm --with-fpm-user=www-data --with-fpm-group=www-data --disable-cgi |
+$_ENV['HOSTNAME'] | server2-6fc44d988b-25qsf |
+$_ENV['PHP_INI_DIR'] | /usr/local/etc/php |
+$_ENV['SHLVL'] | 1 |
+$_ENV['SERVICE_SERVER1_PORT'] | tcp://10.104.213.123:80 |
+$_ENV['SERVICE_SERVER1_SERVICE_PORT'] | 80 |
+$_ENV['HOME'] | /home/www-data |
+$_ENV['SERVICE_SERVER2_PORT'] | tcp://10.111.252.137:80 |
+$_ENV['SERVICE_SERVER2_SERVICE_PORT'] | 80 |
+$_ENV['PHP_LDFLAGS'] | -Wl,-O1 -Wl,--hash-style=both -pie |
+$_ENV['PHP_CFLAGS'] | -fstack-protector-strong -fpic -fpie -O2 |
+$_ENV['PHP_MD5'] | no value |
+$_ENV['SERVICE_SERVER1_PORT_80_TCP_ADDR'] | 10.104.213.123 |
+$_ENV['PHP_VERSION'] | 7.2.12 |
+$_ENV['SERVICE_SERVER2_PORT_80_TCP_ADDR'] | 10.111.252.137 |
+$_ENV['GPG_KEYS'] | 1729F83938DA44E27BA0F4D3DBDB397470D12172 B1B44D8F021E4E2D6021E995DC9FF8D3EE5AF27F |
+$_ENV['SERVICE_SERVER1_PORT_80_TCP_PORT'] | 80 |
+$_ENV['PHP_CPPFLAGS'] | -fstack-protector-strong -fpic -fpie -O2 |
+$_ENV['PHP_ASC_URL'] | https://secure.php.net/get/php-7.2.12.tar.xz.asc/from/this/mirror |
+$_ENV['SERVICE_SERVER1_PORT_80_TCP_PROTO'] | tcp |
+$_ENV['SERVICE_SERVER2_PORT_80_TCP_PORT'] | 80 |
+$_ENV['SERVICE_SERVER2_PORT_80_TCP_PROTO'] | tcp |
+$_ENV['PHP_URL'] | https://secure.php.net/get/php-7.2.12.tar.xz/from/this/mirror |
+$_ENV['KUBERNETES_PORT_443_TCP_ADDR'] | 10.96.0.1 |
+$_ENV['PATH'] | /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin |
+$_ENV['KUBERNETES_PORT_443_TCP_PORT'] | 443 |
+$_ENV['KUBERNETES_PORT_443_TCP_PROTO'] | tcp |
+$_ENV['SERVICE_SERVER1_PORT_80_TCP'] | tcp://10.104.213.123:80 |
+$_ENV['SERVICE_SERVER2_PORT_80_TCP'] | tcp://10.111.252.137:80 |
+$_ENV['SERVICE_SERVER1_SERVICE_PORT_HTTP'] | 80 |
+$_ENV['KUBERNETES_PORT_443_TCP'] | tcp://10.96.0.1:443 |
+$_ENV['KUBERNETES_SERVICE_PORT_HTTPS'] | 443 |
+$_ENV['SERVICE_SERVER2_SERVICE_PORT_HTTP'] | 80 |
+$_ENV['KUBERNETES_SERVICE_HOST'] | 10.96.0.1 |
+$_ENV['PHPIZE_DEPS'] | autoconf dpkg-dev dpkg file g++ gcc libc-dev make pkgconf re2c |
+$_ENV['PWD'] | /var/www/html |
+$_ENV['PHP_SHA256'] | 989c04cc879ee71a5e1131db867f3c5102f1f7565f805e2bb8bde33f93147fe1 |
+$_ENV['SERVICE_SERVER1_SERVICE_HOST'] | 10.104.213.123 |
+$_ENV['USER'] | www-data |
+$_ENV['HTTP_ACCEPT_ENCODING'] | identity |
+$_ENV['HTTP_ACCEPT'] | */* |
+$_ENV['HTTP_USER_AGENT'] | Wget/1.18 (darwin15.5.0) |
+$_ENV['HTTP_X_SCHEME'] | http |
+$_ENV['HTTP_X_ORIGINAL_URI'] | /phpinfo |
+$_ENV['HTTP_X_FORWARDED_PROTO'] | http |
+$_ENV['HTTP_X_FORWARDED_PORT'] | 80 |
+$_ENV['HTTP_X_FORWARDED_HOST'] | server2 |
+$_ENV['HTTP_X_FORWARDED_FOR'] | 192.168.65.3 |
+$_ENV['HTTP_X_REAL_IP'] | 192.168.65.3 |
+$_ENV['HTTP_X_REQUEST_ID'] | 17081741e108403058892a872d85a2ae |
+$_ENV['HTTP_HOST'] | server2 |
+$_ENV['REDIRECT_STATUS'] | 200 |
+$_ENV['SERVER_NAME'] | _ |
+$_ENV['SERVER_PORT'] | 80 |
+$_ENV['SERVER_ADDR'] | 10.1.7.24 |
+$_ENV['REMOTE_PORT'] | 52084 |
+$_ENV['REMOTE_ADDR'] | 10.1.7.23 |
+$_ENV['SERVER_SOFTWARE'] | nginx/1.15.6 |
+$_ENV['GATEWAY_INTERFACE'] | CGI/1.1 |
+$_ENV['REQUEST_SCHEME'] | http |
+$_ENV['SERVER_PROTOCOL'] | HTTP/1.1 |
+$_ENV['DOCUMENT_ROOT'] | /var/www/app |
+$_ENV['DOCUMENT_URI'] | /index.php |
+$_ENV['REQUEST_URI'] | /phpinfo |
+$_ENV['SCRIPT_NAME'] | /index.php |
+$_ENV['CONTENT_LENGTH'] | no value |
+$_ENV['CONTENT_TYPE'] | no value |
+$_ENV['REQUEST_METHOD'] | GET |
+$_ENV['QUERY_STRING'] | no value |
+$_ENV['SCRIPT_FILENAME'] | /var/www/app/index.php |
+$_ENV['FCGI_ROLE'] | RESPONDER |
+$_ENV['PHP_SELF'] | /index.php |
+$_ENV['REQUEST_TIME_FLOAT'] | 1543133030.2107 |
+$_ENV['REQUEST_TIME'] | 1543133030 |
+$_ENV['argv'] | Array
+(
+)
+ |
+$_ENV['argc'] | 0 |
+
+
+ PHP Credits
+
+PHP Group |
+Thies C. Arntzen, Stig Bakken, Shane Caraveo, Andi Gutmans, Rasmus Lerdorf, Sam Ruby, Sascha Schumann, Zeev Suraski, Jim Winstead, Andrei Zmievski |
+
+
+Language Design & Concept |
+Andi Gutmans, Rasmus Lerdorf, Zeev Suraski, Marcus Boerger |
+
+
+PHP Authors |
+Contribution | Authors |
+Zend Scripting Language Engine | Andi Gutmans, Zeev Suraski, Stanislav Malyshev, Marcus Boerger, Dmitry Stogov, Xinchen Hui, Nikita Popov |
+Extension Module API | Andi Gutmans, Zeev Suraski, Andrei Zmievski |
+UNIX Build and Modularization | Stig Bakken, Sascha Schumann, Jani Taskinen |
+Windows Support | Shane Caraveo, Zeev Suraski, Wez Furlong, Pierre-Alain Joye, Anatol Belski, Kalle Sommer Nielsen |
+Server API (SAPI) Abstraction Layer | Andi Gutmans, Shane Caraveo, Zeev Suraski |
+Streams Abstraction Layer | Wez Furlong, Sara Golemon |
+PHP Data Objects Layer | Wez Furlong, Marcus Boerger, Sterling Hughes, George Schlossnagle, Ilia Alshanetsky |
+Output Handler | Zeev Suraski, Thies C. Arntzen, Marcus Boerger, Michael Wallner |
+Consistent 64 bit support | Anthony Ferrara, Anatol Belski |
+
+
+SAPI Modules |
+Contribution | Authors |
+Apache 2.0 Handler | Ian Holsman, Justin Erenkrantz (based on Apache 2.0 Filter code) |
+CGI / FastCGI | Rasmus Lerdorf, Stig Bakken, Shane Caraveo, Dmitry Stogov |
+CLI | Edin Kadribasic, Marcus Boerger, Johannes Schlueter, Moriyoshi Koizumi, Xinchen Hui |
+Embed | Edin Kadribasic |
+FastCGI Process Manager | Andrei Nigmatulin, dreamcat4, Antony Dovgal, Jerome Loyet |
+litespeed | George Wang |
+phpdbg | Felipe Pena, Joe Watkins, Bob Weinand |
+
+
+Module Authors |
+Module | Authors |
+BC Math | Andi Gutmans |
+Bzip2 | Sterling Hughes |
+Calendar | Shane Caraveo, Colin Viebrock, Hartmut Holzgraefe, Wez Furlong |
+COM and .Net | Wez Furlong |
+ctype | Hartmut Holzgraefe |
+cURL | Sterling Hughes |
+Date/Time Support | Derick Rethans |
+DB-LIB (MS SQL, Sybase) | Wez Furlong, Frank M. Kromann, Adam Baratz |
+DBA | Sascha Schumann, Marcus Boerger |
+DOM | Christian Stocker, Rob Richards, Marcus Boerger |
+enchant | Pierre-Alain Joye, Ilia Alshanetsky |
+EXIF | Rasmus Lerdorf, Marcus Boerger |
+fileinfo | Ilia Alshanetsky, Pierre Alain Joye, Scott MacVicar, Derick Rethans, Anatol Belski |
+Firebird driver for PDO | Ard Biesheuvel |
+FTP | Stefan Esser, Andrew Skalski |
+GD imaging | Rasmus Lerdorf, Stig Bakken, Jim Winstead, Jouni Ahto, Ilia Alshanetsky, Pierre-Alain Joye, Marcus Boerger |
+GetText | Alex Plotnick |
+GNU GMP support | Stanislav Malyshev |
+Iconv | Rui Hirokawa, Stig Bakken, Moriyoshi Koizumi |
+IMAP | Rex Logan, Mark Musone, Brian Wang, Kaj-Michael Lang, Antoni Pamies Olive, Rasmus Lerdorf, Andrew Skalski, Chuck Hagenbuch, Daniel R Kalowsky |
+Input Filter | Rasmus Lerdorf, Derick Rethans, Pierre-Alain Joye, Ilia Alshanetsky |
+InterBase | Jouni Ahto, Andrew Avdeev, Ard Biesheuvel |
+Internationalization | Ed Batutis, Vladimir Iordanov, Dmitry Lakhtyuk, Stanislav Malyshev, Vadim Savchuk, Kirti Velankar |
+JSON | Jakub Zelenka, Omar Kilani, Scott MacVicar |
+LDAP | Amitay Isaacs, Eric Warnke, Rasmus Lerdorf, Gerrit Thomson, Stig Venaas |
+LIBXML | Christian Stocker, Rob Richards, Marcus Boerger, Wez Furlong, Shane Caraveo |
+Multibyte String Functions | Tsukada Takuya, Rui Hirokawa |
+MySQL driver for PDO | George Schlossnagle, Wez Furlong, Ilia Alshanetsky, Johannes Schlueter |
+MySQLi | Zak Greant, Georg Richter, Andrey Hristov, Ulf Wendel |
+MySQLnd | Andrey Hristov, Ulf Wendel, Georg Richter, Johannes Schlüter |
+OCI8 | Stig Bakken, Thies C. Arntzen, Andy Sautins, David Benson, Maxim Maletsky, Harald Radi, Antony Dovgal, Andi Gutmans, Wez Furlong, Christopher Jones, Oracle Corporation |
+ODBC driver for PDO | Wez Furlong |
+ODBC | Stig Bakken, Andreas Karajannis, Frank M. Kromann, Daniel R. Kalowsky |
+Opcache | Andi Gutmans, Zeev Suraski, Stanislav Malyshev, Dmitry Stogov, Xinchen Hui |
+OpenSSL | Stig Venaas, Wez Furlong, Sascha Kettler, Scott MacVicar |
+Oracle (OCI) driver for PDO | Wez Furlong |
+pcntl | Jason Greene, Arnaud Le Blanc |
+Perl Compatible Regexps | Andrei Zmievski |
+PHP Archive | Gregory Beaver, Marcus Boerger |
+PHP Data Objects | Wez Furlong, Marcus Boerger, Sterling Hughes, George Schlossnagle, Ilia Alshanetsky |
+PHP hash | Sara Golemon, Rasmus Lerdorf, Stefan Esser, Michael Wallner, Scott MacVicar |
+Posix | Kristian Koehntopp |
+PostgreSQL driver for PDO | Edin Kadribasic, Ilia Alshanetsky |
+PostgreSQL | Jouni Ahto, Zeev Suraski, Yasuo Ohgaki, Chris Kings-Lynne |
+Pspell | Vlad Krupin |
+Readline | Thies C. Arntzen |
+Recode | Kristian Koehntopp |
+Reflection | Marcus Boerger, Timm Friebe, George Schlossnagle, Andrei Zmievski, Johannes Schlueter |
+Sessions | Sascha Schumann, Andrei Zmievski |
+Shared Memory Operations | Slava Poliakov, Ilia Alshanetsky |
+SimpleXML | Sterling Hughes, Marcus Boerger, Rob Richards |
+SNMP | Rasmus Lerdorf, Harrie Hazewinkel, Mike Jackson, Steven Lawrance, Johann Hanne, Boris Lytochkin |
+SOAP | Brad Lafountain, Shane Caraveo, Dmitry Stogov |
+Sockets | Chris Vandomelen, Sterling Hughes, Daniel Beulshausen, Jason Greene |
+Sodium | Frank Denis |
+SPL | Marcus Boerger, Etienne Kneuss |
+SQLite 3.x driver for PDO | Wez Furlong |
+SQLite3 | Scott MacVicar, Ilia Alshanetsky, Brad Dewar |
+System V Message based IPC | Wez Furlong |
+System V Semaphores | Tom May |
+System V Shared Memory | Christian Cartus |
+tidy | John Coggeshall, Ilia Alshanetsky |
+tokenizer | Andrei Zmievski, Johannes Schlueter |
+WDDX | Andrei Zmievski |
+XML | Stig Bakken, Thies C. Arntzen, Sterling Hughes |
+XMLReader | Rob Richards |
+xmlrpc | Dan Libby |
+XMLWriter | Rob Richards, Pierre-Alain Joye |
+XSL | Christian Stocker, Rob Richards |
+Zip | Pierre-Alain Joye, Remi Collet |
+Zlib | Rasmus Lerdorf, Stefan Roehrich, Zeev Suraski, Jade Nicoletti, Michael Wallner |
+
+
+PHP Documentation |
+Authors | Mehdi Achour, Friedhelm Betz, Antony Dovgal, Nuno Lopes, Hannes Magnusson, Philip Olson, Georg Richter, Damien Seguy, Jakub Vrana, Adam Harvey |
+Editor | Peter Cowburn |
+User Note Maintainers | Daniel P. Brown, Thiago Henrique Pojda |
+Other Contributors | Previously active authors, editors and other contributors are listed in the manual. |
+
+
+PHP Quality Assurance Team |
+Ilia Alshanetsky, Joerg Behrens, Antony Dovgal, Stefan Esser, Moriyoshi Koizumi, Magnus Maatta, Sebastian Nohn, Derick Rethans, Melvyn Sopacua, Jani Taskinen, Pierre-Alain Joye, Dmitry Stogov, Felipe Pena, David Soria Parra, Stanislav Malyshev, Julien Pauli, Stephen Zarkos, Anatol Belski, Remi Collet, Ferenc Kovacs |
+
+
+Websites and Infrastructure team |
+PHP Websites Team | Rasmus Lerdorf, Hannes Magnusson, Philip Olson, Lukas Kahwe Smith, Pierre-Alain Joye, Kalle Sommer Nielsen, Peter Cowburn, Adam Harvey, Ferenc Kovacs, Levi Morrison |
+Event Maintainers | Damien Seguy, Daniel P. Brown |
+Network Infrastructure | Daniel P. Brown |
+Windows Infrastructure | Alex Schoenmaker |
+
+ PHP License
+
+
+
+This program is free software; you can redistribute it and/or modify it under the terms of the PHP License as published by the PHP Group and included in the distribution in the file: LICENSE
+
+This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+
+If you did not receive a copy of the PHP license, or have any questions about PHP licensing, please contact license@php.net.
+
+ |
+
+
\ No newline at end of file
diff --git a/tests/data/phpinfo2.txt b/tests/data/phpinfo2.txt
new file mode 100644
index 0000000..1497cb4
--- /dev/null
+++ b/tests/data/phpinfo2.txt
@@ -0,0 +1,795 @@
+phpinfo()
+PHP Version => 7.2.12
+
+System => Linux server2-6fc44d988b-25qsf 4.9.125-linuxkit #1 SMP Fri Sep 7 08:20:28 UTC 2018 x86_64
+Build Date => Nov 16 2018 04:03:42
+Configure Command => './configure' '--build=x86_64-linux-musl' '--with-config-file-path=/usr/local/etc/php' '--with-config-file-scan-dir=/usr/local/etc/php/conf.d' '--enable-option-checking=fatal' '--with-mhash' '--enable-ftp' '--enable-mbstring' '--enable-mysqlnd' '--with-password-argon2' '--with-sodium=shared' '--with-curl' '--with-libedit' '--with-openssl' '--with-zlib' '--enable-fpm' '--with-fpm-user=www-data' '--with-fpm-group=www-data' '--disable-cgi' 'build_alias=x86_64-linux-musl'
+Server API => Command Line Interface
+Virtual Directory Support => disabled
+Configuration File (php.ini) Path => /usr/local/etc/php
+Loaded Configuration File => (none)
+Scan this dir for additional .ini files => /usr/local/etc/php/conf.d
+Additional .ini files parsed => /usr/local/etc/php/conf.d/docker-php-ext-sodium.ini
+
+PHP API => 20170718
+PHP Extension => 20170718
+Zend Extension => 320170718
+Zend Extension Build => API320170718,NTS
+PHP Extension Build => API20170718,NTS
+Debug Build => no
+Thread Safety => disabled
+Zend Signal Handling => enabled
+Zend Memory Manager => enabled
+Zend Multibyte Support => provided by mbstring
+IPv6 Support => enabled
+DTrace Support => disabled
+
+Registered PHP Streams => https, ftps, compress.zlib, php, file, glob, data, http, ftp, phar
+Registered Stream Socket Transports => tcp, udp, unix, udg, ssl, tls, tlsv1.0, tlsv1.1, tlsv1.2
+Registered Stream Filters => zlib.*, convert.iconv.*, string.rot13, string.toupper, string.tolower, string.strip_tags, convert.*, consumed, dechunk
+
+This program makes use of the Zend Scripting Language Engine:
+Zend Engine v3.2.0, Copyright (c) 1998-2018 Zend Technologies
+
+
+ _______________________________________________________________________
+
+
+Configuration
+
+Core
+
+PHP Version => 7.2.12
+
+Directive => Local Value => Master Value
+allow_url_fopen => On => On
+allow_url_include => Off => Off
+arg_separator.input => & => &
+arg_separator.output => & => &
+auto_append_file => no value => no value
+auto_globals_jit => On => On
+auto_prepend_file => no value => no value
+browscap => no value => no value
+default_charset => UTF-8 => UTF-8
+default_mimetype => text/html => text/html
+disable_classes => no value => no value
+disable_functions => no value => no value
+display_errors => STDOUT => STDOUT
+display_startup_errors => Off => Off
+doc_root => no value => no value
+docref_ext => no value => no value
+docref_root => no value => no value
+enable_dl => On => On
+enable_post_data_reading => On => On
+error_append_string => no value => no value
+error_log => no value => no value
+error_prepend_string => no value => no value
+error_reporting => no value => no value
+expose_php => On => On
+extension_dir => /usr/local/lib/php/extensions/no-debug-non-zts-20170718 => /usr/local/lib/php/extensions/no-debug-non-zts-20170718
+file_uploads => On => On
+hard_timeout => 2 => 2
+highlight.comment => #FF8000 => #FF8000
+highlight.default => #0000BB => #0000BB
+highlight.html => #000000 => #000000
+highlight.keyword => #007700 => #007700
+highlight.string => #DD0000 => #DD0000
+html_errors => Off => Off
+ignore_repeated_errors => Off => Off
+ignore_repeated_source => Off => Off
+ignore_user_abort => Off => Off
+implicit_flush => On => On
+include_path => .:/usr/local/lib/php => .:/usr/local/lib/php
+input_encoding => no value => no value
+internal_encoding => no value => no value
+log_errors => Off => Off
+log_errors_max_len => 1024 => 1024
+mail.add_x_header => Off => Off
+mail.force_extra_parameters => no value => no value
+mail.log => no value => no value
+max_execution_time => 0 => 0
+max_file_uploads => 20 => 20
+max_input_nesting_level => 64 => 64
+max_input_time => -1 => -1
+max_input_vars => 1000 => 1000
+memory_limit => 128M => 128M
+open_basedir => no value => no value
+output_buffering => 0 => 0
+output_encoding => no value => no value
+output_handler => no value => no value
+post_max_size => 8M => 8M
+precision => 14 => 14
+realpath_cache_size => 4096K => 4096K
+realpath_cache_ttl => 120 => 120
+register_argc_argv => On => On
+report_memleaks => On => On
+report_zend_debug => Off => Off
+request_order => no value => no value
+sendmail_from => no value => no value
+sendmail_path => /usr/sbin/sendmail -t -i => /usr/sbin/sendmail -t -i
+serialize_precision => -1 => -1
+short_open_tag => On => On
+SMTP => localhost => localhost
+smtp_port => 25 => 25
+sys_temp_dir => no value => no value
+track_errors => Off => Off
+unserialize_callback_func => no value => no value
+upload_max_filesize => 2M => 2M
+upload_tmp_dir => no value => no value
+user_dir => no value => no value
+user_ini.cache_ttl => 300 => 300
+user_ini.filename => .user.ini => .user.ini
+variables_order => EGPCS => EGPCS
+xmlrpc_error_number => 0 => 0
+xmlrpc_errors => Off => Off
+zend.assertions => 1 => 1
+zend.detect_unicode => On => On
+zend.enable_gc => On => On
+zend.multibyte => Off => Off
+zend.script_encoding => no value => no value
+zend.signal_check => Off => Off
+
+ctype
+
+ctype functions => enabled
+
+curl
+
+cURL support => enabled
+cURL Information => 7.61.1
+Age => 4
+Features
+AsynchDNS => Yes
+CharConv => No
+Debug => No
+GSS-Negotiate => No
+IDN => No
+IPv6 => Yes
+krb4 => No
+Largefile => Yes
+libz => Yes
+NTLM => Yes
+NTLMWB => Yes
+SPNEGO => No
+SSL => Yes
+SSPI => No
+TLS-SRP => No
+HTTP2 => Yes
+GSSAPI => No
+KERBEROS5 => No
+UNIX_SOCKETS => Yes
+PSL => No
+Protocols => dict, file, ftp, ftps, gopher, http, https, imap, imaps, pop3, pop3s, rtsp, scp, sftp, smb, smbs, smtp, smtps, telnet, tftp
+Host => x86_64-alpine-linux-musl
+SSL Version => LibreSSL/2.0.0
+ZLib Version => 1.2.11
+libSSH Version => libssh2/1.8.0
+
+date
+
+date/time support => enabled
+timelib version => 2017.08
+"Olson" Timezone Database Version => 2018.6
+Timezone Database => internal
+Default timezone => UTC
+
+Directive => Local Value => Master Value
+date.default_latitude => 31.7667 => 31.7667
+date.default_longitude => 35.2333 => 35.2333
+date.sunrise_zenith => 90.583333 => 90.583333
+date.sunset_zenith => 90.583333 => 90.583333
+date.timezone => no value => no value
+
+dom
+
+DOM/XML => enabled
+DOM/XML API Version => 20031129
+libxml Version => 2.9.8
+HTML Support => enabled
+XPath Support => enabled
+XPointer Support => enabled
+Schema Support => enabled
+RelaxNG Support => enabled
+
+fileinfo
+
+fileinfo support => enabled
+version => 1.0.5
+libmagic => 531
+
+filter
+
+Input Validation and Filtering => enabled
+Revision => $Id: 5a34caaa246b9df197f4b43af8ac66a07464fe4b $
+
+Directive => Local Value => Master Value
+filter.default => unsafe_raw => unsafe_raw
+filter.default_flags => no value => no value
+
+ftp
+
+FTP support => enabled
+FTPS support => enabled
+
+hash
+
+hash support => enabled
+Hashing Engines => md2 md4 md5 sha1 sha224 sha256 sha384 sha512/224 sha512/256 sha512 sha3-224 sha3-256 sha3-384 sha3-512 ripemd128 ripemd160 ripemd256 ripemd320 whirlpool tiger128,3 tiger160,3 tiger192,3 tiger128,4 tiger160,4 tiger192,4 snefru snefru256 gost gost-crypto adler32 crc32 crc32b fnv132 fnv1a32 fnv164 fnv1a64 joaat haval128,3 haval160,3 haval192,3 haval224,3 haval256,3 haval128,4 haval160,4 haval192,4 haval224,4 haval256,4 haval128,5 haval160,5 haval192,5 haval224,5 haval256,5
+
+MHASH support => Enabled
+MHASH API Version => Emulated Support
+
+iconv
+
+iconv support => enabled
+iconv implementation => unknown
+iconv library version => unknown
+
+Directive => Local Value => Master Value
+iconv.input_encoding => no value => no value
+iconv.internal_encoding => no value => no value
+iconv.output_encoding => no value => no value
+
+json
+
+json support => enabled
+json version => 1.6.0
+
+libxml
+
+libXML support => active
+libXML Compiled Version => 2.9.8
+libXML Loaded Version => 20908
+libXML streams => enabled
+
+mbstring
+
+Multibyte Support => enabled
+Multibyte string engine => libmbfl
+HTTP input encoding translation => disabled
+libmbfl version => 1.3.2
+oniguruma version => 6.3.0
+
+mbstring extension makes use of "streamable kanji code filter and converter", which is distributed under the GNU Lesser General Public License version 2.1.
+
+Multibyte (japanese) regex support => enabled
+Multibyte regex (oniguruma) backtrack check => On
+Multibyte regex (oniguruma) version => 6.3.0
+
+Directive => Local Value => Master Value
+mbstring.detect_order => no value => no value
+mbstring.encoding_translation => Off => Off
+mbstring.func_overload => 0 => 0
+mbstring.http_input => no value => no value
+mbstring.http_output => no value => no value
+mbstring.http_output_conv_mimetypes => ^(text/|application/xhtml\+xml) => ^(text/|application/xhtml\+xml)
+mbstring.internal_encoding => no value => no value
+mbstring.language => neutral => neutral
+mbstring.strict_detection => Off => Off
+mbstring.substitute_character => no value => no value
+
+mysqlnd
+
+mysqlnd => enabled
+Version => mysqlnd 5.0.12-dev - 20150407 - $Id: 38fea24f2847fa7519001be390c98ae0acafe387 $
+Compression => supported
+core SSL => supported
+extended SSL => supported
+Command buffer size => 4096
+Read buffer size => 32768
+Read timeout => 86400
+Collecting statistics => Yes
+Collecting memory statistics => No
+Tracing => n/a
+Loaded plugins => mysqlnd,debug_trace,auth_plugin_mysql_native_password,auth_plugin_mysql_clear_password,auth_plugin_sha256_password
+API Extensions =>
+
+mysqlnd statistics =>
+bytes_sent => 0
+bytes_received => 0
+packets_sent => 0
+packets_received => 0
+protocol_overhead_in => 0
+protocol_overhead_out => 0
+bytes_received_ok_packet => 0
+bytes_received_eof_packet => 0
+bytes_received_rset_header_packet => 0
+bytes_received_rset_field_meta_packet => 0
+bytes_received_rset_row_packet => 0
+bytes_received_prepare_response_packet => 0
+bytes_received_change_user_packet => 0
+packets_sent_command => 0
+packets_received_ok => 0
+packets_received_eof => 0
+packets_received_rset_header => 0
+packets_received_rset_field_meta => 0
+packets_received_rset_row => 0
+packets_received_prepare_response => 0
+packets_received_change_user => 0
+result_set_queries => 0
+non_result_set_queries => 0
+no_index_used => 0
+bad_index_used => 0
+slow_queries => 0
+buffered_sets => 0
+unbuffered_sets => 0
+ps_buffered_sets => 0
+ps_unbuffered_sets => 0
+flushed_normal_sets => 0
+flushed_ps_sets => 0
+ps_prepared_never_executed => 0
+ps_prepared_once_executed => 0
+rows_fetched_from_server_normal => 0
+rows_fetched_from_server_ps => 0
+rows_buffered_from_client_normal => 0
+rows_buffered_from_client_ps => 0
+rows_fetched_from_client_normal_buffered => 0
+rows_fetched_from_client_normal_unbuffered => 0
+rows_fetched_from_client_ps_buffered => 0
+rows_fetched_from_client_ps_unbuffered => 0
+rows_fetched_from_client_ps_cursor => 0
+rows_affected_normal => 0
+rows_affected_ps => 0
+rows_skipped_normal => 0
+rows_skipped_ps => 0
+copy_on_write_saved => 0
+copy_on_write_performed => 0
+command_buffer_too_small => 0
+connect_success => 0
+connect_failure => 0
+connection_reused => 0
+reconnect => 0
+pconnect_success => 0
+active_connections => 0
+active_persistent_connections => 0
+explicit_close => 0
+implicit_close => 0
+disconnect_close => 0
+in_middle_of_command_close => 0
+explicit_free_result => 0
+implicit_free_result => 0
+explicit_stmt_close => 0
+implicit_stmt_close => 0
+mem_emalloc_count => 0
+mem_emalloc_amount => 0
+mem_ecalloc_count => 0
+mem_ecalloc_amount => 0
+mem_erealloc_count => 0
+mem_erealloc_amount => 0
+mem_efree_count => 0
+mem_efree_amount => 0
+mem_malloc_count => 0
+mem_malloc_amount => 0
+mem_calloc_count => 0
+mem_calloc_amount => 0
+mem_realloc_count => 0
+mem_realloc_amount => 0
+mem_free_count => 0
+mem_free_amount => 0
+mem_estrndup_count => 0
+mem_strndup_count => 0
+mem_estrdup_count => 0
+mem_strdup_count => 0
+mem_edupl_count => 0
+mem_dupl_count => 0
+proto_text_fetched_null => 0
+proto_text_fetched_bit => 0
+proto_text_fetched_tinyint => 0
+proto_text_fetched_short => 0
+proto_text_fetched_int24 => 0
+proto_text_fetched_int => 0
+proto_text_fetched_bigint => 0
+proto_text_fetched_decimal => 0
+proto_text_fetched_float => 0
+proto_text_fetched_double => 0
+proto_text_fetched_date => 0
+proto_text_fetched_year => 0
+proto_text_fetched_time => 0
+proto_text_fetched_datetime => 0
+proto_text_fetched_timestamp => 0
+proto_text_fetched_string => 0
+proto_text_fetched_blob => 0
+proto_text_fetched_enum => 0
+proto_text_fetched_set => 0
+proto_text_fetched_geometry => 0
+proto_text_fetched_other => 0
+proto_binary_fetched_null => 0
+proto_binary_fetched_bit => 0
+proto_binary_fetched_tinyint => 0
+proto_binary_fetched_short => 0
+proto_binary_fetched_int24 => 0
+proto_binary_fetched_int => 0
+proto_binary_fetched_bigint => 0
+proto_binary_fetched_decimal => 0
+proto_binary_fetched_float => 0
+proto_binary_fetched_double => 0
+proto_binary_fetched_date => 0
+proto_binary_fetched_year => 0
+proto_binary_fetched_time => 0
+proto_binary_fetched_datetime => 0
+proto_binary_fetched_timestamp => 0
+proto_binary_fetched_string => 0
+proto_binary_fetched_json => 0
+proto_binary_fetched_blob => 0
+proto_binary_fetched_enum => 0
+proto_binary_fetched_set => 0
+proto_binary_fetched_geometry => 0
+proto_binary_fetched_other => 0
+init_command_executed_count => 0
+init_command_failed_count => 0
+com_quit => 0
+com_init_db => 0
+com_query => 0
+com_field_list => 0
+com_create_db => 0
+com_drop_db => 0
+com_refresh => 0
+com_shutdown => 0
+com_statistics => 0
+com_process_info => 0
+com_connect => 0
+com_process_kill => 0
+com_debug => 0
+com_ping => 0
+com_time => 0
+com_delayed_insert => 0
+com_change_user => 0
+com_binlog_dump => 0
+com_table_dump => 0
+com_connect_out => 0
+com_register_slave => 0
+com_stmt_prepare => 0
+com_stmt_execute => 0
+com_stmt_send_long_data => 0
+com_stmt_close => 0
+com_stmt_reset => 0
+com_stmt_set_option => 0
+com_stmt_fetch => 0
+com_deamon => 0
+bytes_received_real_data_normal => 0
+bytes_received_real_data_ps => 0
+
+openssl
+
+OpenSSL support => enabled
+OpenSSL Library Version => LibreSSL 2.7.4
+OpenSSL Header Version => LibreSSL 2.7.4
+Openssl default config => /etc/ssl/openssl.cnf
+
+Directive => Local Value => Master Value
+openssl.cafile => no value => no value
+openssl.capath => no value => no value
+
+pcre
+
+PCRE (Perl Compatible Regular Expressions) Support => enabled
+PCRE Library Version => 8.41 2017-07-05
+PCRE JIT Support => enabled
+
+Directive => Local Value => Master Value
+pcre.backtrack_limit => 1000000 => 1000000
+pcre.jit => 1 => 1
+pcre.recursion_limit => 100000 => 100000
+
+PDO
+
+PDO support => enabled
+PDO drivers => sqlite
+
+pdo_sqlite
+
+PDO Driver for SQLite 3.x => enabled
+SQLite Library => 3.20.1
+
+Phar
+
+Phar: PHP Archive support => enabled
+Phar EXT version => 2.0.2
+Phar API version => 1.1.1
+SVN revision => $Id: 11c9d270a69dbd9589cbea10a0ad9731a286a147 $
+Phar-based phar archives => enabled
+Tar-based phar archives => enabled
+ZIP-based phar archives => enabled
+gzip compression => enabled
+bzip2 compression => disabled (install pecl/bz2)
+Native OpenSSL support => enabled
+
+
+Phar based on pear/PHP_Archive, original concept by Davey Shafik.
+Phar fully realized by Gregory Beaver and Marcus Boerger.
+Portions of tar implementation Copyright (c) 2003-2009 Tim Kientzle.
+Directive => Local Value => Master Value
+phar.cache_list => no value => no value
+phar.readonly => On => On
+phar.require_hash => On => On
+
+posix
+
+Revision => $Id: 0a764bab332255746424a1e6cfbaaeebab998e4c $
+
+readline
+
+Readline Support => enabled
+Readline library => EditLine wrapper
+
+Directive => Local Value => Master Value
+cli.pager => no value => no value
+cli.prompt => \b \> => \b \>
+
+Reflection
+
+Reflection => enabled
+Version => $Id: f1096fbe817b0413895286a603375570e78fb553 $
+
+session
+
+Session Support => enabled
+Registered save handlers => files user
+Registered serializer handlers => php_serialize php php_binary
+
+Directive => Local Value => Master Value
+session.auto_start => Off => Off
+session.cache_expire => 180 => 180
+session.cache_limiter => nocache => nocache
+session.cookie_domain => no value => no value
+session.cookie_httponly => 0 => 0
+session.cookie_lifetime => 0 => 0
+session.cookie_path => / => /
+session.cookie_secure => 0 => 0
+session.gc_divisor => 100 => 100
+session.gc_maxlifetime => 1440 => 1440
+session.gc_probability => 1 => 1
+session.lazy_write => On => On
+session.name => PHPSESSID => PHPSESSID
+session.referer_check => no value => no value
+session.save_handler => files => files
+session.save_path => no value => no value
+session.serialize_handler => php => php
+session.sid_bits_per_character => 4 => 4
+session.sid_length => 32 => 32
+session.upload_progress.cleanup => On => On
+session.upload_progress.enabled => On => On
+session.upload_progress.freq => 1% => 1%
+session.upload_progress.min_freq => 1 => 1
+session.upload_progress.name => PHP_SESSION_UPLOAD_PROGRESS => PHP_SESSION_UPLOAD_PROGRESS
+session.upload_progress.prefix => upload_progress_ => upload_progress_
+session.use_cookies => 1 => 1
+session.use_only_cookies => 1 => 1
+session.use_strict_mode => 0 => 0
+session.use_trans_sid => 0 => 0
+
+SimpleXML
+
+Simplexml support => enabled
+Revision => $Id: 341daed0ee94ea8f728bfd0ba4626e6ed365c0d1 $
+Schema support => enabled
+
+sodium
+
+sodium support => enabled
+libsodium headers version => 1.0.16
+libsodium library version => 1.0.16
+
+SPL
+
+SPL support => enabled
+Interfaces => OuterIterator, RecursiveIterator, SeekableIterator, SplObserver, SplSubject
+Classes => AppendIterator, ArrayIterator, ArrayObject, BadFunctionCallException, BadMethodCallException, CachingIterator, CallbackFilterIterator, DirectoryIterator, DomainException, EmptyIterator, FilesystemIterator, FilterIterator, GlobIterator, InfiniteIterator, InvalidArgumentException, IteratorIterator, LengthException, LimitIterator, LogicException, MultipleIterator, NoRewindIterator, OutOfBoundsException, OutOfRangeException, OverflowException, ParentIterator, RangeException, RecursiveArrayIterator, RecursiveCachingIterator, RecursiveCallbackFilterIterator, RecursiveDirectoryIterator, RecursiveFilterIterator, RecursiveIteratorIterator, RecursiveRegexIterator, RecursiveTreeIterator, RegexIterator, RuntimeException, SplDoublyLinkedList, SplFileInfo, SplFileObject, SplFixedArray, SplHeap, SplMinHeap, SplMaxHeap, SplObjectStorage, SplPriorityQueue, SplQueue, SplStack, SplTempFileObject, UnderflowException, UnexpectedValueException
+
+sqlite3
+
+SQLite3 support => enabled
+SQLite3 module version => 7.2.12
+SQLite Library => 3.20.1
+
+Directive => Local Value => Master Value
+sqlite3.extension_dir => no value => no value
+
+standard
+
+Dynamic Library Support => enabled
+Path to sendmail => /usr/sbin/sendmail -t -i
+
+Directive => Local Value => Master Value
+assert.active => 1 => 1
+assert.bail => 0 => 0
+assert.callback => no value => no value
+assert.exception => 0 => 0
+assert.quiet_eval => 0 => 0
+assert.warning => 1 => 1
+auto_detect_line_endings => 0 => 0
+default_socket_timeout => 60 => 60
+from => no value => no value
+session.trans_sid_hosts => no value => no value
+session.trans_sid_tags => a=href,area=href,frame=src,form= => a=href,area=href,frame=src,form=
+url_rewriter.hosts => no value => no value
+url_rewriter.tags => form= => form=
+user_agent => no value => no value
+
+tokenizer
+
+Tokenizer Support => enabled
+
+xml
+
+XML Support => active
+XML Namespace Support => active
+libxml2 Version => 2.9.8
+
+xmlreader
+
+XMLReader => enabled
+
+xmlwriter
+
+XMLWriter => enabled
+
+zlib
+
+ZLib Support => enabled
+Stream Wrapper => compress.zlib://
+Stream Filter => zlib.inflate, zlib.deflate
+Compiled Version => 1.2.11
+Linked Version => 1.2.11
+
+Directive => Local Value => Master Value
+zlib.output_compression => Off => Off
+zlib.output_compression_level => -1 => -1
+zlib.output_handler => no value => no value
+
+Additional Modules
+
+Module Name
+
+Environment
+
+Variable => Value
+PATH => /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
+HOSTNAME => server2-6fc44d988b-25qsf
+TERM => xterm
+SERVICE_SERVER1_SERVICE_PORT_HTTP => 80
+SERVICE_SERVER1_PORT_80_TCP_PROTO => tcp
+SERVICE_SERVER2_SERVICE_HOST => 10.111.252.137
+KUBERNETES_PORT => tcp://10.96.0.1:443
+SERVICE_SERVER2_PORT_80_TCP_ADDR => 10.111.252.137
+KUBERNETES_SERVICE_PORT => 443
+KUBERNETES_PORT_443_TCP => tcp://10.96.0.1:443
+SERVICE_SERVER1_SERVICE_HOST => 10.104.213.123
+SERVICE_SERVER1_PORT_80_TCP => tcp://10.104.213.123:80
+SERVICE_SERVER1_PORT_80_TCP_ADDR => 10.104.213.123
+SERVICE_SERVER2_PORT => tcp://10.111.252.137:80
+SERVICE_SERVER2_PORT_80_TCP_PROTO => tcp
+KUBERNETES_PORT_443_TCP_PROTO => tcp
+SERVICE_SERVER1_PORT => tcp://10.104.213.123:80
+SERVICE_SERVER1_PORT_80_TCP_PORT => 80
+SERVICE_SERVER2_SERVICE_PORT_HTTP => 80
+SERVICE_SERVER2_PORT_80_TCP => tcp://10.111.252.137:80
+SERVICE_SERVER2_PORT_80_TCP_PORT => 80
+KUBERNETES_PORT_443_TCP_ADDR => 10.96.0.1
+SERVICE_SERVER1_SERVICE_PORT => 80
+SERVICE_SERVER2_SERVICE_PORT => 80
+KUBERNETES_SERVICE_HOST => 10.96.0.1
+KUBERNETES_SERVICE_PORT_HTTPS => 443
+KUBERNETES_PORT_443_TCP_PORT => 443
+PHPIZE_DEPS => autoconf dpkg-dev dpkg file g++ gcc libc-dev make pkgconf re2c
+PHP_INI_DIR => /usr/local/etc/php
+PHP_EXTRA_CONFIGURE_ARGS => --enable-fpm --with-fpm-user=www-data --with-fpm-group=www-data --disable-cgi
+PHP_CFLAGS => -fstack-protector-strong -fpic -fpie -O2
+PHP_CPPFLAGS => -fstack-protector-strong -fpic -fpie -O2
+PHP_LDFLAGS => -Wl,-O1 -Wl,--hash-style=both -pie
+GPG_KEYS => 1729F83938DA44E27BA0F4D3DBDB397470D12172 B1B44D8F021E4E2D6021E995DC9FF8D3EE5AF27F
+PHP_VERSION => 7.2.12
+PHP_URL => https://secure.php.net/get/php-7.2.12.tar.xz/from/this/mirror
+PHP_ASC_URL => https://secure.php.net/get/php-7.2.12.tar.xz.asc/from/this/mirror
+PHP_SHA256 => 989c04cc879ee71a5e1131db867f3c5102f1f7565f805e2bb8bde33f93147fe1
+PHP_MD5 =>
+HOME => /root
+
+PHP Variables
+
+Variable => Value
+$_SERVER['PATH'] => /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
+$_SERVER['HOSTNAME'] => server2-6fc44d988b-25qsf
+$_SERVER['TERM'] => xterm
+$_SERVER['SERVICE_SERVER1_SERVICE_PORT_HTTP'] => 80
+$_SERVER['SERVICE_SERVER1_PORT_80_TCP_PROTO'] => tcp
+$_SERVER['SERVICE_SERVER2_SERVICE_HOST'] => 10.111.252.137
+$_SERVER['KUBERNETES_PORT'] => tcp://10.96.0.1:443
+$_SERVER['SERVICE_SERVER2_PORT_80_TCP_ADDR'] => 10.111.252.137
+$_SERVER['KUBERNETES_SERVICE_PORT'] => 443
+$_SERVER['KUBERNETES_PORT_443_TCP'] => tcp://10.96.0.1:443
+$_SERVER['SERVICE_SERVER1_SERVICE_HOST'] => 10.104.213.123
+$_SERVER['SERVICE_SERVER1_PORT_80_TCP'] => tcp://10.104.213.123:80
+$_SERVER['SERVICE_SERVER1_PORT_80_TCP_ADDR'] => 10.104.213.123
+$_SERVER['SERVICE_SERVER2_PORT'] => tcp://10.111.252.137:80
+$_SERVER['SERVICE_SERVER2_PORT_80_TCP_PROTO'] => tcp
+$_SERVER['KUBERNETES_PORT_443_TCP_PROTO'] => tcp
+$_SERVER['SERVICE_SERVER1_PORT'] => tcp://10.104.213.123:80
+$_SERVER['SERVICE_SERVER1_PORT_80_TCP_PORT'] => 80
+$_SERVER['SERVICE_SERVER2_SERVICE_PORT_HTTP'] => 80
+$_SERVER['SERVICE_SERVER2_PORT_80_TCP'] => tcp://10.111.252.137:80
+$_SERVER['SERVICE_SERVER2_PORT_80_TCP_PORT'] => 80
+$_SERVER['KUBERNETES_PORT_443_TCP_ADDR'] => 10.96.0.1
+$_SERVER['SERVICE_SERVER1_SERVICE_PORT'] => 80
+$_SERVER['SERVICE_SERVER2_SERVICE_PORT'] => 80
+$_SERVER['KUBERNETES_SERVICE_HOST'] => 10.96.0.1
+$_SERVER['KUBERNETES_SERVICE_PORT_HTTPS'] => 443
+$_SERVER['KUBERNETES_PORT_443_TCP_PORT'] => 443
+$_SERVER['PHPIZE_DEPS'] => autoconf dpkg-dev dpkg file g++ gcc libc-dev make pkgconf re2c
+$_SERVER['PHP_INI_DIR'] => /usr/local/etc/php
+$_SERVER['PHP_EXTRA_CONFIGURE_ARGS'] => --enable-fpm --with-fpm-user=www-data --with-fpm-group=www-data --disable-cgi
+$_SERVER['PHP_CFLAGS'] => -fstack-protector-strong -fpic -fpie -O2
+$_SERVER['PHP_CPPFLAGS'] => -fstack-protector-strong -fpic -fpie -O2
+$_SERVER['PHP_LDFLAGS'] => -Wl,-O1 -Wl,--hash-style=both -pie
+$_SERVER['GPG_KEYS'] => 1729F83938DA44E27BA0F4D3DBDB397470D12172 B1B44D8F021E4E2D6021E995DC9FF8D3EE5AF27F
+$_SERVER['PHP_VERSION'] => 7.2.12
+$_SERVER['PHP_URL'] => https://secure.php.net/get/php-7.2.12.tar.xz/from/this/mirror
+$_SERVER['PHP_ASC_URL'] => https://secure.php.net/get/php-7.2.12.tar.xz.asc/from/this/mirror
+$_SERVER['PHP_SHA256'] => 989c04cc879ee71a5e1131db867f3c5102f1f7565f805e2bb8bde33f93147fe1
+$_SERVER['PHP_MD5'] =>
+$_SERVER['HOME'] => /root
+$_SERVER['PHP_SELF'] => phpinfo.php
+$_SERVER['SCRIPT_NAME'] => phpinfo.php
+$_SERVER['SCRIPT_FILENAME'] => phpinfo.php
+$_SERVER['PATH_TRANSLATED'] => phpinfo.php
+$_SERVER['DOCUMENT_ROOT'] =>
+$_SERVER['REQUEST_TIME_FLOAT'] => 1543133236.656
+$_SERVER['REQUEST_TIME'] => 1543133236
+$_SERVER['argv'] => Array
+(
+ [0] => phpinfo.php
+)
+
+$_SERVER['argc'] => 1
+$_ENV['PATH'] => /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
+$_ENV['HOSTNAME'] => server2-6fc44d988b-25qsf
+$_ENV['TERM'] => xterm
+$_ENV['SERVICE_SERVER1_SERVICE_PORT_HTTP'] => 80
+$_ENV['SERVICE_SERVER1_PORT_80_TCP_PROTO'] => tcp
+$_ENV['SERVICE_SERVER2_SERVICE_HOST'] => 10.111.252.137
+$_ENV['KUBERNETES_PORT'] => tcp://10.96.0.1:443
+$_ENV['SERVICE_SERVER2_PORT_80_TCP_ADDR'] => 10.111.252.137
+$_ENV['KUBERNETES_SERVICE_PORT'] => 443
+$_ENV['KUBERNETES_PORT_443_TCP'] => tcp://10.96.0.1:443
+$_ENV['SERVICE_SERVER1_SERVICE_HOST'] => 10.104.213.123
+$_ENV['SERVICE_SERVER1_PORT_80_TCP'] => tcp://10.104.213.123:80
+$_ENV['SERVICE_SERVER1_PORT_80_TCP_ADDR'] => 10.104.213.123
+$_ENV['SERVICE_SERVER2_PORT'] => tcp://10.111.252.137:80
+$_ENV['SERVICE_SERVER2_PORT_80_TCP_PROTO'] => tcp
+$_ENV['KUBERNETES_PORT_443_TCP_PROTO'] => tcp
+$_ENV['SERVICE_SERVER1_PORT'] => tcp://10.104.213.123:80
+$_ENV['SERVICE_SERVER1_PORT_80_TCP_PORT'] => 80
+$_ENV['SERVICE_SERVER2_SERVICE_PORT_HTTP'] => 80
+$_ENV['SERVICE_SERVER2_PORT_80_TCP'] => tcp://10.111.252.137:80
+$_ENV['SERVICE_SERVER2_PORT_80_TCP_PORT'] => 80
+$_ENV['KUBERNETES_PORT_443_TCP_ADDR'] => 10.96.0.1
+$_ENV['SERVICE_SERVER1_SERVICE_PORT'] => 80
+$_ENV['SERVICE_SERVER2_SERVICE_PORT'] => 80
+$_ENV['KUBERNETES_SERVICE_HOST'] => 10.96.0.1
+$_ENV['KUBERNETES_SERVICE_PORT_HTTPS'] => 443
+$_ENV['KUBERNETES_PORT_443_TCP_PORT'] => 443
+$_ENV['PHPIZE_DEPS'] => autoconf dpkg-dev dpkg file g++ gcc libc-dev make pkgconf re2c
+$_ENV['PHP_INI_DIR'] => /usr/local/etc/php
+$_ENV['PHP_EXTRA_CONFIGURE_ARGS'] => --enable-fpm --with-fpm-user=www-data --with-fpm-group=www-data --disable-cgi
+$_ENV['PHP_CFLAGS'] => -fstack-protector-strong -fpic -fpie -O2
+$_ENV['PHP_CPPFLAGS'] => -fstack-protector-strong -fpic -fpie -O2
+$_ENV['PHP_LDFLAGS'] => -Wl,-O1 -Wl,--hash-style=both -pie
+$_ENV['GPG_KEYS'] => 1729F83938DA44E27BA0F4D3DBDB397470D12172 B1B44D8F021E4E2D6021E995DC9FF8D3EE5AF27F
+$_ENV['PHP_VERSION'] => 7.2.12
+$_ENV['PHP_URL'] => https://secure.php.net/get/php-7.2.12.tar.xz/from/this/mirror
+$_ENV['PHP_ASC_URL'] => https://secure.php.net/get/php-7.2.12.tar.xz.asc/from/this/mirror
+$_ENV['PHP_SHA256'] => 989c04cc879ee71a5e1131db867f3c5102f1f7565f805e2bb8bde33f93147fe1
+$_ENV['PHP_MD5'] =>
+$_ENV['HOME'] => /root
+
+PHP License
+This program is free software; you can redistribute it and/or modify
+it under the terms of the PHP License as published by the PHP Group
+and included in the distribution in the file: LICENSE
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+
+If you did not receive a copy of the PHP license, or have any
+questions about PHP licensing, please contact license@php.net.
|