diff --git a/.gitignore b/.gitignore index a9c3f168..f1eb2283 100644 --- a/.gitignore +++ b/.gitignore @@ -35,3 +35,7 @@ yarn-error.log .phpunit.result.cache clover.xml ###< phpunit/phpunit ### + +###> bref/symfony-bridge ### +/.serverless/ +###< bref/symfony-bridge ### diff --git a/composer.json b/composer.json index 06b72d0d..c5b82e9c 100644 --- a/composer.json +++ b/composer.json @@ -22,28 +22,31 @@ "ext-iconv": "*", "ext-json": "*", "badges/poser": "^2.0", - "bitbucket/client": "^3.2", - "cache/predis-adapter": "^1.0", - "knplabs/github-api": "^3.1", + "bitbucket/client": "^4.0", + "bref/bref": "^1.2", + "bref/extra-php-extensions": "^0.11", + "bref/symfony-bridge": "^0.1.2", + "cache/predis-adapter": "^1.1", + "knplabs/github-api": "^3.3", "knplabs/packagist-api": "^1.7", "php-http/guzzle6-adapter": "^2.0", "predis/predis": "^1.1", - "sentry/sentry-symfony": "^4.0", - "snc/redis-bundle": "^3.2", + "sentry/sentry-symfony": "^4.1", + "snc/redis-bundle": "^3.4", "symfony/asset": "^5.3", "symfony/console": "^5.3", - "symfony/flex": "^1.10", + "symfony/flex": "^1.13", "symfony/framework-bundle": "^5.3", "symfony/http-client": "^5.3", "symfony/runtime": "5.3.*", - "symfony/webpack-encore-bundle": "^1.8", + "symfony/webpack-encore-bundle": "^1.11", "symfony/yaml": "^5.3" }, "require-dev": { "dg/bypass-finals": "^1.3", "friendsofphp/php-cs-fixer": "^3.0", "jangregor/phpstan-prophecy": "^0.8", - "phpstan/extension-installer": "^1.0", + "phpstan/extension-installer": "^1.1", "phpstan/phpstan": "^0.12", "phpstan/phpstan-phpunit": "^0.12", "phpstan/phpstan-symfony": "^0.12", diff --git a/composer.lock b/composer.lock index 3b90a638..759c1725 100644 --- a/composer.lock +++ b/composer.lock @@ -4,8 +4,132 @@ "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", "This file is @generated automatically" ], - "content-hash": "370dcdc8c8bee85187248bb05d163d58", + "content-hash": "42f6e6807734ebfd875dc851e8a04b70", "packages": [ + { + "name": "async-aws/core", + "version": "1.10.0", + "source": { + "type": "git", + "url": "https://github.com/async-aws/core.git", + "reference": "f5bd019f53b701d53dc411c2e54877fe23202618" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/async-aws/core/zipball/f5bd019f53b701d53dc411c2e54877fe23202618", + "reference": "f5bd019f53b701d53dc411c2e54877fe23202618", + "shasum": "" + }, + "require": { + "ext-hash": "*", + "ext-json": "*", + "ext-simplexml": "*", + "php": "^7.2.5 || ^8.0", + "psr/cache": "^1.0 || ^2.0 || ^3.0", + "psr/log": "^1.0", + "symfony/deprecation-contracts": "^2.1", + "symfony/http-client": "^4.4.16 || ^5.1.7,!=5.2.0 || ^6.0", + "symfony/http-client-contracts": "^1.1.8 || ^2.0", + "symfony/service-contracts": "^1.0 || ^2.0" + }, + "conflict": { + "async-aws/s3": "<1.1" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.10-dev" + } + }, + "autoload": { + "psr-4": { + "AsyncAws\\Core\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "description": "Core package to integrate with AWS. This is a lightweight AWS SDK provider by AsyncAws.", + "keywords": [ + "amazon", + "async-aws", + "aws", + "sdk", + "sts" + ], + "support": { + "source": "https://github.com/async-aws/core/tree/1.10.0" + }, + "funding": [ + { + "url": "https://github.com/jderusse", + "type": "github" + }, + { + "url": "https://github.com/nyholm", + "type": "github" + } + ], + "time": "2021-05-20T14:18:59+00:00" + }, + { + "name": "async-aws/lambda", + "version": "1.4.0", + "source": { + "type": "git", + "url": "https://github.com/async-aws/lambda.git", + "reference": "6aedd97e0e023945e00d3957ab5ed1ae77c37ccb" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/async-aws/lambda/zipball/6aedd97e0e023945e00d3957ab5ed1ae77c37ccb", + "reference": "6aedd97e0e023945e00d3957ab5ed1ae77c37ccb", + "shasum": "" + }, + "require": { + "async-aws/core": "^1.9", + "ext-json": "*", + "php": "^7.2.5 || ^8.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.4-dev" + } + }, + "autoload": { + "psr-4": { + "AsyncAws\\Lambda\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "description": "Lambda client, part of the AWS SDK provided by AsyncAws.", + "keywords": [ + "amazon", + "async-aws", + "aws", + "lambda", + "sdk" + ], + "support": { + "source": "https://github.com/async-aws/lambda/tree/1.4.0" + }, + "funding": [ + { + "url": "https://github.com/jderusse", + "type": "github" + }, + { + "url": "https://github.com/nyholm", + "type": "github" + } + ], + "time": "2021-03-31T19:39:01+00:00" + }, { "name": "badges/poser", "version": "v2.0.4", @@ -96,21 +220,21 @@ }, { "name": "bitbucket/client", - "version": "v3.3.1", + "version": "v4.0.1", "source": { "type": "git", "url": "https://github.com/BitbucketPHP/Client.git", - "reference": "5f0f17732e88efcd15d2554d4d4c2df4e380e65f" + "reference": "f4ff14f1d2cb4974bd17b64a58fbc83ccf0ad2f4" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/BitbucketPHP/Client/zipball/5f0f17732e88efcd15d2554d4d4c2df4e380e65f", - "reference": "5f0f17732e88efcd15d2554d4d4c2df4e380e65f", + "url": "https://api.github.com/repos/BitbucketPHP/Client/zipball/f4ff14f1d2cb4974bd17b64a58fbc83ccf0ad2f4", + "reference": "f4ff14f1d2cb4974bd17b64a58fbc83ccf0ad2f4", "shasum": "" }, "require": { "ext-json": "*", - "php": "^7.1.3 || ^8.0", + "php": "^7.2.5 || ^8.0", "php-http/cache-plugin": "^1.7.1", "php-http/client-common": "^2.3", "php-http/discovery": "^1.12", @@ -124,8 +248,8 @@ }, "require-dev": { "bamarni/composer-bin-plugin": "^1.4.1", + "guzzlehttp/guzzle": "^7.2", "http-interop/http-factory-guzzle": "^1.0", - "php-http/guzzle6-adapter": "^2.0.1", "php-http/mock-client": "^1.4.1" }, "type": "library", @@ -156,7 +280,7 @@ ], "support": { "issues": "https://github.com/BitbucketPHP/Client/issues", - "source": "https://github.com/BitbucketPHP/Client/tree/v3.3.1" + "source": "https://github.com/BitbucketPHP/Client/tree/v4.0.1" }, "funding": [ { @@ -168,7 +292,197 @@ "type": "tidelift" } ], - "time": "2020-12-22T00:25:16+00:00" + "time": "2021-03-14T20:01:45+00:00" + }, + { + "name": "bref/bref", + "version": "1.2.7", + "source": { + "type": "git", + "url": "https://github.com/brefphp/bref.git", + "reference": "71f8821088532d46ad61afde17fa1260a61ec450" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/brefphp/bref/zipball/71f8821088532d46ad61afde17fa1260a61ec450", + "reference": "71f8821088532d46ad61afde17fa1260a61ec450", + "shasum": "" + }, + "require": { + "async-aws/lambda": "^1.0", + "ext-curl": "*", + "ext-json": "*", + "hollodotme/fast-cgi-client": "^3.0", + "mnapoli/silly": "^1.7", + "nyholm/psr7": "^1.2", + "php": ">=7.3.0", + "psr/container": "^1.0", + "psr/http-message": "^1.0", + "psr/http-server-handler": "^1.0", + "riverline/multipart-parser": "^2.0.6", + "symfony/filesystem": "^3.1|^4.0|^5.0", + "symfony/http-client": "^4.4|^5.0", + "symfony/process": "^3.3|^4.0|^5.0", + "symfony/yaml": "^3.1|^4.0|^5.0" + }, + "require-dev": { + "dms/phpunit-arraysubset-asserts": "^0.2.0", + "doctrine/coding-standard": "^8.0", + "guzzlehttp/guzzle": "^6.3", + "phpstan/phpstan": "^0.12", + "phpunit/phpunit": "^9.0" + }, + "bin": [ + "bref" + ], + "type": "project", + "autoload": { + "psr-4": { + "Bref\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "description": "Bref is a framework to write and deploy serverless PHP applications on AWS Lambda.", + "homepage": "https://bref.sh", + "keywords": [ + "aws", + "bref", + "faas", + "lambda", + "serverless" + ], + "support": { + "issues": "https://github.com/brefphp/bref/issues", + "source": "https://github.com/brefphp/bref/tree/1.2.7" + }, + "funding": [ + { + "url": "https://bref.sh/#enterprise", + "type": "custom" + }, + { + "url": "https://github.com/mnapoli", + "type": "github" + } + ], + "time": "2021-06-11T13:08:54+00:00" + }, + { + "name": "bref/extra-php-extensions", + "version": "0.11.7", + "source": { + "type": "git", + "url": "https://github.com/brefphp/extra-php-extensions.git", + "reference": "6e713b2216ff668f7d0293e6168fbe3c32773710" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/brefphp/extra-php-extensions/zipball/6e713b2216ff668f7d0293e6168fbe3c32773710", + "reference": "6e713b2216ff668f7d0293e6168fbe3c32773710", + "shasum": "" + }, + "conflict": { + "bref/bref": "<1.1.4" + }, + "require-dev": { + "async-aws/core": "^1.7", + "async-aws/lambda": "^1.1", + "bref/logger": "^1.0", + "mnapoli/silly": "^1.7", + "mnapoli/silly-php-di": "^1.2", + "symfony/finder": "^5.2", + "symfony/http-client": "^5.2", + "symfony/process": "^5.0" + }, + "type": "library", + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Tobias Nyholm", + "email": "tobias.nyholm@gmail.com" + } + ], + "description": "Extra PHP extensions for your lambda application.", + "support": { + "issues": "https://github.com/brefphp/extra-php-extensions/issues", + "source": "https://github.com/brefphp/extra-php-extensions/tree/0.11.7" + }, + "funding": [ + { + "url": "https://github.com/Nyholm", + "type": "github" + } + ], + "time": "2021-06-15T05:59:42+00:00" + }, + { + "name": "bref/symfony-bridge", + "version": "0.1.2", + "source": { + "type": "git", + "url": "https://github.com/brefphp/symfony-bridge.git", + "reference": "6156395329df3bb34a9a17c5e440ca8ab76c173f" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/brefphp/symfony-bridge/zipball/6156395329df3bb34a9a17c5e440ca8ab76c173f", + "reference": "6156395329df3bb34a9a17c5e440ca8ab76c173f", + "shasum": "" + }, + "require": { + "bref/bref": "^1.0", + "php": ">=7.3", + "symfony/filesystem": "^4.4|^5.0", + "symfony/http-kernel": "^4.4|^5.0" + }, + "require-dev": { + "mnapoli/hard-mode": "^0.3.0", + "phpunit/phpunit": "^8.0", + "symfony/config": "^4.4|^5.0", + "symfony/dependency-injection": "^4.4|^5.0", + "symfony/process": "^4.4|^5.0" + }, + "type": "library", + "autoload": { + "psr-4": { + "Bref\\SymfonyBridge\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "description": "Package that makes Symfony works on AWS Lambda with Bref", + "keywords": [ + "aws", + "lambda", + "symfony" + ], + "support": { + "issues": "https://github.com/brefphp/symfony-bridge/issues", + "source": "https://github.com/brefphp/symfony-bridge/tree/0.1.2" + }, + "funding": [ + { + "url": "https://github.com/Nemo64", + "type": "github" + }, + { + "url": "https://github.com/Nyholm", + "type": "github" + }, + { + "url": "https://github.com/mnapoli", + "type": "github" + } + ], + "time": "2021-04-25T21:07:03+00:00" }, { "name": "cache/adapter-common", @@ -794,6 +1108,76 @@ }, "time": "2021-04-26T09:17:50+00:00" }, + { + "name": "hollodotme/fast-cgi-client", + "version": "v3.1.5", + "source": { + "type": "git", + "url": "https://github.com/hollodotme/fast-cgi-client.git", + "reference": "8a9b2bd38ccfd8fc6905a6b1acfbb9f84ed700dd" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/hollodotme/fast-cgi-client/zipball/8a9b2bd38ccfd8fc6905a6b1acfbb9f84ed700dd", + "reference": "8a9b2bd38ccfd8fc6905a6b1acfbb9f84ed700dd", + "shasum": "" + }, + "require": { + "ext-json": "*", + "php": ">=7.1" + }, + "require-dev": { + "ext-xdebug": ">=2.6.0", + "tm/tooly-composer-script": "^1.4.1" + }, + "type": "library", + "extra": { + "tools": { + "phpunit7": { + "url": "https://phar.phpunit.de/phpunit-7.phar", + "replace": true, + "only-dev": true + }, + "phpunit8": { + "url": "https://phar.phpunit.de/phpunit-8.phar", + "replace": true, + "only-dev": true + }, + "phpunit9": { + "url": "https://phar.phpunit.de/phpunit-9.phar", + "replace": true, + "only-dev": true + } + } + }, + "autoload": { + "psr-4": { + "hollodotme\\FastCGI\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Holger Woltersdorf", + "email": "hw@hollo.me" + } + ], + "description": "A PHP fast CGI client to send requests (a)synchronously to PHP-FPM.", + "keywords": [ + "Socket", + "async", + "fastcgi", + "php-fpm" + ], + "support": { + "issues": "https://github.com/hollodotme/fast-cgi-client/issues", + "source": "https://github.com/hollodotme/fast-cgi-client/tree/v3.1.5" + }, + "time": "2020-12-10T10:15:06+00:00" + }, { "name": "http-interop/http-factory-guzzle", "version": "1.0.0", @@ -1005,52 +1389,234 @@ }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/KnpLabs/packagist-api/zipball/be6295ec879cc1e822af4adf07a74f0c361888a0", - "reference": "be6295ec879cc1e822af4adf07a74f0c361888a0", + "url": "https://api.github.com/repos/KnpLabs/packagist-api/zipball/be6295ec879cc1e822af4adf07a74f0c361888a0", + "reference": "be6295ec879cc1e822af4adf07a74f0c361888a0", + "shasum": "" + }, + "require": { + "doctrine/inflector": "^1.0 || ^2.0", + "guzzlehttp/guzzle": "^6.0 || ^7.0", + "php": "^7.1 || ^8.0" + }, + "require-dev": { + "phpspec/phpspec": "^5.1 || ^6.0 || ^7.0", + "squizlabs/php_codesniffer": "^3.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.x-dev" + } + }, + "autoload": { + "psr-0": { + "Packagist\\Api\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "KnpLabs Team", + "homepage": "http://knplabs.com" + } + ], + "description": "Packagist API client.", + "homepage": "http://knplabs.com", + "keywords": [ + "api", + "composer", + "packagist" + ], + "support": { + "issues": "https://github.com/KnpLabs/packagist-api/issues", + "source": "https://github.com/KnpLabs/packagist-api/tree/v1.7.1" + }, + "time": "2020-12-03T18:20:13+00:00" + }, + { + "name": "mnapoli/silly", + "version": "1.7.2", + "source": { + "type": "git", + "url": "https://github.com/mnapoli/silly.git", + "reference": "66807f87abd2ab8e5708754d70b4b601f5614c32" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/mnapoli/silly/zipball/66807f87abd2ab8e5708754d70b4b601f5614c32", + "reference": "66807f87abd2ab8e5708754d70b4b601f5614c32", + "shasum": "" + }, + "require": { + "php": ">=7.0", + "php-di/invoker": "~2.0", + "psr/container": "^1.0", + "symfony/console": "~3.0|~4.0|~5.0" + }, + "require-dev": { + "friendsofphp/php-cs-fixer": "^2.12", + "mnapoli/phpunit-easymock": "~1.0", + "phpunit/phpunit": "~6.4" + }, + "type": "library", + "autoload": { + "psr-4": { + "Silly\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "description": "Silly CLI micro-framework based on Symfony Console", + "keywords": [ + "PSR-11", + "cli", + "console", + "framework", + "micro-framework", + "silly" + ], + "support": { + "issues": "https://github.com/mnapoli/silly/issues", + "source": "https://github.com/mnapoli/silly/tree/1.7.2" + }, + "time": "2019-11-26T20:07:27+00:00" + }, + { + "name": "nyholm/psr7", + "version": "1.4.0", + "source": { + "type": "git", + "url": "https://github.com/Nyholm/psr7.git", + "reference": "23ae1f00fbc6a886cbe3062ca682391b9cc7c37b" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/Nyholm/psr7/zipball/23ae1f00fbc6a886cbe3062ca682391b9cc7c37b", + "reference": "23ae1f00fbc6a886cbe3062ca682391b9cc7c37b", + "shasum": "" + }, + "require": { + "php": ">=7.1", + "php-http/message-factory": "^1.0", + "psr/http-factory": "^1.0", + "psr/http-message": "^1.0" + }, + "provide": { + "psr/http-factory-implementation": "1.0", + "psr/http-message-implementation": "1.0" + }, + "require-dev": { + "http-interop/http-factory-tests": "^0.8", + "php-http/psr7-integration-tests": "^1.0", + "phpunit/phpunit": "^7.5 || 8.5 || 9.4", + "symfony/error-handler": "^4.4" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.4-dev" + } + }, + "autoload": { + "psr-4": { + "Nyholm\\Psr7\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Tobias Nyholm", + "email": "tobias.nyholm@gmail.com" + }, + { + "name": "Martijn van der Ven", + "email": "martijn@vanderven.se" + } + ], + "description": "A fast PHP7 implementation of PSR-7", + "homepage": "https://tnyholm.se", + "keywords": [ + "psr-17", + "psr-7" + ], + "support": { + "issues": "https://github.com/Nyholm/psr7/issues", + "source": "https://github.com/Nyholm/psr7/tree/1.4.0" + }, + "funding": [ + { + "url": "https://github.com/Zegnat", + "type": "github" + }, + { + "url": "https://github.com/nyholm", + "type": "github" + } + ], + "time": "2021-02-18T15:41:32+00:00" + }, + { + "name": "php-di/invoker", + "version": "2.3.0", + "source": { + "type": "git", + "url": "https://github.com/PHP-DI/Invoker.git", + "reference": "992fec6c56f2d1ad1ad5fee28267867c85bfb8f9" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/PHP-DI/Invoker/zipball/992fec6c56f2d1ad1ad5fee28267867c85bfb8f9", + "reference": "992fec6c56f2d1ad1ad5fee28267867c85bfb8f9", "shasum": "" }, "require": { - "doctrine/inflector": "^1.0 || ^2.0", - "guzzlehttp/guzzle": "^6.0 || ^7.0", - "php": "^7.1 || ^8.0" + "php": ">=7.3", + "psr/container": "~1.0" }, "require-dev": { - "phpspec/phpspec": "^5.1 || ^6.0 || ^7.0", - "squizlabs/php_codesniffer": "^3.0" + "athletic/athletic": "~0.1.8", + "mnapoli/hard-mode": "~0.3.0", + "phpunit/phpunit": "^9.0" }, "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.x-dev" - } - }, "autoload": { - "psr-0": { - "Packagist\\Api\\": "src/" + "psr-4": { + "Invoker\\": "src/" } }, "notification-url": "https://packagist.org/downloads/", "license": [ "MIT" ], - "authors": [ - { - "name": "KnpLabs Team", - "homepage": "http://knplabs.com" - } - ], - "description": "Packagist API client.", - "homepage": "http://knplabs.com", + "description": "Generic and extensible callable invoker", + "homepage": "https://github.com/PHP-DI/Invoker", "keywords": [ - "api", - "composer", - "packagist" + "callable", + "dependency", + "dependency-injection", + "injection", + "invoke", + "invoker" ], "support": { - "issues": "https://github.com/KnpLabs/packagist-api/issues", - "source": "https://github.com/KnpLabs/packagist-api/tree/v1.7.1" + "issues": "https://github.com/PHP-DI/Invoker/issues", + "source": "https://github.com/PHP-DI/Invoker/tree/2.3.0" }, - "time": "2020-12-03T18:20:13+00:00" + "funding": [ + { + "url": "https://github.com/mnapoli", + "type": "github" + } + ], + "time": "2021-01-15T10:25:40+00:00" }, { "name": "php-http/cache-plugin", @@ -1188,16 +1754,16 @@ }, { "name": "php-http/discovery", - "version": "1.13.0", + "version": "1.14.0", "source": { "type": "git", "url": "https://github.com/php-http/discovery.git", - "reference": "788f72d64c43dc361e7fcc7464c3d947c64984a7" + "reference": "778f722e29250c1fac0bbdef2c122fa5d038c9eb" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/php-http/discovery/zipball/788f72d64c43dc361e7fcc7464c3d947c64984a7", - "reference": "788f72d64c43dc361e7fcc7464c3d947c64984a7", + "url": "https://api.github.com/repos/php-http/discovery/zipball/778f722e29250c1fac0bbdef2c122fa5d038c9eb", + "reference": "778f722e29250c1fac0bbdef2c122fa5d038c9eb", "shasum": "" }, "require": { @@ -1214,8 +1780,7 @@ "puli/composer-plugin": "1.0.0-beta10" }, "suggest": { - "php-http/message": "Allow to use Guzzle, Diactoros or Slim Framework factories", - "puli/composer-plugin": "Sets up Puli which is recommended for Discovery to work. Check http://docs.php-http.org/en/latest/discovery.html for more details." + "php-http/message": "Allow to use Guzzle, Diactoros or Slim Framework factories" }, "type": "library", "extra": { @@ -1251,9 +1816,9 @@ ], "support": { "issues": "https://github.com/php-http/discovery/issues", - "source": "https://github.com/php-http/discovery/tree/1.13.0" + "source": "https://github.com/php-http/discovery/tree/1.14.0" }, - "time": "2020-11-27T14:49:42+00:00" + "time": "2021-06-01T14:30:21+00:00" }, { "name": "php-http/guzzle6-adapter", @@ -2004,6 +2569,63 @@ }, "time": "2016-08-06T14:39:51+00:00" }, + { + "name": "psr/http-server-handler", + "version": "1.0.1", + "source": { + "type": "git", + "url": "https://github.com/php-fig/http-server-handler.git", + "reference": "aff2f80e33b7f026ec96bb42f63242dc50ffcae7" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/php-fig/http-server-handler/zipball/aff2f80e33b7f026ec96bb42f63242dc50ffcae7", + "reference": "aff2f80e33b7f026ec96bb42f63242dc50ffcae7", + "shasum": "" + }, + "require": { + "php": ">=7.0", + "psr/http-message": "^1.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.0.x-dev" + } + }, + "autoload": { + "psr-4": { + "Psr\\Http\\Server\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "PHP-FIG", + "homepage": "http://www.php-fig.org/" + } + ], + "description": "Common interface for HTTP server-side request handler", + "keywords": [ + "handler", + "http", + "http-interop", + "psr", + "psr-15", + "psr-7", + "request", + "response", + "server" + ], + "support": { + "issues": "https://github.com/php-fig/http-server-handler/issues", + "source": "https://github.com/php-fig/http-server-handler/tree/master" + }, + "time": "2018-10-30T16:46:14+00:00" + }, { "name": "psr/log", "version": "1.1.4", @@ -2149,6 +2771,62 @@ }, "time": "2019-03-08T08:55:37+00:00" }, + { + "name": "riverline/multipart-parser", + "version": "2.0.8", + "source": { + "type": "git", + "url": "https://github.com/Riverline/multipart-parser.git", + "reference": "2fe9026789754c1ff07c06047f0acc113e90933a" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/Riverline/multipart-parser/zipball/2fe9026789754c1ff07c06047f0acc113e90933a", + "reference": "2fe9026789754c1ff07c06047f0acc113e90933a", + "shasum": "" + }, + "require": { + "ext-mbstring": "*", + "php": ">=5.6.0" + }, + "require-dev": { + "laminas/laminas-diactoros": "^1.8.7", + "phpunit/phpunit": "^5.2 || ^6.0 || ^7.0", + "psr/http-message": "^1.0", + "symfony/psr-http-message-bridge": "^1.1" + }, + "type": "library", + "autoload": { + "psr-4": { + "Riverline\\MultiPartParser\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Romain Cambien", + "email": "romain@cambien.net" + }, + { + "name": "Riverline", + "homepage": "http://www.riverline.fr" + } + ], + "description": "One class library to parse multipart content with encoding and charset support.", + "keywords": [ + "http", + "multipart", + "parser" + ], + "support": { + "issues": "https://github.com/Riverline/multipart-parser/issues", + "source": "https://github.com/Riverline/multipart-parser/tree/2.0.8" + }, + "time": "2020-01-24T09:39:24+00:00" + }, { "name": "sentry/sdk", "version": "3.1.0", @@ -2507,16 +3185,16 @@ }, { "name": "symfony/asset", - "version": "v5.3.0", + "version": "v5.3.2", "source": { "type": "git", "url": "https://github.com/symfony/asset.git", - "reference": "4c8d354b8931788f2b07953cfe6846e5cda27637" + "reference": "29a4d5e6e39ffe16cea394fd5041d7a638bd580d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/asset/zipball/4c8d354b8931788f2b07953cfe6846e5cda27637", - "reference": "4c8d354b8931788f2b07953cfe6846e5cda27637", + "url": "https://api.github.com/repos/symfony/asset/zipball/29a4d5e6e39ffe16cea394fd5041d7a638bd580d", + "reference": "29a4d5e6e39ffe16cea394fd5041d7a638bd580d", "shasum": "" }, "require": { @@ -2560,7 +3238,7 @@ "description": "Manages URL generation and versioning of web assets such as CSS stylesheets, JavaScript files and image files", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/asset/tree/v5.3.0" + "source": "https://github.com/symfony/asset/tree/v5.3.2" }, "funding": [ { @@ -2576,7 +3254,7 @@ "type": "tidelift" } ], - "time": "2021-05-26T17:43:10+00:00" + "time": "2021-06-06T08:05:27+00:00" }, { "name": "symfony/cache", @@ -2755,16 +3433,16 @@ }, { "name": "symfony/config", - "version": "v5.3.0", + "version": "v5.3.2", "source": { "type": "git", "url": "https://github.com/symfony/config.git", - "reference": "9f4a448c2d7fd2c90882dfff930b627ddbe16810" + "reference": "9c307728cfacbd50914f0db28aee1e0ecd82b99f" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/config/zipball/9f4a448c2d7fd2c90882dfff930b627ddbe16810", - "reference": "9f4a448c2d7fd2c90882dfff930b627ddbe16810", + "url": "https://api.github.com/repos/symfony/config/zipball/9c307728cfacbd50914f0db28aee1e0ecd82b99f", + "reference": "9c307728cfacbd50914f0db28aee1e0ecd82b99f", "shasum": "" }, "require": { @@ -2814,7 +3492,7 @@ "description": "Helps you find, load, combine, autofill and validate configuration values of any kind", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/config/tree/v5.3.0" + "source": "https://github.com/symfony/config/tree/v5.3.2" }, "funding": [ { @@ -2830,20 +3508,20 @@ "type": "tidelift" } ], - "time": "2021-05-26T17:43:10+00:00" + "time": "2021-06-12T10:15:17+00:00" }, { "name": "symfony/console", - "version": "v5.3.0", + "version": "v5.3.2", "source": { "type": "git", "url": "https://github.com/symfony/console.git", - "reference": "058553870f7809087fa80fa734704a21b9bcaeb2" + "reference": "649730483885ff2ca99ca0560ef0e5f6b03f2ac1" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/console/zipball/058553870f7809087fa80fa734704a21b9bcaeb2", - "reference": "058553870f7809087fa80fa734704a21b9bcaeb2", + "url": "https://api.github.com/repos/symfony/console/zipball/649730483885ff2ca99ca0560ef0e5f6b03f2ac1", + "reference": "649730483885ff2ca99ca0560ef0e5f6b03f2ac1", "shasum": "" }, "require": { @@ -2912,7 +3590,7 @@ "terminal" ], "support": { - "source": "https://github.com/symfony/console/tree/v5.3.0" + "source": "https://github.com/symfony/console/tree/v5.3.2" }, "funding": [ { @@ -2928,20 +3606,20 @@ "type": "tidelift" } ], - "time": "2021-05-26T17:43:10+00:00" + "time": "2021-06-12T09:42:48+00:00" }, { "name": "symfony/dependency-injection", - "version": "v5.3.0", + "version": "v5.3.2", "source": { "type": "git", "url": "https://github.com/symfony/dependency-injection.git", - "reference": "94d973cb742d8c5c5dcf9534220e6b73b09af1d4" + "reference": "ddbff73bc4fa3d5b415431d486770ab0e72f6516" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/dependency-injection/zipball/94d973cb742d8c5c5dcf9534220e6b73b09af1d4", - "reference": "94d973cb742d8c5c5dcf9534220e6b73b09af1d4", + "url": "https://api.github.com/repos/symfony/dependency-injection/zipball/ddbff73bc4fa3d5b415431d486770ab0e72f6516", + "reference": "ddbff73bc4fa3d5b415431d486770ab0e72f6516", "shasum": "" }, "require": { @@ -3000,7 +3678,7 @@ "description": "Allows you to standardize and centralize the way objects are constructed in your application", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/dependency-injection/tree/v5.3.0" + "source": "https://github.com/symfony/dependency-injection/tree/v5.3.2" }, "funding": [ { @@ -3016,7 +3694,7 @@ "type": "tidelift" } ], - "time": "2021-05-26T17:57:12+00:00" + "time": "2021-06-12T09:17:04+00:00" }, { "name": "symfony/deprecation-contracts", @@ -3511,16 +4189,16 @@ }, { "name": "symfony/framework-bundle", - "version": "v5.3.0", + "version": "v5.3.2", "source": { "type": "git", "url": "https://github.com/symfony/framework-bundle.git", - "reference": "99196372c703b8cc97ee61d63d98acbf9896d425" + "reference": "120e80e882debd7e705d53a3b054e1a0fae91fbc" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/framework-bundle/zipball/99196372c703b8cc97ee61d63d98acbf9896d425", - "reference": "99196372c703b8cc97ee61d63d98acbf9896d425", + "url": "https://api.github.com/repos/symfony/framework-bundle/zipball/120e80e882debd7e705d53a3b054e1a0fae91fbc", + "reference": "120e80e882debd7e705d53a3b054e1a0fae91fbc", "shasum": "" }, "require": { @@ -3674,7 +4352,7 @@ "description": "Provides a tight integration between Symfony components and the Symfony full-stack framework", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/framework-bundle/tree/v5.3.0" + "source": "https://github.com/symfony/framework-bundle/tree/v5.3.2" }, "funding": [ { @@ -3690,20 +4368,20 @@ "type": "tidelift" } ], - "time": "2021-05-31T10:12:54+00:00" + "time": "2021-06-17T13:29:40+00:00" }, { "name": "symfony/http-client", - "version": "v5.3.0", + "version": "v5.3.2", "source": { "type": "git", "url": "https://github.com/symfony/http-client.git", - "reference": "ef85ca5fa7a4f9c57592fab49faeccdf22b13136" + "reference": "d2464f48482223c7c6826cd8c6ed7929d1ce6093" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/http-client/zipball/ef85ca5fa7a4f9c57592fab49faeccdf22b13136", - "reference": "ef85ca5fa7a4f9c57592fab49faeccdf22b13136", + "url": "https://api.github.com/repos/symfony/http-client/zipball/d2464f48482223c7c6826cd8c6ed7929d1ce6093", + "reference": "d2464f48482223c7c6826cd8c6ed7929d1ce6093", "shasum": "" }, "require": { @@ -3761,7 +4439,7 @@ "description": "Provides powerful methods to fetch HTTP resources synchronously or asynchronously", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/http-client/tree/v5.3.0" + "source": "https://github.com/symfony/http-client/tree/v5.3.2" }, "funding": [ { @@ -3777,7 +4455,7 @@ "type": "tidelift" } ], - "time": "2021-05-26T17:43:10+00:00" + "time": "2021-06-12T10:15:17+00:00" }, { "name": "symfony/http-client-contracts", @@ -3859,16 +4537,16 @@ }, { "name": "symfony/http-foundation", - "version": "v5.3.0", + "version": "v5.3.2", "source": { "type": "git", "url": "https://github.com/symfony/http-foundation.git", - "reference": "31f25d99b329a1461f42bcef8505b54926a30be6" + "reference": "7b6dd714d95106b831aaa7f3c9c612ab886516bd" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/http-foundation/zipball/31f25d99b329a1461f42bcef8505b54926a30be6", - "reference": "31f25d99b329a1461f42bcef8505b54926a30be6", + "url": "https://api.github.com/repos/symfony/http-foundation/zipball/7b6dd714d95106b831aaa7f3c9c612ab886516bd", + "reference": "7b6dd714d95106b831aaa7f3c9c612ab886516bd", "shasum": "" }, "require": { @@ -3912,7 +4590,7 @@ "description": "Defines an object-oriented layer for the HTTP specification", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/http-foundation/tree/v5.3.0" + "source": "https://github.com/symfony/http-foundation/tree/v5.3.2" }, "funding": [ { @@ -3928,20 +4606,20 @@ "type": "tidelift" } ], - "time": "2021-05-26T17:43:10+00:00" + "time": "2021-06-12T10:15:17+00:00" }, { "name": "symfony/http-kernel", - "version": "v5.3.0", + "version": "v5.3.2", "source": { "type": "git", "url": "https://github.com/symfony/http-kernel.git", - "reference": "f8e8f5391b6909e2f0ba8c12220ab7af3050eb4f" + "reference": "e7021165d9dbfb4051296b8de827e92c8a7b5c87" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/http-kernel/zipball/f8e8f5391b6909e2f0ba8c12220ab7af3050eb4f", - "reference": "f8e8f5391b6909e2f0ba8c12220ab7af3050eb4f", + "url": "https://api.github.com/repos/symfony/http-kernel/zipball/e7021165d9dbfb4051296b8de827e92c8a7b5c87", + "reference": "e7021165d9dbfb4051296b8de827e92c8a7b5c87", "shasum": "" }, "require": { @@ -4024,7 +4702,7 @@ "description": "Provides a structured process for converting a Request into a Response", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/http-kernel/tree/v5.3.0" + "source": "https://github.com/symfony/http-kernel/tree/v5.3.2" }, "funding": [ { @@ -4040,7 +4718,7 @@ "type": "tidelift" } ], - "time": "2021-05-31T10:44:03+00:00" + "time": "2021-06-17T14:18:27+00:00" }, { "name": "symfony/options-resolver", @@ -4113,16 +4791,16 @@ }, { "name": "symfony/password-hasher", - "version": "v5.3.0", + "version": "v5.3.2", "source": { "type": "git", "url": "https://github.com/symfony/password-hasher.git", - "reference": "d487faef0347d5351d3e361e123a73496595509f" + "reference": "02320f981e26fdbeeaae575911e0afa7bdcae988" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/password-hasher/zipball/d487faef0347d5351d3e361e123a73496595509f", - "reference": "d487faef0347d5351d3e361e123a73496595509f", + "url": "https://api.github.com/repos/symfony/password-hasher/zipball/02320f981e26fdbeeaae575911e0afa7bdcae988", + "reference": "02320f981e26fdbeeaae575911e0afa7bdcae988", "shasum": "" }, "require": { @@ -4166,7 +4844,7 @@ "password" ], "support": { - "source": "https://github.com/symfony/password-hasher/tree/v5.3.0" + "source": "https://github.com/symfony/password-hasher/tree/v5.3.2" }, "funding": [ { @@ -4182,7 +4860,7 @@ "type": "tidelift" } ], - "time": "2021-05-26T17:43:10+00:00" + "time": "2021-06-11T14:36:11+00:00" }, { "name": "symfony/polyfill-ctype", @@ -4836,6 +5514,68 @@ ], "time": "2021-02-19T12:13:01+00:00" }, + { + "name": "symfony/process", + "version": "v5.3.2", + "source": { + "type": "git", + "url": "https://github.com/symfony/process.git", + "reference": "714b47f9196de61a196d86c4bad5f09201b307df" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/process/zipball/714b47f9196de61a196d86c4bad5f09201b307df", + "reference": "714b47f9196de61a196d86c4bad5f09201b307df", + "shasum": "" + }, + "require": { + "php": ">=7.2.5", + "symfony/polyfill-php80": "^1.15" + }, + "type": "library", + "autoload": { + "psr-4": { + "Symfony\\Component\\Process\\": "" + }, + "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": "Executes commands in sub-processes", + "homepage": "https://symfony.com", + "support": { + "source": "https://github.com/symfony/process/tree/v5.3.2" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2021-06-12T10:15:01+00:00" + }, { "name": "symfony/psr-http-message-bridge", "version": "v2.1.0", @@ -5016,16 +5756,16 @@ }, { "name": "symfony/runtime", - "version": "v5.3.0", + "version": "v5.3.2", "source": { "type": "git", "url": "https://github.com/symfony/runtime.git", - "reference": "d119a381b76eb39c5c4f4ee284cb1dd431109c7c" + "reference": "876ad7ce168c893550d20a1da58f52d3ec4eb574" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/runtime/zipball/d119a381b76eb39c5c4f4ee284cb1dd431109c7c", - "reference": "d119a381b76eb39c5c4f4ee284cb1dd431109c7c", + "url": "https://api.github.com/repos/symfony/runtime/zipball/876ad7ce168c893550d20a1da58f52d3ec4eb574", + "reference": "876ad7ce168c893550d20a1da58f52d3ec4eb574", "shasum": "" }, "require": { @@ -5073,7 +5813,7 @@ "description": "Enables decoupling PHP applications from global state", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/runtime/tree/v5.3.0" + "source": "https://github.com/symfony/runtime/tree/v5.3.2" }, "funding": [ { @@ -5089,20 +5829,20 @@ "type": "tidelift" } ], - "time": "2021-05-26T17:43:10+00:00" + "time": "2021-06-11T12:51:21+00:00" }, { "name": "symfony/security-core", - "version": "v5.3.0", + "version": "v5.3.2", "source": { "type": "git", "url": "https://github.com/symfony/security-core.git", - "reference": "cb23eaff3fe09ba81b5c25ffe25c1c5b9b1cdfc5" + "reference": "dc44d2a4275345621266356f6cb7ef6e0864c3fa" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/security-core/zipball/cb23eaff3fe09ba81b5c25ffe25c1c5b9b1cdfc5", - "reference": "cb23eaff3fe09ba81b5c25ffe25c1c5b9b1cdfc5", + "url": "https://api.github.com/repos/symfony/security-core/zipball/dc44d2a4275345621266356f6cb7ef6e0864c3fa", + "reference": "dc44d2a4275345621266356f6cb7ef6e0864c3fa", "shasum": "" }, "require": { @@ -5166,7 +5906,7 @@ "description": "Symfony Security Component - Core Library", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/security-core/tree/v5.3.0" + "source": "https://github.com/symfony/security-core/tree/v5.3.2" }, "funding": [ { @@ -5182,7 +5922,7 @@ "type": "tidelift" } ], - "time": "2021-05-26T17:43:10+00:00" + "time": "2021-06-15T17:42:09+00:00" }, { "name": "symfony/service-contracts", @@ -5265,16 +6005,16 @@ }, { "name": "symfony/string", - "version": "v5.3.0", + "version": "v5.3.2", "source": { "type": "git", "url": "https://github.com/symfony/string.git", - "reference": "a9a0f8b6aafc5d2d1c116dcccd1573a95153515b" + "reference": "0732e97e41c0a590f77e231afc16a327375d50b0" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/string/zipball/a9a0f8b6aafc5d2d1c116dcccd1573a95153515b", - "reference": "a9a0f8b6aafc5d2d1c116dcccd1573a95153515b", + "url": "https://api.github.com/repos/symfony/string/zipball/0732e97e41c0a590f77e231afc16a327375d50b0", + "reference": "0732e97e41c0a590f77e231afc16a327375d50b0", "shasum": "" }, "require": { @@ -5328,7 +6068,7 @@ "utf8" ], "support": { - "source": "https://github.com/symfony/string/tree/v5.3.0" + "source": "https://github.com/symfony/string/tree/v5.3.2" }, "funding": [ { @@ -5344,20 +6084,20 @@ "type": "tidelift" } ], - "time": "2021-05-26T17:43:10+00:00" + "time": "2021-06-06T09:51:56+00:00" }, { "name": "symfony/var-dumper", - "version": "v5.3.0", + "version": "v5.3.2", "source": { "type": "git", "url": "https://github.com/symfony/var-dumper.git", - "reference": "1d3953e627fe4b5f6df503f356b6545ada6351f3" + "reference": "905a22c68b292ffb6f20d7636c36b220d1fba5ae" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/var-dumper/zipball/1d3953e627fe4b5f6df503f356b6545ada6351f3", - "reference": "1d3953e627fe4b5f6df503f356b6545ada6351f3", + "url": "https://api.github.com/repos/symfony/var-dumper/zipball/905a22c68b292ffb6f20d7636c36b220d1fba5ae", + "reference": "905a22c68b292ffb6f20d7636c36b220d1fba5ae", "shasum": "" }, "require": { @@ -5416,7 +6156,7 @@ "dump" ], "support": { - "source": "https://github.com/symfony/var-dumper/tree/v5.3.0" + "source": "https://github.com/symfony/var-dumper/tree/v5.3.2" }, "funding": [ { @@ -5432,20 +6172,20 @@ "type": "tidelift" } ], - "time": "2021-05-27T12:28:50+00:00" + "time": "2021-06-06T09:51:56+00:00" }, { "name": "symfony/var-exporter", - "version": "v5.3.0", + "version": "v5.3.2", "source": { "type": "git", "url": "https://github.com/symfony/var-exporter.git", - "reference": "7a7c9dd972541f78e7815c03c0bae9f81e0e9dbb" + "reference": "df663fb63bdcd7298373cbd431165ab031706cb2" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/var-exporter/zipball/7a7c9dd972541f78e7815c03c0bae9f81e0e9dbb", - "reference": "7a7c9dd972541f78e7815c03c0bae9f81e0e9dbb", + "url": "https://api.github.com/repos/symfony/var-exporter/zipball/df663fb63bdcd7298373cbd431165ab031706cb2", + "reference": "df663fb63bdcd7298373cbd431165ab031706cb2", "shasum": "" }, "require": { @@ -5489,7 +6229,7 @@ "serialize" ], "support": { - "source": "https://github.com/symfony/var-exporter/tree/v5.3.0" + "source": "https://github.com/symfony/var-exporter/tree/v5.3.2" }, "funding": [ { @@ -5505,7 +6245,7 @@ "type": "tidelift" } ], - "time": "2021-05-26T17:40:38+00:00" + "time": "2021-06-09T10:57:10+00:00" }, { "name": "symfony/webpack-encore-bundle", @@ -5580,16 +6320,16 @@ }, { "name": "symfony/yaml", - "version": "v5.3.0", + "version": "v5.3.2", "source": { "type": "git", "url": "https://github.com/symfony/yaml.git", - "reference": "3bbcf262fceb3d8f48175302e6ba0ac96e3a5a11" + "reference": "71719ab2409401711d619765aa255f9d352a59b2" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/yaml/zipball/3bbcf262fceb3d8f48175302e6ba0ac96e3a5a11", - "reference": "3bbcf262fceb3d8f48175302e6ba0ac96e3a5a11", + "url": "https://api.github.com/repos/symfony/yaml/zipball/71719ab2409401711d619765aa255f9d352a59b2", + "reference": "71719ab2409401711d619765aa255f9d352a59b2", "shasum": "" }, "require": { @@ -5635,7 +6375,7 @@ "description": "Loads and dumps YAML files", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/yaml/tree/v5.3.0" + "source": "https://github.com/symfony/yaml/tree/v5.3.2" }, "funding": [ { @@ -5651,7 +6391,7 @@ "type": "tidelift" } ], - "time": "2021-05-26T17:43:10+00:00" + "time": "2021-06-06T09:51:56+00:00" } ], "packages-dev": [ @@ -6421,16 +7161,16 @@ }, { "name": "phpstan/phpstan-phpunit", - "version": "0.12.19", + "version": "0.12.20", "source": { "type": "git", "url": "https://github.com/phpstan/phpstan-phpunit.git", - "reference": "52f7072ddc5f81492f9d2de65a24813a48c90b18" + "reference": "efc009981af383eb3303f0ca9868c29acad7ce74" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpstan/phpstan-phpunit/zipball/52f7072ddc5f81492f9d2de65a24813a48c90b18", - "reference": "52f7072ddc5f81492f9d2de65a24813a48c90b18", + "url": "https://api.github.com/repos/phpstan/phpstan-phpunit/zipball/efc009981af383eb3303f0ca9868c29acad7ce74", + "reference": "efc009981af383eb3303f0ca9868c29acad7ce74", "shasum": "" }, "require": { @@ -6441,10 +7181,9 @@ "phpunit/phpunit": "<7.0" }, "require-dev": { - "phing/phing": "^2.16.3", "php-parallel-lint/php-parallel-lint": "^1.2", "phpstan/phpstan-strict-rules": "^0.12.6", - "phpunit/phpunit": "^7.5.20" + "phpunit/phpunit": "^9.5" }, "type": "phpstan-extension", "extra": { @@ -6470,22 +7209,22 @@ "description": "PHPUnit extensions and rules for PHPStan", "support": { "issues": "https://github.com/phpstan/phpstan-phpunit/issues", - "source": "https://github.com/phpstan/phpstan-phpunit/tree/0.12.19" + "source": "https://github.com/phpstan/phpstan-phpunit/tree/0.12.20" }, - "time": "2021-04-30T11:10:37+00:00" + "time": "2021-06-17T08:28:30+00:00" }, { "name": "phpstan/phpstan-symfony", - "version": "0.12.36", + "version": "0.12.37", "source": { "type": "git", "url": "https://github.com/phpstan/phpstan-symfony.git", - "reference": "c3ac708fc1860146e35760b16b8eb2a08dd25d62" + "reference": "45e2ae29f6f53f5039b3d5c401dfc26724d8f5bb" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpstan/phpstan-symfony/zipball/c3ac708fc1860146e35760b16b8eb2a08dd25d62", - "reference": "c3ac708fc1860146e35760b16b8eb2a08dd25d62", + "url": "https://api.github.com/repos/phpstan/phpstan-symfony/zipball/45e2ae29f6f53f5039b3d5c401dfc26724d8f5bb", + "reference": "45e2ae29f6f53f5039b3d5c401dfc26724d8f5bb", "shasum": "" }, "require": { @@ -6539,9 +7278,9 @@ "description": "Symfony Framework extensions and rules for PHPStan", "support": { "issues": "https://github.com/phpstan/phpstan-symfony/issues", - "source": "https://github.com/phpstan/phpstan-symfony/tree/0.12.36" + "source": "https://github.com/phpstan/phpstan-symfony/tree/0.12.37" }, - "time": "2021-06-10T12:35:06+00:00" + "time": "2021-06-16T13:00:16+00:00" }, { "name": "symfony/browser-kit", @@ -7130,68 +7869,6 @@ ], "time": "2021-05-26T17:57:12+00:00" }, - { - "name": "symfony/process", - "version": "v5.3.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/process.git", - "reference": "53e36cb1c160505cdaf1ef201501669c4c317191" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/process/zipball/53e36cb1c160505cdaf1ef201501669c4c317191", - "reference": "53e36cb1c160505cdaf1ef201501669c4c317191", - "shasum": "" - }, - "require": { - "php": ">=7.2.5", - "symfony/polyfill-php80": "^1.15" - }, - "type": "library", - "autoload": { - "psr-4": { - "Symfony\\Component\\Process\\": "" - }, - "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": "Executes commands in sub-processes", - "homepage": "https://symfony.com", - "support": { - "source": "https://github.com/symfony/process/tree/v5.3.0" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2021-05-26T12:52:38+00:00" - }, { "name": "symfony/profiler-pack", "version": "v1.0.5", @@ -7587,16 +8264,16 @@ }, { "name": "symfony/web-profiler-bundle", - "version": "v5.3.0", + "version": "v5.3.2", "source": { "type": "git", "url": "https://github.com/symfony/web-profiler-bundle.git", - "reference": "275350559a4817881419ac959ceb3b308199fcf2" + "reference": "8feb731cfc248cce5c0ac6eeba63ec4923c6a264" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/web-profiler-bundle/zipball/275350559a4817881419ac959ceb3b308199fcf2", - "reference": "275350559a4817881419ac959ceb3b308199fcf2", + "url": "https://api.github.com/repos/symfony/web-profiler-bundle/zipball/8feb731cfc248cce5c0ac6eeba63ec4923c6a264", + "reference": "8feb731cfc248cce5c0ac6eeba63ec4923c6a264", "shasum": "" }, "require": { @@ -7645,7 +8322,7 @@ "description": "Provides a development tool that gives detailed information about the execution of any request", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/web-profiler-bundle/tree/v5.3.0" + "source": "https://github.com/symfony/web-profiler-bundle/tree/v5.3.2" }, "funding": [ { @@ -7661,7 +8338,7 @@ "type": "tidelift" } ], - "time": "2021-05-26T17:43:10+00:00" + "time": "2021-06-07T14:51:59+00:00" }, { "name": "twig/twig", @@ -7752,5 +8429,5 @@ "ext-json": "*" }, "platform-dev": [], - "plugin-api-version": "2.1.0" + "plugin-api-version": "2.0.0" } diff --git a/docker-compose.yml b/docker-compose.yml index cfedc4ca..e9a4b40d 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -7,6 +7,9 @@ services: dockerfile: sys/docker/alpine-nginx/Dockerfile network: host container_name: badge-poser-nginx + env_file: + - ./.env + - ./.env.local depends_on: - phpfpm deploy: @@ -14,23 +17,21 @@ services: limits: cpus: '0.25' memory: 128M - env_file: - - ./.env - - ./.env.local environment: - ENABLE_CW=0 ports: - 8001:80 volumes: - - .:/application:cached - working_dir: /application + - .:/var/task phpfpm: build: context: . - dockerfile: sys/docker/alpine-phpfpm/Dockerfile + dockerfile: sys/docker/bref-phpfpm/Dockerfile network: host container_name: badge-poser-phpfpm + volumes: + - .:/var/task:ro depends_on: - redis deploy: @@ -42,14 +43,21 @@ services: - ./.env - ./.env.local environment: - - ENABLE_CW=0 + DOCKER_COMPOSE: 1 ports: - 9000:9000 volumes: - - .:/application:cached - - ./sys/php/php.ini-dev:/usr/local/etc/php/conf.d/docker-php-zz-overrides.ini:ro + - .:/var/task:ro + - ./var:/var/task/var working_dir: /application + console: + container_name: badge-poser-console + image: bref/php-80 + volumes: + - .:/var/task:ro + entrypoint: php + node: container_name: badge-poser-node image: node:14.14.0-alpine3.12 diff --git a/serverless.yml b/serverless.yml new file mode 100644 index 00000000..f8827191 --- /dev/null +++ b/serverless.yml @@ -0,0 +1,52 @@ +service: bref-symfony + +provider: + name: aws + region: eu-west-1 + runtime: provided + environment: + # Symfony environment variables + APP_ENV: dev + APP_SECRET: + APP_XDEBUG: 0 + APP_XDEBUG_HOST: docker.for.mac.localhost + REDIS_URL: "redis://redis" + GITHUB_AUTH_METHOD: http_token + GITHUB_USERNAME: + GITHUB_SECRET: + CIRCLE_CI_TOKEN: + SENTRY_DSN: + +plugins: + - ./vendor/bref/bref + - ./vendor/bref/extra-php-extensions + +package: + exclude: + - .git/** + - .github/** + - docker/** + - node_modules/** + - php/** + - sys/** + - tests/** + +functions: + website: + handler: public/index.php + timeout: 10 # in seconds + layers: + - ${bref:layer.php-80-fpm} + - ${bref-extra:imagick-php-80} + - ${bref-extra:redis-php-80} + - ${bref-extra:yaml-php-80} + - ${bref:extra.gd-php-80} + events: + - http: 'ANY /' + - http: 'ANY /{proxy+}' + console: + handler: bin/console + timeout: 120 # in seconds + layers: + - ${bref:layer.php-80} # PHP + - ${bref:layer.console} # The "console" layer diff --git a/src/Kernel.php b/src/Kernel.php index 4e4df3ad..af5529e1 100644 --- a/src/Kernel.php +++ b/src/Kernel.php @@ -2,12 +2,12 @@ namespace App; +use Bref\SymfonyBridge\BrefKernel; use Symfony\Bundle\FrameworkBundle\Kernel\MicroKernelTrait; use Symfony\Component\DependencyInjection\Loader\Configurator\ContainerConfigurator; -use Symfony\Component\HttpKernel\Kernel as BaseKernel; use Symfony\Component\Routing\Loader\Configurator\RoutingConfigurator; -final class Kernel extends BaseKernel +final class Kernel extends BrefKernel { use MicroKernelTrait; @@ -35,4 +35,9 @@ protected function configureRoutes(RoutingConfigurator $routes): void (require $path)($routes->withPath($path), $this); } } + + protected function getWritableCacheDirectories(): array + { + return []; + } } diff --git a/symfony.lock b/symfony.lock index 633c4a2d..7bb032b5 100644 --- a/symfony.lock +++ b/symfony.lock @@ -1,10 +1,34 @@ { + "async-aws/core": { + "version": "1.10.0" + }, + "async-aws/lambda": { + "version": "1.4.0" + }, "badges/poser": { "version": "v1.3.0" }, "bitbucket/client": { "version": "v2.1.3" }, + "bref/bref": { + "version": "dev-master" + }, + "bref/extra-php-extensions": { + "version": "dev-master" + }, + "bref/symfony-bridge": { + "version": "0.1", + "recipe": { + "repo": "github.com/symfony/recipes-contrib", + "branch": "master", + "version": "0.1", + "ref": "f20b0f232526b14d5e4734030b47ad6c887757a9" + }, + "files": [ + "serverless.yml" + ] + }, "cache/adapter-common": { "version": "1.1.0" }, @@ -68,6 +92,9 @@ "guzzlehttp/psr7": { "version": "1.5.2" }, + "hollodotme/fast-cgi-client": { + "version": "v3.1.5" + }, "http-interop/http-factory-guzzle": { "version": "1.0.0" }, @@ -101,9 +128,24 @@ "config/packages/knp_packagist_api.yaml" ] }, + "mnapoli/silly": { + "version": "1.7.2" + }, "monolog/monolog": { "version": "1.24.0" }, + "nyholm/psr7": { + "version": "1.0", + "recipe": { + "repo": "github.com/symfony/recipes", + "branch": "master", + "version": "1.0", + "ref": "0cd4d2d0e7f646fda75f9944f747a56e6ed13d4c" + }, + "files": [ + "config/packages/nyholm_psr7.yaml" + ] + }, "ocramius/package-versions": { "version": "1.8.0" }, @@ -113,6 +155,9 @@ "php-cs-fixer/diff": { "version": "v1.3.0" }, + "php-di/invoker": { + "version": "2.3.0" + }, "php-http/cache-plugin": { "version": "v1.5.0" }, @@ -173,6 +218,9 @@ "psr/http-message": { "version": "1.0.1" }, + "psr/http-server-handler": { + "version": "1.0.1" + }, "psr/log": { "version": "1.1.0" }, @@ -182,6 +230,9 @@ "ralouphie/getallheaders": { "version": "2.0.5" }, + "riverline/multipart-parser": { + "version": "2.0.8" + }, "sentry/sdk": { "version": "2.0.4" }, diff --git a/sys/README.md b/sys/README.md index a2fc9c7a..fbd5d2b4 100644 --- a/sys/README.md +++ b/sys/README.md @@ -26,7 +26,7 @@ aws ecr get-login-password --profile badge-poser | docker login --password-stdin VER=$(date +%s); docker build -t $ACCOUNT.dkr.ecr.eu-west-1.amazonaws.com/badge-poser:nginx-$VER -f sys/docker/alpine-nginx/Dockerfile . -docker build -t $ACCOUNT.dkr.ecr.eu-west-1.amazonaws.com/badge-poser:phpfpm-$VER -f sys/docker/alpine-phpfpm/Dockerfile . +docker build -t $ACCOUNT.dkr.ecr.eu-west-1.amazonaws.com/badge-poser:phpfpm-$VER -f sys/docker/bref-phpfpm/Dockerfile . docker push $ACCOUNT.dkr.ecr.eu-west-1.amazonaws.com/badge-poser:nginx-$VER docker push $ACCOUNT.dkr.ecr.eu-west-1.amazonaws.com/badge-poser:phpfpm-$VER diff --git a/sys/cloudformation/stack.yaml b/sys/cloudformation/stack.yaml index fe4a7dc5..ed6aca58 100644 --- a/sys/cloudformation/stack.yaml +++ b/sys/cloudformation/stack.yaml @@ -375,9 +375,9 @@ Resources: ContainerDefinitions: - Name: 'phpfpm' PortMappings: - - HostPort: 9000 + - HostPort: 9001 Protocol: tcp - ContainerPort: 9000 + ContainerPort: 9001 Environment: - Name: APP_ENV Value: !Ref EnvAPPENV diff --git a/sys/docker/alpine-nginx/Dockerfile b/sys/docker/alpine-nginx/Dockerfile index f473f905..7f0f94e0 100644 --- a/sys/docker/alpine-nginx/Dockerfile +++ b/sys/docker/alpine-nginx/Dockerfile @@ -1,4 +1,4 @@ -FROM fabiocicerchia/nginx-lua:1.19.4-alpine3.12.1 +FROM fabiocicerchia/nginx-lua:1.21.0-alpine3.13.5 ENV RUN_IN_CONTAINER="True" diff --git a/sys/docker/alpine-phpfpm/Dockerfile b/sys/docker/alpine-phpfpm/Dockerfile deleted file mode 100644 index 9fdeb396..00000000 --- a/sys/docker/alpine-phpfpm/Dockerfile +++ /dev/null @@ -1,67 +0,0 @@ -FROM php:8.0.3-fpm-alpine3.13 - -ENV RUN_IN_CONTAINER="True" - -RUN apk add --no-cache --virtual .builddeps \ - autoconf \ - g++ \ - gcc \ - make \ - unzip \ - wget \ - && apk add --no-cache \ - freetype-dev \ - git \ - icu-dev \ - jpeg-dev \ - libpng-dev \ - libzip-dev \ - oniguruma-dev \ - yaml-dev \ - zlib-dev \ - && docker-php-ext-configure gd --with-freetype --with-jpeg \ - && docker-php-ext-install -j"$(nproc)" \ - bcmath \ - gd \ - intl \ - mbstring \ - opcache \ - zip \ - && wget https://github.com/FriendsOfPHP/pickle/releases/download/v0.6.0/pickle.phar -O /usr/local/bin/pickle \ - && chmod +x /usr/local/bin/pickle \ - && pickle install yaml@2.1.0 --defaults --no-interaction \ - && pickle install redis@5.3.2 --defaults --no-interaction \ - # && pickle install msgpack@2.1.1 --defaults --no-interaction \ - && ln -nfs /usr/local/etc/php/php.ini-production /usr/local/etc/php/php.ini - -COPY sys/php/php.ini /usr/local/etc/php/php.ini -COPY sys/php/docker-php-ext-opcache8.ini /usr/local/etc/php/conf.d/docker-php-ext-opcache.ini -COPY sys/php/php-fpm.conf /usr/local/etc/php-fpm.conf -COPY sys/php/www.conf /usr/local/etc/php-fpm.d/www.conf -COPY sys/php/zz-docker8.conf /usr/local/etc/php-fpm.d/zz-docker8.conf -COPY --from=awsbuilder /tmp /tmp -COPY --from=awsbuilder /etc/ssl/certs/ca-certificates.crt /etc/ssl/certs/ca-certificates.crt -COPY --from=awsbuilder /opt/aws/amazon-cloudwatch-agent /opt/aws/amazon-cloudwatch-agent - -WORKDIR /application - -COPY . /application -COPY --from=jsbuilder /application/public/build /application/public/build - -# REF: https://github.com/docker-library/php/issues/240 -RUN apk add --no-cache --repository http://dl-3.alpinelinux.org/alpine/edge/testing gnu-libiconv -ENV LD_PRELOAD /usr/lib/preloadable_libiconv.so - -COPY --from=composer:2 /usr/bin/composer /usr/local/bin/composer - -RUN /usr/local/bin/composer install --optimize-autoloader --no-ansi --no-interaction --no-progress \ - && apk del .builddeps \ - && php-fpm -t \ - && php-fpm -tt - -RUN mkdir -p /application/var/cache && chmod 777 /application/var/cache -RUN mkdir -p /application/var/log && chmod 777 /application/var/log - -ENTRYPOINT ["/application/sys/docker/alpine-phpfpm/start.sh"] - -CMD ["php-fpm"] diff --git a/sys/docker/bref-phpfpm/Dockerfile b/sys/docker/bref-phpfpm/Dockerfile new file mode 100644 index 00000000..c2c3fc19 --- /dev/null +++ b/sys/docker/bref-phpfpm/Dockerfile @@ -0,0 +1,27 @@ +FROM bref/php-80-fpm-dev:1.2.7 + +ENV LD_LIBRARY_PATH=/opt/bref/lib64:/opt/bref/lib + +COPY --from=composer:2 /usr/bin/composer /usr/local/bin/composer +COPY --from=bref/extra-gd-php-80 /opt /opt +COPY --from=bref/extra-imagick-php-80 /opt /opt +COPY --from=bref/extra-redis-php-80 /opt /opt +COPY --from=bref/extra-yaml-php-80 /opt /opt +COPY --from=awsbuilder /tmp /tmp +COPY --from=awsbuilder /etc/ssl/certs/ca-certificates.crt /etc/ssl/certs/ca-certificates.crt +COPY --from=awsbuilder /opt/aws/amazon-cloudwatch-agent /opt/aws/amazon-cloudwatch-agent +COPY sys/php/php.ini /opt/bref/etc/php/php.ini +COPY sys/php/docker-php-ext-opcache8.ini /opt/bref/etc/php/conf.d/ext-opcache.ini +COPY sys/php/php-fpm.conf /opt/bref/etc/php-fpm.conf.default +COPY sys/php/www.conf /opt/bref/etc/php-fpm.d/www.conf.default + +COPY . /var/task + +WORKDIR /var/task + +RUN /usr/local/bin/composer install --optimize-autoloader --no-ansi --no-interaction --no-progress \ + && php-fpm -t \ + && php-fpm -tt + +ENTRYPOINT ["/var/task/sys/docker/bref-phpfpm/start.sh"] +CMD /opt/bin/php-fpm --nodaemonize --fpm-config /opt/bref/etc/php-fpm.conf -d opcache.validate_timestamps=1 --force-stderr diff --git a/sys/docker/alpine-phpfpm/start.sh b/sys/docker/bref-phpfpm/start.sh similarity index 100% rename from sys/docker/alpine-phpfpm/start.sh rename to sys/docker/bref-phpfpm/start.sh diff --git a/sys/nginx/default.conf.template b/sys/nginx/default.conf.template index 42421fb2..a40b6192 100644 --- a/sys/nginx/default.conf.template +++ b/sys/nginx/default.conf.template @@ -25,7 +25,7 @@ server { listen 80; server_name poser.pugx.org poser.packagist.org poser.local stg.poser.pugx.org; - root /application/public; + root /var/task/public; if ($request_uri ~ "/dark-canary/") { set $skip_cache 1; } @@ -75,7 +75,7 @@ server { return string.gsub(ngx.var.document_uri, "/dark%-canary", "") } - fastcgi_pass ${PHPFPM_CANARY_HOST}:9000; + fastcgi_pass ${PHPFPM_CANARY_HOST}:9001; fastcgi_split_path_info ^(.+\.php)(/.*)$; fastcgi_buffers 16 16k; fastcgi_buffer_size 32k; @@ -83,7 +83,7 @@ server { fastcgi_param REQUEST_URI $request_url; fastcgi_param DOCUMENT_URI $document_url; fastcgi_param SCRIPT_NAME /index.php; - fastcgi_param SCRIPT_FILENAME /application/public/index.php; + fastcgi_param SCRIPT_FILENAME /var/task/public/index.php; fastcgi_param DOCUMENT_ROOT $realpath_root; } @@ -118,7 +118,7 @@ server { # local = phpfpm # aws = 127.0.0.1 - fastcgi_pass ${PHPFPM_HOST}:9000; + fastcgi_pass ${PHPFPM_HOST}:9001; fastcgi_split_path_info ^(.+\.php)(/.*)$; include fastcgi_params; diff --git a/sys/php/docker-php-ext-opcache.ini b/sys/php/docker-php-ext-opcache.ini deleted file mode 100644 index 5a0bb8df..00000000 --- a/sys/php/docker-php-ext-opcache.ini +++ /dev/null @@ -1,131 +0,0 @@ -; Enable Zend OPcache extension module -zend_extension=/usr/local/lib/php/extensions/no-debug-non-zts-20190902/opcache.so - -; Determines if Zend OPCache is enabled -opcache.enable=1 - -; Determines if Zend OPCache is enabled for the CLI version of PHP -;opcache.enable_cli=0 - -; The OPcache shared memory storage size. -opcache.memory_consumption=256 - -; The amount of memory for interned strings in Mbytes. -opcache.interned_strings_buffer=8 - -; The maximum number of keys (scripts) in the OPcache hash table. -; Only numbers between 200 and 1000000 are allowed. -opcache.max_accelerated_files=20000 - -; The maximum percentage of "wasted" memory until a restart is scheduled. -;opcache.max_wasted_percentage=5 - -; When this directive is enabled, the OPcache appends the current working -; directory to the script key, thus eliminating possible collisions between -; files with the same name (basename). Disabling the directive improves -; performance, but may break existing applications. -;opcache.use_cwd=1 - -; When disabled, you must reset the OPcache manually or restart the -; webserver for changes to the filesystem to take effect. -;opcache.validate_timestamps=1 -opcache.validate_timestamps=0 - -; How often (in seconds) to check file timestamps for changes to the shared -; memory storage allocation. ("1" means validate once per second, but only -; once per request. "0" means always validate) -;opcache.revalidate_freq=2 - -; Enables or disables file search in include_path optimization -;opcache.revalidate_path=0 - -; If disabled, all PHPDoc comments are dropped from the code to reduce the -; size of the optimized code. -;opcache.save_comments=1 - -; If enabled, a fast shutdown sequence is used for the accelerated code -; Depending on the used Memory Manager this may cause some incompatibilities. -;opcache.fast_shutdown=0 - -; Allow file existence override (file_exists, etc.) performance feature. -;opcache.enable_file_override=0 - -; A bitmask, where each bit enables or disables the appropriate OPcache -; passes -;opcache.optimization_level=0xffffffff - -;opcache.inherited_hack=1 -;opcache.dups_fix=0 - -; The location of the OPcache blacklist file (wildcards allowed). -; Each OPcache blacklist file is a text file that holds the names of files -; that should not be accelerated. -opcache.blacklist_filename=/etc/php.d/opcache*.blacklist - -; Allows exclusion of large files from being cached. By default all files -; are cached. -;opcache.max_file_size=0 - -; Check the cache checksum each N requests. -; The default value of "0" means that the checks are disabled. -;opcache.consistency_checks=0 - -; How long to wait (in seconds) for a scheduled restart to begin if the cache -; is not being accessed. -;opcache.force_restart_timeout=180 - -; OPcache error_log file name. Empty string assumes "stderr". -;opcache.error_log= - -; All OPcache errors go to the Web server log. -; By default, only fatal errors (level 0) or errors (level 1) are logged. -; You can also enable warnings (level 2), info messages (level 3) or -; debug messages (level 4). -;opcache.log_verbosity_level=1 - -; Preferred Shared Memory back-end. Leave empty and let the system decide. -;opcache.preferred_memory_model= - -; Protect the shared memory from unexpected writing during script execution. -; Useful for internal debugging only. -;opcache.protect_memory=0 - -; Allows calling OPcache API functions only from PHP scripts which path is -; started from specified string. The default "" means no restriction -;opcache.restrict_api= - -; Enables and sets the second level cache directory. -; It should improve performance when SHM memory is full, at server restart or -; SHM reset. The default "" disables file based caching. -; RPM note : file cache directory must be owned by process owner -; for mod_php, see /etc/httpd/conf.d/php.conf -; for php-fpm, see /etc/php-fpm.d/*conf -;opcache.file_cache= - -; Enables or disables opcode caching in shared memory. -;opcache.file_cache_only=0 - -; Enables or disables checksum validation when script loaded from file cache. -;opcache.file_cache_consistency_checks=1 - -; Implies opcache.file_cache_only=1 for a certain process that failed to -; reattach to the shared memory (for Windows only). Explicitly enabled file -; cache is required. -;opcache.file_cache_fallback=1 - -; Validate cached file permissions. -; Leads OPcache to check file readability on each access to cached file. -; This directive should be enabled in shared hosting environment, when few -; users (PHP-FPM pools) reuse the common OPcache shared memory. -;opcache.validate_permission=0 - -; Prevent name collisions in chroot'ed environment. -; This directive prevents file name collisions in different "chroot" -; environments. It should be enabled for sites that may serve requests in -; different "chroot" environments. -;opcache.validate_root=0 - -; Enables or disables copying of PHP code (text segment) into HUGE PAGES. -; This should improve performance, but requires appropriate OS configuration. -opcache.huge_code_pages=1 - diff --git a/sys/php/docker-php-ext-opcache8.ini b/sys/php/docker-php-ext-opcache8.ini index 3d02d53e..6f035d10 100644 --- a/sys/php/docker-php-ext-opcache8.ini +++ b/sys/php/docker-php-ext-opcache8.ini @@ -1,6 +1,3 @@ -; Enable Zend OPcache extension module -zend_extension=/usr/local/lib/php/extensions/no-debug-non-zts-20200930/opcache.so - ; Determines if Zend OPCache is enabled opcache.enable=1 diff --git a/sys/php/php-fpm.conf b/sys/php/php-fpm.conf index 6920b2cf..946ca0e3 100644 --- a/sys/php/php-fpm.conf +++ b/sys/php/php-fpm.conf @@ -15,6 +15,7 @@ ; Note: the default prefix is /usr/local/var ; Default Value: none ;pid = run/php-fpm.pid +pid = /tmp/php-fpm.pid ; Error log file ; If it's set to "syslog", log is sent to syslogd instead of being written @@ -51,6 +52,8 @@ log_level = warning ; when logging to syslog. ; Default Value: 1024 ;log_limit = 4096 +; New PHP 7.3 option that includes the maximum length when writing to stderr +log_limit = 8192 ; Log buffering specifies if the log line is buffered which means that the ; line is written in a single write operation. If the value is false, then the @@ -146,4 +149,3 @@ process_control_timeout = 10s ; - the global prefix if it's been set (-p argument) ; - /usr/local otherwise include=etc/php-fpm.d/*.conf - diff --git a/sys/php/php.ini b/sys/php/php.ini index 8ad33c27..8ad64b1b 100644 --- a/sys/php/php.ini +++ b/sys/php/php.ini @@ -88,6 +88,7 @@ ;;;;;;;;;;;;;;;;;;; ; Quick Reference ; ;;;;;;;;;;;;;;;;;;; + ; The following are all the settings which are different in either the production ; or development versions of the INIs with respect to PHP's default behavior. ; Please see the actual settings later in the document for more details as to why @@ -99,12 +100,12 @@ ; Production Value: Off ; display_startup_errors -; Default Value: Off +; Default Value: On ; Development Value: On ; Production Value: Off ; error_reporting -; Default Value: E_ALL & ~E_NOTICE & ~E_STRICT & ~E_DEPRECATED +; Default Value: E_ALL ; Development Value: E_ALL ; Production Value: E_ALL & ~E_DEPRECATED & ~E_STRICT @@ -153,6 +154,16 @@ ; Development Value: "GPCS" ; Production Value: "GPCS" +; zend.exception_ignore_args +; Default Value: Off +; Development Value: Off +; Production Value: On + +; zend.exception_string_param_max_len +; Default Value: 15 +; Development Value: 15 +; Production Value: 0 + ;;;;;;;;;;;;;;;;;;;; ; php.ini Options ; ;;;;;;;;;;;;;;;;;;;; @@ -354,21 +365,31 @@ zend.enable_gc = On ; If enabled, scripts may be written in encodings that are incompatible with ; the scanner. CP936, Big5, CP949 and Shift_JIS are the examples of such ; encodings. To use this feature, mbstring extension must be enabled. -; Default: Off ;zend.multibyte = Off ; Allows to set the default encoding for the scripts. This value will be used ; unless "declare(encoding=...)" directive appears at the top of the script. ; Only affects if zend.multibyte is set. -; Default: "" ;zend.script_encoding = -; Allows to include or exclude arguments from stack traces generated for exceptions -; Default: Off +; Allows to include or exclude arguments from stack traces generated for exceptions. ; In production, it is recommended to turn this setting on to prohibit the output ; of sensitive information in stack traces +; Default Value: Off +; Development Value: Off +; Production Value: On zend.exception_ignore_args = On +; Allows setting the maximum string length in an argument of a stringified stack trace +; to a value between 0 and 1000000. +; This has no effect when zend.exception_ignore_args is enabled. +; Default Value: 15 +; Development Value: 15 +; Production Value: 0 +; In production, it is recommended to set this to 0 to reduce the output +; of sensitive information in stack traces. +zend.exception_string_param_max_len = 0 + ;;;;;;;;;;;;;;;;; ; Miscellaneous ; ;;;;;;;;;;;;;;;;; @@ -462,7 +483,7 @@ memory_limit = 192M ; E_ALL & ~E_NOTICE (Show all errors, except for notices) ; E_ALL & ~E_NOTICE & ~E_STRICT (Show all errors, except for notices and coding standards warnings.) ; E_COMPILE_ERROR|E_RECOVERABLE_ERROR|E_ERROR|E_CORE_ERROR (Show only errors) -; Default Value: E_ALL & ~E_NOTICE & ~E_STRICT & ~E_DEPRECATED +; Default Value: E_ALL ; Development Value: E_ALL ; Production Value: E_ALL & ~E_DEPRECATED & ~E_STRICT ; http://php.net/error-reporting @@ -486,11 +507,9 @@ error_reporting = E_ALL & ~E_DEPRECATED & ~E_STRICT display_errors = Off ; The display of errors which occur during PHP's startup sequence are handled -; separately from display_errors. PHP's default behavior is to suppress those -; errors from clients. Turning the display of startup errors on can be useful in -; debugging configuration problems. We strongly recommend you -; set this to 'off' for production servers. -; Default Value: Off +; separately from display_errors. We strongly recommend you set this to 'off' +; for production servers to avoid leaking configuration details. +; Default Value: On ; Development Value: On ; Production Value: Off ; http://php.net/display-startup-errors @@ -528,19 +547,9 @@ ignore_repeated_source = Off ; http://php.net/report-memleaks report_memleaks = On -; This setting is on by default. +; This setting is off by default. ;report_zend_debug = 0 -; Store the last error/warning message in $php_errormsg (boolean). Setting this value -; to On can assist in debugging and is appropriate for development servers. It should -; however be disabled on production servers. -; This directive is DEPRECATED. -; Default Value: Off -; Development Value: Off -; Production Value: Off -; http://php.net/track-errors -;track_errors = Off - ; Turn off normal error reporting and emit XML-RPC error XML ; http://php.net/xmlrpc-errors ;xmlrpc_errors = 0 @@ -920,7 +929,7 @@ default_socket_timeout = 60 ;extension=ffi ;extension=ftp ;extension=fileinfo -;extension=gd2 +;extension=gd ;extension=gettext ;extension=gmp ;extension=intl @@ -930,6 +939,7 @@ default_socket_timeout = 60 ;extension=exif ; Must be after mbstring as it depends on it ;extension=mysqli ;extension=oci8_12c ; Use with Oracle Database 12c Instant Client +;extension=oci8_19 ; Use with Oracle Database 19 Instant Client ;extension=odbc ;extension=openssl ;extension=pdo_firebird @@ -950,9 +960,10 @@ default_socket_timeout = 60 ;extension=sodium ;extension=sqlite3 ;extension=tidy -;extension=xmlrpc ;extension=xsl +;zend_extension=opcache + ;;;;;;;;;;;;;;;;;;; ; Module Settings ; ;;;;;;;;;;;;;;;;;;; @@ -974,10 +985,10 @@ date.timezone = UTC ;date.default_longitude = 35.2333 ; http://php.net/date.sunrise-zenith -;date.sunrise_zenith = 90.583333 +;date.sunrise_zenith = 90.833333 ; http://php.net/date.sunset-zenith -;date.sunset_zenith = 90.583333 +;date.sunset_zenith = 90.833333 [filter] ; http://php.net/filter.default @@ -1055,8 +1066,6 @@ pcre.jit=0 ; http://php.net/pdo-odbc.connection-pooling ;pdo_odbc.connection_pooling=strict -;pdo_odbc.db2_instance_name - [Pdo_mysql] ; Default socket name for local MySQL connects. If empty, uses the built-in ; MySQL defaults. @@ -1593,11 +1602,6 @@ zend.assertions = -1 ; http://php.net/assert.callback ;assert.callback = 0 -; Eval the expression with current error_reporting(). Set to true if you want -; error_reporting(0) around the eval(). -; http://php.net/assert.quiet-eval -;assert.quiet_eval = 0 - [COM] ; path to a file containing GUIDs, IIDs or filenames of files with TypeLibs ; http://php.net/com.typelib-file @@ -1623,6 +1627,10 @@ zend.assertions = -1 ; Default: system ANSI code page ;com.code_page= +; The version of the .NET framework to use. The value of the setting are the first three parts +; of the framework's version number, separated by dots, and prefixed with "v", e.g. "v4.0.30319". +;com.dotnet_version= + [mbstring] ; language for internal character representation. ; This affects mb_send_mail() and mbstring.detect_order. @@ -1640,7 +1648,7 @@ zend.assertions = -1 ; http input encoding. ; mbstring.encoding_translation = On is needed to use this setting. ; If empty, default_charset or input_encoding or mbstring.input is used. -; The precedence is: default_charset < input_encoding < mbsting.http_input +; The precedence is: default_charset < input_encoding < mbstring.http_input ; http://php.net/mbstring.http-input ;mbstring.http_input = @@ -1672,20 +1680,8 @@ zend.assertions = -1 ; http://php.net/mbstring.substitute-character ;mbstring.substitute_character = none -; overload(replace) single byte functions by mbstring functions. -; mail(), ereg(), etc are overloaded by mb_send_mail(), mb_ereg(), -; etc. Possible values are 0,1,2,4 or combination of them. -; For example, 7 for overload everything. -; 0: No overload -; 1: Overload mail() function -; 2: Overload str*() functions -; 4: Overload ereg*() functions -; http://php.net/mbstring.func-overload -;mbstring.func_overload = 0 - -; enable strict encoding detection. -; Default: Off -;mbstring.strict_detection = On +; Enable strict encoding detection. +;mbstring.strict_detection = Off ; This directive specifies the regex pattern of content types for which mb_output_handler() ; is activated. @@ -1694,12 +1690,10 @@ zend.assertions = -1 ; This directive specifies maximum stack depth for mbstring regular expressions. It is similar ; to the pcre.recursion_limit for PCRE. -; Default: 100000 ;mbstring.regex_stack_limit=100000 ; This directive specifies maximum retry count for mbstring regular expressions. It is similar ; to the pcre.backtrack_limit for PCRE. -; Default: 1000000 ;mbstring.regex_retry_limit=1000000 [gd] @@ -1814,6 +1808,11 @@ ldap.max_links = -1 ; size of the optimized code. ;opcache.save_comments=1 +; If enabled, compilation warnings (including notices and deprecations) will +; be recorded and replayed each time a file is included. Otherwise, compilation +; warnings will only be emitted when the file is first cached. +;opcache.record_warnings=0 + ; Allow file existence override (file_exists, etc.) performance feature. ;opcache.enable_file_override=0 @@ -1953,4 +1952,3 @@ ldap.max_links = -1 ; List of headers files to preload, wildcard patterns allowed. ;ffi.preload= - diff --git a/sys/php/www.conf b/sys/php/www.conf index cb1fe3dc..fc88f150 100644 --- a/sys/php/www.conf +++ b/sys/php/www.conf @@ -12,7 +12,7 @@ ; - 'chdir' ; - 'php_values' ; - 'php_admin_values' -; When not set, the global prefix (or NONE) applies instead. +; When not set, the global prefix (or /opt/bref) applies instead. ; Note: This directive can also be relative to the global prefix. ; Default Value: none ;prefix = /path/to/pools/$pool @@ -20,8 +20,8 @@ ; Unix user/group of processes ; Note: The user is mandatory. If the group is not set, the default user's group ; will be used. -user = www-data -group = www-data +user = nobody +group = nobody ; The address on which to accept FastCGI requests. ; Valid syntaxes are: @@ -33,7 +33,7 @@ group = www-data ; (IPv6 and IPv4-mapped) on a specific port; ; '/path/to/unix/socket' - to listen on a unix socket. ; Note: This value is mandatory. -listen = :9000 +listen = 127.0.0.1:9001 ; Set listen(2) backlog. ; Default Value: 511 (-1 on FreeBSD and OpenBSD) @@ -45,8 +45,8 @@ listen = :9000 ; and group can be specified either by name or by their numeric IDs. ; Default Values: user and group are set as the running user ; mode is set to 0660 -listen.owner = www-data -listen.group = www-data +;listen.owner = nobody +;listen.group = nobody ;listen.mode = 0660 ; When POSIX Access Control Lists are supported you can set them using ; these options, value is a comma separated list of user/group names. @@ -71,7 +71,7 @@ listen.group = www-data ; process.priority = -19 ; Set the process dumpable flag (PR_SET_DUMPABLE prctl) even if the process user -; or group is differrent than the master process user. It allows to create process +; or group is different than the master process user. It allows to create process ; core dump and ptrace the process for the pool user. ; Default Value: no ; process.dumpable = yes @@ -111,26 +111,22 @@ pm = dynamic ; forget to tweak pm.* to fit your needs. ; Note: Used when pm is set to 'static', 'dynamic' or 'ondemand' ; Note: This value is mandatory. -;pm.max_children = 5 -pm.max_children = 100 +pm.max_children = 5 ; The number of child processes created on startup. ; Note: Used only when pm is set to 'dynamic' ; Default Value: (min_spare_servers + max_spare_servers) / 2 -;pm.start_servers = 2 -pm.start_servers = 5 +pm.start_servers = 2 ; The desired minimum number of idle server processes. ; Note: Used only when pm is set to 'dynamic' ; Note: Mandatory when pm is set to 'dynamic' -;pm.min_spare_servers = 1 -pm.min_spare_servers = 5 +pm.min_spare_servers = 1 ; The desired maximum number of idle server processes. ; Note: Used only when pm is set to 'dynamic' ; Note: Mandatory when pm is set to 'dynamic' -;pm.max_spare_servers = 3 -pm.max_spare_servers = 15 +pm.max_spare_servers = 3 ; The number of seconds after which an idle process will be killed. ; Note: Used only when pm is set to 'ondemand' @@ -144,7 +140,7 @@ pm.max_spare_servers = 15 ;pm.max_requests = 500 ; The URI to view the FPM status page. If this value is not set, no URI will be -; recognized as a status page. It shows the following informations: +; recognized as a status page. It shows the following information: ; pool - the name of the pool; ; process manager - static, dynamic or ondemand; ; start time - the date and time FPM has started; @@ -234,7 +230,7 @@ pm.max_spare_servers = 15 ; last request memory: 0 ; ; Note: There is a real-time FPM status monitoring sample web page available -; It's available in: /usr/local/share/php/fpm/status.html +; It's available in: /opt/bref/share/php/fpm/status.html ; ; Note: The value must start with a leading slash (/). The value can be ; anything, but it may not be a good idea to use the .php extension or it @@ -242,6 +238,22 @@ pm.max_spare_servers = 15 ; Default Value: not set ;pm.status_path = /status +; The address on which to accept FastCGI status request. This creates a new +; invisible pool that can handle requests independently. This is useful +; if the main pool is busy with long running requests because it is still possible +; to get the status before finishing the long running requests. +; +; Valid syntaxes are: +; 'ip.add.re.ss:port' - to listen on a TCP socket to a specific IPv4 address on +; a specific port; +; '[ip:6:addr:ess]:port' - to listen on a TCP socket to a specific IPv6 address on +; a specific port; +; 'port' - to listen on a TCP socket to all addresses +; (IPv6 and IPv4-mapped) on a specific port; +; '/path/to/unix/socket' - to listen on a unix socket. +; Default Value: value of the listen option +;pm.status_listen = 127.0.0.1:9001 + ; The ping URI to call the monitoring page of FPM. If this value is not set, no ; URI will be recognized as a ping page. This could be used to test from outside ; that FPM is alive and responding, or to @@ -275,13 +287,13 @@ access.log = /proc/self/fd/2 ; %d: time taken to serve the request ; it can accept the following format: ; - %{seconds}d (default) -; - %{miliseconds}d +; - %{milliseconds}d ; - %{mili}d ; - %{microseconds}d ; - %{micro}d ; %e: an environment variable (same as $_ENV or $_SERVER) ; it must be associated with embraces to specify the name of the env -; variable. Some exemples: +; variable. Some examples: ; - server specifics like: %{REQUEST_METHOD}e or %{SERVER_PROTOCOL}e ; - HTTP headers like: %{HTTP_HOST}e or %{HTTP_USER_AGENT}e ; %f: script filename @@ -380,7 +392,7 @@ access.log = /proc/self/fd/2 ; Redirect worker stdout and stderr into main error log. If not set, stdout and ; stderr will be redirected to /dev/null according to FastCGI specs. -; Note: on highloaded environement, this can cause some delay in the page +; Note: on highloaded environment, this can cause some delay in the page ; process time (several ms). ; Default Value: no ;catch_workers_output = yes @@ -433,7 +445,7 @@ access.log = /proc/self/fd/2 ; instead. ; Note: path INI options can be relative and will be expanded with the prefix -; (pool, global or /usr/local) +; (pool, global or /opt/bref) ; Default Value: nothing is defined by default except the values in php.ini and ; specified at startup with the -d argument @@ -442,4 +454,3 @@ access.log = /proc/self/fd/2 ;php_admin_value[error_log] = /var/log/fpm-php.www.log ;php_admin_flag[log_errors] = on ;php_admin_value[memory_limit] = 32M - diff --git a/sys/php/zz-docker8.conf b/sys/php/zz-docker8.conf deleted file mode 100644 index 205ceb25..00000000 --- a/sys/php/zz-docker8.conf +++ /dev/null @@ -1,6 +0,0 @@ -[global] -daemonize = no - -[www] -listen = 9000 -