1 Commits

Author SHA1 Message Date
f007dcf6d8 feat: add authentication success/failure log outputs
Some checks failed
Cadoles/hydra-sql/pipeline/pr-develop There was a failure building this commit
see CNOUS/mse#4707
2025-03-07 09:11:25 +01:00
88 changed files with 7023 additions and 8473 deletions

View File

@@ -1,18 +1,14 @@
* .env.local
!/misc/compose/hydra-sql .env.local.php
!/assets .env.*.local
!/bin config/secrets/prod/prod.decrypt.private.php
!/config public/bundles/
!/public var/
!/src vendor/
!/templates supervisord.log
!/translations supervisord.pid
!/.env .composer/
!/composer.json .vscode
!/composer.lock composer.phar
!/package-lock.json /tools
!/package.json /.trivy
!/symfony.lock
!/webpack.config.js
/public/build

21
.env
View File

@@ -14,7 +14,7 @@
# https://symfony.com/doc/current/best_practices.html#use-environment-variables-for-infrastructure-configuration # https://symfony.com/doc/current/best_practices.html#use-environment-variables-for-infrastructure-configuration
###> symfony/framework-bundle ### ###> symfony/framework-bundle ###
APP_ENV=prod APP_ENV=dev
APP_SECRET=406ccaa0c76a451fdcc2307ea146cbef APP_SECRET=406ccaa0c76a451fdcc2307ea146cbef
URL_LINK="http://localhost" URL_LINK="http://localhost"
@@ -24,23 +24,20 @@ DSN_REMOTE_DATABASE="pgsql:host='postgres';port=5432;dbname=lasql"
DB_USER="lasql" DB_USER="lasql"
DB_PASSWORD="lasql" DB_PASSWORD="lasql"
ISSUER_URL="http://localhost:10502" ISSUER_URL="http://localhost:8000"
BASE_URL='http://localhost:10500' BASE_URL='http://localhost:8080'
# connexion hydra # connexion hydra
HYDRA_ADMIN_BASE_URL='http://hydra:4445' HYDRA_ADMIN_BASE_URL='http://hydra:4445'
APP_LOCALES="fr,en" APP_LOCALES="fr,en"
SECURITY_PATTERN= SECURITY_PATTERN=
HASH_ALGO_LEGACY="sha256,ssha" HASH_ALGO_LEGACY="sha256,ssha"
###> symfony/lock ###
# Choose one of the stores below
# postgresql+advisory://db_user:db_password@localhost/db_name
LOCK_DSN=flock
###< symfony/lock ###
###> sentry/sentry-symfony ### ###> sentry/sentry-symfony ###
SENTRY_DSN= SENTRY_DSN=
###< sentry/sentry-symfony ### ###< sentry/sentry-symfony ###
REDIS_DSN=redis://redis:6379 REDIS_DSN=redis://redis:6379
### Altcha
ALTCHA_HOST='http://altcha:3333'
ALTCHA_BASE_URL=''
ALTCHA_DEBUG=false
ALTCHA_WORKERS=8
ALTCHA_DELAY=100
ALTCHA_MOCK_ERROR=false
ALTCHA_ENABLED=true

5
.gitignore vendored
View File

@@ -21,7 +21,6 @@ composer.phar
/tools /tools
/.trivy /.trivy
.mktools/ .mktools/
.php-cs-fixer.cache
###> symfony/framework-bundle ### ###> symfony/framework-bundle ###
/.env.local /.env.local
@@ -39,7 +38,3 @@ composer.phar
npm-debug.log npm-debug.log
yarn-error.log yarn-error.log
###< symfony/webpack-encore-bundle ### ###< symfony/webpack-encore-bundle ###
###> phpstan/phpstan ###
phpstan.neon
###< phpstan/phpstan ###

2
Jenkinsfile vendored
View File

@@ -4,7 +4,7 @@
// Utilisation du pipeline partagé pour les applications Symfony de Cadoles // Utilisation du pipeline partagé pour les applications Symfony de Cadoles
// Le nom de l'image Docker passée en paramètre vous permet de préciser l'environnement de test // Le nom de l'image Docker passée en paramètre vous permet de préciser l'environnement de test
// de votre application Symfony // de votre application Symfony
symfonyAppPipeline('ubuntu:25.04', [ symfonyAppPipeline('ubuntu:22.04', [
'hooks': [ 'hooks': [
// Run docker image build, verification and publication stages // Run docker image build, verification and publication stages
'postSymfonyAppPipeline': { 'postSymfonyAppPipeline': {

View File

@@ -5,9 +5,6 @@ IMAGES := $(foreach file, $(wildcard $(IMAGES_DIR)/*), $(basename $(notdir $(fil
TRIVY_ARGS ?= TRIVY_ARGS ?=
php-cs-fixer:
PHP_CS_FIXER_IGNORE_ENV=1 tools/php-cs-fixer/vendor/bin/php-cs-fixer -v fix --config=./tools/php-cs-fixer/.php-cs-fixer.dist.php
build-image: $(foreach image, $(IMAGES), build-image-$(image)) build-image: $(foreach image, $(IMAGES), build-image-$(image))
build-image-%: build-image-%:

View File

@@ -8,4 +8,5 @@
// any CSS you import will output into a single css file (app.css in this case) // any CSS you import will output into a single css file (app.css in this case)
import './styles/app.scss'; import './styles/app.scss';
import 'altcha'; // start the Stimulus application
import './bootstrap';

11
assets/bootstrap.js vendored Normal file
View File

@@ -0,0 +1,11 @@
import { startStimulusApp } from '@symfony/stimulus-bridge';
// Registers Stimulus controllers from controllers.json and in the controllers/ directory
export const app = startStimulusApp(require.context(
'@symfony/stimulus-bridge/lazy-controller-loader!./controllers',
true,
/\.[jt]sx?$/
));
// register any custom, 3rd party controllers here
// app.register('some_controller_name', SomeImportedController);

4
assets/controllers.json Normal file
View File

@@ -0,0 +1,4 @@
{
"controllers": [],
"entrypoints": []
}

View File

@@ -0,0 +1,16 @@
import { Controller } from '@hotwired/stimulus';
/*
* This is an example Stimulus controller!
*
* Any element with a data-controller="hello" attribute will cause
* this controller to be executed. The name "hello" comes from the filename:
* hello_controller.js -> "hello"
*
* Delete this file or adapt it for your use!
*/
export default class extends Controller {
connect() {
this.element.textContent = 'Hello Stimulus! Edit me in assets/controllers/hello_controller.js';
}
}

View File

@@ -1,5 +0,0 @@
import './styles/theme.css'
import 'altcha';
import 'altcha/i18n/all';
import theme from './theme';

View File

@@ -1,3 +0,0 @@
export default function theme() {
}

View File

@@ -4,32 +4,32 @@
"minimum-stability": "stable", "minimum-stability": "stable",
"prefer-stable": true, "prefer-stable": true,
"require": { "require": {
"php": "^8.4", "php": ">=7.2.5",
"ext-ctype": "*", "ext-ctype": "*",
"ext-iconv": "*", "ext-iconv": "*",
"doctrine/annotations": "^1.13", "doctrine/annotations": "^1.13",
"predis/predis": "^2.1", "predis/predis": "^2.1",
"runtime/frankenphp-symfony": "^0.2.0",
"sentry/sentry-symfony": "^4.5", "sentry/sentry-symfony": "^4.5",
"symfony/apache-pack": "^1.0", "symfony/apache-pack": "^1.0",
"symfony/asset": "6.4.*", "symfony/asset": "5.4.*",
"symfony/console": "6.4.*", "symfony/console": "5.4.*",
"symfony/dependency-injection": "6.4.*", "symfony/dependency-injection": "5.4.*",
"symfony/dotenv": "6.4.*", "symfony/dotenv": "5.4.*",
"symfony/expression-language": "6.4.*", "symfony/expression-language": "5.4.*",
"symfony/flex": "^1.17|^2", "symfony/flex": "^1.17|^2",
"symfony/form": "6.4.*", "symfony/form": "5.4.*",
"symfony/framework-bundle": "6.4.*", "symfony/framework-bundle": "5.4.*",
"symfony/http-client": "6.4.*", "symfony/http-client": "5.4.*",
"symfony/monolog-bundle": "^3.10", "symfony/monolog-bundle": "^3.10",
"symfony/rate-limiter": "6.4.*", "symfony/rate-limiter": "5.4.*",
"symfony/runtime": "6.4.*", "symfony/runtime": "5.4.*",
"symfony/security-bundle": "6.4.*", "symfony/security-bundle": "5.4.*",
"symfony/translation": "6.4.*", "symfony/translation": "5.4.*",
"symfony/twig-bundle": "6.4.*", "symfony/twig-bundle": "5.4.*",
"symfony/validator": "6.4.*", "symfony/validator": "5.4.*",
"symfony/web-profiler-bundle": "5.4.*",
"symfony/webpack-encore-bundle": "^1.16", "symfony/webpack-encore-bundle": "^1.16",
"symfony/yaml": "6.4.*" "symfony/yaml": "5.4.*"
}, },
"config": { "config": {
"allow-plugins": { "allow-plugins": {
@@ -57,12 +57,7 @@
"replace": { "replace": {
"symfony/polyfill-ctype": "*", "symfony/polyfill-ctype": "*",
"symfony/polyfill-iconv": "*", "symfony/polyfill-iconv": "*",
"symfony/polyfill-php72": "*", "symfony/polyfill-php72": "*"
"symfony/polyfill-php73": "*",
"symfony/polyfill-php74": "*",
"symfony/polyfill-php80": "*",
"symfony/polyfill-php81": "*",
"symfony/polyfill-php82": "*"
}, },
"scripts": { "scripts": {
"auto-scripts": { "auto-scripts": {
@@ -82,12 +77,10 @@
"extra": { "extra": {
"symfony": { "symfony": {
"allow-contrib": true, "allow-contrib": true,
"require": "6.4.*" "require": "5.4.*"
} }
}, },
"require-dev": { "require-dev": {
"rector/rector": "^2.1", "symfony/debug-bundle": "5.4.*"
"symfony/debug-bundle": "6.4.*",
"symfony/web-profiler-bundle": "6.4.*"
} }
} }

3143
composer.lock generated
View File

@@ -4,7 +4,7 @@
"Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies",
"This file is @generated automatically" "This file is @generated automatically"
], ],
"content-hash": "2d5009d3b30f452b3b835ebdb1d9f194", "content-hash": "9daf21762ed80ef11e74a53f5d27119f",
"packages": [ "packages": [
{ {
"name": "clue/stream-filter", "name": "clue/stream-filter",
@@ -150,30 +150,29 @@
}, },
{ {
"name": "doctrine/deprecations", "name": "doctrine/deprecations",
"version": "1.1.5", "version": "1.1.3",
"source": { "source": {
"type": "git", "type": "git",
"url": "https://github.com/doctrine/deprecations.git", "url": "https://github.com/doctrine/deprecations.git",
"reference": "459c2f5dd3d6a4633d3b5f46ee2b1c40f57d3f38" "reference": "dfbaa3c2d2e9a9df1118213f3b8b0c597bb99fab"
}, },
"dist": { "dist": {
"type": "zip", "type": "zip",
"url": "https://api.github.com/repos/doctrine/deprecations/zipball/459c2f5dd3d6a4633d3b5f46ee2b1c40f57d3f38", "url": "https://api.github.com/repos/doctrine/deprecations/zipball/dfbaa3c2d2e9a9df1118213f3b8b0c597bb99fab",
"reference": "459c2f5dd3d6a4633d3b5f46ee2b1c40f57d3f38", "reference": "dfbaa3c2d2e9a9df1118213f3b8b0c597bb99fab",
"shasum": "" "shasum": ""
}, },
"require": { "require": {
"php": "^7.1 || ^8.0" "php": "^7.1 || ^8.0"
}, },
"conflict": {
"phpunit/phpunit": "<=7.5 || >=13"
},
"require-dev": { "require-dev": {
"doctrine/coding-standard": "^9 || ^12 || ^13", "doctrine/coding-standard": "^9",
"phpstan/phpstan": "1.4.10 || 2.1.11", "phpstan/phpstan": "1.4.10 || 1.10.15",
"phpstan/phpstan-phpunit": "^1.0 || ^2", "phpstan/phpstan-phpunit": "^1.0",
"phpunit/phpunit": "^7.5 || ^8.5 || ^9.6 || ^10.5 || ^11.5 || ^12", "phpunit/phpunit": "^7.5 || ^8.5 || ^9.5",
"psr/log": "^1 || ^2 || ^3" "psalm/plugin-phpunit": "0.18.4",
"psr/log": "^1 || ^2 || ^3",
"vimeo/psalm": "4.30.0 || 5.12.0"
}, },
"suggest": { "suggest": {
"psr/log": "Allows logging deprecations via PSR-3 logger implementation" "psr/log": "Allows logging deprecations via PSR-3 logger implementation"
@@ -181,7 +180,7 @@
"type": "library", "type": "library",
"autoload": { "autoload": {
"psr-4": { "psr-4": {
"Doctrine\\Deprecations\\": "src" "Doctrine\\Deprecations\\": "lib/Doctrine/Deprecations"
} }
}, },
"notification-url": "https://packagist.org/downloads/", "notification-url": "https://packagist.org/downloads/",
@@ -192,9 +191,9 @@
"homepage": "https://www.doctrine-project.org/", "homepage": "https://www.doctrine-project.org/",
"support": { "support": {
"issues": "https://github.com/doctrine/deprecations/issues", "issues": "https://github.com/doctrine/deprecations/issues",
"source": "https://github.com/doctrine/deprecations/tree/1.1.5" "source": "https://github.com/doctrine/deprecations/tree/1.1.3"
}, },
"time": "2025-04-07T20:06:18+00:00" "time": "2024-01-30T19:34:25+00:00"
}, },
{ {
"name": "doctrine/lexer", "name": "doctrine/lexer",
@@ -276,16 +275,16 @@
}, },
{ {
"name": "guzzlehttp/promises", "name": "guzzlehttp/promises",
"version": "2.3.0", "version": "2.0.3",
"source": { "source": {
"type": "git", "type": "git",
"url": "https://github.com/guzzle/promises.git", "url": "https://github.com/guzzle/promises.git",
"reference": "481557b130ef3790cf82b713667b43030dc9c957" "reference": "6ea8dd08867a2a42619d65c3deb2c0fcbf81c8f8"
}, },
"dist": { "dist": {
"type": "zip", "type": "zip",
"url": "https://api.github.com/repos/guzzle/promises/zipball/481557b130ef3790cf82b713667b43030dc9c957", "url": "https://api.github.com/repos/guzzle/promises/zipball/6ea8dd08867a2a42619d65c3deb2c0fcbf81c8f8",
"reference": "481557b130ef3790cf82b713667b43030dc9c957", "reference": "6ea8dd08867a2a42619d65c3deb2c0fcbf81c8f8",
"shasum": "" "shasum": ""
}, },
"require": { "require": {
@@ -293,7 +292,7 @@
}, },
"require-dev": { "require-dev": {
"bamarni/composer-bin-plugin": "^1.8.2", "bamarni/composer-bin-plugin": "^1.8.2",
"phpunit/phpunit": "^8.5.44 || ^9.6.25" "phpunit/phpunit": "^8.5.39 || ^9.6.20"
}, },
"type": "library", "type": "library",
"extra": { "extra": {
@@ -339,7 +338,7 @@
], ],
"support": { "support": {
"issues": "https://github.com/guzzle/promises/issues", "issues": "https://github.com/guzzle/promises/issues",
"source": "https://github.com/guzzle/promises/tree/2.3.0" "source": "https://github.com/guzzle/promises/tree/2.0.3"
}, },
"funding": [ "funding": [
{ {
@@ -355,20 +354,20 @@
"type": "tidelift" "type": "tidelift"
} }
], ],
"time": "2025-08-22T14:34:08+00:00" "time": "2024-07-18T10:29:17+00:00"
}, },
{ {
"name": "guzzlehttp/psr7", "name": "guzzlehttp/psr7",
"version": "2.8.0", "version": "2.7.0",
"source": { "source": {
"type": "git", "type": "git",
"url": "https://github.com/guzzle/psr7.git", "url": "https://github.com/guzzle/psr7.git",
"reference": "21dc724a0583619cd1652f673303492272778051" "reference": "a70f5c95fb43bc83f07c9c948baa0dc1829bf201"
}, },
"dist": { "dist": {
"type": "zip", "type": "zip",
"url": "https://api.github.com/repos/guzzle/psr7/zipball/21dc724a0583619cd1652f673303492272778051", "url": "https://api.github.com/repos/guzzle/psr7/zipball/a70f5c95fb43bc83f07c9c948baa0dc1829bf201",
"reference": "21dc724a0583619cd1652f673303492272778051", "reference": "a70f5c95fb43bc83f07c9c948baa0dc1829bf201",
"shasum": "" "shasum": ""
}, },
"require": { "require": {
@@ -384,7 +383,7 @@
"require-dev": { "require-dev": {
"bamarni/composer-bin-plugin": "^1.8.2", "bamarni/composer-bin-plugin": "^1.8.2",
"http-interop/http-factory-tests": "0.9.0", "http-interop/http-factory-tests": "0.9.0",
"phpunit/phpunit": "^8.5.44 || ^9.6.25" "phpunit/phpunit": "^8.5.39 || ^9.6.20"
}, },
"suggest": { "suggest": {
"laminas/laminas-httphandlerrunner": "Emit PSR-7 responses" "laminas/laminas-httphandlerrunner": "Emit PSR-7 responses"
@@ -455,7 +454,7 @@
], ],
"support": { "support": {
"issues": "https://github.com/guzzle/psr7/issues", "issues": "https://github.com/guzzle/psr7/issues",
"source": "https://github.com/guzzle/psr7/tree/2.8.0" "source": "https://github.com/guzzle/psr7/tree/2.7.0"
}, },
"funding": [ "funding": [
{ {
@@ -471,7 +470,7 @@
"type": "tidelift" "type": "tidelift"
} }
], ],
"time": "2025-08-23T21:21:41+00:00" "time": "2024-07-18T11:15:46+00:00"
}, },
{ {
"name": "http-interop/http-factory-guzzle", "name": "http-interop/http-factory-guzzle",
@@ -533,29 +532,28 @@
}, },
{ {
"name": "jean85/pretty-package-versions", "name": "jean85/pretty-package-versions",
"version": "2.1.1", "version": "2.0.6",
"source": { "source": {
"type": "git", "type": "git",
"url": "https://github.com/Jean85/pretty-package-versions.git", "url": "https://github.com/Jean85/pretty-package-versions.git",
"reference": "4d7aa5dab42e2a76d99559706022885de0e18e1a" "reference": "f9fdd29ad8e6d024f52678b570e5593759b550b4"
}, },
"dist": { "dist": {
"type": "zip", "type": "zip",
"url": "https://api.github.com/repos/Jean85/pretty-package-versions/zipball/4d7aa5dab42e2a76d99559706022885de0e18e1a", "url": "https://api.github.com/repos/Jean85/pretty-package-versions/zipball/f9fdd29ad8e6d024f52678b570e5593759b550b4",
"reference": "4d7aa5dab42e2a76d99559706022885de0e18e1a", "reference": "f9fdd29ad8e6d024f52678b570e5593759b550b4",
"shasum": "" "shasum": ""
}, },
"require": { "require": {
"composer-runtime-api": "^2.1.0", "composer-runtime-api": "^2.0.0",
"php": "^7.4|^8.0" "php": "^7.1|^8.0"
}, },
"require-dev": { "require-dev": {
"friendsofphp/php-cs-fixer": "^3.2", "friendsofphp/php-cs-fixer": "^3.2",
"jean85/composer-provided-replaced-stub-package": "^1.0", "jean85/composer-provided-replaced-stub-package": "^1.0",
"phpstan/phpstan": "^2.0", "phpstan/phpstan": "^1.4",
"phpunit/phpunit": "^7.5|^8.5|^9.6", "phpunit/phpunit": "^7.5|^8.5|^9.4",
"rector/rector": "^2.0", "vimeo/psalm": "^4.3"
"vimeo/psalm": "^4.3 || ^5.0"
}, },
"type": "library", "type": "library",
"extra": { "extra": {
@@ -587,49 +585,48 @@
], ],
"support": { "support": {
"issues": "https://github.com/Jean85/pretty-package-versions/issues", "issues": "https://github.com/Jean85/pretty-package-versions/issues",
"source": "https://github.com/Jean85/pretty-package-versions/tree/2.1.1" "source": "https://github.com/Jean85/pretty-package-versions/tree/2.0.6"
}, },
"time": "2025-03-19T14:43:43+00:00" "time": "2024-03-08T09:58:59+00:00"
}, },
{ {
"name": "monolog/monolog", "name": "monolog/monolog",
"version": "3.9.0", "version": "2.10.0",
"source": { "source": {
"type": "git", "type": "git",
"url": "https://github.com/Seldaek/monolog.git", "url": "https://github.com/Seldaek/monolog.git",
"reference": "10d85740180ecba7896c87e06a166e0c95a0e3b6" "reference": "5cf826f2991858b54d5c3809bee745560a1042a7"
}, },
"dist": { "dist": {
"type": "zip", "type": "zip",
"url": "https://api.github.com/repos/Seldaek/monolog/zipball/10d85740180ecba7896c87e06a166e0c95a0e3b6", "url": "https://api.github.com/repos/Seldaek/monolog/zipball/5cf826f2991858b54d5c3809bee745560a1042a7",
"reference": "10d85740180ecba7896c87e06a166e0c95a0e3b6", "reference": "5cf826f2991858b54d5c3809bee745560a1042a7",
"shasum": "" "shasum": ""
}, },
"require": { "require": {
"php": ">=8.1", "php": ">=7.2",
"psr/log": "^2.0 || ^3.0" "psr/log": "^1.0.1 || ^2.0 || ^3.0"
}, },
"provide": { "provide": {
"psr/log-implementation": "3.0.0" "psr/log-implementation": "1.0.0 || 2.0.0 || 3.0.0"
}, },
"require-dev": { "require-dev": {
"aws/aws-sdk-php": "^3.0", "aws/aws-sdk-php": "^2.4.9 || ^3.0",
"doctrine/couchdb": "~1.0@dev", "doctrine/couchdb": "~1.0@dev",
"elasticsearch/elasticsearch": "^7 || ^8", "elasticsearch/elasticsearch": "^7 || ^8",
"ext-json": "*", "ext-json": "*",
"graylog2/gelf-php": "^1.4.2 || ^2.0", "graylog2/gelf-php": "^1.4.2 || ^2@dev",
"guzzlehttp/guzzle": "^7.4.5", "guzzlehttp/guzzle": "^7.4",
"guzzlehttp/psr7": "^2.2", "guzzlehttp/psr7": "^2.2",
"mongodb/mongodb": "^1.8", "mongodb/mongodb": "^1.8",
"php-amqplib/php-amqplib": "~2.4 || ^3", "php-amqplib/php-amqplib": "~2.4 || ^3",
"php-console/php-console": "^3.1.8", "phpspec/prophecy": "^1.15",
"phpstan/phpstan": "^2", "phpstan/phpstan": "^1.10",
"phpstan/phpstan-deprecation-rules": "^2", "phpunit/phpunit": "^8.5.38 || ^9.6.19",
"phpstan/phpstan-strict-rules": "^2", "predis/predis": "^1.1 || ^2.0",
"phpunit/phpunit": "^10.5.17 || ^11.0.7", "rollbar/rollbar": "^1.3 || ^2 || ^3",
"predis/predis": "^1.1 || ^2", "ruflin/elastica": "^7",
"rollbar/rollbar": "^4.0", "swiftmailer/swiftmailer": "^5.3|^6.0",
"ruflin/elastica": "^7 || ^8",
"symfony/mailer": "^5.4 || ^6", "symfony/mailer": "^5.4 || ^6",
"symfony/mime": "^5.4 || ^6" "symfony/mime": "^5.4 || ^6"
}, },
@@ -652,7 +649,7 @@
"type": "library", "type": "library",
"extra": { "extra": {
"branch-alias": { "branch-alias": {
"dev-main": "3.x-dev" "dev-main": "2.x-dev"
} }
}, },
"autoload": { "autoload": {
@@ -680,7 +677,7 @@
], ],
"support": { "support": {
"issues": "https://github.com/Seldaek/monolog/issues", "issues": "https://github.com/Seldaek/monolog/issues",
"source": "https://github.com/Seldaek/monolog/tree/3.9.0" "source": "https://github.com/Seldaek/monolog/tree/2.10.0"
}, },
"funding": [ "funding": [
{ {
@@ -692,7 +689,7 @@
"type": "tidelift" "type": "tidelift"
} }
], ],
"time": "2025-03-24T10:02:05+00:00" "time": "2024-11-12T12:43:37+00:00"
}, },
{ {
"name": "php-http/client-common", "name": "php-http/client-common",
@@ -1077,16 +1074,16 @@
}, },
{ {
"name": "predis/predis", "name": "predis/predis",
"version": "v2.4.0", "version": "v2.2.2",
"source": { "source": {
"type": "git", "type": "git",
"url": "https://github.com/predis/predis.git", "url": "https://github.com/predis/predis.git",
"reference": "f49e13ee3a2a825631562aa0223ac922ec5d058b" "reference": "b1d3255ed9ad4d7254f9f9bba386c99f4bb983d1"
}, },
"dist": { "dist": {
"type": "zip", "type": "zip",
"url": "https://api.github.com/repos/predis/predis/zipball/f49e13ee3a2a825631562aa0223ac922ec5d058b", "url": "https://api.github.com/repos/predis/predis/zipball/b1d3255ed9ad4d7254f9f9bba386c99f4bb983d1",
"reference": "f49e13ee3a2a825631562aa0223ac922ec5d058b", "reference": "b1d3255ed9ad4d7254f9f9bba386c99f4bb983d1",
"shasum": "" "shasum": ""
}, },
"require": { "require": {
@@ -1095,8 +1092,7 @@
"require-dev": { "require-dev": {
"friendsofphp/php-cs-fixer": "^3.3", "friendsofphp/php-cs-fixer": "^3.3",
"phpstan/phpstan": "^1.9", "phpstan/phpstan": "^1.9",
"phpunit/phpcov": "^6.0 || ^8.0", "phpunit/phpunit": "^8.0 || ~9.4.4"
"phpunit/phpunit": "^8.0 || ^9.4"
}, },
"suggest": { "suggest": {
"ext-relay": "Faster connection with in-memory caching (>=0.6.2)" "ext-relay": "Faster connection with in-memory caching (>=0.6.2)"
@@ -1118,7 +1114,7 @@
"role": "Maintainer" "role": "Maintainer"
} }
], ],
"description": "A flexible and feature-complete Redis/Valkey client for PHP.", "description": "A flexible and feature-complete Redis client for PHP.",
"homepage": "http://github.com/predis/predis", "homepage": "http://github.com/predis/predis",
"keywords": [ "keywords": [
"nosql", "nosql",
@@ -1127,7 +1123,7 @@
], ],
"support": { "support": {
"issues": "https://github.com/predis/predis/issues", "issues": "https://github.com/predis/predis/issues",
"source": "https://github.com/predis/predis/tree/v2.4.0" "source": "https://github.com/predis/predis/tree/v2.2.2"
}, },
"funding": [ "funding": [
{ {
@@ -1135,20 +1131,20 @@
"type": "github" "type": "github"
} }
], ],
"time": "2025-04-30T15:16:02+00:00" "time": "2023-09-13T16:42:03+00:00"
}, },
{ {
"name": "psr/cache", "name": "psr/cache",
"version": "3.0.0", "version": "2.0.0",
"source": { "source": {
"type": "git", "type": "git",
"url": "https://github.com/php-fig/cache.git", "url": "https://github.com/php-fig/cache.git",
"reference": "aa5030cfa5405eccfdcb1083ce040c2cb8d253bf" "reference": "213f9dbc5b9bfbc4f8db86d2838dc968752ce13b"
}, },
"dist": { "dist": {
"type": "zip", "type": "zip",
"url": "https://api.github.com/repos/php-fig/cache/zipball/aa5030cfa5405eccfdcb1083ce040c2cb8d253bf", "url": "https://api.github.com/repos/php-fig/cache/zipball/213f9dbc5b9bfbc4f8db86d2838dc968752ce13b",
"reference": "aa5030cfa5405eccfdcb1083ce040c2cb8d253bf", "reference": "213f9dbc5b9bfbc4f8db86d2838dc968752ce13b",
"shasum": "" "shasum": ""
}, },
"require": { "require": {
@@ -1182,81 +1178,28 @@
"psr-6" "psr-6"
], ],
"support": { "support": {
"source": "https://github.com/php-fig/cache/tree/3.0.0" "source": "https://github.com/php-fig/cache/tree/2.0.0"
}, },
"time": "2021-02-03T23:26:27+00:00" "time": "2021-02-03T23:23:37+00:00"
},
{
"name": "psr/clock",
"version": "1.0.0",
"source": {
"type": "git",
"url": "https://github.com/php-fig/clock.git",
"reference": "e41a24703d4560fd0acb709162f73b8adfc3aa0d"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/php-fig/clock/zipball/e41a24703d4560fd0acb709162f73b8adfc3aa0d",
"reference": "e41a24703d4560fd0acb709162f73b8adfc3aa0d",
"shasum": ""
},
"require": {
"php": "^7.0 || ^8.0"
},
"type": "library",
"autoload": {
"psr-4": {
"Psr\\Clock\\": "src/"
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"authors": [
{
"name": "PHP-FIG",
"homepage": "https://www.php-fig.org/"
}
],
"description": "Common interface for reading the clock.",
"homepage": "https://github.com/php-fig/clock",
"keywords": [
"clock",
"now",
"psr",
"psr-20",
"time"
],
"support": {
"issues": "https://github.com/php-fig/clock/issues",
"source": "https://github.com/php-fig/clock/tree/1.0.0"
},
"time": "2022-11-25T14:36:26+00:00"
}, },
{ {
"name": "psr/container", "name": "psr/container",
"version": "2.0.2", "version": "1.1.2",
"source": { "source": {
"type": "git", "type": "git",
"url": "https://github.com/php-fig/container.git", "url": "https://github.com/php-fig/container.git",
"reference": "c71ecc56dfe541dbd90c5360474fbc405f8d5963" "reference": "513e0666f7216c7459170d56df27dfcefe1689ea"
}, },
"dist": { "dist": {
"type": "zip", "type": "zip",
"url": "https://api.github.com/repos/php-fig/container/zipball/c71ecc56dfe541dbd90c5360474fbc405f8d5963", "url": "https://api.github.com/repos/php-fig/container/zipball/513e0666f7216c7459170d56df27dfcefe1689ea",
"reference": "c71ecc56dfe541dbd90c5360474fbc405f8d5963", "reference": "513e0666f7216c7459170d56df27dfcefe1689ea",
"shasum": "" "shasum": ""
}, },
"require": { "require": {
"php": ">=7.4.0" "php": ">=7.4.0"
}, },
"type": "library", "type": "library",
"extra": {
"branch-alias": {
"dev-master": "2.0.x-dev"
}
},
"autoload": { "autoload": {
"psr-4": { "psr-4": {
"Psr\\Container\\": "src/" "Psr\\Container\\": "src/"
@@ -1283,9 +1226,9 @@
], ],
"support": { "support": {
"issues": "https://github.com/php-fig/container/issues", "issues": "https://github.com/php-fig/container/issues",
"source": "https://github.com/php-fig/container/tree/2.0.2" "source": "https://github.com/php-fig/container/tree/1.1.2"
}, },
"time": "2021-11-05T16:47:00+00:00" "time": "2021-11-05T16:50:12+00:00"
}, },
{ {
"name": "psr/event-dispatcher", "name": "psr/event-dispatcher",
@@ -1499,16 +1442,16 @@
}, },
{ {
"name": "psr/log", "name": "psr/log",
"version": "3.0.2", "version": "2.0.0",
"source": { "source": {
"type": "git", "type": "git",
"url": "https://github.com/php-fig/log.git", "url": "https://github.com/php-fig/log.git",
"reference": "f16e1d5863e37f8d8c2a01719f5b34baa2b714d3" "reference": "ef29f6d262798707a9edd554e2b82517ef3a9376"
}, },
"dist": { "dist": {
"type": "zip", "type": "zip",
"url": "https://api.github.com/repos/php-fig/log/zipball/f16e1d5863e37f8d8c2a01719f5b34baa2b714d3", "url": "https://api.github.com/repos/php-fig/log/zipball/ef29f6d262798707a9edd554e2b82517ef3a9376",
"reference": "f16e1d5863e37f8d8c2a01719f5b34baa2b714d3", "reference": "ef29f6d262798707a9edd554e2b82517ef3a9376",
"shasum": "" "shasum": ""
}, },
"require": { "require": {
@@ -1517,7 +1460,7 @@
"type": "library", "type": "library",
"extra": { "extra": {
"branch-alias": { "branch-alias": {
"dev-master": "3.x-dev" "dev-master": "2.0.x-dev"
} }
}, },
"autoload": { "autoload": {
@@ -1543,9 +1486,9 @@
"psr-3" "psr-3"
], ],
"support": { "support": {
"source": "https://github.com/php-fig/log/tree/3.0.2" "source": "https://github.com/php-fig/log/tree/2.0.0"
}, },
"time": "2024-09-11T13:17:53+00:00" "time": "2021-07-14T16:41:46+00:00"
}, },
{ {
"name": "ralouphie/getallheaders", "name": "ralouphie/getallheaders",
@@ -1591,58 +1534,6 @@
}, },
"time": "2019-03-08T08:55:37+00:00" "time": "2019-03-08T08:55:37+00:00"
}, },
{
"name": "runtime/frankenphp-symfony",
"version": "0.2.0",
"source": {
"type": "git",
"url": "https://github.com/php-runtime/frankenphp-symfony.git",
"reference": "56822c3631d9522a3136a4c33082d006bdfe4bad"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/php-runtime/frankenphp-symfony/zipball/56822c3631d9522a3136a4c33082d006bdfe4bad",
"reference": "56822c3631d9522a3136a4c33082d006bdfe4bad",
"shasum": ""
},
"require": {
"php": ">=8.1",
"symfony/dependency-injection": "^5.4 || ^6.0 || ^7.0",
"symfony/http-kernel": "^5.4 || ^6.0 || ^7.0",
"symfony/runtime": "^5.4 || ^6.0 || ^7.0"
},
"require-dev": {
"phpunit/phpunit": "^9.5"
},
"type": "library",
"autoload": {
"psr-4": {
"Runtime\\FrankenPhpSymfony\\": "src/"
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"authors": [
{
"name": "Kévin Dunglas",
"email": "kevin@dunglas.dev"
}
],
"description": "FrankenPHP runtime for Symfony",
"support": {
"issues": "https://github.com/php-runtime/frankenphp-symfony/issues",
"source": "https://github.com/php-runtime/frankenphp-symfony/tree/0.2.0"
},
"funding": [
{
"url": "https://github.com/nyholm",
"type": "github"
}
],
"time": "2023-12-12T12:06:11+00:00"
},
{ {
"name": "sentry/sdk", "name": "sentry/sdk",
"version": "3.6.0", "version": "3.6.0",
@@ -1863,9 +1754,9 @@
"type": "symfony-bundle", "type": "symfony-bundle",
"extra": { "extra": {
"branch-alias": { "branch-alias": {
"releases/1.x": "1.x-dev", "releases/3.2.x": "3.2.x-dev",
"releases/2.x": "2.x-dev", "releases/2.x": "2.x-dev",
"releases/3.2.x": "3.2.x-dev" "releases/1.x": "1.x-dev"
} }
}, },
"autoload": { "autoload": {
@@ -1942,28 +1833,33 @@
}, },
{ {
"name": "symfony/asset", "name": "symfony/asset",
"version": "v6.4.24", "version": "v5.4.40",
"source": { "source": {
"type": "git", "type": "git",
"url": "https://github.com/symfony/asset.git", "url": "https://github.com/symfony/asset.git",
"reference": "cfee7c0d64be113383db74a2fdd65d426b7f3aab" "reference": "e5aa241b4914257164b39c3c2678b2c41b7671e3"
}, },
"dist": { "dist": {
"type": "zip", "type": "zip",
"url": "https://api.github.com/repos/symfony/asset/zipball/cfee7c0d64be113383db74a2fdd65d426b7f3aab", "url": "https://api.github.com/repos/symfony/asset/zipball/e5aa241b4914257164b39c3c2678b2c41b7671e3",
"reference": "cfee7c0d64be113383db74a2fdd65d426b7f3aab", "reference": "e5aa241b4914257164b39c3c2678b2c41b7671e3",
"shasum": "" "shasum": ""
}, },
"require": { "require": {
"php": ">=8.1" "php": ">=7.2.5",
"symfony/deprecation-contracts": "^2.1|^3",
"symfony/polyfill-php80": "^1.16"
}, },
"conflict": { "conflict": {
"symfony/http-foundation": "<5.4" "symfony/http-foundation": "<5.3"
}, },
"require-dev": { "require-dev": {
"symfony/http-client": "^5.4|^6.0|^7.0", "symfony/http-client": "^4.4|^5.0|^6.0",
"symfony/http-foundation": "^5.4|^6.0|^7.0", "symfony/http-foundation": "^5.3|^6.0",
"symfony/http-kernel": "^5.4|^6.0|^7.0" "symfony/http-kernel": "^4.4|^5.0|^6.0"
},
"suggest": {
"symfony/http-foundation": ""
}, },
"type": "library", "type": "library",
"autoload": { "autoload": {
@@ -1991,7 +1887,7 @@
"description": "Manages URL generation and versioning of web assets such as CSS stylesheets, JavaScript files and image files", "description": "Manages URL generation and versioning of web assets such as CSS stylesheets, JavaScript files and image files",
"homepage": "https://symfony.com", "homepage": "https://symfony.com",
"support": { "support": {
"source": "https://github.com/symfony/asset/tree/v6.4.24" "source": "https://github.com/symfony/asset/tree/v5.4.40"
}, },
"funding": [ "funding": [
{ {
@@ -2002,70 +1898,67 @@
"url": "https://github.com/fabpot", "url": "https://github.com/fabpot",
"type": "github" "type": "github"
}, },
{
"url": "https://github.com/nicolas-grekas",
"type": "github"
},
{ {
"url": "https://tidelift.com/funding/github/packagist/symfony/symfony", "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
"type": "tidelift" "type": "tidelift"
} }
], ],
"time": "2025-07-10T08:14:14+00:00" "time": "2024-05-31T14:33:22+00:00"
}, },
{ {
"name": "symfony/cache", "name": "symfony/cache",
"version": "v6.4.24", "version": "v5.4.44",
"source": { "source": {
"type": "git", "type": "git",
"url": "https://github.com/symfony/cache.git", "url": "https://github.com/symfony/cache.git",
"reference": "d038cd3054aeaf1c674022a77048b2ef6376a175" "reference": "4b3e7bf157b8b5a010865701d9106b5f0a9c99a8"
}, },
"dist": { "dist": {
"type": "zip", "type": "zip",
"url": "https://api.github.com/repos/symfony/cache/zipball/d038cd3054aeaf1c674022a77048b2ef6376a175", "url": "https://api.github.com/repos/symfony/cache/zipball/4b3e7bf157b8b5a010865701d9106b5f0a9c99a8",
"reference": "d038cd3054aeaf1c674022a77048b2ef6376a175", "reference": "4b3e7bf157b8b5a010865701d9106b5f0a9c99a8",
"shasum": "" "shasum": ""
}, },
"require": { "require": {
"php": ">=8.1", "php": ">=7.2.5",
"psr/cache": "^2.0|^3.0", "psr/cache": "^1.0|^2.0",
"psr/log": "^1.1|^2|^3", "psr/log": "^1.1|^2|^3",
"symfony/cache-contracts": "^2.5|^3", "symfony/cache-contracts": "^1.1.7|^2",
"symfony/service-contracts": "^2.5|^3", "symfony/deprecation-contracts": "^2.1|^3",
"symfony/var-exporter": "^6.3.6|^7.0" "symfony/polyfill-php73": "^1.9",
"symfony/polyfill-php80": "^1.16",
"symfony/service-contracts": "^1.1|^2|^3",
"symfony/var-exporter": "^4.4|^5.0|^6.0"
}, },
"conflict": { "conflict": {
"doctrine/dbal": "<2.13.1", "doctrine/dbal": "<2.13.1",
"symfony/dependency-injection": "<5.4", "symfony/dependency-injection": "<4.4",
"symfony/http-kernel": "<5.4", "symfony/http-kernel": "<4.4",
"symfony/var-dumper": "<5.4" "symfony/var-dumper": "<4.4"
}, },
"provide": { "provide": {
"psr/cache-implementation": "2.0|3.0", "psr/cache-implementation": "1.0|2.0",
"psr/simple-cache-implementation": "1.0|2.0|3.0", "psr/simple-cache-implementation": "1.0|2.0",
"symfony/cache-implementation": "1.1|2.0|3.0" "symfony/cache-implementation": "1.0|2.0"
}, },
"require-dev": { "require-dev": {
"cache/integration-tests": "dev-master", "cache/integration-tests": "dev-master",
"doctrine/cache": "^1.6|^2.0",
"doctrine/dbal": "^2.13.1|^3|^4", "doctrine/dbal": "^2.13.1|^3|^4",
"predis/predis": "^1.1|^2.0", "predis/predis": "^1.1|^2.0",
"psr/simple-cache": "^1.0|^2.0|^3.0", "psr/simple-cache": "^1.0|^2.0",
"symfony/config": "^5.4|^6.0|^7.0", "symfony/config": "^4.4|^5.0|^6.0",
"symfony/dependency-injection": "^5.4|^6.0|^7.0", "symfony/dependency-injection": "^4.4|^5.0|^6.0",
"symfony/filesystem": "^5.4|^6.0|^7.0", "symfony/filesystem": "^4.4|^5.0|^6.0",
"symfony/http-kernel": "^5.4|^6.0|^7.0", "symfony/http-kernel": "^4.4|^5.0|^6.0",
"symfony/messenger": "^5.4|^6.0|^7.0", "symfony/messenger": "^4.4|^5.0|^6.0",
"symfony/var-dumper": "^5.4|^6.0|^7.0" "symfony/var-dumper": "^4.4|^5.0|^6.0"
}, },
"type": "library", "type": "library",
"autoload": { "autoload": {
"psr-4": { "psr-4": {
"Symfony\\Component\\Cache\\": "" "Symfony\\Component\\Cache\\": ""
}, },
"classmap": [
"Traits/ValueWrapper.php"
],
"exclude-from-classmap": [ "exclude-from-classmap": [
"/Tests/" "/Tests/"
] ]
@@ -2091,7 +1984,7 @@
"psr6" "psr6"
], ],
"support": { "support": {
"source": "https://github.com/symfony/cache/tree/v6.4.24" "source": "https://github.com/symfony/cache/tree/v5.4.44"
}, },
"funding": [ "funding": [
{ {
@@ -2102,43 +1995,42 @@
"url": "https://github.com/fabpot", "url": "https://github.com/fabpot",
"type": "github" "type": "github"
}, },
{
"url": "https://github.com/nicolas-grekas",
"type": "github"
},
{ {
"url": "https://tidelift.com/funding/github/packagist/symfony/symfony", "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
"type": "tidelift" "type": "tidelift"
} }
], ],
"time": "2025-07-30T09:32:03+00:00" "time": "2024-09-13T16:57:39+00:00"
}, },
{ {
"name": "symfony/cache-contracts", "name": "symfony/cache-contracts",
"version": "v3.6.0", "version": "v2.5.3",
"source": { "source": {
"type": "git", "type": "git",
"url": "https://github.com/symfony/cache-contracts.git", "url": "https://github.com/symfony/cache-contracts.git",
"reference": "5d68a57d66910405e5c0b63d6f0af941e66fc868" "reference": "fee6db04d913094e2fb55ff8e7db5685a8134463"
}, },
"dist": { "dist": {
"type": "zip", "type": "zip",
"url": "https://api.github.com/repos/symfony/cache-contracts/zipball/5d68a57d66910405e5c0b63d6f0af941e66fc868", "url": "https://api.github.com/repos/symfony/cache-contracts/zipball/fee6db04d913094e2fb55ff8e7db5685a8134463",
"reference": "5d68a57d66910405e5c0b63d6f0af941e66fc868", "reference": "fee6db04d913094e2fb55ff8e7db5685a8134463",
"shasum": "" "shasum": ""
}, },
"require": { "require": {
"php": ">=8.1", "php": ">=7.2.5",
"psr/cache": "^3.0" "psr/cache": "^1.0|^2.0|^3.0"
},
"suggest": {
"symfony/cache-implementation": ""
}, },
"type": "library", "type": "library",
"extra": { "extra": {
"thanks": {
"url": "https://github.com/symfony/contracts",
"name": "symfony/contracts"
},
"branch-alias": { "branch-alias": {
"dev-main": "3.6-dev" "dev-main": "2.5-dev"
},
"thanks": {
"name": "symfony/contracts",
"url": "https://github.com/symfony/contracts"
} }
}, },
"autoload": { "autoload": {
@@ -2171,7 +2063,7 @@
"standards" "standards"
], ],
"support": { "support": {
"source": "https://github.com/symfony/cache-contracts/tree/v3.6.0" "source": "https://github.com/symfony/cache-contracts/tree/v2.5.3"
}, },
"funding": [ "funding": [
{ {
@@ -2187,116 +2079,42 @@
"type": "tidelift" "type": "tidelift"
} }
], ],
"time": "2025-03-13T15:25:07+00:00" "time": "2024-01-23T13:51:25+00:00"
},
{
"name": "symfony/clock",
"version": "v6.4.24",
"source": {
"type": "git",
"url": "https://github.com/symfony/clock.git",
"reference": "5e15a9c9aeeb44a99f7cf24aa75aa9607795f6f8"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/symfony/clock/zipball/5e15a9c9aeeb44a99f7cf24aa75aa9607795f6f8",
"reference": "5e15a9c9aeeb44a99f7cf24aa75aa9607795f6f8",
"shasum": ""
},
"require": {
"php": ">=8.1",
"psr/clock": "^1.0",
"symfony/polyfill-php83": "^1.28"
},
"provide": {
"psr/clock-implementation": "1.0"
},
"type": "library",
"autoload": {
"files": [
"Resources/now.php"
],
"psr-4": {
"Symfony\\Component\\Clock\\": ""
},
"exclude-from-classmap": [
"/Tests/"
]
},
"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": "Decouples applications from the system clock",
"homepage": "https://symfony.com",
"keywords": [
"clock",
"psr20",
"time"
],
"support": {
"source": "https://github.com/symfony/clock/tree/v6.4.24"
},
"funding": [
{
"url": "https://symfony.com/sponsor",
"type": "custom"
},
{
"url": "https://github.com/fabpot",
"type": "github"
},
{
"url": "https://github.com/nicolas-grekas",
"type": "github"
},
{
"url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
"type": "tidelift"
}
],
"time": "2025-07-10T08:14:14+00:00"
}, },
{ {
"name": "symfony/config", "name": "symfony/config",
"version": "v6.4.24", "version": "v5.4.40",
"source": { "source": {
"type": "git", "type": "git",
"url": "https://github.com/symfony/config.git", "url": "https://github.com/symfony/config.git",
"reference": "80e2cf005cf17138c97193be0434cdcfd1b2212e" "reference": "d4e1db78421163b98dd9971d247fd0df4a57ee5e"
}, },
"dist": { "dist": {
"type": "zip", "type": "zip",
"url": "https://api.github.com/repos/symfony/config/zipball/80e2cf005cf17138c97193be0434cdcfd1b2212e", "url": "https://api.github.com/repos/symfony/config/zipball/d4e1db78421163b98dd9971d247fd0df4a57ee5e",
"reference": "80e2cf005cf17138c97193be0434cdcfd1b2212e", "reference": "d4e1db78421163b98dd9971d247fd0df4a57ee5e",
"shasum": "" "shasum": ""
}, },
"require": { "require": {
"php": ">=8.1", "php": ">=7.2.5",
"symfony/deprecation-contracts": "^2.5|^3", "symfony/deprecation-contracts": "^2.1|^3",
"symfony/filesystem": "^5.4|^6.0|^7.0", "symfony/filesystem": "^4.4|^5.0|^6.0",
"symfony/polyfill-ctype": "~1.8" "symfony/polyfill-ctype": "~1.8",
"symfony/polyfill-php80": "^1.16",
"symfony/polyfill-php81": "^1.22"
}, },
"conflict": { "conflict": {
"symfony/finder": "<5.4", "symfony/finder": "<4.4"
"symfony/service-contracts": "<2.5"
}, },
"require-dev": { "require-dev": {
"symfony/event-dispatcher": "^5.4|^6.0|^7.0", "symfony/event-dispatcher": "^4.4|^5.0|^6.0",
"symfony/finder": "^5.4|^6.0|^7.0", "symfony/finder": "^4.4|^5.0|^6.0",
"symfony/messenger": "^5.4|^6.0|^7.0", "symfony/messenger": "^4.4|^5.0|^6.0",
"symfony/service-contracts": "^2.5|^3", "symfony/service-contracts": "^1.1|^2|^3",
"symfony/yaml": "^5.4|^6.0|^7.0" "symfony/yaml": "^4.4|^5.0|^6.0"
},
"suggest": {
"symfony/yaml": "To use the yaml reference dumper"
}, },
"type": "library", "type": "library",
"autoload": { "autoload": {
@@ -2324,7 +2142,7 @@
"description": "Helps you find, load, combine, autofill and validate configuration values of any kind", "description": "Helps you find, load, combine, autofill and validate configuration values of any kind",
"homepage": "https://symfony.com", "homepage": "https://symfony.com",
"support": { "support": {
"source": "https://github.com/symfony/config/tree/v6.4.24" "source": "https://github.com/symfony/config/tree/v5.4.40"
}, },
"funding": [ "funding": [
{ {
@@ -2335,60 +2153,61 @@
"url": "https://github.com/fabpot", "url": "https://github.com/fabpot",
"type": "github" "type": "github"
}, },
{
"url": "https://github.com/nicolas-grekas",
"type": "github"
},
{ {
"url": "https://tidelift.com/funding/github/packagist/symfony/symfony", "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
"type": "tidelift" "type": "tidelift"
} }
], ],
"time": "2025-07-26T13:50:30+00:00" "time": "2024-05-31T14:33:22+00:00"
}, },
{ {
"name": "symfony/console", "name": "symfony/console",
"version": "v6.4.25", "version": "v5.4.44",
"source": { "source": {
"type": "git", "type": "git",
"url": "https://github.com/symfony/console.git", "url": "https://github.com/symfony/console.git",
"reference": "273fd29ff30ba0a88ca5fb83f7cf1ab69306adae" "reference": "5b5a0aa66e3296e303e22490f90f521551835a83"
}, },
"dist": { "dist": {
"type": "zip", "type": "zip",
"url": "https://api.github.com/repos/symfony/console/zipball/273fd29ff30ba0a88ca5fb83f7cf1ab69306adae", "url": "https://api.github.com/repos/symfony/console/zipball/5b5a0aa66e3296e303e22490f90f521551835a83",
"reference": "273fd29ff30ba0a88ca5fb83f7cf1ab69306adae", "reference": "5b5a0aa66e3296e303e22490f90f521551835a83",
"shasum": "" "shasum": ""
}, },
"require": { "require": {
"php": ">=8.1", "php": ">=7.2.5",
"symfony/deprecation-contracts": "^2.5|^3", "symfony/deprecation-contracts": "^2.1|^3",
"symfony/polyfill-mbstring": "~1.0", "symfony/polyfill-mbstring": "~1.0",
"symfony/service-contracts": "^2.5|^3", "symfony/polyfill-php73": "^1.9",
"symfony/string": "^5.4|^6.0|^7.0" "symfony/polyfill-php80": "^1.16",
"symfony/service-contracts": "^1.1|^2|^3",
"symfony/string": "^5.1|^6.0"
}, },
"conflict": { "conflict": {
"symfony/dependency-injection": "<5.4", "psr/log": ">=3",
"symfony/dotenv": "<5.4", "symfony/dependency-injection": "<4.4",
"symfony/event-dispatcher": "<5.4", "symfony/dotenv": "<5.1",
"symfony/lock": "<5.4", "symfony/event-dispatcher": "<4.4",
"symfony/process": "<5.4" "symfony/lock": "<4.4",
"symfony/process": "<4.4"
}, },
"provide": { "provide": {
"psr/log-implementation": "1.0|2.0|3.0" "psr/log-implementation": "1.0|2.0"
}, },
"require-dev": { "require-dev": {
"psr/log": "^1|^2|^3", "psr/log": "^1|^2",
"symfony/config": "^5.4|^6.0|^7.0", "symfony/config": "^4.4|^5.0|^6.0",
"symfony/dependency-injection": "^5.4|^6.0|^7.0", "symfony/dependency-injection": "^4.4|^5.0|^6.0",
"symfony/event-dispatcher": "^5.4|^6.0|^7.0", "symfony/event-dispatcher": "^4.4|^5.0|^6.0",
"symfony/http-foundation": "^6.4|^7.0", "symfony/lock": "^4.4|^5.0|^6.0",
"symfony/http-kernel": "^6.4|^7.0", "symfony/process": "^4.4|^5.0|^6.0",
"symfony/lock": "^5.4|^6.0|^7.0", "symfony/var-dumper": "^4.4|^5.0|^6.0"
"symfony/messenger": "^5.4|^6.0|^7.0", },
"symfony/process": "^5.4|^6.0|^7.0", "suggest": {
"symfony/stopwatch": "^5.4|^6.0|^7.0", "psr/log": "For using the console logger",
"symfony/var-dumper": "^5.4|^6.0|^7.0" "symfony/event-dispatcher": "",
"symfony/lock": "",
"symfony/process": ""
}, },
"type": "library", "type": "library",
"autoload": { "autoload": {
@@ -2422,7 +2241,7 @@
"terminal" "terminal"
], ],
"support": { "support": {
"source": "https://github.com/symfony/console/tree/v6.4.25" "source": "https://github.com/symfony/console/tree/v5.4.44"
}, },
"funding": [ "funding": [
{ {
@@ -2433,53 +2252,57 @@
"url": "https://github.com/fabpot", "url": "https://github.com/fabpot",
"type": "github" "type": "github"
}, },
{
"url": "https://github.com/nicolas-grekas",
"type": "github"
},
{ {
"url": "https://tidelift.com/funding/github/packagist/symfony/symfony", "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
"type": "tidelift" "type": "tidelift"
} }
], ],
"time": "2025-08-22T10:21:53+00:00" "time": "2024-09-20T07:56:40+00:00"
}, },
{ {
"name": "symfony/dependency-injection", "name": "symfony/dependency-injection",
"version": "v6.4.25", "version": "v5.4.44",
"source": { "source": {
"type": "git", "type": "git",
"url": "https://github.com/symfony/dependency-injection.git", "url": "https://github.com/symfony/dependency-injection.git",
"reference": "900da8a42eceeb4a13a0ec34caa7db49328daff3" "reference": "23eb9f3803a931aef16a65f362a9aeb0640a1374"
}, },
"dist": { "dist": {
"type": "zip", "type": "zip",
"url": "https://api.github.com/repos/symfony/dependency-injection/zipball/900da8a42eceeb4a13a0ec34caa7db49328daff3", "url": "https://api.github.com/repos/symfony/dependency-injection/zipball/23eb9f3803a931aef16a65f362a9aeb0640a1374",
"reference": "900da8a42eceeb4a13a0ec34caa7db49328daff3", "reference": "23eb9f3803a931aef16a65f362a9aeb0640a1374",
"shasum": "" "shasum": ""
}, },
"require": { "require": {
"php": ">=8.1", "php": ">=7.2.5",
"psr/container": "^1.1|^2.0", "psr/container": "^1.1.1",
"symfony/deprecation-contracts": "^2.5|^3", "symfony/deprecation-contracts": "^2.1|^3",
"symfony/service-contracts": "^2.5|^3.0", "symfony/polyfill-php80": "^1.16",
"symfony/var-exporter": "^6.4.20|^7.2.5" "symfony/polyfill-php81": "^1.22",
"symfony/service-contracts": "^1.1.6|^2"
}, },
"conflict": { "conflict": {
"ext-psr": "<1.1|>=2", "ext-psr": "<1.1|>=2",
"symfony/config": "<6.1", "symfony/config": "<5.3",
"symfony/finder": "<5.4", "symfony/finder": "<4.4",
"symfony/proxy-manager-bridge": "<6.3", "symfony/proxy-manager-bridge": "<4.4",
"symfony/yaml": "<5.4" "symfony/yaml": "<4.4.26"
}, },
"provide": { "provide": {
"psr/container-implementation": "1.1|2.0", "psr/container-implementation": "1.0",
"symfony/service-implementation": "1.1|2.0|3.0" "symfony/service-implementation": "1.0|2.0"
}, },
"require-dev": { "require-dev": {
"symfony/config": "^6.1|^7.0", "symfony/config": "^5.3|^6.0",
"symfony/expression-language": "^5.4|^6.0|^7.0", "symfony/expression-language": "^4.4|^5.0|^6.0",
"symfony/yaml": "^5.4|^6.0|^7.0" "symfony/yaml": "^4.4.26|^5.0|^6.0"
},
"suggest": {
"symfony/config": "",
"symfony/expression-language": "For using expressions in service container configuration",
"symfony/finder": "For using double-star glob patterns or when GLOB_BRACE portability is required",
"symfony/proxy-manager-bridge": "Generate service proxies to lazy load them",
"symfony/yaml": ""
}, },
"type": "library", "type": "library",
"autoload": { "autoload": {
@@ -2507,7 +2330,7 @@
"description": "Allows you to standardize and centralize the way objects are constructed in your application", "description": "Allows you to standardize and centralize the way objects are constructed in your application",
"homepage": "https://symfony.com", "homepage": "https://symfony.com",
"support": { "support": {
"source": "https://github.com/symfony/dependency-injection/tree/v6.4.25" "source": "https://github.com/symfony/dependency-injection/tree/v5.4.44"
}, },
"funding": [ "funding": [
{ {
@@ -2518,29 +2341,25 @@
"url": "https://github.com/fabpot", "url": "https://github.com/fabpot",
"type": "github" "type": "github"
}, },
{
"url": "https://github.com/nicolas-grekas",
"type": "github"
},
{ {
"url": "https://tidelift.com/funding/github/packagist/symfony/symfony", "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
"type": "tidelift" "type": "tidelift"
} }
], ],
"time": "2025-08-13T09:41:44+00:00" "time": "2024-09-12T20:01:35+00:00"
}, },
{ {
"name": "symfony/deprecation-contracts", "name": "symfony/deprecation-contracts",
"version": "v3.6.0", "version": "v3.5.0",
"source": { "source": {
"type": "git", "type": "git",
"url": "https://github.com/symfony/deprecation-contracts.git", "url": "https://github.com/symfony/deprecation-contracts.git",
"reference": "63afe740e99a13ba87ec199bb07bbdee937a5b62" "reference": "0e0d29ce1f20deffb4ab1b016a7257c4f1e789a1"
}, },
"dist": { "dist": {
"type": "zip", "type": "zip",
"url": "https://api.github.com/repos/symfony/deprecation-contracts/zipball/63afe740e99a13ba87ec199bb07bbdee937a5b62", "url": "https://api.github.com/repos/symfony/deprecation-contracts/zipball/0e0d29ce1f20deffb4ab1b016a7257c4f1e789a1",
"reference": "63afe740e99a13ba87ec199bb07bbdee937a5b62", "reference": "0e0d29ce1f20deffb4ab1b016a7257c4f1e789a1",
"shasum": "" "shasum": ""
}, },
"require": { "require": {
@@ -2548,12 +2367,12 @@
}, },
"type": "library", "type": "library",
"extra": { "extra": {
"thanks": {
"url": "https://github.com/symfony/contracts",
"name": "symfony/contracts"
},
"branch-alias": { "branch-alias": {
"dev-main": "3.6-dev" "dev-main": "3.5-dev"
},
"thanks": {
"name": "symfony/contracts",
"url": "https://github.com/symfony/contracts"
} }
}, },
"autoload": { "autoload": {
@@ -2578,7 +2397,7 @@
"description": "A generic function and convention to trigger deprecation notices", "description": "A generic function and convention to trigger deprecation notices",
"homepage": "https://symfony.com", "homepage": "https://symfony.com",
"support": { "support": {
"source": "https://github.com/symfony/deprecation-contracts/tree/v3.6.0" "source": "https://github.com/symfony/deprecation-contracts/tree/v3.5.0"
}, },
"funding": [ "funding": [
{ {
@@ -2594,32 +2413,29 @@
"type": "tidelift" "type": "tidelift"
} }
], ],
"time": "2024-09-25T14:21:43+00:00" "time": "2024-04-18T09:32:20+00:00"
}, },
{ {
"name": "symfony/dotenv", "name": "symfony/dotenv",
"version": "v6.4.24", "version": "v5.4.44",
"source": { "source": {
"type": "git", "type": "git",
"url": "https://github.com/symfony/dotenv.git", "url": "https://github.com/symfony/dotenv.git",
"reference": "234b6c602f12b00693f4b0d1054386fb30dfc8ff" "reference": "bb4fef2bf035a50170fd95e5b146152834126008"
}, },
"dist": { "dist": {
"type": "zip", "type": "zip",
"url": "https://api.github.com/repos/symfony/dotenv/zipball/234b6c602f12b00693f4b0d1054386fb30dfc8ff", "url": "https://api.github.com/repos/symfony/dotenv/zipball/bb4fef2bf035a50170fd95e5b146152834126008",
"reference": "234b6c602f12b00693f4b0d1054386fb30dfc8ff", "reference": "bb4fef2bf035a50170fd95e5b146152834126008",
"shasum": "" "shasum": ""
}, },
"require": { "require": {
"php": ">=8.1" "php": ">=7.2.5",
}, "symfony/deprecation-contracts": "^2.1|^3"
"conflict": {
"symfony/console": "<5.4",
"symfony/process": "<5.4"
}, },
"require-dev": { "require-dev": {
"symfony/console": "^5.4|^6.0|^7.0", "symfony/console": "^4.4|^5.0|^6.0",
"symfony/process": "^5.4|^6.0|^7.0" "symfony/process": "^4.4|^5.0|^6.0"
}, },
"type": "library", "type": "library",
"autoload": { "autoload": {
@@ -2652,7 +2468,7 @@
"environment" "environment"
], ],
"support": { "support": {
"source": "https://github.com/symfony/dotenv/tree/v6.4.24" "source": "https://github.com/symfony/dotenv/tree/v5.4.44"
}, },
"funding": [ "funding": [
{ {
@@ -2663,44 +2479,36 @@
"url": "https://github.com/fabpot", "url": "https://github.com/fabpot",
"type": "github" "type": "github"
}, },
{
"url": "https://github.com/nicolas-grekas",
"type": "github"
},
{ {
"url": "https://tidelift.com/funding/github/packagist/symfony/symfony", "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
"type": "tidelift" "type": "tidelift"
} }
], ],
"time": "2025-07-10T08:14:14+00:00" "time": "2024-09-16T09:39:25+00:00"
}, },
{ {
"name": "symfony/error-handler", "name": "symfony/error-handler",
"version": "v6.4.24", "version": "v5.4.42",
"source": { "source": {
"type": "git", "type": "git",
"url": "https://github.com/symfony/error-handler.git", "url": "https://github.com/symfony/error-handler.git",
"reference": "30fd0b3cf0e972e82636038ce4db0e4fe777112c" "reference": "db15ba0fd50890156ed40087ccedc7851a1f5b76"
}, },
"dist": { "dist": {
"type": "zip", "type": "zip",
"url": "https://api.github.com/repos/symfony/error-handler/zipball/30fd0b3cf0e972e82636038ce4db0e4fe777112c", "url": "https://api.github.com/repos/symfony/error-handler/zipball/db15ba0fd50890156ed40087ccedc7851a1f5b76",
"reference": "30fd0b3cf0e972e82636038ce4db0e4fe777112c", "reference": "db15ba0fd50890156ed40087ccedc7851a1f5b76",
"shasum": "" "shasum": ""
}, },
"require": { "require": {
"php": ">=8.1", "php": ">=7.2.5",
"psr/log": "^1|^2|^3", "psr/log": "^1|^2|^3",
"symfony/var-dumper": "^5.4|^6.0|^7.0" "symfony/var-dumper": "^4.4|^5.0|^6.0"
},
"conflict": {
"symfony/deprecation-contracts": "<2.5",
"symfony/http-kernel": "<6.4"
}, },
"require-dev": { "require-dev": {
"symfony/deprecation-contracts": "^2.5|^3", "symfony/deprecation-contracts": "^2.1|^3",
"symfony/http-kernel": "^6.4|^7.0", "symfony/http-kernel": "^4.4|^5.0|^6.0",
"symfony/serializer": "^5.4|^6.0|^7.0" "symfony/serializer": "^4.4|^5.0|^6.0"
}, },
"bin": [ "bin": [
"Resources/bin/patch-type-declarations" "Resources/bin/patch-type-declarations"
@@ -2731,7 +2539,7 @@
"description": "Provides tools to manage errors and ease debugging PHP code", "description": "Provides tools to manage errors and ease debugging PHP code",
"homepage": "https://symfony.com", "homepage": "https://symfony.com",
"support": { "support": {
"source": "https://github.com/symfony/error-handler/tree/v6.4.24" "source": "https://github.com/symfony/error-handler/tree/v5.4.42"
}, },
"funding": [ "funding": [
{ {
@@ -2742,52 +2550,53 @@
"url": "https://github.com/fabpot", "url": "https://github.com/fabpot",
"type": "github" "type": "github"
}, },
{
"url": "https://github.com/nicolas-grekas",
"type": "github"
},
{ {
"url": "https://tidelift.com/funding/github/packagist/symfony/symfony", "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
"type": "tidelift" "type": "tidelift"
} }
], ],
"time": "2025-07-24T08:25:04+00:00" "time": "2024-07-23T12:34:05+00:00"
}, },
{ {
"name": "symfony/event-dispatcher", "name": "symfony/event-dispatcher",
"version": "v6.4.25", "version": "v5.4.40",
"source": { "source": {
"type": "git", "type": "git",
"url": "https://github.com/symfony/event-dispatcher.git", "url": "https://github.com/symfony/event-dispatcher.git",
"reference": "b0cf3162020603587363f0551cd3be43958611ff" "reference": "a54e2a8a114065f31020d6a89ede83e34c3b27a4"
}, },
"dist": { "dist": {
"type": "zip", "type": "zip",
"url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/b0cf3162020603587363f0551cd3be43958611ff", "url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/a54e2a8a114065f31020d6a89ede83e34c3b27a4",
"reference": "b0cf3162020603587363f0551cd3be43958611ff", "reference": "a54e2a8a114065f31020d6a89ede83e34c3b27a4",
"shasum": "" "shasum": ""
}, },
"require": { "require": {
"php": ">=8.1", "php": ">=7.2.5",
"symfony/event-dispatcher-contracts": "^2.5|^3" "symfony/deprecation-contracts": "^2.1|^3",
"symfony/event-dispatcher-contracts": "^2|^3",
"symfony/polyfill-php80": "^1.16"
}, },
"conflict": { "conflict": {
"symfony/dependency-injection": "<5.4", "symfony/dependency-injection": "<4.4"
"symfony/service-contracts": "<2.5"
}, },
"provide": { "provide": {
"psr/event-dispatcher-implementation": "1.0", "psr/event-dispatcher-implementation": "1.0",
"symfony/event-dispatcher-implementation": "2.0|3.0" "symfony/event-dispatcher-implementation": "2.0"
}, },
"require-dev": { "require-dev": {
"psr/log": "^1|^2|^3", "psr/log": "^1|^2|^3",
"symfony/config": "^5.4|^6.0|^7.0", "symfony/config": "^4.4|^5.0|^6.0",
"symfony/dependency-injection": "^5.4|^6.0|^7.0", "symfony/dependency-injection": "^4.4|^5.0|^6.0",
"symfony/error-handler": "^5.4|^6.0|^7.0", "symfony/error-handler": "^4.4|^5.0|^6.0",
"symfony/expression-language": "^5.4|^6.0|^7.0", "symfony/expression-language": "^4.4|^5.0|^6.0",
"symfony/http-foundation": "^5.4|^6.0|^7.0", "symfony/http-foundation": "^4.4|^5.0|^6.0",
"symfony/service-contracts": "^2.5|^3", "symfony/service-contracts": "^1.1|^2|^3",
"symfony/stopwatch": "^5.4|^6.0|^7.0" "symfony/stopwatch": "^4.4|^5.0|^6.0"
},
"suggest": {
"symfony/dependency-injection": "",
"symfony/http-kernel": ""
}, },
"type": "library", "type": "library",
"autoload": { "autoload": {
@@ -2815,7 +2624,7 @@
"description": "Provides tools that allow your application components to communicate with each other by dispatching events and listening to them", "description": "Provides tools that allow your application components to communicate with each other by dispatching events and listening to them",
"homepage": "https://symfony.com", "homepage": "https://symfony.com",
"support": { "support": {
"source": "https://github.com/symfony/event-dispatcher/tree/v6.4.25" "source": "https://github.com/symfony/event-dispatcher/tree/v5.4.40"
}, },
"funding": [ "funding": [
{ {
@@ -2826,29 +2635,25 @@
"url": "https://github.com/fabpot", "url": "https://github.com/fabpot",
"type": "github" "type": "github"
}, },
{
"url": "https://github.com/nicolas-grekas",
"type": "github"
},
{ {
"url": "https://tidelift.com/funding/github/packagist/symfony/symfony", "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
"type": "tidelift" "type": "tidelift"
} }
], ],
"time": "2025-08-13T09:41:44+00:00" "time": "2024-05-31T14:33:22+00:00"
}, },
{ {
"name": "symfony/event-dispatcher-contracts", "name": "symfony/event-dispatcher-contracts",
"version": "v3.6.0", "version": "v3.5.0",
"source": { "source": {
"type": "git", "type": "git",
"url": "https://github.com/symfony/event-dispatcher-contracts.git", "url": "https://github.com/symfony/event-dispatcher-contracts.git",
"reference": "59eb412e93815df44f05f342958efa9f46b1e586" "reference": "8f93aec25d41b72493c6ddff14e916177c9efc50"
}, },
"dist": { "dist": {
"type": "zip", "type": "zip",
"url": "https://api.github.com/repos/symfony/event-dispatcher-contracts/zipball/59eb412e93815df44f05f342958efa9f46b1e586", "url": "https://api.github.com/repos/symfony/event-dispatcher-contracts/zipball/8f93aec25d41b72493c6ddff14e916177c9efc50",
"reference": "59eb412e93815df44f05f342958efa9f46b1e586", "reference": "8f93aec25d41b72493c6ddff14e916177c9efc50",
"shasum": "" "shasum": ""
}, },
"require": { "require": {
@@ -2857,12 +2662,12 @@
}, },
"type": "library", "type": "library",
"extra": { "extra": {
"thanks": {
"url": "https://github.com/symfony/contracts",
"name": "symfony/contracts"
},
"branch-alias": { "branch-alias": {
"dev-main": "3.6-dev" "dev-main": "3.5-dev"
},
"thanks": {
"name": "symfony/contracts",
"url": "https://github.com/symfony/contracts"
} }
}, },
"autoload": { "autoload": {
@@ -2895,7 +2700,7 @@
"standards" "standards"
], ],
"support": { "support": {
"source": "https://github.com/symfony/event-dispatcher-contracts/tree/v3.6.0" "source": "https://github.com/symfony/event-dispatcher-contracts/tree/v3.5.0"
}, },
"funding": [ "funding": [
{ {
@@ -2911,27 +2716,26 @@
"type": "tidelift" "type": "tidelift"
} }
], ],
"time": "2024-09-25T14:21:43+00:00" "time": "2024-04-18T09:32:20+00:00"
}, },
{ {
"name": "symfony/expression-language", "name": "symfony/expression-language",
"version": "v6.4.24", "version": "v5.4.43",
"source": { "source": {
"type": "git", "type": "git",
"url": "https://github.com/symfony/expression-language.git", "url": "https://github.com/symfony/expression-language.git",
"reference": "1ea0adaa53539ea7e70821ae9de49ebe03ae7091" "reference": "9d23f7bfd1d602fddc6d6520decedc99739497dd"
}, },
"dist": { "dist": {
"type": "zip", "type": "zip",
"url": "https://api.github.com/repos/symfony/expression-language/zipball/1ea0adaa53539ea7e70821ae9de49ebe03ae7091", "url": "https://api.github.com/repos/symfony/expression-language/zipball/9d23f7bfd1d602fddc6d6520decedc99739497dd",
"reference": "1ea0adaa53539ea7e70821ae9de49ebe03ae7091", "reference": "9d23f7bfd1d602fddc6d6520decedc99739497dd",
"shasum": "" "shasum": ""
}, },
"require": { "require": {
"php": ">=8.1", "php": ">=7.2.5",
"symfony/cache": "^5.4|^6.0|^7.0", "symfony/cache": "^4.4|^5.0|^6.0",
"symfony/deprecation-contracts": "^2.5|^3", "symfony/service-contracts": "^1.1|^2|^3"
"symfony/service-contracts": "^2.5|^3"
}, },
"type": "library", "type": "library",
"autoload": { "autoload": {
@@ -2959,7 +2763,7 @@
"description": "Provides an engine that can compile and evaluate expressions", "description": "Provides an engine that can compile and evaluate expressions",
"homepage": "https://symfony.com", "homepage": "https://symfony.com",
"support": { "support": {
"source": "https://github.com/symfony/expression-language/tree/v6.4.24" "source": "https://github.com/symfony/expression-language/tree/v5.4.43"
}, },
"funding": [ "funding": [
{ {
@@ -2970,38 +2774,35 @@
"url": "https://github.com/fabpot", "url": "https://github.com/fabpot",
"type": "github" "type": "github"
}, },
{
"url": "https://github.com/nicolas-grekas",
"type": "github"
},
{ {
"url": "https://tidelift.com/funding/github/packagist/symfony/symfony", "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
"type": "tidelift" "type": "tidelift"
} }
], ],
"time": "2025-07-10T08:14:14+00:00" "time": "2024-08-09T07:10:35+00:00"
}, },
{ {
"name": "symfony/filesystem", "name": "symfony/filesystem",
"version": "v6.4.24", "version": "v5.4.44",
"source": { "source": {
"type": "git", "type": "git",
"url": "https://github.com/symfony/filesystem.git", "url": "https://github.com/symfony/filesystem.git",
"reference": "75ae2edb7cdcc0c53766c30b0a2512b8df574bd8" "reference": "76c3818964e9d32be3862c9318ae3ba9aa280ddc"
}, },
"dist": { "dist": {
"type": "zip", "type": "zip",
"url": "https://api.github.com/repos/symfony/filesystem/zipball/75ae2edb7cdcc0c53766c30b0a2512b8df574bd8", "url": "https://api.github.com/repos/symfony/filesystem/zipball/76c3818964e9d32be3862c9318ae3ba9aa280ddc",
"reference": "75ae2edb7cdcc0c53766c30b0a2512b8df574bd8", "reference": "76c3818964e9d32be3862c9318ae3ba9aa280ddc",
"shasum": "" "shasum": ""
}, },
"require": { "require": {
"php": ">=8.1", "php": ">=7.2.5",
"symfony/polyfill-ctype": "~1.8", "symfony/polyfill-ctype": "~1.8",
"symfony/polyfill-mbstring": "~1.8" "symfony/polyfill-mbstring": "~1.8",
"symfony/polyfill-php80": "^1.16"
}, },
"require-dev": { "require-dev": {
"symfony/process": "^5.4|^6.4|^7.0" "symfony/process": "^5.4|^6.4"
}, },
"type": "library", "type": "library",
"autoload": { "autoload": {
@@ -3029,7 +2830,7 @@
"description": "Provides basic utilities for the filesystem", "description": "Provides basic utilities for the filesystem",
"homepage": "https://symfony.com", "homepage": "https://symfony.com",
"support": { "support": {
"source": "https://github.com/symfony/filesystem/tree/v6.4.24" "source": "https://github.com/symfony/filesystem/tree/v5.4.44"
}, },
"funding": [ "funding": [
{ {
@@ -3040,36 +2841,31 @@
"url": "https://github.com/fabpot", "url": "https://github.com/fabpot",
"type": "github" "type": "github"
}, },
{
"url": "https://github.com/nicolas-grekas",
"type": "github"
},
{ {
"url": "https://tidelift.com/funding/github/packagist/symfony/symfony", "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
"type": "tidelift" "type": "tidelift"
} }
], ],
"time": "2025-07-10T08:14:14+00:00" "time": "2024-09-16T14:52:48+00:00"
}, },
{ {
"name": "symfony/finder", "name": "symfony/finder",
"version": "v6.4.24", "version": "v5.4.43",
"source": { "source": {
"type": "git", "type": "git",
"url": "https://github.com/symfony/finder.git", "url": "https://github.com/symfony/finder.git",
"reference": "73089124388c8510efb8d2d1689285d285937b08" "reference": "ae25a9145a900764158d439653d5630191155ca0"
}, },
"dist": { "dist": {
"type": "zip", "type": "zip",
"url": "https://api.github.com/repos/symfony/finder/zipball/73089124388c8510efb8d2d1689285d285937b08", "url": "https://api.github.com/repos/symfony/finder/zipball/ae25a9145a900764158d439653d5630191155ca0",
"reference": "73089124388c8510efb8d2d1689285d285937b08", "reference": "ae25a9145a900764158d439653d5630191155ca0",
"shasum": "" "shasum": ""
}, },
"require": { "require": {
"php": ">=8.1" "php": ">=7.2.5",
}, "symfony/deprecation-contracts": "^2.1|^3",
"require-dev": { "symfony/polyfill-php80": "^1.16"
"symfony/filesystem": "^6.0|^7.0"
}, },
"type": "library", "type": "library",
"autoload": { "autoload": {
@@ -3097,7 +2893,7 @@
"description": "Finds files and directories via an intuitive fluent interface", "description": "Finds files and directories via an intuitive fluent interface",
"homepage": "https://symfony.com", "homepage": "https://symfony.com",
"support": { "support": {
"source": "https://github.com/symfony/finder/tree/v6.4.24" "source": "https://github.com/symfony/finder/tree/v5.4.43"
}, },
"funding": [ "funding": [
{ {
@@ -3108,29 +2904,25 @@
"url": "https://github.com/fabpot", "url": "https://github.com/fabpot",
"type": "github" "type": "github"
}, },
{
"url": "https://github.com/nicolas-grekas",
"type": "github"
},
{ {
"url": "https://tidelift.com/funding/github/packagist/symfony/symfony", "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
"type": "tidelift" "type": "tidelift"
} }
], ],
"time": "2025-07-15T12:02:45+00:00" "time": "2024-08-13T14:03:51+00:00"
}, },
{ {
"name": "symfony/flex", "name": "symfony/flex",
"version": "v2.8.2", "version": "v2.4.7",
"source": { "source": {
"type": "git", "type": "git",
"url": "https://github.com/symfony/flex.git", "url": "https://github.com/symfony/flex.git",
"reference": "f356aa35f3cf3d2f46c31d344c1098eb2d260426" "reference": "92f4fba342161ff36072bd3b8e0b3c6c23160402"
}, },
"dist": { "dist": {
"type": "zip", "type": "zip",
"url": "https://api.github.com/repos/symfony/flex/zipball/f356aa35f3cf3d2f46c31d344c1098eb2d260426", "url": "https://api.github.com/repos/symfony/flex/zipball/92f4fba342161ff36072bd3b8e0b3c6c23160402",
"reference": "f356aa35f3cf3d2f46c31d344c1098eb2d260426", "reference": "92f4fba342161ff36072bd3b8e0b3c6c23160402",
"shasum": "" "shasum": ""
}, },
"require": { "require": {
@@ -3169,7 +2961,7 @@
"description": "Composer plugin for Symfony", "description": "Composer plugin for Symfony",
"support": { "support": {
"issues": "https://github.com/symfony/flex/issues", "issues": "https://github.com/symfony/flex/issues",
"source": "https://github.com/symfony/flex/tree/v2.8.2" "source": "https://github.com/symfony/flex/tree/v2.4.7"
}, },
"funding": [ "funding": [
{ {
@@ -3180,69 +2972,70 @@
"url": "https://github.com/fabpot", "url": "https://github.com/fabpot",
"type": "github" "type": "github"
}, },
{
"url": "https://github.com/nicolas-grekas",
"type": "github"
},
{ {
"url": "https://tidelift.com/funding/github/packagist/symfony/symfony", "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
"type": "tidelift" "type": "tidelift"
} }
], ],
"time": "2025-08-22T07:17:23+00:00" "time": "2024-10-07T08:51:54+00:00"
}, },
{ {
"name": "symfony/form", "name": "symfony/form",
"version": "v6.4.25", "version": "v5.4.44",
"source": { "source": {
"type": "git", "type": "git",
"url": "https://github.com/symfony/form.git", "url": "https://github.com/symfony/form.git",
"reference": "ce4d50b8779556a18f72e6122107b3db2f116140" "reference": "4f3d91f8a7626e3cab9e3d2952321df10013a6eb"
}, },
"dist": { "dist": {
"type": "zip", "type": "zip",
"url": "https://api.github.com/repos/symfony/form/zipball/ce4d50b8779556a18f72e6122107b3db2f116140", "url": "https://api.github.com/repos/symfony/form/zipball/4f3d91f8a7626e3cab9e3d2952321df10013a6eb",
"reference": "ce4d50b8779556a18f72e6122107b3db2f116140", "reference": "4f3d91f8a7626e3cab9e3d2952321df10013a6eb",
"shasum": "" "shasum": ""
}, },
"require": { "require": {
"php": ">=8.1", "php": ">=7.2.5",
"symfony/deprecation-contracts": "^2.5|^3", "symfony/deprecation-contracts": "^2.1|^3",
"symfony/event-dispatcher": "^5.4|^6.0|^7.0", "symfony/event-dispatcher": "^4.4|^5.0|^6.0",
"symfony/options-resolver": "^5.4|^6.0|^7.0", "symfony/options-resolver": "^5.1|^6.0",
"symfony/polyfill-ctype": "~1.8", "symfony/polyfill-ctype": "~1.8",
"symfony/polyfill-intl-icu": "^1.21", "symfony/polyfill-intl-icu": "^1.21",
"symfony/polyfill-mbstring": "~1.0", "symfony/polyfill-mbstring": "~1.0",
"symfony/property-access": "^5.4|^6.0|^7.0", "symfony/polyfill-php80": "^1.16",
"symfony/service-contracts": "^2.5|^3" "symfony/polyfill-php81": "^1.23",
"symfony/property-access": "^5.0.8|^6.0",
"symfony/service-contracts": "^1.1|^2|^3"
}, },
"conflict": { "conflict": {
"symfony/console": "<5.4", "symfony/console": "<4.4",
"symfony/dependency-injection": "<5.4", "symfony/dependency-injection": "<4.4",
"symfony/doctrine-bridge": "<5.4.21|>=6,<6.2.7", "symfony/doctrine-bridge": "<5.4.21|>=6,<6.2.7",
"symfony/error-handler": "<5.4", "symfony/error-handler": "<4.4.5",
"symfony/framework-bundle": "<5.4", "symfony/framework-bundle": "<4.4",
"symfony/http-kernel": "<5.4", "symfony/http-kernel": "<4.4",
"symfony/translation": "<5.4.35|>=6.0,<6.3.12|>=6.4,<6.4.3|>=7.0,<7.0.3", "symfony/translation": "<5.4.35|>=6.0,<6.3.12|>=6.4,<6.4.3",
"symfony/translation-contracts": "<2.5", "symfony/translation-contracts": "<1.1.7",
"symfony/twig-bridge": "<6.3" "symfony/twig-bridge": "<5.4.21|>=6,<6.2.7"
}, },
"require-dev": { "require-dev": {
"doctrine/collections": "^1.0|^2.0", "doctrine/collections": "^1.0|^2.0",
"symfony/config": "^5.4|^6.0|^7.0", "symfony/config": "^4.4|^5.0|^6.0",
"symfony/console": "^5.4|^6.0|^7.0", "symfony/console": "^5.4|^6.0",
"symfony/dependency-injection": "^5.4|^6.0|^7.0", "symfony/dependency-injection": "^4.4|^5.0|^6.0",
"symfony/expression-language": "^5.4|^6.0|^7.0", "symfony/expression-language": "^4.4|^5.0|^6.0",
"symfony/html-sanitizer": "^6.1|^7.0", "symfony/http-foundation": "^4.4|^5.0|^6.0",
"symfony/http-foundation": "^5.4|^6.0|^7.0", "symfony/http-kernel": "^4.4|^5.0|^6.0",
"symfony/http-kernel": "^5.4|^6.0|^7.0", "symfony/intl": "^4.4|^5.0|^6.0",
"symfony/intl": "^5.4|^6.0|^7.0", "symfony/security-csrf": "^4.4|^5.0|^6.0",
"symfony/security-core": "^6.2|^7.0", "symfony/translation": "^5.4.35|~6.3.12|^6.4.3",
"symfony/security-csrf": "^5.4|^6.0|^7.0", "symfony/uid": "^5.1|^6.0",
"symfony/translation": "^5.4.35|~6.3.12|^6.4.3|^7.0.3", "symfony/validator": "^4.4.17|^5.1.9|^6.0",
"symfony/uid": "^5.4|^6.0|^7.0", "symfony/var-dumper": "^4.4|^5.0|^6.0"
"symfony/validator": "^5.4|^6.0|^7.0", },
"symfony/var-dumper": "^5.4|^6.0|^7.0" "suggest": {
"symfony/security-csrf": "For protecting forms against CSRF attacks.",
"symfony/twig-bridge": "For templating with Twig.",
"symfony/validator": "For form validation."
}, },
"type": "library", "type": "library",
"autoload": { "autoload": {
@@ -3270,7 +3063,7 @@
"description": "Allows to easily create, process and reuse HTML forms", "description": "Allows to easily create, process and reuse HTML forms",
"homepage": "https://symfony.com", "homepage": "https://symfony.com",
"support": { "support": {
"source": "https://github.com/symfony/form/tree/v6.4.25" "source": "https://github.com/symfony/form/tree/v5.4.44"
}, },
"funding": [ "funding": [
{ {
@@ -3281,122 +3074,119 @@
"url": "https://github.com/fabpot", "url": "https://github.com/fabpot",
"type": "github" "type": "github"
}, },
{
"url": "https://github.com/nicolas-grekas",
"type": "github"
},
{ {
"url": "https://tidelift.com/funding/github/packagist/symfony/symfony", "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
"type": "tidelift" "type": "tidelift"
} }
], ],
"time": "2025-08-18T12:29:30+00:00" "time": "2024-09-20T07:56:40+00:00"
}, },
{ {
"name": "symfony/framework-bundle", "name": "symfony/framework-bundle",
"version": "v6.4.25", "version": "v5.4.44",
"source": { "source": {
"type": "git", "type": "git",
"url": "https://github.com/symfony/framework-bundle.git", "url": "https://github.com/symfony/framework-bundle.git",
"reference": "1d6a764b58e4f780df00f71c20ba3a61095ea447" "reference": "9ae1957fb817c0fec6d171931f675895a434d988"
}, },
"dist": { "dist": {
"type": "zip", "type": "zip",
"url": "https://api.github.com/repos/symfony/framework-bundle/zipball/1d6a764b58e4f780df00f71c20ba3a61095ea447", "url": "https://api.github.com/repos/symfony/framework-bundle/zipball/9ae1957fb817c0fec6d171931f675895a434d988",
"reference": "1d6a764b58e4f780df00f71c20ba3a61095ea447", "reference": "9ae1957fb817c0fec6d171931f675895a434d988",
"shasum": "" "shasum": ""
}, },
"require": { "require": {
"composer-runtime-api": ">=2.1",
"ext-xml": "*", "ext-xml": "*",
"php": ">=8.1", "php": ">=7.2.5",
"symfony/cache": "^5.4|^6.0|^7.0", "symfony/cache": "^5.2|^6.0",
"symfony/config": "^6.1|^7.0", "symfony/config": "^5.3|^6.0",
"symfony/dependency-injection": "^6.4.12|^7.0", "symfony/dependency-injection": "^5.4.44|^6.0.5",
"symfony/deprecation-contracts": "^2.5|^3", "symfony/deprecation-contracts": "^2.1|^3",
"symfony/error-handler": "^6.1|^7.0", "symfony/error-handler": "^4.4.1|^5.0.1|^6.0",
"symfony/event-dispatcher": "^5.4|^6.0|^7.0", "symfony/event-dispatcher": "^5.1|^6.0",
"symfony/filesystem": "^5.4|^6.0|^7.0", "symfony/filesystem": "^4.4|^5.0|^6.0",
"symfony/finder": "^5.4|^6.0|^7.0", "symfony/finder": "^4.4|^5.0|^6.0",
"symfony/http-foundation": "^6.4|^7.0", "symfony/http-foundation": "^5.4.24|^6.2.11",
"symfony/http-kernel": "^6.4", "symfony/http-kernel": "^5.4|^6.0",
"symfony/polyfill-mbstring": "~1.0", "symfony/polyfill-mbstring": "~1.0",
"symfony/routing": "^6.4|^7.0" "symfony/polyfill-php80": "^1.16",
"symfony/polyfill-php81": "^1.22",
"symfony/routing": "^5.3|^6.0"
}, },
"conflict": { "conflict": {
"doctrine/annotations": "<1.13.1", "doctrine/annotations": "<1.13.1",
"doctrine/cache": "<1.11",
"doctrine/persistence": "<1.3", "doctrine/persistence": "<1.3",
"phpdocumentor/reflection-docblock": "<3.2.2", "phpdocumentor/reflection-docblock": "<3.2.2",
"phpdocumentor/type-resolver": "<1.4.0", "phpdocumentor/type-resolver": "<1.4.0",
"symfony/asset": "<5.4", "symfony/asset": "<5.3",
"symfony/asset-mapper": "<6.4", "symfony/console": "<5.2.5|>=7.0",
"symfony/clock": "<6.3", "symfony/dom-crawler": "<4.4",
"symfony/console": "<5.4|>=7.0", "symfony/dotenv": "<5.1",
"symfony/dom-crawler": "<6.4", "symfony/form": "<5.2",
"symfony/dotenv": "<5.4", "symfony/http-client": "<4.4",
"symfony/form": "<5.4", "symfony/lock": "<4.4",
"symfony/http-client": "<6.3", "symfony/mailer": "<5.2",
"symfony/lock": "<5.4", "symfony/messenger": "<5.4",
"symfony/mailer": "<5.4", "symfony/mime": "<4.4",
"symfony/messenger": "<6.3", "symfony/property-access": "<5.3",
"symfony/mime": "<6.4", "symfony/property-info": "<4.4",
"symfony/property-access": "<5.4", "symfony/security-csrf": "<5.3",
"symfony/property-info": "<5.4", "symfony/serializer": "<5.2",
"symfony/runtime": "<5.4.45|>=6.0,<6.4.13|>=7.0,<7.1.6", "symfony/service-contracts": ">=3.0",
"symfony/scheduler": "<6.4.4|>=7.0.0,<7.0.4", "symfony/stopwatch": "<4.4",
"symfony/security-core": "<5.4", "symfony/translation": "<5.3",
"symfony/security-csrf": "<5.4", "symfony/twig-bridge": "<4.4",
"symfony/serializer": "<6.4", "symfony/twig-bundle": "<4.4",
"symfony/stopwatch": "<5.4", "symfony/validator": "<5.3.11",
"symfony/translation": "<6.4", "symfony/web-profiler-bundle": "<4.4",
"symfony/twig-bridge": "<5.4", "symfony/workflow": "<5.2"
"symfony/twig-bundle": "<5.4",
"symfony/validator": "<6.4",
"symfony/web-profiler-bundle": "<6.4",
"symfony/workflow": "<6.4"
}, },
"require-dev": { "require-dev": {
"doctrine/annotations": "^1.13.1|^2", "doctrine/annotations": "^1.13.1|^2",
"doctrine/cache": "^1.11|^2.0",
"doctrine/persistence": "^1.3|^2|^3", "doctrine/persistence": "^1.3|^2|^3",
"dragonmantank/cron-expression": "^3.1",
"phpdocumentor/reflection-docblock": "^3.0|^4.0|^5.0", "phpdocumentor/reflection-docblock": "^3.0|^4.0|^5.0",
"seld/jsonlint": "^1.10", "symfony/asset": "^5.3|^6.0",
"symfony/asset": "^5.4|^6.0|^7.0", "symfony/browser-kit": "^5.4|^6.0",
"symfony/asset-mapper": "^6.4|^7.0", "symfony/console": "^5.4.9|^6.0.9",
"symfony/browser-kit": "^5.4|^6.0|^7.0", "symfony/css-selector": "^4.4|^5.0|^6.0",
"symfony/clock": "^6.2|^7.0", "symfony/dom-crawler": "^4.4.30|^5.3.7|^6.0",
"symfony/console": "^5.4.9|^6.0.9|^7.0", "symfony/dotenv": "^5.1|^6.0",
"symfony/css-selector": "^5.4|^6.0|^7.0", "symfony/expression-language": "^4.4|^5.0|^6.0",
"symfony/dom-crawler": "^6.4|^7.0", "symfony/form": "^5.2|^6.0",
"symfony/dotenv": "^5.4|^6.0|^7.0", "symfony/http-client": "^4.4|^5.0|^6.0",
"symfony/expression-language": "^5.4|^6.0|^7.0", "symfony/lock": "^4.4|^5.0|^6.0",
"symfony/form": "^5.4|^6.0|^7.0", "symfony/mailer": "^5.2|^6.0",
"symfony/html-sanitizer": "^6.1|^7.0", "symfony/messenger": "^5.4|^6.0",
"symfony/http-client": "^6.3|^7.0", "symfony/mime": "^4.4|^5.0|^6.0",
"symfony/lock": "^5.4|^6.0|^7.0", "symfony/notifier": "^5.4|^6.0",
"symfony/mailer": "^5.4|^6.0|^7.0",
"symfony/messenger": "^6.3|^7.0",
"symfony/mime": "^6.4|^7.0",
"symfony/notifier": "^5.4|^6.0|^7.0",
"symfony/polyfill-intl-icu": "~1.0", "symfony/polyfill-intl-icu": "~1.0",
"symfony/process": "^5.4|^6.0|^7.0", "symfony/process": "^4.4|^5.0|^6.0",
"symfony/property-info": "^5.4|^6.0|^7.0", "symfony/property-info": "^4.4|^5.0|^6.0",
"symfony/rate-limiter": "^5.4|^6.0|^7.0", "symfony/rate-limiter": "^5.2|^6.0",
"symfony/scheduler": "^6.4.4|^7.0.4", "symfony/security-bundle": "^5.4|^6.0",
"symfony/security-bundle": "^5.4|^6.0|^7.0", "symfony/serializer": "^5.4|^6.0",
"symfony/semaphore": "^5.4|^6.0|^7.0", "symfony/stopwatch": "^4.4|^5.0|^6.0",
"symfony/serializer": "^6.4|^7.0", "symfony/string": "^5.0|^6.0",
"symfony/stopwatch": "^5.4|^6.0|^7.0", "symfony/translation": "^5.3|^6.0",
"symfony/string": "^5.4|^6.0|^7.0", "symfony/twig-bundle": "^4.4|^5.0|^6.0",
"symfony/translation": "^6.4|^7.0", "symfony/validator": "^5.3.11|^6.0",
"symfony/twig-bundle": "^5.4|^6.0|^7.0", "symfony/web-link": "^4.4|^5.0|^6.0",
"symfony/uid": "^5.4|^6.0|^7.0", "symfony/workflow": "^5.2|^6.0",
"symfony/validator": "^6.4|^7.0", "symfony/yaml": "^4.4|^5.0|^6.0",
"symfony/web-link": "^5.4|^6.0|^7.0",
"symfony/workflow": "^6.4|^7.0",
"symfony/yaml": "^5.4|^6.0|^7.0",
"twig/twig": "^2.10|^3.0.4" "twig/twig": "^2.10|^3.0.4"
}, },
"suggest": {
"ext-apcu": "For best performance of the system caches",
"symfony/console": "For using the console commands",
"symfony/form": "For using forms",
"symfony/property-info": "For using the property_info service",
"symfony/serializer": "For using the serializer service",
"symfony/validator": "For using validation",
"symfony/web-link": "For using web links, features such as preloading, prefetching or prerendering",
"symfony/yaml": "For using the debug:config and lint:yaml commands"
},
"type": "symfony-bundle", "type": "symfony-bundle",
"autoload": { "autoload": {
"psr-4": { "psr-4": {
@@ -3423,7 +3213,7 @@
"description": "Provides a tight integration between Symfony components and the Symfony full-stack framework", "description": "Provides a tight integration between Symfony components and the Symfony full-stack framework",
"homepage": "https://symfony.com", "homepage": "https://symfony.com",
"support": { "support": {
"source": "https://github.com/symfony/framework-bundle/tree/v6.4.25" "source": "https://github.com/symfony/framework-bundle/tree/v5.4.44"
}, },
"funding": [ "funding": [
{ {
@@ -3434,48 +3224,41 @@
"url": "https://github.com/fabpot", "url": "https://github.com/fabpot",
"type": "github" "type": "github"
}, },
{
"url": "https://github.com/nicolas-grekas",
"type": "github"
},
{ {
"url": "https://tidelift.com/funding/github/packagist/symfony/symfony", "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
"type": "tidelift" "type": "tidelift"
} }
], ],
"time": "2025-08-26T10:44:20+00:00" "time": "2024-09-20T08:11:35+00:00"
}, },
{ {
"name": "symfony/http-client", "name": "symfony/http-client",
"version": "v6.4.25", "version": "v5.4.44",
"source": { "source": {
"type": "git", "type": "git",
"url": "https://github.com/symfony/http-client.git", "url": "https://github.com/symfony/http-client.git",
"reference": "b8e9dce2d8acba3c32af467bb58e0c3656886181" "reference": "58d3dc6bfa5fb37137e32d52ddc202ba4d1cea04"
}, },
"dist": { "dist": {
"type": "zip", "type": "zip",
"url": "https://api.github.com/repos/symfony/http-client/zipball/b8e9dce2d8acba3c32af467bb58e0c3656886181", "url": "https://api.github.com/repos/symfony/http-client/zipball/58d3dc6bfa5fb37137e32d52ddc202ba4d1cea04",
"reference": "b8e9dce2d8acba3c32af467bb58e0c3656886181", "reference": "58d3dc6bfa5fb37137e32d52ddc202ba4d1cea04",
"shasum": "" "shasum": ""
}, },
"require": { "require": {
"php": ">=8.1", "php": ">=7.2.5",
"psr/log": "^1|^2|^3", "psr/log": "^1|^2|^3",
"symfony/deprecation-contracts": "^2.5|^3", "symfony/deprecation-contracts": "^2.1|^3",
"symfony/http-client-contracts": "~3.4.4|^3.5.2", "symfony/http-client-contracts": "^2.5.3",
"symfony/polyfill-php83": "^1.29", "symfony/polyfill-php73": "^1.11",
"symfony/service-contracts": "^2.5|^3" "symfony/polyfill-php80": "^1.16",
}, "symfony/service-contracts": "^1.0|^2|^3"
"conflict": {
"php-http/discovery": "<1.15",
"symfony/http-foundation": "<6.3"
}, },
"provide": { "provide": {
"php-http/async-client-implementation": "*", "php-http/async-client-implementation": "*",
"php-http/client-implementation": "*", "php-http/client-implementation": "*",
"psr/http-client-implementation": "1.0", "psr/http-client-implementation": "1.0",
"symfony/http-client-implementation": "3.0" "symfony/http-client-implementation": "2.4"
}, },
"require-dev": { "require-dev": {
"amphp/amp": "^2.5", "amphp/amp": "^2.5",
@@ -3485,12 +3268,12 @@
"guzzlehttp/promises": "^1.4|^2.0", "guzzlehttp/promises": "^1.4|^2.0",
"nyholm/psr7": "^1.0", "nyholm/psr7": "^1.0",
"php-http/httplug": "^1.0|^2.0", "php-http/httplug": "^1.0|^2.0",
"php-http/message-factory": "^1.0",
"psr/http-client": "^1.0", "psr/http-client": "^1.0",
"symfony/dependency-injection": "^5.4|^6.0|^7.0", "symfony/dependency-injection": "^4.4|^5.0|^6.0",
"symfony/http-kernel": "^5.4|^6.0|^7.0", "symfony/http-kernel": "^4.4.13|^5.1.5|^6.0",
"symfony/messenger": "^5.4|^6.0|^7.0", "symfony/process": "^4.4|^5.0|^6.0",
"symfony/process": "^5.4|^6.0|^7.0", "symfony/stopwatch": "^4.4|^5.0|^6.0"
"symfony/stopwatch": "^5.4|^6.0|^7.0"
}, },
"type": "library", "type": "library",
"autoload": { "autoload": {
@@ -3521,7 +3304,7 @@
"http" "http"
], ],
"support": { "support": {
"source": "https://github.com/symfony/http-client/tree/v6.4.25" "source": "https://github.com/symfony/http-client/tree/v5.4.44"
}, },
"funding": [ "funding": [
{ {
@@ -3532,51 +3315,47 @@
"url": "https://github.com/fabpot", "url": "https://github.com/fabpot",
"type": "github" "type": "github"
}, },
{
"url": "https://github.com/nicolas-grekas",
"type": "github"
},
{ {
"url": "https://tidelift.com/funding/github/packagist/symfony/symfony", "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
"type": "tidelift" "type": "tidelift"
} }
], ],
"time": "2025-08-27T07:01:16+00:00" "time": "2024-09-16T14:04:28+00:00"
}, },
{ {
"name": "symfony/http-client-contracts", "name": "symfony/http-client-contracts",
"version": "v3.6.0", "version": "v2.5.3",
"source": { "source": {
"type": "git", "type": "git",
"url": "https://github.com/symfony/http-client-contracts.git", "url": "https://github.com/symfony/http-client-contracts.git",
"reference": "75d7043853a42837e68111812f4d964b01e5101c" "reference": "e5cc97c2b4a4db0ba26bebc154f1426e3fd1d2f1"
}, },
"dist": { "dist": {
"type": "zip", "type": "zip",
"url": "https://api.github.com/repos/symfony/http-client-contracts/zipball/75d7043853a42837e68111812f4d964b01e5101c", "url": "https://api.github.com/repos/symfony/http-client-contracts/zipball/e5cc97c2b4a4db0ba26bebc154f1426e3fd1d2f1",
"reference": "75d7043853a42837e68111812f4d964b01e5101c", "reference": "e5cc97c2b4a4db0ba26bebc154f1426e3fd1d2f1",
"shasum": "" "shasum": ""
}, },
"require": { "require": {
"php": ">=8.1" "php": ">=7.2.5"
},
"suggest": {
"symfony/http-client-implementation": ""
}, },
"type": "library", "type": "library",
"extra": { "extra": {
"thanks": {
"url": "https://github.com/symfony/contracts",
"name": "symfony/contracts"
},
"branch-alias": { "branch-alias": {
"dev-main": "3.6-dev" "dev-main": "2.5-dev"
},
"thanks": {
"name": "symfony/contracts",
"url": "https://github.com/symfony/contracts"
} }
}, },
"autoload": { "autoload": {
"psr-4": { "psr-4": {
"Symfony\\Contracts\\HttpClient\\": "" "Symfony\\Contracts\\HttpClient\\": ""
}, }
"exclude-from-classmap": [
"/Test/"
]
}, },
"notification-url": "https://packagist.org/downloads/", "notification-url": "https://packagist.org/downloads/",
"license": [ "license": [
@@ -3603,7 +3382,7 @@
"standards" "standards"
], ],
"support": { "support": {
"source": "https://github.com/symfony/http-client-contracts/tree/v3.6.0" "source": "https://github.com/symfony/http-client-contracts/tree/v2.5.3"
}, },
"funding": [ "funding": [
{ {
@@ -3619,40 +3398,39 @@
"type": "tidelift" "type": "tidelift"
} }
], ],
"time": "2025-04-29T11:18:49+00:00" "time": "2024-03-26T19:42:53+00:00"
}, },
{ {
"name": "symfony/http-foundation", "name": "symfony/http-foundation",
"version": "v6.4.25", "version": "v5.4.44",
"source": { "source": {
"type": "git", "type": "git",
"url": "https://github.com/symfony/http-foundation.git", "url": "https://github.com/symfony/http-foundation.git",
"reference": "6bc974c0035b643aa497c58d46d9e25185e4b272" "reference": "ae0d217e5932aa0b70ddb4cf7822cc76d48aee53"
}, },
"dist": { "dist": {
"type": "zip", "type": "zip",
"url": "https://api.github.com/repos/symfony/http-foundation/zipball/6bc974c0035b643aa497c58d46d9e25185e4b272", "url": "https://api.github.com/repos/symfony/http-foundation/zipball/ae0d217e5932aa0b70ddb4cf7822cc76d48aee53",
"reference": "6bc974c0035b643aa497c58d46d9e25185e4b272", "reference": "ae0d217e5932aa0b70ddb4cf7822cc76d48aee53",
"shasum": "" "shasum": ""
}, },
"require": { "require": {
"php": ">=8.1", "php": ">=7.2.5",
"symfony/deprecation-contracts": "^2.5|^3", "symfony/deprecation-contracts": "^2.1|^3",
"symfony/polyfill-mbstring": "~1.1", "symfony/polyfill-mbstring": "~1.1",
"symfony/polyfill-php83": "^1.27" "symfony/polyfill-php80": "^1.16"
},
"conflict": {
"symfony/cache": "<6.4.12|>=7.0,<7.1.5"
}, },
"require-dev": { "require-dev": {
"doctrine/dbal": "^2.13.1|^3|^4", "predis/predis": "^1.0|^2.0",
"predis/predis": "^1.1|^2.0", "symfony/cache": "^4.4|^5.0|^6.0",
"symfony/cache": "^6.4.12|^7.1.5", "symfony/dependency-injection": "^5.4|^6.0",
"symfony/dependency-injection": "^5.4|^6.0|^7.0", "symfony/expression-language": "^4.4|^5.0|^6.0",
"symfony/expression-language": "^5.4|^6.0|^7.0", "symfony/http-kernel": "^5.4.12|^6.0.12|^6.1.4",
"symfony/http-kernel": "^5.4.12|^6.0.12|^6.1.4|^7.0", "symfony/mime": "^4.4|^5.0|^6.0",
"symfony/mime": "^5.4|^6.0|^7.0", "symfony/rate-limiter": "^5.2|^6.0"
"symfony/rate-limiter": "^5.4|^6.0|^7.0" },
"suggest": {
"symfony/mime": "To use the file extension guesser"
}, },
"type": "library", "type": "library",
"autoload": { "autoload": {
@@ -3680,7 +3458,7 @@
"description": "Defines an object-oriented layer for the HTTP specification", "description": "Defines an object-oriented layer for the HTTP specification",
"homepage": "https://symfony.com", "homepage": "https://symfony.com",
"support": { "support": {
"source": "https://github.com/symfony/http-foundation/tree/v6.4.25" "source": "https://github.com/symfony/http-foundation/tree/v5.4.44"
}, },
"funding": [ "funding": [
{ {
@@ -3691,87 +3469,82 @@
"url": "https://github.com/fabpot", "url": "https://github.com/fabpot",
"type": "github" "type": "github"
}, },
{
"url": "https://github.com/nicolas-grekas",
"type": "github"
},
{ {
"url": "https://tidelift.com/funding/github/packagist/symfony/symfony", "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
"type": "tidelift" "type": "tidelift"
} }
], ],
"time": "2025-08-20T06:48:20+00:00" "time": "2024-09-15T07:55:06+00:00"
}, },
{ {
"name": "symfony/http-kernel", "name": "symfony/http-kernel",
"version": "v6.4.25", "version": "v5.4.44",
"source": { "source": {
"type": "git", "type": "git",
"url": "https://github.com/symfony/http-kernel.git", "url": "https://github.com/symfony/http-kernel.git",
"reference": "a0ee3cea5cabf4ed960fd2ef57668ceeacdb6e15" "reference": "788dcf72d9af7432a886aa3b0c5904d68087ba13"
}, },
"dist": { "dist": {
"type": "zip", "type": "zip",
"url": "https://api.github.com/repos/symfony/http-kernel/zipball/a0ee3cea5cabf4ed960fd2ef57668ceeacdb6e15", "url": "https://api.github.com/repos/symfony/http-kernel/zipball/788dcf72d9af7432a886aa3b0c5904d68087ba13",
"reference": "a0ee3cea5cabf4ed960fd2ef57668ceeacdb6e15", "reference": "788dcf72d9af7432a886aa3b0c5904d68087ba13",
"shasum": "" "shasum": ""
}, },
"require": { "require": {
"php": ">=8.1", "php": ">=7.2.5",
"psr/log": "^1|^2|^3", "psr/log": "^1|^2",
"symfony/deprecation-contracts": "^2.5|^3", "symfony/deprecation-contracts": "^2.1|^3",
"symfony/error-handler": "^6.4|^7.0", "symfony/error-handler": "^4.4|^5.0|^6.0",
"symfony/event-dispatcher": "^5.4|^6.0|^7.0", "symfony/event-dispatcher": "^5.0|^6.0",
"symfony/http-foundation": "^6.4|^7.0", "symfony/http-foundation": "^5.4.21|^6.2.7",
"symfony/polyfill-ctype": "^1.8" "symfony/polyfill-ctype": "^1.8",
"symfony/polyfill-php73": "^1.9",
"symfony/polyfill-php80": "^1.16"
}, },
"conflict": { "conflict": {
"symfony/browser-kit": "<5.4", "symfony/browser-kit": "<5.4",
"symfony/cache": "<5.4", "symfony/cache": "<5.0",
"symfony/config": "<6.1", "symfony/config": "<5.0",
"symfony/console": "<5.4", "symfony/console": "<4.4",
"symfony/dependency-injection": "<6.4", "symfony/dependency-injection": "<5.3",
"symfony/doctrine-bridge": "<5.4", "symfony/doctrine-bridge": "<5.0",
"symfony/form": "<5.4", "symfony/form": "<5.0",
"symfony/http-client": "<5.4", "symfony/http-client": "<5.0",
"symfony/http-client-contracts": "<2.5", "symfony/mailer": "<5.0",
"symfony/mailer": "<5.4", "symfony/messenger": "<5.0",
"symfony/messenger": "<5.4", "symfony/translation": "<5.0",
"symfony/translation": "<5.4", "symfony/twig-bridge": "<5.0",
"symfony/translation-contracts": "<2.5", "symfony/validator": "<5.0",
"symfony/twig-bridge": "<5.4",
"symfony/validator": "<6.4",
"symfony/var-dumper": "<6.3",
"twig/twig": "<2.13" "twig/twig": "<2.13"
}, },
"provide": { "provide": {
"psr/log-implementation": "1.0|2.0|3.0" "psr/log-implementation": "1.0|2.0"
}, },
"require-dev": { "require-dev": {
"psr/cache": "^1.0|^2.0|^3.0", "psr/cache": "^1.0|^2.0|^3.0",
"symfony/browser-kit": "^5.4|^6.0|^7.0", "symfony/browser-kit": "^5.4|^6.0",
"symfony/clock": "^6.2|^7.0", "symfony/config": "^5.0|^6.0",
"symfony/config": "^6.1|^7.0", "symfony/console": "^4.4|^5.0|^6.0",
"symfony/console": "^5.4|^6.0|^7.0", "symfony/css-selector": "^4.4|^5.0|^6.0",
"symfony/css-selector": "^5.4|^6.0|^7.0", "symfony/dependency-injection": "^5.3|^6.0",
"symfony/dependency-injection": "^6.4|^7.0", "symfony/dom-crawler": "^4.4|^5.0|^6.0",
"symfony/dom-crawler": "^5.4|^6.0|^7.0", "symfony/expression-language": "^4.4|^5.0|^6.0",
"symfony/expression-language": "^5.4|^6.0|^7.0", "symfony/finder": "^4.4|^5.0|^6.0",
"symfony/finder": "^5.4|^6.0|^7.0", "symfony/http-client-contracts": "^1.1|^2|^3",
"symfony/http-client-contracts": "^2.5|^3", "symfony/process": "^4.4|^5.0|^6.0",
"symfony/process": "^5.4|^6.0|^7.0", "symfony/routing": "^4.4|^5.0|^6.0",
"symfony/property-access": "^5.4.5|^6.0.5|^7.0", "symfony/stopwatch": "^4.4|^5.0|^6.0",
"symfony/routing": "^5.4|^6.0|^7.0", "symfony/translation": "^4.4|^5.0|^6.0",
"symfony/serializer": "^6.4.4|^7.0.4", "symfony/translation-contracts": "^1.1|^2|^3",
"symfony/stopwatch": "^5.4|^6.0|^7.0", "symfony/var-dumper": "^4.4.31|^5.4",
"symfony/translation": "^5.4|^6.0|^7.0",
"symfony/translation-contracts": "^2.5|^3",
"symfony/uid": "^5.4|^6.0|^7.0",
"symfony/validator": "^6.4|^7.0",
"symfony/var-dumper": "^5.4|^6.4|^7.0",
"symfony/var-exporter": "^6.2|^7.0",
"twig/twig": "^2.13|^3.0.4" "twig/twig": "^2.13|^3.0.4"
}, },
"suggest": {
"symfony/browser-kit": "",
"symfony/config": "",
"symfony/console": "",
"symfony/dependency-injection": ""
},
"type": "library", "type": "library",
"autoload": { "autoload": {
"psr-4": { "psr-4": {
@@ -3798,7 +3571,7 @@
"description": "Provides a structured process for converting a Request into a Response", "description": "Provides a structured process for converting a Request into a Response",
"homepage": "https://symfony.com", "homepage": "https://symfony.com",
"support": { "support": {
"source": "https://github.com/symfony/http-kernel/tree/v6.4.25" "source": "https://github.com/symfony/http-kernel/tree/v5.4.44"
}, },
"funding": [ "funding": [
{ {
@@ -3810,7 +3583,82 @@
"type": "github" "type": "github"
}, },
{ {
"url": "https://github.com/nicolas-grekas", "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
"type": "tidelift"
}
],
"time": "2024-09-21T05:47:58+00:00"
},
{
"name": "symfony/lock",
"version": "v5.4.40",
"source": {
"type": "git",
"url": "https://github.com/symfony/lock.git",
"reference": "d96955c9919fa8609b193ba76e9f527776b70176"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/symfony/lock/zipball/d96955c9919fa8609b193ba76e9f527776b70176",
"reference": "d96955c9919fa8609b193ba76e9f527776b70176",
"shasum": ""
},
"require": {
"php": ">=7.2.5",
"psr/log": "^1|^2|^3",
"symfony/deprecation-contracts": "^2.1|^3",
"symfony/polyfill-php80": "^1.16"
},
"conflict": {
"doctrine/dbal": "<2.13"
},
"require-dev": {
"doctrine/dbal": "^2.13|^3|^4",
"predis/predis": "^1.0|^2.0"
},
"type": "library",
"autoload": {
"psr-4": {
"Symfony\\Component\\Lock\\": ""
},
"exclude-from-classmap": [
"/Tests/"
]
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"authors": [
{
"name": "Jérémy Derussé",
"email": "jeremy@derusse.com"
},
{
"name": "Symfony Community",
"homepage": "https://symfony.com/contributors"
}
],
"description": "Creates and manages locks, a mechanism to provide exclusive access to a shared resource",
"homepage": "https://symfony.com",
"keywords": [
"cas",
"flock",
"locking",
"mutex",
"redlock",
"semaphore"
],
"support": {
"source": "https://github.com/symfony/lock/tree/v5.4.40"
},
"funding": [
{
"url": "https://symfony.com/sponsor",
"type": "custom"
},
{
"url": "https://github.com/fabpot",
"type": "github" "type": "github"
}, },
{ {
@@ -3818,42 +3666,47 @@
"type": "tidelift" "type": "tidelift"
} }
], ],
"time": "2025-08-29T07:55:45+00:00" "time": "2024-05-31T14:33:22+00:00"
}, },
{ {
"name": "symfony/monolog-bridge", "name": "symfony/monolog-bridge",
"version": "v6.4.25", "version": "v5.4.45",
"source": { "source": {
"type": "git", "type": "git",
"url": "https://github.com/symfony/monolog-bridge.git", "url": "https://github.com/symfony/monolog-bridge.git",
"reference": "6711737a4f6acc6cea94344d252fa5d457a5d647" "reference": "cf7d75d4d64a41fbb1c0e92301bec404134fa84b"
}, },
"dist": { "dist": {
"type": "zip", "type": "zip",
"url": "https://api.github.com/repos/symfony/monolog-bridge/zipball/6711737a4f6acc6cea94344d252fa5d457a5d647", "url": "https://api.github.com/repos/symfony/monolog-bridge/zipball/cf7d75d4d64a41fbb1c0e92301bec404134fa84b",
"reference": "6711737a4f6acc6cea94344d252fa5d457a5d647", "reference": "cf7d75d4d64a41fbb1c0e92301bec404134fa84b",
"shasum": "" "shasum": ""
}, },
"require": { "require": {
"monolog/monolog": "^1.25.1|^2|^3", "monolog/monolog": "^1.25.1|^2",
"php": ">=8.1", "php": ">=7.2.5",
"symfony/deprecation-contracts": "^2.5|^3", "symfony/deprecation-contracts": "^2.1|^3",
"symfony/http-kernel": "^5.4|^6.0|^7.0", "symfony/http-kernel": "^5.3|^6.0",
"symfony/service-contracts": "^2.5|^3" "symfony/polyfill-php80": "^1.16",
"symfony/service-contracts": "^1.1|^2|^3"
}, },
"conflict": { "conflict": {
"symfony/console": "<5.4", "symfony/console": "<4.4",
"symfony/http-foundation": "<5.4", "symfony/http-foundation": "<5.3"
"symfony/security-core": "<5.4"
}, },
"require-dev": { "require-dev": {
"symfony/console": "^5.4|^6.0|^7.0", "symfony/console": "^4.4|^5.0|^6.0",
"symfony/http-client": "^5.4|^6.0|^7.0", "symfony/http-client": "^4.4|^5.0|^6.0",
"symfony/mailer": "^5.4|^6.0|^7.0", "symfony/mailer": "^4.4|^5.0|^6.0",
"symfony/messenger": "^5.4|^6.0|^7.0", "symfony/messenger": "^4.4|^5.0|^6.0",
"symfony/mime": "^5.4|^6.0|^7.0", "symfony/mime": "^4.4|^5.0|^6.0",
"symfony/security-core": "^5.4|^6.0|^7.0", "symfony/security-core": "^4.4|^5.0|^6.0",
"symfony/var-dumper": "^5.4|^6.0|^7.0" "symfony/var-dumper": "^4.4|^5.0|^6.0"
},
"suggest": {
"symfony/console": "For the possibility to show log messages in console commands depending on verbosity settings.",
"symfony/http-kernel": "For using the debugging handlers together with the response life cycle of the HTTP kernel.",
"symfony/var-dumper": "For using the debugging handlers like the console handler or the log server handler."
}, },
"type": "symfony-bridge", "type": "symfony-bridge",
"autoload": { "autoload": {
@@ -3881,7 +3734,7 @@
"description": "Provides integration for Monolog with various Symfony components", "description": "Provides integration for Monolog with various Symfony components",
"homepage": "https://symfony.com", "homepage": "https://symfony.com",
"support": { "support": {
"source": "https://github.com/symfony/monolog-bridge/tree/v6.4.25" "source": "https://github.com/symfony/monolog-bridge/tree/v5.4.45"
}, },
"funding": [ "funding": [
{ {
@@ -3892,16 +3745,12 @@
"url": "https://github.com/fabpot", "url": "https://github.com/fabpot",
"type": "github" "type": "github"
}, },
{
"url": "https://github.com/nicolas-grekas",
"type": "github"
},
{ {
"url": "https://tidelift.com/funding/github/packagist/symfony/symfony", "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
"type": "tidelift" "type": "tidelift"
} }
], ],
"time": "2025-08-13T09:41:44+00:00" "time": "2024-10-10T06:37:45+00:00"
}, },
{ {
"name": "symfony/monolog-bundle", "name": "symfony/monolog-bundle",
@@ -3986,21 +3835,23 @@
}, },
{ {
"name": "symfony/options-resolver", "name": "symfony/options-resolver",
"version": "v6.4.25", "version": "v5.4.40",
"source": { "source": {
"type": "git", "type": "git",
"url": "https://github.com/symfony/options-resolver.git", "url": "https://github.com/symfony/options-resolver.git",
"reference": "d28e7e2db8a73e9511df892d36445f61314bbebe" "reference": "bd1afbde6613a8d6b956115e0e14b196191fd0c4"
}, },
"dist": { "dist": {
"type": "zip", "type": "zip",
"url": "https://api.github.com/repos/symfony/options-resolver/zipball/d28e7e2db8a73e9511df892d36445f61314bbebe", "url": "https://api.github.com/repos/symfony/options-resolver/zipball/bd1afbde6613a8d6b956115e0e14b196191fd0c4",
"reference": "d28e7e2db8a73e9511df892d36445f61314bbebe", "reference": "bd1afbde6613a8d6b956115e0e14b196191fd0c4",
"shasum": "" "shasum": ""
}, },
"require": { "require": {
"php": ">=8.1", "php": ">=7.2.5",
"symfony/deprecation-contracts": "^2.5|^3" "symfony/deprecation-contracts": "^2.1|^3",
"symfony/polyfill-php73": "~1.0",
"symfony/polyfill-php80": "^1.16"
}, },
"type": "library", "type": "library",
"autoload": { "autoload": {
@@ -4033,7 +3884,7 @@
"options" "options"
], ],
"support": { "support": {
"source": "https://github.com/symfony/options-resolver/tree/v6.4.25" "source": "https://github.com/symfony/options-resolver/tree/v5.4.40"
}, },
"funding": [ "funding": [
{ {
@@ -4044,40 +3895,38 @@
"url": "https://github.com/fabpot", "url": "https://github.com/fabpot",
"type": "github" "type": "github"
}, },
{
"url": "https://github.com/nicolas-grekas",
"type": "github"
},
{ {
"url": "https://tidelift.com/funding/github/packagist/symfony/symfony", "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
"type": "tidelift" "type": "tidelift"
} }
], ],
"time": "2025-08-04T17:06:28+00:00" "time": "2024-05-31T14:33:22+00:00"
}, },
{ {
"name": "symfony/password-hasher", "name": "symfony/password-hasher",
"version": "v6.4.24", "version": "v5.4.40",
"source": { "source": {
"type": "git", "type": "git",
"url": "https://github.com/symfony/password-hasher.git", "url": "https://github.com/symfony/password-hasher.git",
"reference": "dcab5ac87450aaed26483ba49c2ce86808da7557" "reference": "21b98178ab2024e6c7d8ab72cca9ba16015c6093"
}, },
"dist": { "dist": {
"type": "zip", "type": "zip",
"url": "https://api.github.com/repos/symfony/password-hasher/zipball/dcab5ac87450aaed26483ba49c2ce86808da7557", "url": "https://api.github.com/repos/symfony/password-hasher/zipball/21b98178ab2024e6c7d8ab72cca9ba16015c6093",
"reference": "dcab5ac87450aaed26483ba49c2ce86808da7557", "reference": "21b98178ab2024e6c7d8ab72cca9ba16015c6093",
"shasum": "" "shasum": ""
}, },
"require": { "require": {
"php": ">=8.1" "php": ">=7.2.5",
"symfony/deprecation-contracts": "^2.1|^3",
"symfony/polyfill-php80": "^1.15"
}, },
"conflict": { "conflict": {
"symfony/security-core": "<5.4" "symfony/security-core": "<5.3"
}, },
"require-dev": { "require-dev": {
"symfony/console": "^5.4|^6.0|^7.0", "symfony/console": "^5.3|^6.0",
"symfony/security-core": "^5.4|^6.0|^7.0" "symfony/security-core": "^5.3|^6.0"
}, },
"type": "library", "type": "library",
"autoload": { "autoload": {
@@ -4109,7 +3958,7 @@
"password" "password"
], ],
"support": { "support": {
"source": "https://github.com/symfony/password-hasher/tree/v6.4.24" "source": "https://github.com/symfony/password-hasher/tree/v5.4.40"
}, },
"funding": [ "funding": [
{ {
@@ -4120,29 +3969,25 @@
"url": "https://github.com/fabpot", "url": "https://github.com/fabpot",
"type": "github" "type": "github"
}, },
{
"url": "https://github.com/nicolas-grekas",
"type": "github"
},
{ {
"url": "https://tidelift.com/funding/github/packagist/symfony/symfony", "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
"type": "tidelift" "type": "tidelift"
} }
], ],
"time": "2025-07-10T08:14:14+00:00" "time": "2024-05-31T14:33:22+00:00"
}, },
{ {
"name": "symfony/polyfill-intl-grapheme", "name": "symfony/polyfill-intl-grapheme",
"version": "v1.33.0", "version": "v1.31.0",
"source": { "source": {
"type": "git", "type": "git",
"url": "https://github.com/symfony/polyfill-intl-grapheme.git", "url": "https://github.com/symfony/polyfill-intl-grapheme.git",
"reference": "380872130d3a5dd3ace2f4010d95125fde5d5c70" "reference": "b9123926e3b7bc2f98c02ad54f6a4b02b91a8abe"
}, },
"dist": { "dist": {
"type": "zip", "type": "zip",
"url": "https://api.github.com/repos/symfony/polyfill-intl-grapheme/zipball/380872130d3a5dd3ace2f4010d95125fde5d5c70", "url": "https://api.github.com/repos/symfony/polyfill-intl-grapheme/zipball/b9123926e3b7bc2f98c02ad54f6a4b02b91a8abe",
"reference": "380872130d3a5dd3ace2f4010d95125fde5d5c70", "reference": "b9123926e3b7bc2f98c02ad54f6a4b02b91a8abe",
"shasum": "" "shasum": ""
}, },
"require": { "require": {
@@ -4154,8 +3999,8 @@
"type": "library", "type": "library",
"extra": { "extra": {
"thanks": { "thanks": {
"url": "https://github.com/symfony/polyfill", "name": "symfony/polyfill",
"name": "symfony/polyfill" "url": "https://github.com/symfony/polyfill"
} }
}, },
"autoload": { "autoload": {
@@ -4191,7 +4036,7 @@
"shim" "shim"
], ],
"support": { "support": {
"source": "https://github.com/symfony/polyfill-intl-grapheme/tree/v1.33.0" "source": "https://github.com/symfony/polyfill-intl-grapheme/tree/v1.31.0"
}, },
"funding": [ "funding": [
{ {
@@ -4202,29 +4047,25 @@
"url": "https://github.com/fabpot", "url": "https://github.com/fabpot",
"type": "github" "type": "github"
}, },
{
"url": "https://github.com/nicolas-grekas",
"type": "github"
},
{ {
"url": "https://tidelift.com/funding/github/packagist/symfony/symfony", "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
"type": "tidelift" "type": "tidelift"
} }
], ],
"time": "2025-06-27T09:58:17+00:00" "time": "2024-09-09T11:45:10+00:00"
}, },
{ {
"name": "symfony/polyfill-intl-icu", "name": "symfony/polyfill-intl-icu",
"version": "v1.33.0", "version": "v1.31.0",
"source": { "source": {
"type": "git", "type": "git",
"url": "https://github.com/symfony/polyfill-intl-icu.git", "url": "https://github.com/symfony/polyfill-intl-icu.git",
"reference": "bfc8fa13dbaf21d69114b0efcd72ab700fb04d0c" "reference": "d80a05e9904d2c2b9b95929f3e4b5d3a8f418d78"
}, },
"dist": { "dist": {
"type": "zip", "type": "zip",
"url": "https://api.github.com/repos/symfony/polyfill-intl-icu/zipball/bfc8fa13dbaf21d69114b0efcd72ab700fb04d0c", "url": "https://api.github.com/repos/symfony/polyfill-intl-icu/zipball/d80a05e9904d2c2b9b95929f3e4b5d3a8f418d78",
"reference": "bfc8fa13dbaf21d69114b0efcd72ab700fb04d0c", "reference": "d80a05e9904d2c2b9b95929f3e4b5d3a8f418d78",
"shasum": "" "shasum": ""
}, },
"require": { "require": {
@@ -4236,8 +4077,8 @@
"type": "library", "type": "library",
"extra": { "extra": {
"thanks": { "thanks": {
"url": "https://github.com/symfony/polyfill", "name": "symfony/polyfill",
"name": "symfony/polyfill" "url": "https://github.com/symfony/polyfill"
} }
}, },
"autoload": { "autoload": {
@@ -4279,7 +4120,7 @@
"shim" "shim"
], ],
"support": { "support": {
"source": "https://github.com/symfony/polyfill-intl-icu/tree/v1.33.0" "source": "https://github.com/symfony/polyfill-intl-icu/tree/v1.31.0"
}, },
"funding": [ "funding": [
{ {
@@ -4290,20 +4131,16 @@
"url": "https://github.com/fabpot", "url": "https://github.com/fabpot",
"type": "github" "type": "github"
}, },
{
"url": "https://github.com/nicolas-grekas",
"type": "github"
},
{ {
"url": "https://tidelift.com/funding/github/packagist/symfony/symfony", "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
"type": "tidelift" "type": "tidelift"
} }
], ],
"time": "2025-06-20T22:24:30+00:00" "time": "2024-09-09T11:45:10+00:00"
}, },
{ {
"name": "symfony/polyfill-intl-normalizer", "name": "symfony/polyfill-intl-normalizer",
"version": "v1.33.0", "version": "v1.31.0",
"source": { "source": {
"type": "git", "type": "git",
"url": "https://github.com/symfony/polyfill-intl-normalizer.git", "url": "https://github.com/symfony/polyfill-intl-normalizer.git",
@@ -4324,8 +4161,8 @@
"type": "library", "type": "library",
"extra": { "extra": {
"thanks": { "thanks": {
"url": "https://github.com/symfony/polyfill", "name": "symfony/polyfill",
"name": "symfony/polyfill" "url": "https://github.com/symfony/polyfill"
} }
}, },
"autoload": { "autoload": {
@@ -4364,7 +4201,7 @@
"shim" "shim"
], ],
"support": { "support": {
"source": "https://github.com/symfony/polyfill-intl-normalizer/tree/v1.33.0" "source": "https://github.com/symfony/polyfill-intl-normalizer/tree/v1.31.0"
}, },
"funding": [ "funding": [
{ {
@@ -4375,10 +4212,6 @@
"url": "https://github.com/fabpot", "url": "https://github.com/fabpot",
"type": "github" "type": "github"
}, },
{
"url": "https://github.com/nicolas-grekas",
"type": "github"
},
{ {
"url": "https://tidelift.com/funding/github/packagist/symfony/symfony", "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
"type": "tidelift" "type": "tidelift"
@@ -4388,20 +4221,19 @@
}, },
{ {
"name": "symfony/polyfill-mbstring", "name": "symfony/polyfill-mbstring",
"version": "v1.33.0", "version": "v1.31.0",
"source": { "source": {
"type": "git", "type": "git",
"url": "https://github.com/symfony/polyfill-mbstring.git", "url": "https://github.com/symfony/polyfill-mbstring.git",
"reference": "6d857f4d76bd4b343eac26d6b539585d2bc56493" "reference": "85181ba99b2345b0ef10ce42ecac37612d9fd341"
}, },
"dist": { "dist": {
"type": "zip", "type": "zip",
"url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/6d857f4d76bd4b343eac26d6b539585d2bc56493", "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/85181ba99b2345b0ef10ce42ecac37612d9fd341",
"reference": "6d857f4d76bd4b343eac26d6b539585d2bc56493", "reference": "85181ba99b2345b0ef10ce42ecac37612d9fd341",
"shasum": "" "shasum": ""
}, },
"require": { "require": {
"ext-iconv": "*",
"php": ">=7.2" "php": ">=7.2"
}, },
"provide": { "provide": {
@@ -4413,8 +4245,8 @@
"type": "library", "type": "library",
"extra": { "extra": {
"thanks": { "thanks": {
"url": "https://github.com/symfony/polyfill", "name": "symfony/polyfill",
"name": "symfony/polyfill" "url": "https://github.com/symfony/polyfill"
} }
}, },
"autoload": { "autoload": {
@@ -4449,7 +4281,7 @@
"shim" "shim"
], ],
"support": { "support": {
"source": "https://github.com/symfony/polyfill-mbstring/tree/v1.33.0" "source": "https://github.com/symfony/polyfill-mbstring/tree/v1.31.0"
}, },
"funding": [ "funding": [
{ {
@@ -4460,29 +4292,25 @@
"url": "https://github.com/fabpot", "url": "https://github.com/fabpot",
"type": "github" "type": "github"
}, },
{
"url": "https://github.com/nicolas-grekas",
"type": "github"
},
{ {
"url": "https://tidelift.com/funding/github/packagist/symfony/symfony", "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
"type": "tidelift" "type": "tidelift"
} }
], ],
"time": "2024-12-23T08:48:59+00:00" "time": "2024-09-09T11:45:10+00:00"
}, },
{ {
"name": "symfony/polyfill-php83", "name": "symfony/polyfill-php73",
"version": "v1.33.0", "version": "v1.31.0",
"source": { "source": {
"type": "git", "type": "git",
"url": "https://github.com/symfony/polyfill-php83.git", "url": "https://github.com/symfony/polyfill-php73.git",
"reference": "17f6f9a6b1735c0f163024d959f700cfbc5155e5" "reference": "0f68c03565dcaaf25a890667542e8bd75fe7e5bb"
}, },
"dist": { "dist": {
"type": "zip", "type": "zip",
"url": "https://api.github.com/repos/symfony/polyfill-php83/zipball/17f6f9a6b1735c0f163024d959f700cfbc5155e5", "url": "https://api.github.com/repos/symfony/polyfill-php73/zipball/0f68c03565dcaaf25a890667542e8bd75fe7e5bb",
"reference": "17f6f9a6b1735c0f163024d959f700cfbc5155e5", "reference": "0f68c03565dcaaf25a890667542e8bd75fe7e5bb",
"shasum": "" "shasum": ""
}, },
"require": { "require": {
@@ -4491,8 +4319,8 @@
"type": "library", "type": "library",
"extra": { "extra": {
"thanks": { "thanks": {
"url": "https://github.com/symfony/polyfill", "name": "symfony/polyfill",
"name": "symfony/polyfill" "url": "https://github.com/symfony/polyfill"
} }
}, },
"autoload": { "autoload": {
@@ -4500,7 +4328,7 @@
"bootstrap.php" "bootstrap.php"
], ],
"psr-4": { "psr-4": {
"Symfony\\Polyfill\\Php83\\": "" "Symfony\\Polyfill\\Php73\\": ""
}, },
"classmap": [ "classmap": [
"Resources/stubs" "Resources/stubs"
@@ -4520,7 +4348,7 @@
"homepage": "https://symfony.com/contributors" "homepage": "https://symfony.com/contributors"
} }
], ],
"description": "Symfony polyfill backporting some PHP 8.3+ features to lower PHP versions", "description": "Symfony polyfill backporting some PHP 7.3+ features to lower PHP versions",
"homepage": "https://symfony.com", "homepage": "https://symfony.com",
"keywords": [ "keywords": [
"compatibility", "compatibility",
@@ -4529,7 +4357,7 @@
"shim" "shim"
], ],
"support": { "support": {
"source": "https://github.com/symfony/polyfill-php83/tree/v1.33.0" "source": "https://github.com/symfony/polyfill-php73/tree/v1.31.0"
}, },
"funding": [ "funding": [
{ {
@@ -4541,7 +4369,83 @@
"type": "github" "type": "github"
}, },
{ {
"url": "https://github.com/nicolas-grekas", "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
"type": "tidelift"
}
],
"time": "2024-09-09T11:45:10+00:00"
},
{
"name": "symfony/polyfill-php80",
"version": "v1.31.0",
"source": {
"type": "git",
"url": "https://github.com/symfony/polyfill-php80.git",
"reference": "60328e362d4c2c802a54fcbf04f9d3fb892b4cf8"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/symfony/polyfill-php80/zipball/60328e362d4c2c802a54fcbf04f9d3fb892b4cf8",
"reference": "60328e362d4c2c802a54fcbf04f9d3fb892b4cf8",
"shasum": ""
},
"require": {
"php": ">=7.2"
},
"type": "library",
"extra": {
"thanks": {
"name": "symfony/polyfill",
"url": "https://github.com/symfony/polyfill"
}
},
"autoload": {
"files": [
"bootstrap.php"
],
"psr-4": {
"Symfony\\Polyfill\\Php80\\": ""
},
"classmap": [
"Resources/stubs"
]
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"authors": [
{
"name": "Ion Bazan",
"email": "ion.bazan@gmail.com"
},
{
"name": "Nicolas Grekas",
"email": "p@tchwork.com"
},
{
"name": "Symfony Community",
"homepage": "https://symfony.com/contributors"
}
],
"description": "Symfony polyfill backporting some PHP 8.0+ features to lower PHP versions",
"homepage": "https://symfony.com",
"keywords": [
"compatibility",
"polyfill",
"portable",
"shim"
],
"support": {
"source": "https://github.com/symfony/polyfill-php80/tree/v1.31.0"
},
"funding": [
{
"url": "https://symfony.com/sponsor",
"type": "custom"
},
{
"url": "https://github.com/fabpot",
"type": "github" "type": "github"
}, },
{ {
@@ -4549,29 +4453,109 @@
"type": "tidelift" "type": "tidelift"
} }
], ],
"time": "2025-07-08T02:45:35+00:00" "time": "2024-09-09T11:45:10+00:00"
}, },
{ {
"name": "symfony/property-access", "name": "symfony/polyfill-php81",
"version": "v6.4.25", "version": "v1.31.0",
"source": { "source": {
"type": "git", "type": "git",
"url": "https://github.com/symfony/property-access.git", "url": "https://github.com/symfony/polyfill-php81.git",
"reference": "fedc771326d4978a7d3167fa009a509b06a2e168" "reference": "4a4cfc2d253c21a5ad0e53071df248ed48c6ce5c"
}, },
"dist": { "dist": {
"type": "zip", "type": "zip",
"url": "https://api.github.com/repos/symfony/property-access/zipball/fedc771326d4978a7d3167fa009a509b06a2e168", "url": "https://api.github.com/repos/symfony/polyfill-php81/zipball/4a4cfc2d253c21a5ad0e53071df248ed48c6ce5c",
"reference": "fedc771326d4978a7d3167fa009a509b06a2e168", "reference": "4a4cfc2d253c21a5ad0e53071df248ed48c6ce5c",
"shasum": "" "shasum": ""
}, },
"require": { "require": {
"php": ">=8.1", "php": ">=7.2"
"symfony/deprecation-contracts": "^2.5|^3", },
"symfony/property-info": "^5.4|^6.0|^7.0" "type": "library",
"extra": {
"thanks": {
"name": "symfony/polyfill",
"url": "https://github.com/symfony/polyfill"
}
},
"autoload": {
"files": [
"bootstrap.php"
],
"psr-4": {
"Symfony\\Polyfill\\Php81\\": ""
},
"classmap": [
"Resources/stubs"
]
},
"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 backporting some PHP 8.1+ features to lower PHP versions",
"homepage": "https://symfony.com",
"keywords": [
"compatibility",
"polyfill",
"portable",
"shim"
],
"support": {
"source": "https://github.com/symfony/polyfill-php81/tree/v1.31.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": "2024-09-09T11:45:10+00:00"
},
{
"name": "symfony/property-access",
"version": "v5.4.43",
"source": {
"type": "git",
"url": "https://github.com/symfony/property-access.git",
"reference": "2d751866b976a02e22743359733edc55cd20e9fd"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/symfony/property-access/zipball/2d751866b976a02e22743359733edc55cd20e9fd",
"reference": "2d751866b976a02e22743359733edc55cd20e9fd",
"shasum": ""
},
"require": {
"php": ">=7.2.5",
"symfony/deprecation-contracts": "^2.1|^3",
"symfony/polyfill-php80": "^1.16",
"symfony/property-info": "^5.2|^6.0"
}, },
"require-dev": { "require-dev": {
"symfony/cache": "^5.4|^6.0|^7.0" "symfony/cache": "^4.4|^5.0|^6.0"
},
"suggest": {
"psr/cache-implementation": "To cache access methods."
}, },
"type": "library", "type": "library",
"autoload": { "autoload": {
@@ -4610,7 +4594,7 @@
"reflection" "reflection"
], ],
"support": { "support": {
"source": "https://github.com/symfony/property-access/tree/v6.4.25" "source": "https://github.com/symfony/property-access/tree/v5.4.43"
}, },
"funding": [ "funding": [
{ {
@@ -4621,50 +4605,51 @@
"url": "https://github.com/fabpot", "url": "https://github.com/fabpot",
"type": "github" "type": "github"
}, },
{
"url": "https://github.com/nicolas-grekas",
"type": "github"
},
{ {
"url": "https://tidelift.com/funding/github/packagist/symfony/symfony", "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
"type": "tidelift" "type": "tidelift"
} }
], ],
"time": "2025-08-12T15:42:57+00:00" "time": "2024-08-29T08:50:14+00:00"
}, },
{ {
"name": "symfony/property-info", "name": "symfony/property-info",
"version": "v6.4.24", "version": "v5.4.42",
"source": { "source": {
"type": "git", "type": "git",
"url": "https://github.com/symfony/property-info.git", "url": "https://github.com/symfony/property-info.git",
"reference": "1056ae3621eeddd78d7c5ec074f1c1784324eec6" "reference": "825aa937f6e8cd63dcc118d0af84d7d4979cddf4"
}, },
"dist": { "dist": {
"type": "zip", "type": "zip",
"url": "https://api.github.com/repos/symfony/property-info/zipball/1056ae3621eeddd78d7c5ec074f1c1784324eec6", "url": "https://api.github.com/repos/symfony/property-info/zipball/825aa937f6e8cd63dcc118d0af84d7d4979cddf4",
"reference": "1056ae3621eeddd78d7c5ec074f1c1784324eec6", "reference": "825aa937f6e8cd63dcc118d0af84d7d4979cddf4",
"shasum": "" "shasum": ""
}, },
"require": { "require": {
"php": ">=8.1", "php": ">=7.2.5",
"symfony/string": "^5.4|^6.0|^7.0" "symfony/deprecation-contracts": "^2.1|^3",
"symfony/polyfill-php80": "^1.16",
"symfony/string": "^5.1|^6.0"
}, },
"conflict": { "conflict": {
"doctrine/annotations": "<1.12", "phpdocumentor/reflection-docblock": "<3.2.2",
"phpdocumentor/reflection-docblock": "<5.2", "phpdocumentor/type-resolver": "<1.4.0",
"phpdocumentor/type-resolver": "<1.5.1", "symfony/dependency-injection": "<4.4"
"symfony/cache": "<5.4",
"symfony/dependency-injection": "<5.4|>=6.0,<6.4",
"symfony/serializer": "<5.4"
}, },
"require-dev": { "require-dev": {
"doctrine/annotations": "^1.12|^2", "doctrine/annotations": "^1.10.4|^2",
"phpdocumentor/reflection-docblock": "^5.2", "phpdocumentor/reflection-docblock": "^3.0|^4.0|^5.0",
"phpstan/phpdoc-parser": "^1.0|^2.0", "phpstan/phpdoc-parser": "^1.0",
"symfony/cache": "^5.4|^6.0|^7.0", "symfony/cache": "^4.4|^5.0|^6.0",
"symfony/dependency-injection": "^5.4|^6.0|^7.0", "symfony/dependency-injection": "^4.4|^5.0|^6.0",
"symfony/serializer": "^5.4|^6.4|^7.0" "symfony/serializer": "^4.4|^5.0|^6.0"
},
"suggest": {
"phpdocumentor/reflection-docblock": "To use the PHPDoc",
"psr/cache-implementation": "To cache results",
"symfony/doctrine-bridge": "To use Doctrine metadata",
"symfony/serializer": "To use Serializer metadata"
}, },
"type": "library", "type": "library",
"autoload": { "autoload": {
@@ -4700,7 +4685,7 @@
"validator" "validator"
], ],
"support": { "support": {
"source": "https://github.com/symfony/property-info/tree/v6.4.24" "source": "https://github.com/symfony/property-info/tree/v5.4.42"
}, },
"funding": [ "funding": [
{ {
@@ -4711,51 +4696,52 @@
"url": "https://github.com/fabpot", "url": "https://github.com/fabpot",
"type": "github" "type": "github"
}, },
{
"url": "https://github.com/nicolas-grekas",
"type": "github"
},
{ {
"url": "https://tidelift.com/funding/github/packagist/symfony/symfony", "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
"type": "tidelift" "type": "tidelift"
} }
], ],
"time": "2025-07-14T16:38:25+00:00" "time": "2024-07-22T18:03:36+00:00"
}, },
{ {
"name": "symfony/psr-http-message-bridge", "name": "symfony/psr-http-message-bridge",
"version": "v6.4.24", "version": "v2.3.1",
"source": { "source": {
"type": "git", "type": "git",
"url": "https://github.com/symfony/psr-http-message-bridge.git", "url": "https://github.com/symfony/psr-http-message-bridge.git",
"reference": "6954b4e8aef0e5d46f8558c90edcf27bb01b4724" "reference": "581ca6067eb62640de5ff08ee1ba6850a0ee472e"
}, },
"dist": { "dist": {
"type": "zip", "type": "zip",
"url": "https://api.github.com/repos/symfony/psr-http-message-bridge/zipball/6954b4e8aef0e5d46f8558c90edcf27bb01b4724", "url": "https://api.github.com/repos/symfony/psr-http-message-bridge/zipball/581ca6067eb62640de5ff08ee1ba6850a0ee472e",
"reference": "6954b4e8aef0e5d46f8558c90edcf27bb01b4724", "reference": "581ca6067eb62640de5ff08ee1ba6850a0ee472e",
"shasum": "" "shasum": ""
}, },
"require": { "require": {
"php": ">=8.1", "php": ">=7.2.5",
"psr/http-message": "^1.0|^2.0", "psr/http-message": "^1.0 || ^2.0",
"symfony/http-foundation": "^5.4|^6.0|^7.0" "symfony/deprecation-contracts": "^2.5 || ^3.0",
}, "symfony/http-foundation": "^5.4 || ^6.0"
"conflict": {
"php-http/discovery": "<1.15",
"symfony/http-kernel": "<6.2"
}, },
"require-dev": { "require-dev": {
"nyholm/psr7": "^1.1", "nyholm/psr7": "^1.1",
"php-http/discovery": "^1.15", "psr/log": "^1.1 || ^2 || ^3",
"psr/log": "^1.1.4|^2|^3", "symfony/browser-kit": "^5.4 || ^6.0",
"symfony/browser-kit": "^5.4|^6.0|^7.0", "symfony/config": "^5.4 || ^6.0",
"symfony/config": "^5.4|^6.0|^7.0", "symfony/event-dispatcher": "^5.4 || ^6.0",
"symfony/event-dispatcher": "^5.4|^6.0|^7.0", "symfony/framework-bundle": "^5.4 || ^6.0",
"symfony/framework-bundle": "^6.2|^7.0", "symfony/http-kernel": "^5.4 || ^6.0",
"symfony/http-kernel": "^6.2|^7.0" "symfony/phpunit-bridge": "^6.2"
},
"suggest": {
"nyholm/psr7": "For a super lightweight PSR-7/17 implementation"
}, },
"type": "symfony-bridge", "type": "symfony-bridge",
"extra": {
"branch-alias": {
"dev-main": "2.3-dev"
}
},
"autoload": { "autoload": {
"psr-4": { "psr-4": {
"Symfony\\Bridge\\PsrHttpMessage\\": "" "Symfony\\Bridge\\PsrHttpMessage\\": ""
@@ -4775,11 +4761,11 @@
}, },
{ {
"name": "Symfony Community", "name": "Symfony Community",
"homepage": "https://symfony.com/contributors" "homepage": "http://symfony.com/contributors"
} }
], ],
"description": "PSR HTTP message bridge", "description": "PSR HTTP message bridge",
"homepage": "https://symfony.com", "homepage": "http://symfony.com",
"keywords": [ "keywords": [
"http", "http",
"http-message", "http-message",
@@ -4787,7 +4773,8 @@
"psr-7" "psr-7"
], ],
"support": { "support": {
"source": "https://github.com/symfony/psr-http-message-bridge/tree/v6.4.24" "issues": "https://github.com/symfony/psr-http-message-bridge/issues",
"source": "https://github.com/symfony/psr-http-message-bridge/tree/v2.3.1"
}, },
"funding": [ "funding": [
{ {
@@ -4798,39 +4785,34 @@
"url": "https://github.com/fabpot", "url": "https://github.com/fabpot",
"type": "github" "type": "github"
}, },
{
"url": "https://github.com/nicolas-grekas",
"type": "github"
},
{ {
"url": "https://tidelift.com/funding/github/packagist/symfony/symfony", "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
"type": "tidelift" "type": "tidelift"
} }
], ],
"time": "2025-07-10T08:14:14+00:00" "time": "2023-07-26T11:53:26+00:00"
}, },
{ {
"name": "symfony/rate-limiter", "name": "symfony/rate-limiter",
"version": "v6.4.24", "version": "v5.4.40",
"source": { "source": {
"type": "git", "type": "git",
"url": "https://github.com/symfony/rate-limiter.git", "url": "https://github.com/symfony/rate-limiter.git",
"reference": "15a9a10fd0f060243c88ce98d5c29e9cc4b886e7" "reference": "b3de902fc83923b9121169ade2453c41d0819110"
}, },
"dist": { "dist": {
"type": "zip", "type": "zip",
"url": "https://api.github.com/repos/symfony/rate-limiter/zipball/15a9a10fd0f060243c88ce98d5c29e9cc4b886e7", "url": "https://api.github.com/repos/symfony/rate-limiter/zipball/b3de902fc83923b9121169ade2453c41d0819110",
"reference": "15a9a10fd0f060243c88ce98d5c29e9cc4b886e7", "reference": "b3de902fc83923b9121169ade2453c41d0819110",
"shasum": "" "shasum": ""
}, },
"require": { "require": {
"php": ">=8.1", "php": ">=7.2.5",
"symfony/deprecation-contracts": "^2.5|^3", "symfony/lock": "^5.2|^6.0",
"symfony/options-resolver": "^5.4|^6.0|^7.0" "symfony/options-resolver": "^5.1|^6.0"
}, },
"require-dev": { "require-dev": {
"psr/cache": "^1.0|^2.0|^3.0", "psr/cache": "^1.0|^2.0|^3.0"
"symfony/lock": "^5.4|^6.0|^7.0"
}, },
"type": "library", "type": "library",
"autoload": { "autoload": {
@@ -4862,7 +4844,7 @@
"rate-limiter" "rate-limiter"
], ],
"support": { "support": {
"source": "https://github.com/symfony/rate-limiter/tree/v6.4.24" "source": "https://github.com/symfony/rate-limiter/tree/v5.4.40"
}, },
"funding": [ "funding": [
{ {
@@ -4873,49 +4855,52 @@
"url": "https://github.com/fabpot", "url": "https://github.com/fabpot",
"type": "github" "type": "github"
}, },
{
"url": "https://github.com/nicolas-grekas",
"type": "github"
},
{ {
"url": "https://tidelift.com/funding/github/packagist/symfony/symfony", "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
"type": "tidelift" "type": "tidelift"
} }
], ],
"time": "2025-07-10T08:14:14+00:00" "time": "2024-05-31T14:33:22+00:00"
}, },
{ {
"name": "symfony/routing", "name": "symfony/routing",
"version": "v6.4.24", "version": "v5.4.43",
"source": { "source": {
"type": "git", "type": "git",
"url": "https://github.com/symfony/routing.git", "url": "https://github.com/symfony/routing.git",
"reference": "e4f94e625c8e6f910aa004a0042f7b2d398278f5" "reference": "b6f71780bbdd5e93e1c5638671cf0ba42aa8c6d8"
}, },
"dist": { "dist": {
"type": "zip", "type": "zip",
"url": "https://api.github.com/repos/symfony/routing/zipball/e4f94e625c8e6f910aa004a0042f7b2d398278f5", "url": "https://api.github.com/repos/symfony/routing/zipball/b6f71780bbdd5e93e1c5638671cf0ba42aa8c6d8",
"reference": "e4f94e625c8e6f910aa004a0042f7b2d398278f5", "reference": "b6f71780bbdd5e93e1c5638671cf0ba42aa8c6d8",
"shasum": "" "shasum": ""
}, },
"require": { "require": {
"php": ">=8.1", "php": ">=7.2.5",
"symfony/deprecation-contracts": "^2.5|^3" "symfony/deprecation-contracts": "^2.1|^3",
"symfony/polyfill-php80": "^1.16"
}, },
"conflict": { "conflict": {
"doctrine/annotations": "<1.12", "doctrine/annotations": "<1.12",
"symfony/config": "<6.2", "symfony/config": "<5.3",
"symfony/dependency-injection": "<5.4", "symfony/dependency-injection": "<4.4",
"symfony/yaml": "<5.4" "symfony/yaml": "<4.4"
}, },
"require-dev": { "require-dev": {
"doctrine/annotations": "^1.12|^2", "doctrine/annotations": "^1.12|^2",
"psr/log": "^1|^2|^3", "psr/log": "^1|^2|^3",
"symfony/config": "^6.2|^7.0", "symfony/config": "^5.3|^6.0",
"symfony/dependency-injection": "^5.4|^6.0|^7.0", "symfony/dependency-injection": "^4.4|^5.0|^6.0",
"symfony/expression-language": "^5.4|^6.0|^7.0", "symfony/expression-language": "^4.4|^5.0|^6.0",
"symfony/http-foundation": "^5.4|^6.0|^7.0", "symfony/http-foundation": "^4.4|^5.0|^6.0",
"symfony/yaml": "^5.4|^6.0|^7.0" "symfony/yaml": "^4.4|^5.0|^6.0"
},
"suggest": {
"symfony/config": "For using the all-in-one router or any loader",
"symfony/expression-language": "For using expression matching",
"symfony/http-foundation": "For using a Symfony Request object",
"symfony/yaml": "For using the YAML loader"
}, },
"type": "library", "type": "library",
"autoload": { "autoload": {
@@ -4949,7 +4934,7 @@
"url" "url"
], ],
"support": { "support": {
"source": "https://github.com/symfony/routing/tree/v6.4.24" "source": "https://github.com/symfony/routing/tree/v5.4.43"
}, },
"funding": [ "funding": [
{ {
@@ -4960,44 +4945,41 @@
"url": "https://github.com/fabpot", "url": "https://github.com/fabpot",
"type": "github" "type": "github"
}, },
{
"url": "https://github.com/nicolas-grekas",
"type": "github"
},
{ {
"url": "https://tidelift.com/funding/github/packagist/symfony/symfony", "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
"type": "tidelift" "type": "tidelift"
} }
], ],
"time": "2025-07-15T08:46:37+00:00" "time": "2024-08-27T06:36:52+00:00"
}, },
{ {
"name": "symfony/runtime", "name": "symfony/runtime",
"version": "v6.4.24", "version": "v5.4.40",
"source": { "source": {
"type": "git", "type": "git",
"url": "https://github.com/symfony/runtime.git", "url": "https://github.com/symfony/runtime.git",
"reference": "c1cc6721646f546627236c57f835272806087337" "reference": "50096d4ebebb4f9c41b87695868a6e34bdbf7cde"
}, },
"dist": { "dist": {
"type": "zip", "type": "zip",
"url": "https://api.github.com/repos/symfony/runtime/zipball/c1cc6721646f546627236c57f835272806087337", "url": "https://api.github.com/repos/symfony/runtime/zipball/50096d4ebebb4f9c41b87695868a6e34bdbf7cde",
"reference": "c1cc6721646f546627236c57f835272806087337", "reference": "50096d4ebebb4f9c41b87695868a6e34bdbf7cde",
"shasum": "" "shasum": ""
}, },
"require": { "require": {
"composer-plugin-api": "^1.0|^2.0", "composer-plugin-api": "^1.0|^2.0",
"php": ">=8.1" "php": ">=7.2.5",
"symfony/polyfill-php80": "^1.15"
}, },
"conflict": { "conflict": {
"symfony/dotenv": "<5.4" "symfony/dotenv": "<5.1"
}, },
"require-dev": { "require-dev": {
"composer/composer": "^1.0.2|^2.0", "composer/composer": "^1.0.2|^2.0",
"symfony/console": "^5.4.9|^6.0.9|^7.0", "symfony/console": "^4.4.30|^5.4.9|^6.0.9",
"symfony/dotenv": "^5.4|^6.0|^7.0", "symfony/dotenv": "^5.1|^6.0",
"symfony/http-foundation": "^5.4|^6.0|^7.0", "symfony/http-foundation": "^4.4.30|^5.3.7|^6.0",
"symfony/http-kernel": "^5.4|^6.0|^7.0" "symfony/http-kernel": "^4.4.30|^5.3.7|^6.0"
}, },
"type": "composer-plugin", "type": "composer-plugin",
"extra": { "extra": {
@@ -5032,7 +5014,7 @@
"runtime" "runtime"
], ],
"support": { "support": {
"source": "https://github.com/symfony/runtime/tree/v6.4.24" "source": "https://github.com/symfony/runtime/tree/v5.4.40"
}, },
"funding": [ "funding": [
{ {
@@ -5043,84 +5025,71 @@
"url": "https://github.com/fabpot", "url": "https://github.com/fabpot",
"type": "github" "type": "github"
}, },
{
"url": "https://github.com/nicolas-grekas",
"type": "github"
},
{ {
"url": "https://tidelift.com/funding/github/packagist/symfony/symfony", "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
"type": "tidelift" "type": "tidelift"
} }
], ],
"time": "2025-07-10T08:14:14+00:00" "time": "2024-05-31T14:33:22+00:00"
}, },
{ {
"name": "symfony/security-bundle", "name": "symfony/security-bundle",
"version": "v6.4.25", "version": "v5.4.43",
"source": { "source": {
"type": "git", "type": "git",
"url": "https://github.com/symfony/security-bundle.git", "url": "https://github.com/symfony/security-bundle.git",
"reference": "9780abdfc2011f0998f3cb6c7c88ad8453bd34ef" "reference": "f14a15c6c7bb37879d59c129d96c4c07c7d5db32"
}, },
"dist": { "dist": {
"type": "zip", "type": "zip",
"url": "https://api.github.com/repos/symfony/security-bundle/zipball/9780abdfc2011f0998f3cb6c7c88ad8453bd34ef", "url": "https://api.github.com/repos/symfony/security-bundle/zipball/f14a15c6c7bb37879d59c129d96c4c07c7d5db32",
"reference": "9780abdfc2011f0998f3cb6c7c88ad8453bd34ef", "reference": "f14a15c6c7bb37879d59c129d96c4c07c7d5db32",
"shasum": "" "shasum": ""
}, },
"require": { "require": {
"composer-runtime-api": ">=2.1",
"ext-xml": "*", "ext-xml": "*",
"php": ">=8.1", "php": ">=7.2.5",
"symfony/clock": "^6.3|^7.0", "symfony/config": "^4.4|^5.0|^6.0",
"symfony/config": "^6.1|^7.0", "symfony/dependency-injection": "^5.4.43|^6.4.11",
"symfony/dependency-injection": "^6.4.11|^7.1.4", "symfony/deprecation-contracts": "^2.1|^3",
"symfony/deprecation-contracts": "^2.5|^3", "symfony/event-dispatcher": "^5.1|^6.0",
"symfony/event-dispatcher": "^5.4|^6.0|^7.0", "symfony/http-foundation": "^5.3|^6.0",
"symfony/http-foundation": "^6.2|^7.0", "symfony/http-kernel": "^5.3|^6.0",
"symfony/http-kernel": "^6.2", "symfony/password-hasher": "^5.3|^6.0",
"symfony/password-hasher": "^5.4|^6.0|^7.0", "symfony/polyfill-php80": "^1.16",
"symfony/security-core": "^6.2|^7.0", "symfony/security-core": "^5.4|^6.0",
"symfony/security-csrf": "^5.4|^6.0|^7.0", "symfony/security-csrf": "^4.4|^5.0|^6.0",
"symfony/security-http": "^6.3.6|^7.0", "symfony/security-guard": "^5.3",
"symfony/service-contracts": "^2.5|^3" "symfony/security-http": "^5.4.30|^6.3.6",
"symfony/service-contracts": "^1.10|^2|^3"
}, },
"conflict": { "conflict": {
"symfony/browser-kit": "<5.4", "symfony/browser-kit": "<4.4",
"symfony/console": "<5.4", "symfony/console": "<4.4",
"symfony/framework-bundle": "<6.4", "symfony/framework-bundle": "<4.4",
"symfony/http-client": "<5.4", "symfony/ldap": "<5.1",
"symfony/ldap": "<5.4", "symfony/twig-bundle": "<4.4"
"symfony/serializer": "<6.4",
"symfony/twig-bundle": "<5.4",
"symfony/validator": "<6.4"
}, },
"require-dev": { "require-dev": {
"symfony/asset": "^5.4|^6.0|^7.0", "doctrine/annotations": "^1.10.4|^2",
"symfony/browser-kit": "^5.4|^6.0|^7.0", "symfony/asset": "^4.4|^5.0|^6.0",
"symfony/console": "^5.4|^6.0|^7.0", "symfony/browser-kit": "^4.4|^5.0|^6.0",
"symfony/css-selector": "^5.4|^6.0|^7.0", "symfony/console": "^4.4|^5.0|^6.0",
"symfony/dom-crawler": "^5.4|^6.0|^7.0", "symfony/css-selector": "^4.4|^5.0|^6.0",
"symfony/expression-language": "^5.4|^6.0|^7.0", "symfony/dom-crawler": "^4.4|^5.0|^6.0",
"symfony/form": "^5.4|^6.0|^7.0", "symfony/expression-language": "^4.4|^5.0|^6.0",
"symfony/framework-bundle": "^6.4|^7.0", "symfony/form": "^4.4|^5.0|^6.0",
"symfony/http-client": "^5.4|^6.0|^7.0", "symfony/framework-bundle": "^5.3|^6.0",
"symfony/ldap": "^5.4|^6.0|^7.0", "symfony/ldap": "^5.3|^6.0",
"symfony/process": "^5.4|^6.0|^7.0", "symfony/process": "^4.4|^5.0|^6.0",
"symfony/rate-limiter": "^5.4|^6.0|^7.0", "symfony/rate-limiter": "^5.2|^6.0",
"symfony/serializer": "^6.4|^7.0", "symfony/serializer": "^4.4|^5.0|^6.0",
"symfony/translation": "^5.4|^6.0|^7.0", "symfony/translation": "^4.4|^5.0|^6.0",
"symfony/twig-bridge": "^5.4|^6.0|^7.0", "symfony/twig-bridge": "^4.4|^5.0|^6.0",
"symfony/twig-bundle": "^5.4|^6.0|^7.0", "symfony/twig-bundle": "^4.4|^5.0|^6.0",
"symfony/validator": "^6.4|^7.0", "symfony/validator": "^4.4|^5.0|^6.0",
"symfony/yaml": "^5.4|^6.0|^7.0", "symfony/yaml": "^4.4|^5.0|^6.0",
"twig/twig": "^2.13|^3.0.4", "twig/twig": "^2.13|^3.0.4"
"web-token/jwt-checker": "^3.1",
"web-token/jwt-signature-algorithm-ecdsa": "^3.1",
"web-token/jwt-signature-algorithm-eddsa": "^3.1",
"web-token/jwt-signature-algorithm-hmac": "^3.1",
"web-token/jwt-signature-algorithm-none": "^3.1",
"web-token/jwt-signature-algorithm-rsa": "^3.1"
}, },
"type": "symfony-bundle", "type": "symfony-bundle",
"autoload": { "autoload": {
@@ -5148,7 +5117,7 @@
"description": "Provides a tight integration of the Security component into the Symfony full-stack framework", "description": "Provides a tight integration of the Security component into the Symfony full-stack framework",
"homepage": "https://symfony.com", "homepage": "https://symfony.com",
"support": { "support": {
"source": "https://github.com/symfony/security-bundle/tree/v6.4.25" "source": "https://github.com/symfony/security-bundle/tree/v5.4.43"
}, },
"funding": [ "funding": [
{ {
@@ -5159,58 +5128,62 @@
"url": "https://github.com/fabpot", "url": "https://github.com/fabpot",
"type": "github" "type": "github"
}, },
{
"url": "https://github.com/nicolas-grekas",
"type": "github"
},
{ {
"url": "https://tidelift.com/funding/github/packagist/symfony/symfony", "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
"type": "tidelift" "type": "tidelift"
} }
], ],
"time": "2025-08-05T13:23:39+00:00" "time": "2024-08-19T09:13:19+00:00"
}, },
{ {
"name": "symfony/security-core", "name": "symfony/security-core",
"version": "v6.4.25", "version": "v5.4.44",
"source": { "source": {
"type": "git", "type": "git",
"url": "https://github.com/symfony/security-core.git", "url": "https://github.com/symfony/security-core.git",
"reference": "b70b1ac76c89eb76faed5721b0dcad3b61a1d747" "reference": "8089509e8c92e884fa27af56596576320c3b310d"
}, },
"dist": { "dist": {
"type": "zip", "type": "zip",
"url": "https://api.github.com/repos/symfony/security-core/zipball/b70b1ac76c89eb76faed5721b0dcad3b61a1d747", "url": "https://api.github.com/repos/symfony/security-core/zipball/8089509e8c92e884fa27af56596576320c3b310d",
"reference": "b70b1ac76c89eb76faed5721b0dcad3b61a1d747", "reference": "8089509e8c92e884fa27af56596576320c3b310d",
"shasum": "" "shasum": ""
}, },
"require": { "require": {
"php": ">=8.1", "php": ">=7.2.5",
"symfony/deprecation-contracts": "^2.5|^3", "symfony/deprecation-contracts": "^2.1|^3",
"symfony/event-dispatcher-contracts": "^2.5|^3", "symfony/event-dispatcher-contracts": "^1.1|^2|^3",
"symfony/password-hasher": "^5.4|^6.0|^7.0", "symfony/password-hasher": "^5.3|^6.0",
"symfony/service-contracts": "^2.5|^3" "symfony/polyfill-php80": "^1.16",
"symfony/service-contracts": "^1.1.6|^2|^3"
}, },
"conflict": { "conflict": {
"symfony/event-dispatcher": "<5.4", "symfony/event-dispatcher": "<4.4",
"symfony/http-foundation": "<5.4", "symfony/http-foundation": "<5.3",
"symfony/ldap": "<5.4", "symfony/ldap": "<4.4",
"symfony/security-guard": "<5.4", "symfony/security-guard": "<4.4",
"symfony/translation": "<5.4.35|>=6.0,<6.3.12|>=6.4,<6.4.3|>=7.0,<7.0.3", "symfony/translation": "<5.4.35|>=6.0,<6.3.12|>=6.4,<6.4.3",
"symfony/validator": "<5.4" "symfony/validator": "<5.2"
}, },
"require-dev": { "require-dev": {
"psr/cache": "^1.0|^2.0|^3.0", "psr/cache": "^1.0|^2.0|^3.0",
"psr/container": "^1.1|^2.0", "psr/container": "^1.0|^2.0",
"psr/log": "^1|^2|^3", "psr/log": "^1|^2|^3",
"symfony/cache": "^5.4|^6.0|^7.0", "symfony/cache": "^4.4|^5.0|^6.0",
"symfony/event-dispatcher": "^5.4|^6.0|^7.0", "symfony/event-dispatcher": "^4.4|^5.0|^6.0",
"symfony/expression-language": "^5.4|^6.0|^7.0", "symfony/expression-language": "^4.4|^5.0|^6.0",
"symfony/http-foundation": "^5.4|^6.0|^7.0", "symfony/http-foundation": "^5.3|^6.0",
"symfony/ldap": "^5.4|^6.0|^7.0", "symfony/ldap": "^4.4|^5.0|^6.0",
"symfony/string": "^5.4|^6.0|^7.0", "symfony/translation": "^5.4.35|~6.3.12|^6.4.3",
"symfony/translation": "^5.4.35|~6.3.12|^6.4.3|^7.0.3", "symfony/validator": "^5.2|^6.0"
"symfony/validator": "^6.4|^7.0" },
"suggest": {
"psr/container-implementation": "To instantiate the Security class",
"symfony/event-dispatcher": "",
"symfony/expression-language": "For using the expression voter",
"symfony/http-foundation": "",
"symfony/ldap": "For using LDAP integration",
"symfony/validator": "For using the user password constraint"
}, },
"type": "library", "type": "library",
"autoload": { "autoload": {
@@ -5238,7 +5211,7 @@
"description": "Symfony Security Component - Core Library", "description": "Symfony Security Component - Core Library",
"homepage": "https://symfony.com", "homepage": "https://symfony.com",
"support": { "support": {
"source": "https://github.com/symfony/security-core/tree/v6.4.25" "source": "https://github.com/symfony/security-core/tree/v5.4.44"
}, },
"funding": [ "funding": [
{ {
@@ -5249,40 +5222,41 @@
"url": "https://github.com/fabpot", "url": "https://github.com/fabpot",
"type": "github" "type": "github"
}, },
{
"url": "https://github.com/nicolas-grekas",
"type": "github"
},
{ {
"url": "https://tidelift.com/funding/github/packagist/symfony/symfony", "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
"type": "tidelift" "type": "tidelift"
} }
], ],
"time": "2025-08-21T19:23:36+00:00" "time": "2024-09-01T10:41:54+00:00"
}, },
{ {
"name": "symfony/security-csrf", "name": "symfony/security-csrf",
"version": "v6.4.24", "version": "v5.4.40",
"source": { "source": {
"type": "git", "type": "git",
"url": "https://github.com/symfony/security-csrf.git", "url": "https://github.com/symfony/security-csrf.git",
"reference": "9a1efc8c10b86bcedc9233affd10c716b54ca1b7" "reference": "9058d522c1c33d7ba13f4b3c79555cc2c4c16028"
}, },
"dist": { "dist": {
"type": "zip", "type": "zip",
"url": "https://api.github.com/repos/symfony/security-csrf/zipball/9a1efc8c10b86bcedc9233affd10c716b54ca1b7", "url": "https://api.github.com/repos/symfony/security-csrf/zipball/9058d522c1c33d7ba13f4b3c79555cc2c4c16028",
"reference": "9a1efc8c10b86bcedc9233affd10c716b54ca1b7", "reference": "9058d522c1c33d7ba13f4b3c79555cc2c4c16028",
"shasum": "" "shasum": ""
}, },
"require": { "require": {
"php": ">=8.1", "php": ">=7.2.5",
"symfony/security-core": "^5.4|^6.0|^7.0" "symfony/deprecation-contracts": "^2.1|^3",
"symfony/polyfill-php80": "^1.16",
"symfony/security-core": "^4.4|^5.0|^6.0"
}, },
"conflict": { "conflict": {
"symfony/http-foundation": "<5.4" "symfony/http-foundation": "<5.3"
}, },
"require-dev": { "require-dev": {
"symfony/http-foundation": "^5.4|^6.0|^7.0" "symfony/http-foundation": "^5.3|^6.0"
},
"suggest": {
"symfony/http-foundation": "For using the class SessionTokenStorage."
}, },
"type": "library", "type": "library",
"autoload": { "autoload": {
@@ -5310,7 +5284,7 @@
"description": "Symfony Security Component - CSRF Library", "description": "Symfony Security Component - CSRF Library",
"homepage": "https://symfony.com", "homepage": "https://symfony.com",
"support": { "support": {
"source": "https://github.com/symfony/security-csrf/tree/v6.4.24" "source": "https://github.com/symfony/security-csrf/tree/v5.4.40"
}, },
"funding": [ "funding": [
{ {
@@ -5322,7 +5296,71 @@
"type": "github" "type": "github"
}, },
{ {
"url": "https://github.com/nicolas-grekas", "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
"type": "tidelift"
}
],
"time": "2024-05-31T14:33:22+00:00"
},
{
"name": "symfony/security-guard",
"version": "v5.4.40",
"source": {
"type": "git",
"url": "https://github.com/symfony/security-guard.git",
"reference": "d930fd327c290f451c9d8dd7889169195d4484e9"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/symfony/security-guard/zipball/d930fd327c290f451c9d8dd7889169195d4484e9",
"reference": "d930fd327c290f451c9d8dd7889169195d4484e9",
"shasum": ""
},
"require": {
"php": ">=7.2.5",
"symfony/deprecation-contracts": "^2.1|^3",
"symfony/polyfill-php80": "^1.15",
"symfony/security-core": "^5.0",
"symfony/security-http": "^5.3"
},
"require-dev": {
"psr/log": "^1|^2|^3"
},
"type": "library",
"autoload": {
"psr-4": {
"Symfony\\Component\\Security\\Guard\\": ""
},
"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 Security Component - Guard",
"homepage": "https://symfony.com",
"support": {
"source": "https://github.com/symfony/security-guard/tree/v5.4.40"
},
"funding": [
{
"url": "https://symfony.com/sponsor",
"type": "custom"
},
{
"url": "https://github.com/fabpot",
"type": "github" "type": "github"
}, },
{ {
@@ -5330,51 +5368,49 @@
"type": "tidelift" "type": "tidelift"
} }
], ],
"time": "2025-07-10T08:14:14+00:00" "time": "2024-05-31T14:33:22+00:00"
}, },
{ {
"name": "symfony/security-http", "name": "symfony/security-http",
"version": "v6.4.25", "version": "v5.4.44",
"source": { "source": {
"type": "git", "type": "git",
"url": "https://github.com/symfony/security-http.git", "url": "https://github.com/symfony/security-http.git",
"reference": "878667b04451f2e17b4161237379e5d062575181" "reference": "c0f81598425c170807f19b9a5413ad05323f317b"
}, },
"dist": { "dist": {
"type": "zip", "type": "zip",
"url": "https://api.github.com/repos/symfony/security-http/zipball/878667b04451f2e17b4161237379e5d062575181", "url": "https://api.github.com/repos/symfony/security-http/zipball/c0f81598425c170807f19b9a5413ad05323f317b",
"reference": "878667b04451f2e17b4161237379e5d062575181", "reference": "c0f81598425c170807f19b9a5413ad05323f317b",
"shasum": "" "shasum": ""
}, },
"require": { "require": {
"php": ">=8.1", "php": ">=7.2.5",
"symfony/deprecation-contracts": "^2.5|^3", "symfony/deprecation-contracts": "^2.1|^3",
"symfony/http-foundation": "^6.2|^7.0", "symfony/http-foundation": "^5.3|^6.0",
"symfony/http-kernel": "^6.3|^7.0", "symfony/http-kernel": "^5.3|^6.0",
"symfony/polyfill-mbstring": "~1.0", "symfony/polyfill-mbstring": "~1.0",
"symfony/property-access": "^5.4|^6.0|^7.0", "symfony/polyfill-php80": "^1.16",
"symfony/security-core": "^6.4|^7.0", "symfony/property-access": "^4.4|^5.0|^6.0",
"symfony/service-contracts": "^2.5|^3" "symfony/security-core": "^5.4.19|~6.0.19|~6.1.11|^6.2.5",
"symfony/service-contracts": "^1.10|^2|^3"
}, },
"conflict": { "conflict": {
"symfony/clock": "<6.3", "symfony/event-dispatcher": "<4.3",
"symfony/event-dispatcher": "<5.4.9|>=6,<6.0.9", "symfony/security-bundle": "<5.3",
"symfony/http-client-contracts": "<3.0", "symfony/security-csrf": "<4.4"
"symfony/security-bundle": "<5.4",
"symfony/security-csrf": "<5.4"
}, },
"require-dev": { "require-dev": {
"psr/log": "^1|^2|^3", "psr/log": "^1|^2|^3",
"symfony/cache": "^5.4|^6.0|^7.0", "symfony/cache": "^4.4|^5.0|^6.0",
"symfony/clock": "^6.3|^7.0", "symfony/rate-limiter": "^5.2|^6.0",
"symfony/expression-language": "^5.4|^6.0|^7.0", "symfony/routing": "^4.4|^5.0|^6.0",
"symfony/http-client-contracts": "^3.0", "symfony/security-csrf": "^4.4|^5.0|^6.0",
"symfony/rate-limiter": "^5.4|^6.0|^7.0", "symfony/translation": "^4.4|^5.0|^6.0"
"symfony/routing": "^5.4|^6.0|^7.0", },
"symfony/security-csrf": "^5.4|^6.0|^7.0", "suggest": {
"symfony/translation": "^5.4|^6.0|^7.0", "symfony/routing": "For using the HttpUtils class to create sub-requests, redirect the user, and match URLs",
"web-token/jwt-checker": "^3.1", "symfony/security-csrf": "For using tokens to protect authentication/logout attempts"
"web-token/jwt-signature-algorithm-ecdsa": "^3.1"
}, },
"type": "library", "type": "library",
"autoload": { "autoload": {
@@ -5402,7 +5438,7 @@
"description": "Symfony Security Component - HTTP Integration", "description": "Symfony Security Component - HTTP Integration",
"homepage": "https://symfony.com", "homepage": "https://symfony.com",
"support": { "support": {
"source": "https://github.com/symfony/security-http/tree/v6.4.25" "source": "https://github.com/symfony/security-http/tree/v5.4.44"
}, },
"funding": [ "funding": [
{ {
@@ -5413,56 +5449,52 @@
"url": "https://github.com/fabpot", "url": "https://github.com/fabpot",
"type": "github" "type": "github"
}, },
{
"url": "https://github.com/nicolas-grekas",
"type": "github"
},
{ {
"url": "https://tidelift.com/funding/github/packagist/symfony/symfony", "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
"type": "tidelift" "type": "tidelift"
} }
], ],
"time": "2025-08-21T13:09:57+00:00" "time": "2024-09-11T06:50:28+00:00"
}, },
{ {
"name": "symfony/service-contracts", "name": "symfony/service-contracts",
"version": "v3.6.0", "version": "v2.5.3",
"source": { "source": {
"type": "git", "type": "git",
"url": "https://github.com/symfony/service-contracts.git", "url": "https://github.com/symfony/service-contracts.git",
"reference": "f021b05a130d35510bd6b25fe9053c2a8a15d5d4" "reference": "a2329596ddc8fd568900e3fc76cba42489ecc7f3"
}, },
"dist": { "dist": {
"type": "zip", "type": "zip",
"url": "https://api.github.com/repos/symfony/service-contracts/zipball/f021b05a130d35510bd6b25fe9053c2a8a15d5d4", "url": "https://api.github.com/repos/symfony/service-contracts/zipball/a2329596ddc8fd568900e3fc76cba42489ecc7f3",
"reference": "f021b05a130d35510bd6b25fe9053c2a8a15d5d4", "reference": "a2329596ddc8fd568900e3fc76cba42489ecc7f3",
"shasum": "" "shasum": ""
}, },
"require": { "require": {
"php": ">=8.1", "php": ">=7.2.5",
"psr/container": "^1.1|^2.0", "psr/container": "^1.1",
"symfony/deprecation-contracts": "^2.5|^3" "symfony/deprecation-contracts": "^2.1|^3"
}, },
"conflict": { "conflict": {
"ext-psr": "<1.1|>=2" "ext-psr": "<1.1|>=2"
}, },
"suggest": {
"symfony/service-implementation": ""
},
"type": "library", "type": "library",
"extra": { "extra": {
"thanks": {
"url": "https://github.com/symfony/contracts",
"name": "symfony/contracts"
},
"branch-alias": { "branch-alias": {
"dev-main": "3.6-dev" "dev-main": "2.5-dev"
},
"thanks": {
"name": "symfony/contracts",
"url": "https://github.com/symfony/contracts"
} }
}, },
"autoload": { "autoload": {
"psr-4": { "psr-4": {
"Symfony\\Contracts\\Service\\": "" "Symfony\\Contracts\\Service\\": ""
}, }
"exclude-from-classmap": [
"/Test/"
]
}, },
"notification-url": "https://packagist.org/downloads/", "notification-url": "https://packagist.org/downloads/",
"license": [ "license": [
@@ -5489,7 +5521,7 @@
"standards" "standards"
], ],
"support": { "support": {
"source": "https://github.com/symfony/service-contracts/tree/v3.6.0" "source": "https://github.com/symfony/service-contracts/tree/v2.5.3"
}, },
"funding": [ "funding": [
{ {
@@ -5505,38 +5537,38 @@
"type": "tidelift" "type": "tidelift"
} }
], ],
"time": "2025-04-25T09:37:31+00:00" "time": "2023-04-21T15:04:16+00:00"
}, },
{ {
"name": "symfony/string", "name": "symfony/string",
"version": "v6.4.25", "version": "v5.4.44",
"source": { "source": {
"type": "git", "type": "git",
"url": "https://github.com/symfony/string.git", "url": "https://github.com/symfony/string.git",
"reference": "7cdec7edfaf2cdd9c18901e35bcf9653d6209ff1" "reference": "832caa16b6d9aac6bf11747315225f5aba384c24"
}, },
"dist": { "dist": {
"type": "zip", "type": "zip",
"url": "https://api.github.com/repos/symfony/string/zipball/7cdec7edfaf2cdd9c18901e35bcf9653d6209ff1", "url": "https://api.github.com/repos/symfony/string/zipball/832caa16b6d9aac6bf11747315225f5aba384c24",
"reference": "7cdec7edfaf2cdd9c18901e35bcf9653d6209ff1", "reference": "832caa16b6d9aac6bf11747315225f5aba384c24",
"shasum": "" "shasum": ""
}, },
"require": { "require": {
"php": ">=8.1", "php": ">=7.2.5",
"symfony/polyfill-ctype": "~1.8", "symfony/polyfill-ctype": "~1.8",
"symfony/polyfill-intl-grapheme": "~1.0", "symfony/polyfill-intl-grapheme": "~1.0",
"symfony/polyfill-intl-normalizer": "~1.0", "symfony/polyfill-intl-normalizer": "~1.0",
"symfony/polyfill-mbstring": "~1.0" "symfony/polyfill-mbstring": "~1.0",
"symfony/polyfill-php80": "~1.15"
}, },
"conflict": { "conflict": {
"symfony/translation-contracts": "<2.5" "symfony/translation-contracts": ">=3.0"
}, },
"require-dev": { "require-dev": {
"symfony/error-handler": "^5.4|^6.0|^7.0", "symfony/error-handler": "^4.4|^5.0|^6.0",
"symfony/http-client": "^5.4|^6.0|^7.0", "symfony/http-client": "^4.4|^5.0|^6.0",
"symfony/intl": "^6.2|^7.0", "symfony/translation-contracts": "^1.1|^2",
"symfony/translation-contracts": "^2.5|^3.0", "symfony/var-exporter": "^4.4|^5.0|^6.0"
"symfony/var-exporter": "^5.4|^6.0|^7.0"
}, },
"type": "library", "type": "library",
"autoload": { "autoload": {
@@ -5575,7 +5607,7 @@
"utf8" "utf8"
], ],
"support": { "support": {
"source": "https://github.com/symfony/string/tree/v6.4.25" "source": "https://github.com/symfony/string/tree/v5.4.44"
}, },
"funding": [ "funding": [
{ {
@@ -5586,64 +5618,62 @@
"url": "https://github.com/fabpot", "url": "https://github.com/fabpot",
"type": "github" "type": "github"
}, },
{
"url": "https://github.com/nicolas-grekas",
"type": "github"
},
{ {
"url": "https://tidelift.com/funding/github/packagist/symfony/symfony", "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
"type": "tidelift" "type": "tidelift"
} }
], ],
"time": "2025-08-22T12:33:20+00:00" "time": "2024-09-20T07:56:40+00:00"
}, },
{ {
"name": "symfony/translation", "name": "symfony/translation",
"version": "v6.4.24", "version": "v5.4.44",
"source": { "source": {
"type": "git", "type": "git",
"url": "https://github.com/symfony/translation.git", "url": "https://github.com/symfony/translation.git",
"reference": "300b72643e89de0734d99a9e3f8494a3ef6936e1" "reference": "6fed3a20b5b87ee9cdd9dacf545922b8fd475921"
}, },
"dist": { "dist": {
"type": "zip", "type": "zip",
"url": "https://api.github.com/repos/symfony/translation/zipball/300b72643e89de0734d99a9e3f8494a3ef6936e1", "url": "https://api.github.com/repos/symfony/translation/zipball/6fed3a20b5b87ee9cdd9dacf545922b8fd475921",
"reference": "300b72643e89de0734d99a9e3f8494a3ef6936e1", "reference": "6fed3a20b5b87ee9cdd9dacf545922b8fd475921",
"shasum": "" "shasum": ""
}, },
"require": { "require": {
"php": ">=8.1", "php": ">=7.2.5",
"symfony/deprecation-contracts": "^2.5|^3", "symfony/deprecation-contracts": "^2.1|^3",
"symfony/polyfill-mbstring": "~1.0", "symfony/polyfill-mbstring": "~1.0",
"symfony/translation-contracts": "^2.5|^3.0" "symfony/polyfill-php80": "^1.16",
"symfony/translation-contracts": "^2.3"
}, },
"conflict": { "conflict": {
"symfony/config": "<5.4", "symfony/config": "<4.4",
"symfony/console": "<5.4", "symfony/console": "<5.3",
"symfony/dependency-injection": "<5.4", "symfony/dependency-injection": "<5.0",
"symfony/http-client-contracts": "<2.5", "symfony/http-kernel": "<5.0",
"symfony/http-kernel": "<5.4", "symfony/twig-bundle": "<5.0",
"symfony/service-contracts": "<2.5", "symfony/yaml": "<4.4"
"symfony/twig-bundle": "<5.4",
"symfony/yaml": "<5.4"
}, },
"provide": { "provide": {
"symfony/translation-implementation": "2.3|3.0" "symfony/translation-implementation": "2.3"
}, },
"require-dev": { "require-dev": {
"nikic/php-parser": "^4.18|^5.0",
"psr/log": "^1|^2|^3", "psr/log": "^1|^2|^3",
"symfony/config": "^5.4|^6.0|^7.0", "symfony/config": "^4.4|^5.0|^6.0",
"symfony/console": "^5.4|^6.0|^7.0", "symfony/console": "^5.4|^6.0",
"symfony/dependency-injection": "^5.4|^6.0|^7.0", "symfony/dependency-injection": "^5.0|^6.0",
"symfony/finder": "^5.4|^6.0|^7.0", "symfony/finder": "^4.4|^5.0|^6.0",
"symfony/http-client-contracts": "^2.5|^3.0", "symfony/http-client-contracts": "^1.1|^2.0|^3.0",
"symfony/http-kernel": "^5.4|^6.0|^7.0", "symfony/http-kernel": "^5.0|^6.0",
"symfony/intl": "^5.4|^6.0|^7.0", "symfony/intl": "^4.4|^5.0|^6.0",
"symfony/polyfill-intl-icu": "^1.21", "symfony/polyfill-intl-icu": "^1.21",
"symfony/routing": "^5.4|^6.0|^7.0", "symfony/service-contracts": "^1.1.2|^2|^3",
"symfony/service-contracts": "^2.5|^3", "symfony/yaml": "^4.4|^5.0|^6.0"
"symfony/yaml": "^5.4|^6.0|^7.0" },
"suggest": {
"psr/log-implementation": "To use logging capability in translator",
"symfony/config": "",
"symfony/yaml": ""
}, },
"type": "library", "type": "library",
"autoload": { "autoload": {
@@ -5674,7 +5704,7 @@
"description": "Provides tools to internationalize your application", "description": "Provides tools to internationalize your application",
"homepage": "https://symfony.com", "homepage": "https://symfony.com",
"support": { "support": {
"source": "https://github.com/symfony/translation/tree/v6.4.24" "source": "https://github.com/symfony/translation/tree/v5.4.44"
}, },
"funding": [ "funding": [
{ {
@@ -5685,51 +5715,47 @@
"url": "https://github.com/fabpot", "url": "https://github.com/fabpot",
"type": "github" "type": "github"
}, },
{
"url": "https://github.com/nicolas-grekas",
"type": "github"
},
{ {
"url": "https://tidelift.com/funding/github/packagist/symfony/symfony", "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
"type": "tidelift" "type": "tidelift"
} }
], ],
"time": "2025-07-30T17:30:48+00:00" "time": "2024-09-15T08:12:35+00:00"
}, },
{ {
"name": "symfony/translation-contracts", "name": "symfony/translation-contracts",
"version": "v3.6.0", "version": "v2.5.3",
"source": { "source": {
"type": "git", "type": "git",
"url": "https://github.com/symfony/translation-contracts.git", "url": "https://github.com/symfony/translation-contracts.git",
"reference": "df210c7a2573f1913b2d17cc95f90f53a73d8f7d" "reference": "b0073a77ac0b7ea55131020e87b1e3af540f4664"
}, },
"dist": { "dist": {
"type": "zip", "type": "zip",
"url": "https://api.github.com/repos/symfony/translation-contracts/zipball/df210c7a2573f1913b2d17cc95f90f53a73d8f7d", "url": "https://api.github.com/repos/symfony/translation-contracts/zipball/b0073a77ac0b7ea55131020e87b1e3af540f4664",
"reference": "df210c7a2573f1913b2d17cc95f90f53a73d8f7d", "reference": "b0073a77ac0b7ea55131020e87b1e3af540f4664",
"shasum": "" "shasum": ""
}, },
"require": { "require": {
"php": ">=8.1" "php": ">=7.2.5"
},
"suggest": {
"symfony/translation-implementation": ""
}, },
"type": "library", "type": "library",
"extra": { "extra": {
"thanks": {
"url": "https://github.com/symfony/contracts",
"name": "symfony/contracts"
},
"branch-alias": { "branch-alias": {
"dev-main": "3.6-dev" "dev-main": "2.5-dev"
},
"thanks": {
"name": "symfony/contracts",
"url": "https://github.com/symfony/contracts"
} }
}, },
"autoload": { "autoload": {
"psr-4": { "psr-4": {
"Symfony\\Contracts\\Translation\\": "" "Symfony\\Contracts\\Translation\\": ""
}, }
"exclude-from-classmap": [
"/Test/"
]
}, },
"notification-url": "https://packagist.org/downloads/", "notification-url": "https://packagist.org/downloads/",
"license": [ "license": [
@@ -5756,7 +5782,7 @@
"standards" "standards"
], ],
"support": { "support": {
"source": "https://github.com/symfony/translation-contracts/tree/v3.6.0" "source": "https://github.com/symfony/translation-contracts/tree/v2.5.3"
}, },
"funding": [ "funding": [
{ {
@@ -5772,73 +5798,85 @@
"type": "tidelift" "type": "tidelift"
} }
], ],
"time": "2024-09-27T08:32:26+00:00" "time": "2024-01-23T13:51:25+00:00"
}, },
{ {
"name": "symfony/twig-bridge", "name": "symfony/twig-bridge",
"version": "v6.4.25", "version": "v5.4.44",
"source": { "source": {
"type": "git", "type": "git",
"url": "https://github.com/symfony/twig-bridge.git", "url": "https://github.com/symfony/twig-bridge.git",
"reference": "9d13e87591c9de3221c8d6f23cd9a2b5958607bf" "reference": "d049fbe0e5ba0ad758f647fa8f99e840bca43f6f"
}, },
"dist": { "dist": {
"type": "zip", "type": "zip",
"url": "https://api.github.com/repos/symfony/twig-bridge/zipball/9d13e87591c9de3221c8d6f23cd9a2b5958607bf", "url": "https://api.github.com/repos/symfony/twig-bridge/zipball/d049fbe0e5ba0ad758f647fa8f99e840bca43f6f",
"reference": "9d13e87591c9de3221c8d6f23cd9a2b5958607bf", "reference": "d049fbe0e5ba0ad758f647fa8f99e840bca43f6f",
"shasum": "" "shasum": ""
}, },
"require": { "require": {
"php": ">=8.1", "php": ">=7.2.5",
"symfony/deprecation-contracts": "^2.5|^3", "symfony/polyfill-php80": "^1.16",
"symfony/translation-contracts": "^2.5|^3", "symfony/translation-contracts": "^1.1|^2|^3",
"twig/twig": "^2.13|^3.0.4" "twig/twig": "^2.13|^3.0.4"
}, },
"conflict": { "conflict": {
"phpdocumentor/reflection-docblock": "<3.2.2", "phpdocumentor/reflection-docblock": "<3.2.2",
"phpdocumentor/type-resolver": "<1.4.0", "phpdocumentor/type-resolver": "<1.4.0",
"symfony/console": "<5.4", "symfony/console": "<5.3",
"symfony/form": "<6.3", "symfony/form": "<5.4.21|>=6,<6.2.7",
"symfony/http-foundation": "<5.4", "symfony/http-foundation": "<5.3",
"symfony/http-kernel": "<6.4", "symfony/http-kernel": "<4.4",
"symfony/mime": "<6.2", "symfony/translation": "<5.2",
"symfony/serializer": "<6.4", "symfony/workflow": "<5.2"
"symfony/translation": "<5.4",
"symfony/workflow": "<5.4"
}, },
"require-dev": { "require-dev": {
"doctrine/annotations": "^1.12|^2",
"egulias/email-validator": "^2.1.10|^3|^4", "egulias/email-validator": "^2.1.10|^3|^4",
"league/html-to-markdown": "^5.0",
"phpdocumentor/reflection-docblock": "^3.0|^4.0|^5.0", "phpdocumentor/reflection-docblock": "^3.0|^4.0|^5.0",
"symfony/asset": "^5.4|^6.0|^7.0", "symfony/asset": "^4.4|^5.0|^6.0",
"symfony/asset-mapper": "^6.3|^7.0", "symfony/console": "^5.3|^6.0",
"symfony/console": "^5.4|^6.0|^7.0", "symfony/dependency-injection": "^4.4|^5.0|^6.0",
"symfony/dependency-injection": "^5.4|^6.0|^7.0", "symfony/expression-language": "^4.4|^5.0|^6.0",
"symfony/expression-language": "^5.4|^6.0|^7.0", "symfony/finder": "^4.4|^5.0|^6.0",
"symfony/finder": "^5.4|^6.0|^7.0", "symfony/form": "^5.4.21|^6.2.7",
"symfony/form": "^6.4.20|^7.2.5", "symfony/http-foundation": "^5.3|^6.0",
"symfony/html-sanitizer": "^6.1|^7.0", "symfony/http-kernel": "^4.4|^5.0|^6.0",
"symfony/http-foundation": "^5.4|^6.0|^7.0", "symfony/intl": "^4.4|^5.0|^6.0",
"symfony/http-kernel": "^6.4|^7.0", "symfony/mime": "^5.2|^6.0",
"symfony/intl": "^5.4|^6.0|^7.0",
"symfony/mime": "^6.2|^7.0",
"symfony/polyfill-intl-icu": "~1.0", "symfony/polyfill-intl-icu": "~1.0",
"symfony/property-info": "^5.4|^6.0|^7.0", "symfony/property-info": "^4.4|^5.1|^6.0",
"symfony/routing": "^5.4|^6.0|^7.0", "symfony/routing": "^4.4|^5.0|^6.0",
"symfony/security-acl": "^2.8|^3.0", "symfony/security-acl": "^2.8|^3.0",
"symfony/security-core": "^5.4|^6.0|^7.0", "symfony/security-core": "^4.4|^5.0|^6.0",
"symfony/security-csrf": "^5.4|^6.0|^7.0", "symfony/security-csrf": "^4.4|^5.0|^6.0",
"symfony/security-http": "^5.4|^6.0|^7.0", "symfony/security-http": "^4.4|^5.0|^6.0",
"symfony/serializer": "^6.4.3|^7.0.3", "symfony/serializer": "^5.4.35|~6.3.12|^6.4.3",
"symfony/stopwatch": "^5.4|^6.0|^7.0", "symfony/stopwatch": "^4.4|^5.0|^6.0",
"symfony/translation": "^6.1|^7.0", "symfony/translation": "^5.2|^6.0",
"symfony/web-link": "^5.4|^6.0|^7.0", "symfony/web-link": "^4.4|^5.0|^6.0",
"symfony/workflow": "^5.4|^6.0|^7.0", "symfony/workflow": "^5.2|^6.0",
"symfony/yaml": "^5.4|^6.0|^7.0", "symfony/yaml": "^4.4|^5.0|^6.0",
"twig/cssinliner-extra": "^2.12|^3", "twig/cssinliner-extra": "^2.12|^3",
"twig/inky-extra": "^2.12|^3", "twig/inky-extra": "^2.12|^3",
"twig/markdown-extra": "^2.12|^3" "twig/markdown-extra": "^2.12|^3"
}, },
"suggest": {
"symfony/asset": "For using the AssetExtension",
"symfony/expression-language": "For using the ExpressionExtension",
"symfony/finder": "",
"symfony/form": "For using the FormExtension",
"symfony/http-kernel": "For using the HttpKernelExtension",
"symfony/routing": "For using the RoutingExtension",
"symfony/security-core": "For using the SecurityExtension",
"symfony/security-csrf": "For using the CsrfExtension",
"symfony/security-http": "For using the LogoutUrlExtension",
"symfony/stopwatch": "For using the StopwatchExtension",
"symfony/translation": "For using the TranslationExtension",
"symfony/var-dumper": "For using the DumpExtension",
"symfony/web-link": "For using the WebLinkExtension",
"symfony/yaml": "For using the YamlExtension"
},
"type": "symfony-bridge", "type": "symfony-bridge",
"autoload": { "autoload": {
"psr-4": { "psr-4": {
@@ -5865,7 +5903,7 @@
"description": "Provides integration for Twig with various Symfony components", "description": "Provides integration for Twig with various Symfony components",
"homepage": "https://symfony.com", "homepage": "https://symfony.com",
"support": { "support": {
"source": "https://github.com/symfony/twig-bridge/tree/v6.4.25" "source": "https://github.com/symfony/twig-bridge/tree/v5.4.44"
}, },
"funding": [ "funding": [
{ {
@@ -5876,56 +5914,58 @@
"url": "https://github.com/fabpot", "url": "https://github.com/fabpot",
"type": "github" "type": "github"
}, },
{
"url": "https://github.com/nicolas-grekas",
"type": "github"
},
{ {
"url": "https://tidelift.com/funding/github/packagist/symfony/symfony", "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
"type": "tidelift" "type": "tidelift"
} }
], ],
"time": "2025-08-13T09:41:44+00:00" "time": "2024-09-11T13:27:43+00:00"
}, },
{ {
"name": "symfony/twig-bundle", "name": "symfony/twig-bundle",
"version": "v6.4.24", "version": "v5.4.44",
"source": { "source": {
"type": "git", "type": "git",
"url": "https://github.com/symfony/twig-bundle.git", "url": "https://github.com/symfony/twig-bundle.git",
"reference": "3b48b6e8225495c6d2438828982b4d219ca565ba" "reference": "b94414b3b9e0c523677c0bf31e8975231b55f18a"
}, },
"dist": { "dist": {
"type": "zip", "type": "zip",
"url": "https://api.github.com/repos/symfony/twig-bundle/zipball/3b48b6e8225495c6d2438828982b4d219ca565ba", "url": "https://api.github.com/repos/symfony/twig-bundle/zipball/b94414b3b9e0c523677c0bf31e8975231b55f18a",
"reference": "3b48b6e8225495c6d2438828982b4d219ca565ba", "reference": "b94414b3b9e0c523677c0bf31e8975231b55f18a",
"shasum": "" "shasum": ""
}, },
"require": { "require": {
"composer-runtime-api": ">=2.1", "php": ">=7.2.5",
"php": ">=8.1", "symfony/config": "^4.4|^5.0|^6.0",
"symfony/config": "^6.1|^7.0", "symfony/deprecation-contracts": "^2.1|^3",
"symfony/dependency-injection": "^6.1|^7.0", "symfony/http-foundation": "^4.4|^5.0|^6.0",
"symfony/http-foundation": "^5.4|^6.0|^7.0", "symfony/http-kernel": "^5.0|^6.0",
"symfony/http-kernel": "^6.2", "symfony/polyfill-ctype": "~1.8",
"symfony/twig-bridge": "^6.4", "symfony/polyfill-php80": "^1.16",
"symfony/twig-bridge": "^5.3|^6.0",
"twig/twig": "^2.13|^3.0.4" "twig/twig": "^2.13|^3.0.4"
}, },
"conflict": { "conflict": {
"symfony/framework-bundle": "<5.4", "symfony/dependency-injection": "<5.3",
"symfony/translation": "<5.4" "symfony/framework-bundle": "<5.0",
"symfony/service-contracts": ">=3.0",
"symfony/translation": "<5.0"
}, },
"require-dev": { "require-dev": {
"symfony/asset": "^5.4|^6.0|^7.0", "doctrine/annotations": "^1.10.4|^2",
"symfony/expression-language": "^5.4|^6.0|^7.0", "doctrine/cache": "^1.0|^2.0",
"symfony/finder": "^5.4|^6.0|^7.0", "symfony/asset": "^4.4|^5.0|^6.0",
"symfony/form": "^5.4|^6.0|^7.0", "symfony/dependency-injection": "^5.3|^6.0",
"symfony/framework-bundle": "^5.4|^6.0|^7.0", "symfony/expression-language": "^4.4|^5.0|^6.0",
"symfony/routing": "^5.4|^6.0|^7.0", "symfony/finder": "^4.4|^5.0|^6.0",
"symfony/stopwatch": "^5.4|^6.0|^7.0", "symfony/form": "^4.4|^5.0|^6.0",
"symfony/translation": "^5.4|^6.0|^7.0", "symfony/framework-bundle": "^5.0|^6.0",
"symfony/web-link": "^5.4|^6.0|^7.0", "symfony/routing": "^4.4|^5.0|^6.0",
"symfony/yaml": "^5.4|^6.0|^7.0" "symfony/stopwatch": "^4.4|^5.0|^6.0",
"symfony/translation": "^5.0|^6.0",
"symfony/web-link": "^4.4|^5.0|^6.0",
"symfony/yaml": "^4.4|^5.0|^6.0"
}, },
"type": "symfony-bundle", "type": "symfony-bundle",
"autoload": { "autoload": {
@@ -5953,7 +5993,7 @@
"description": "Provides a tight integration of Twig into the Symfony full-stack framework", "description": "Provides a tight integration of Twig into the Symfony full-stack framework",
"homepage": "https://symfony.com", "homepage": "https://symfony.com",
"support": { "support": {
"source": "https://github.com/symfony/twig-bundle/tree/v6.4.24" "source": "https://github.com/symfony/twig-bundle/tree/v5.4.44"
}, },
"funding": [ "funding": [
{ {
@@ -5964,68 +6004,80 @@
"url": "https://github.com/fabpot", "url": "https://github.com/fabpot",
"type": "github" "type": "github"
}, },
{
"url": "https://github.com/nicolas-grekas",
"type": "github"
},
{ {
"url": "https://tidelift.com/funding/github/packagist/symfony/symfony", "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
"type": "tidelift" "type": "tidelift"
} }
], ],
"time": "2025-07-10T08:14:14+00:00" "time": "2024-09-07T13:25:07+00:00"
}, },
{ {
"name": "symfony/validator", "name": "symfony/validator",
"version": "v6.4.25", "version": "v5.4.44",
"source": { "source": {
"type": "git", "type": "git",
"url": "https://github.com/symfony/validator.git", "url": "https://github.com/symfony/validator.git",
"reference": "9352177c0e937793423053846f80bee805552324" "reference": "5b061420daf15b58e1599cd2191b0780ddcd2157"
}, },
"dist": { "dist": {
"type": "zip", "type": "zip",
"url": "https://api.github.com/repos/symfony/validator/zipball/9352177c0e937793423053846f80bee805552324", "url": "https://api.github.com/repos/symfony/validator/zipball/5b061420daf15b58e1599cd2191b0780ddcd2157",
"reference": "9352177c0e937793423053846f80bee805552324", "reference": "5b061420daf15b58e1599cd2191b0780ddcd2157",
"shasum": "" "shasum": ""
}, },
"require": { "require": {
"php": ">=8.1", "php": ">=7.2.5",
"symfony/deprecation-contracts": "^2.5|^3", "symfony/deprecation-contracts": "^2.1|^3",
"symfony/polyfill-ctype": "~1.8", "symfony/polyfill-ctype": "~1.8",
"symfony/polyfill-mbstring": "~1.0", "symfony/polyfill-mbstring": "~1.0",
"symfony/polyfill-php83": "^1.27", "symfony/polyfill-php73": "~1.0",
"symfony/translation-contracts": "^2.5|^3" "symfony/polyfill-php80": "^1.16",
"symfony/polyfill-php81": "^1.22",
"symfony/translation-contracts": "^1.1|^2|^3"
}, },
"conflict": { "conflict": {
"doctrine/annotations": "<1.13", "doctrine/annotations": "<1.13",
"doctrine/cache": "<1.11",
"doctrine/lexer": "<1.1", "doctrine/lexer": "<1.1",
"symfony/dependency-injection": "<5.4", "symfony/dependency-injection": "<4.4",
"symfony/expression-language": "<5.4", "symfony/expression-language": "<5.1",
"symfony/http-kernel": "<5.4", "symfony/http-kernel": "<4.4",
"symfony/intl": "<5.4", "symfony/intl": "<4.4",
"symfony/property-info": "<5.4", "symfony/property-info": "<5.3",
"symfony/translation": "<5.4.35|>=6.0,<6.3.12|>=6.4,<6.4.3|>=7.0,<7.0.3", "symfony/translation": "<5.4.35|>=6.0,<6.3.12|>=6.4,<6.4.3",
"symfony/yaml": "<5.4" "symfony/yaml": "<4.4"
}, },
"require-dev": { "require-dev": {
"doctrine/annotations": "^1.13|^2", "doctrine/annotations": "^1.13|^2",
"doctrine/cache": "^1.11|^2.0",
"egulias/email-validator": "^2.1.10|^3|^4", "egulias/email-validator": "^2.1.10|^3|^4",
"symfony/cache": "^5.4|^6.0|^7.0", "symfony/cache": "^4.4|^5.0|^6.0",
"symfony/config": "^5.4|^6.0|^7.0", "symfony/config": "^4.4|^5.0|^6.0",
"symfony/console": "^5.4|^6.0|^7.0", "symfony/console": "^4.4|^5.0|^6.0",
"symfony/dependency-injection": "^5.4|^6.0|^7.0", "symfony/dependency-injection": "^4.4|^5.0|^6.0",
"symfony/expression-language": "^5.4|^6.0|^7.0", "symfony/expression-language": "^5.1|^6.0",
"symfony/finder": "^5.4|^6.0|^7.0", "symfony/finder": "^4.4|^5.0|^6.0",
"symfony/http-client": "^5.4|^6.0|^7.0", "symfony/http-client": "^4.4|^5.0|^6.0",
"symfony/http-foundation": "^5.4|^6.0|^7.0", "symfony/http-foundation": "^4.4|^5.0|^6.0",
"symfony/http-kernel": "^5.4|^6.0|^7.0", "symfony/http-kernel": "^4.4|^5.0|^6.0",
"symfony/intl": "^5.4|^6.0|^7.0", "symfony/intl": "^4.4|^5.0|^6.0",
"symfony/mime": "^5.4|^6.0|^7.0", "symfony/mime": "^4.4|^5.0|^6.0",
"symfony/property-access": "^5.4|^6.0|^7.0", "symfony/property-access": "^5.4|^6.0",
"symfony/property-info": "^5.4|^6.0|^7.0", "symfony/property-info": "^5.3|^6.0",
"symfony/translation": "^5.4.35|~6.3.12|^6.4.3|^7.0.3", "symfony/translation": "^5.4.35|~6.3.12|^6.4.3",
"symfony/yaml": "^5.4|^6.0|^7.0" "symfony/yaml": "^4.4|^5.0|^6.0"
},
"suggest": {
"egulias/email-validator": "Strict (RFC compliant) email validation",
"psr/cache-implementation": "For using the mapping cache.",
"symfony/config": "",
"symfony/expression-language": "For using the Expression validator and the ExpressionLanguageSyntax constraints",
"symfony/http-foundation": "",
"symfony/intl": "",
"symfony/property-access": "For accessing properties within comparison constraints",
"symfony/property-info": "To automatically add NotNull and Type constraints",
"symfony/translation": "For translating validation errors.",
"symfony/yaml": ""
}, },
"type": "library", "type": "library",
"autoload": { "autoload": {
@@ -6054,7 +6106,7 @@
"description": "Provides tools to validate values", "description": "Provides tools to validate values",
"homepage": "https://symfony.com", "homepage": "https://symfony.com",
"support": { "support": {
"source": "https://github.com/symfony/validator/tree/v6.4.25" "source": "https://github.com/symfony/validator/tree/v5.4.44"
}, },
"funding": [ "funding": [
{ {
@@ -6065,47 +6117,48 @@
"url": "https://github.com/fabpot", "url": "https://github.com/fabpot",
"type": "github" "type": "github"
}, },
{
"url": "https://github.com/nicolas-grekas",
"type": "github"
},
{ {
"url": "https://tidelift.com/funding/github/packagist/symfony/symfony", "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
"type": "tidelift" "type": "tidelift"
} }
], ],
"time": "2025-08-27T11:31:57+00:00" "time": "2024-09-19T08:27:53+00:00"
}, },
{ {
"name": "symfony/var-dumper", "name": "symfony/var-dumper",
"version": "v6.4.25", "version": "v5.4.43",
"source": { "source": {
"type": "git", "type": "git",
"url": "https://github.com/symfony/var-dumper.git", "url": "https://github.com/symfony/var-dumper.git",
"reference": "c6cd92486e9fc32506370822c57bc02353a5a92c" "reference": "6be6a6a8af4818564e3726fc65cf936f34743cef"
}, },
"dist": { "dist": {
"type": "zip", "type": "zip",
"url": "https://api.github.com/repos/symfony/var-dumper/zipball/c6cd92486e9fc32506370822c57bc02353a5a92c", "url": "https://api.github.com/repos/symfony/var-dumper/zipball/6be6a6a8af4818564e3726fc65cf936f34743cef",
"reference": "c6cd92486e9fc32506370822c57bc02353a5a92c", "reference": "6be6a6a8af4818564e3726fc65cf936f34743cef",
"shasum": "" "shasum": ""
}, },
"require": { "require": {
"php": ">=8.1", "php": ">=7.2.5",
"symfony/deprecation-contracts": "^2.5|^3", "symfony/polyfill-mbstring": "~1.0",
"symfony/polyfill-mbstring": "~1.0" "symfony/polyfill-php80": "^1.16"
}, },
"conflict": { "conflict": {
"symfony/console": "<5.4" "symfony/console": "<4.4"
}, },
"require-dev": { "require-dev": {
"symfony/console": "^5.4|^6.0|^7.0", "ext-iconv": "*",
"symfony/error-handler": "^6.3|^7.0", "symfony/console": "^4.4|^5.0|^6.0",
"symfony/http-kernel": "^5.4|^6.0|^7.0", "symfony/http-kernel": "^4.4|^5.0|^6.0",
"symfony/process": "^5.4|^6.0|^7.0", "symfony/process": "^4.4|^5.0|^6.0",
"symfony/uid": "^5.4|^6.0|^7.0", "symfony/uid": "^5.1|^6.0",
"twig/twig": "^2.13|^3.0.4" "twig/twig": "^2.13|^3.0.4"
}, },
"suggest": {
"ext-iconv": "To convert non-UTF-8 strings to UTF-8 (or symfony/polyfill-iconv in case ext-iconv cannot be used).",
"ext-intl": "To show region name in time zone dump",
"symfony/console": "To use the ServerDumpCommand and/or the bin/var-dump-server script"
},
"bin": [ "bin": [
"Resources/bin/var-dump-server" "Resources/bin/var-dump-server"
], ],
@@ -6142,7 +6195,7 @@
"dump" "dump"
], ],
"support": { "support": {
"source": "https://github.com/symfony/var-dumper/tree/v6.4.25" "source": "https://github.com/symfony/var-dumper/tree/v5.4.43"
}, },
"funding": [ "funding": [
{ {
@@ -6153,29 +6206,25 @@
"url": "https://github.com/fabpot", "url": "https://github.com/fabpot",
"type": "github" "type": "github"
}, },
{
"url": "https://github.com/nicolas-grekas",
"type": "github"
},
{ {
"url": "https://tidelift.com/funding/github/packagist/symfony/symfony", "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
"type": "tidelift" "type": "tidelift"
} }
], ],
"time": "2025-08-13T09:41:44+00:00" "time": "2024-08-30T16:01:46+00:00"
}, },
{ {
"name": "symfony/var-exporter", "name": "symfony/var-exporter",
"version": "v6.4.25", "version": "v6.4.9",
"source": { "source": {
"type": "git", "type": "git",
"url": "https://github.com/symfony/var-exporter.git", "url": "https://github.com/symfony/var-exporter.git",
"reference": "4ff50a1b7c75d1d596aca50899d0c8c7e3de8358" "reference": "f9a060622e0d93777b7f8687ec4860191e16802e"
}, },
"dist": { "dist": {
"type": "zip", "type": "zip",
"url": "https://api.github.com/repos/symfony/var-exporter/zipball/4ff50a1b7c75d1d596aca50899d0c8c7e3de8358", "url": "https://api.github.com/repos/symfony/var-exporter/zipball/f9a060622e0d93777b7f8687ec4860191e16802e",
"reference": "4ff50a1b7c75d1d596aca50899d0c8c7e3de8358", "reference": "f9a060622e0d93777b7f8687ec4860191e16802e",
"shasum": "" "shasum": ""
}, },
"require": { "require": {
@@ -6223,7 +6272,7 @@
"serialize" "serialize"
], ],
"support": { "support": {
"source": "https://github.com/symfony/var-exporter/tree/v6.4.25" "source": "https://github.com/symfony/var-exporter/tree/v6.4.9"
}, },
"funding": [ "funding": [
{ {
@@ -6235,7 +6284,83 @@
"type": "github" "type": "github"
}, },
{ {
"url": "https://github.com/nicolas-grekas", "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
"type": "tidelift"
}
],
"time": "2024-06-24T15:53:56+00:00"
},
{
"name": "symfony/web-profiler-bundle",
"version": "v5.4.43",
"source": {
"type": "git",
"url": "https://github.com/symfony/web-profiler-bundle.git",
"reference": "8f1628f1361e4623a6c2b373c3594845d6aacb79"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/symfony/web-profiler-bundle/zipball/8f1628f1361e4623a6c2b373c3594845d6aacb79",
"reference": "8f1628f1361e4623a6c2b373c3594845d6aacb79",
"shasum": ""
},
"require": {
"php": ">=7.2.5",
"symfony/config": "^4.4|^5.0|^6.0",
"symfony/framework-bundle": "^5.3|^6.0,<6.4",
"symfony/http-kernel": "^5.3|^6.0",
"symfony/polyfill-php80": "^1.16",
"symfony/routing": "^4.4|^5.0|^6.0",
"symfony/twig-bundle": "^4.4|^5.0|^6.0",
"twig/twig": "^2.13|^3.0.4"
},
"conflict": {
"symfony/dependency-injection": "<5.2",
"symfony/form": "<4.4",
"symfony/mailer": "<5.4",
"symfony/messenger": "<4.4"
},
"require-dev": {
"symfony/browser-kit": "^4.4|^5.0|^6.0",
"symfony/console": "^4.4|^5.0|^6.0",
"symfony/css-selector": "^4.4|^5.0|^6.0",
"symfony/stopwatch": "^4.4|^5.0|^6.0"
},
"type": "symfony-bundle",
"autoload": {
"psr-4": {
"Symfony\\Bundle\\WebProfilerBundle\\": ""
},
"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": "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.4.43"
},
"funding": [
{
"url": "https://symfony.com/sponsor",
"type": "custom"
},
{
"url": "https://github.com/fabpot",
"type": "github" "type": "github"
}, },
{ {
@@ -6243,7 +6368,7 @@
"type": "tidelift" "type": "tidelift"
} }
], ],
"time": "2025-08-18T13:06:32+00:00" "time": "2024-08-08T09:11:47+00:00"
}, },
{ {
"name": "symfony/webpack-encore-bundle", "name": "symfony/webpack-encore-bundle",
@@ -6278,8 +6403,8 @@
"type": "symfony-bundle", "type": "symfony-bundle",
"extra": { "extra": {
"thanks": { "thanks": {
"url": "https://github.com/symfony/webpack-encore", "name": "symfony/webpack-encore",
"name": "symfony/webpack-encore" "url": "https://github.com/symfony/webpack-encore"
} }
}, },
"autoload": { "autoload": {
@@ -6320,28 +6445,31 @@
}, },
{ {
"name": "symfony/yaml", "name": "symfony/yaml",
"version": "v6.4.25", "version": "v5.4.44",
"source": { "source": {
"type": "git", "type": "git",
"url": "https://github.com/symfony/yaml.git", "url": "https://github.com/symfony/yaml.git",
"reference": "e54b060bc9c3dc3d4258bf0d165d0064e755f565" "reference": "7025b964f123bbf1896d7563db6ec7f1f63e918a"
}, },
"dist": { "dist": {
"type": "zip", "type": "zip",
"url": "https://api.github.com/repos/symfony/yaml/zipball/e54b060bc9c3dc3d4258bf0d165d0064e755f565", "url": "https://api.github.com/repos/symfony/yaml/zipball/7025b964f123bbf1896d7563db6ec7f1f63e918a",
"reference": "e54b060bc9c3dc3d4258bf0d165d0064e755f565", "reference": "7025b964f123bbf1896d7563db6ec7f1f63e918a",
"shasum": "" "shasum": ""
}, },
"require": { "require": {
"php": ">=8.1", "php": ">=7.2.5",
"symfony/deprecation-contracts": "^2.5|^3", "symfony/deprecation-contracts": "^2.1|^3",
"symfony/polyfill-ctype": "^1.8" "symfony/polyfill-ctype": "^1.8"
}, },
"conflict": { "conflict": {
"symfony/console": "<5.4" "symfony/console": "<5.3"
}, },
"require-dev": { "require-dev": {
"symfony/console": "^5.4|^6.0|^7.0" "symfony/console": "^5.3|^6.0"
},
"suggest": {
"symfony/console": "For validating YAML files using the lint command"
}, },
"bin": [ "bin": [
"Resources/bin/yaml-lint" "Resources/bin/yaml-lint"
@@ -6372,7 +6500,7 @@
"description": "Loads and dumps YAML files", "description": "Loads and dumps YAML files",
"homepage": "https://symfony.com", "homepage": "https://symfony.com",
"support": { "support": {
"source": "https://github.com/symfony/yaml/tree/v6.4.25" "source": "https://github.com/symfony/yaml/tree/v5.4.44"
}, },
"funding": [ "funding": [
{ {
@@ -6383,39 +6511,35 @@
"url": "https://github.com/fabpot", "url": "https://github.com/fabpot",
"type": "github" "type": "github"
}, },
{
"url": "https://github.com/nicolas-grekas",
"type": "github"
},
{ {
"url": "https://tidelift.com/funding/github/packagist/symfony/symfony", "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
"type": "tidelift" "type": "tidelift"
} }
], ],
"time": "2025-08-26T16:59:00+00:00" "time": "2024-09-16T14:36:56+00:00"
}, },
{ {
"name": "twig/twig", "name": "twig/twig",
"version": "v3.21.1", "version": "v3.14.0",
"source": { "source": {
"type": "git", "type": "git",
"url": "https://github.com/twigphp/Twig.git", "url": "https://github.com/twigphp/Twig.git",
"reference": "285123877d4dd97dd7c11842ac5fb7e86e60d81d" "reference": "126b2c97818dbff0cdf3fbfc881aedb3d40aae72"
}, },
"dist": { "dist": {
"type": "zip", "type": "zip",
"url": "https://api.github.com/repos/twigphp/Twig/zipball/285123877d4dd97dd7c11842ac5fb7e86e60d81d", "url": "https://api.github.com/repos/twigphp/Twig/zipball/126b2c97818dbff0cdf3fbfc881aedb3d40aae72",
"reference": "285123877d4dd97dd7c11842ac5fb7e86e60d81d", "reference": "126b2c97818dbff0cdf3fbfc881aedb3d40aae72",
"shasum": "" "shasum": ""
}, },
"require": { "require": {
"php": ">=8.1.0", "php": ">=8.0.2",
"symfony/deprecation-contracts": "^2.5|^3", "symfony/deprecation-contracts": "^2.5|^3",
"symfony/polyfill-ctype": "^1.8", "symfony/polyfill-ctype": "^1.8",
"symfony/polyfill-mbstring": "^1.3" "symfony/polyfill-mbstring": "^1.3",
"symfony/polyfill-php81": "^1.29"
}, },
"require-dev": { "require-dev": {
"phpstan/phpstan": "^2.0",
"psr/container": "^1.0|^2.0", "psr/container": "^1.0|^2.0",
"symfony/phpunit-bridge": "^5.4.9|^6.4|^7.0" "symfony/phpunit-bridge": "^5.4.9|^6.4|^7.0"
}, },
@@ -6459,7 +6583,7 @@
], ],
"support": { "support": {
"issues": "https://github.com/twigphp/Twig/issues", "issues": "https://github.com/twigphp/Twig/issues",
"source": "https://github.com/twigphp/Twig/tree/v3.21.1" "source": "https://github.com/twigphp/Twig/tree/v3.14.0"
}, },
"funding": [ "funding": [
{ {
@@ -6471,157 +6595,44 @@
"type": "tidelift" "type": "tidelift"
} }
], ],
"time": "2025-05-03T07:21:55+00:00" "time": "2024-09-09T17:55:12+00:00"
} }
], ],
"packages-dev": [ "packages-dev": [
{
"name": "phpstan/phpstan",
"version": "2.1.22",
"source": {
"type": "git",
"url": "https://github.com/phpstan/phpstan.git",
"reference": "41600c8379eb5aee63e9413fe9e97273e25d57e4"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/phpstan/phpstan/zipball/41600c8379eb5aee63e9413fe9e97273e25d57e4",
"reference": "41600c8379eb5aee63e9413fe9e97273e25d57e4",
"shasum": ""
},
"require": {
"php": "^7.4|^8.0"
},
"conflict": {
"phpstan/phpstan-shim": "*"
},
"bin": [
"phpstan",
"phpstan.phar"
],
"type": "library",
"autoload": {
"files": [
"bootstrap.php"
]
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"description": "PHPStan - PHP Static Analysis Tool",
"keywords": [
"dev",
"static analysis"
],
"support": {
"docs": "https://phpstan.org/user-guide/getting-started",
"forum": "https://github.com/phpstan/phpstan/discussions",
"issues": "https://github.com/phpstan/phpstan/issues",
"security": "https://github.com/phpstan/phpstan/security/policy",
"source": "https://github.com/phpstan/phpstan-src"
},
"funding": [
{
"url": "https://github.com/ondrejmirtes",
"type": "github"
},
{
"url": "https://github.com/phpstan",
"type": "github"
}
],
"time": "2025-08-04T19:17:37+00:00"
},
{
"name": "rector/rector",
"version": "2.1.6",
"source": {
"type": "git",
"url": "https://github.com/rectorphp/rector.git",
"reference": "729aabc0ec66e700ef164e26454a1357f222a2f3"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/rectorphp/rector/zipball/729aabc0ec66e700ef164e26454a1357f222a2f3",
"reference": "729aabc0ec66e700ef164e26454a1357f222a2f3",
"shasum": ""
},
"require": {
"php": "^7.4|^8.0",
"phpstan/phpstan": "^2.1.18"
},
"conflict": {
"rector/rector-doctrine": "*",
"rector/rector-downgrade-php": "*",
"rector/rector-phpunit": "*",
"rector/rector-symfony": "*"
},
"suggest": {
"ext-dom": "To manipulate phpunit.xml via the custom-rule command"
},
"bin": [
"bin/rector"
],
"type": "library",
"autoload": {
"files": [
"bootstrap.php"
]
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"description": "Instant Upgrade and Automated Refactoring of any PHP code",
"homepage": "https://getrector.com/",
"keywords": [
"automation",
"dev",
"migration",
"refactoring"
],
"support": {
"issues": "https://github.com/rectorphp/rector/issues",
"source": "https://github.com/rectorphp/rector/tree/2.1.6"
},
"funding": [
{
"url": "https://github.com/tomasvotruba",
"type": "github"
}
],
"time": "2025-09-05T15:43:08+00:00"
},
{ {
"name": "symfony/debug-bundle", "name": "symfony/debug-bundle",
"version": "v6.4.13", "version": "v5.4.40",
"source": { "source": {
"type": "git", "type": "git",
"url": "https://github.com/symfony/debug-bundle.git", "url": "https://github.com/symfony/debug-bundle.git",
"reference": "7bcfaff39e094cc09455201916d016d9b2ae08ff" "reference": "177f79296705823eee0d7dd79773f3a9df884fe0"
}, },
"dist": { "dist": {
"type": "zip", "type": "zip",
"url": "https://api.github.com/repos/symfony/debug-bundle/zipball/7bcfaff39e094cc09455201916d016d9b2ae08ff", "url": "https://api.github.com/repos/symfony/debug-bundle/zipball/177f79296705823eee0d7dd79773f3a9df884fe0",
"reference": "7bcfaff39e094cc09455201916d016d9b2ae08ff", "reference": "177f79296705823eee0d7dd79773f3a9df884fe0",
"shasum": "" "shasum": ""
}, },
"require": { "require": {
"ext-xml": "*", "ext-xml": "*",
"php": ">=8.1", "php": ">=7.2.5",
"symfony/dependency-injection": "^5.4|^6.0|^7.0", "symfony/http-kernel": "^4.4|^5.0|^6.0",
"symfony/http-kernel": "^5.4|^6.0|^7.0", "symfony/polyfill-php80": "^1.16",
"symfony/twig-bridge": "^5.4|^6.0|^7.0", "symfony/twig-bridge": "^4.4|^5.0|^6.0",
"symfony/var-dumper": "^5.4|^6.0|^7.0" "symfony/var-dumper": "^4.4|^5.0|^6.0"
}, },
"conflict": { "conflict": {
"symfony/config": "<5.4", "symfony/config": "<4.4",
"symfony/dependency-injection": "<5.4" "symfony/dependency-injection": "<5.2"
}, },
"require-dev": { "require-dev": {
"symfony/config": "^5.4|^6.0|^7.0", "symfony/config": "^4.4|^5.0|^6.0",
"symfony/web-profiler-bundle": "^5.4|^6.0|^7.0" "symfony/dependency-injection": "^4.4|^5.0|^6.0",
"symfony/web-profiler-bundle": "^4.4|^5.0|^6.0"
},
"suggest": {
"symfony/config": "For service container configuration",
"symfony/dependency-injection": "For using as a service from the container"
}, },
"type": "symfony-bundle", "type": "symfony-bundle",
"autoload": { "autoload": {
@@ -6649,7 +6660,7 @@
"description": "Provides a tight integration of the Symfony VarDumper component and the ServerLogCommand from MonologBridge into the Symfony full-stack framework", "description": "Provides a tight integration of the Symfony VarDumper component and the ServerLogCommand from MonologBridge into the Symfony full-stack framework",
"homepage": "https://symfony.com", "homepage": "https://symfony.com",
"support": { "support": {
"source": "https://github.com/symfony/debug-bundle/tree/v6.4.13" "source": "https://github.com/symfony/debug-bundle/tree/v5.4.40"
}, },
"funding": [ "funding": [
{ {
@@ -6665,113 +6676,19 @@
"type": "tidelift" "type": "tidelift"
} }
], ],
"time": "2024-09-25T14:18:03+00:00" "time": "2024-05-31T14:33:22+00:00"
},
{
"name": "symfony/web-profiler-bundle",
"version": "v6.4.25",
"source": {
"type": "git",
"url": "https://github.com/symfony/web-profiler-bundle.git",
"reference": "4c1754d6b3ffe52e9eaed0d9a392eb43a60fc910"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/symfony/web-profiler-bundle/zipball/4c1754d6b3ffe52e9eaed0d9a392eb43a60fc910",
"reference": "4c1754d6b3ffe52e9eaed0d9a392eb43a60fc910",
"shasum": ""
},
"require": {
"php": ">=8.1",
"symfony/config": "^5.4|^6.0|^7.0",
"symfony/framework-bundle": "^6.4|^7.0",
"symfony/http-kernel": "^6.4|^7.0",
"symfony/routing": "^5.4|^6.0|^7.0",
"symfony/twig-bundle": "^5.4|^6.0",
"twig/twig": "^2.13|^3.0.4"
},
"conflict": {
"symfony/form": "<5.4",
"symfony/mailer": "<5.4",
"symfony/messenger": "<5.4",
"symfony/twig-bundle": ">=7.0"
},
"require-dev": {
"symfony/browser-kit": "^5.4|^6.0|^7.0",
"symfony/console": "^5.4|^6.0|^7.0",
"symfony/css-selector": "^5.4|^6.0|^7.0",
"symfony/stopwatch": "^5.4|^6.0|^7.0"
},
"type": "symfony-bundle",
"autoload": {
"psr-4": {
"Symfony\\Bundle\\WebProfilerBundle\\": ""
},
"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": "Provides a development tool that gives detailed information about the execution of any request",
"homepage": "https://symfony.com",
"keywords": [
"dev"
],
"support": {
"source": "https://github.com/symfony/web-profiler-bundle/tree/v6.4.25"
},
"funding": [
{
"url": "https://symfony.com/sponsor",
"type": "custom"
},
{
"url": "https://github.com/fabpot",
"type": "github"
},
{
"url": "https://github.com/nicolas-grekas",
"type": "github"
},
{
"url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
"type": "tidelift"
}
],
"time": "2025-08-07T12:02:05+00:00"
} }
], ],
"aliases": [], "aliases": [],
"minimum-stability": "stable", "minimum-stability": "stable",
"stability-flags": {}, "stability-flags": [],
"prefer-stable": true, "prefer-stable": true,
"prefer-lowest": false, "prefer-lowest": false,
"platform": { "platform": {
"php": "^8.4", "php": ">=7.2.5",
"ext-ctype": "*", "ext-ctype": "*",
"ext-iconv": "*" "ext-iconv": "*"
}, },
"platform-dev": {}, "platform-dev": [],
"platform-overrides": { "plugin-api-version": "2.3.0"
"php": "8.4",
"ext-bcmath": "8.4",
"ext-xsl": "8.4",
"ext-soap": "8.4",
"ext-intl": "8.4",
"ext-gd": "8.4"
},
"plugin-api-version": "2.6.0"
} }

View File

@@ -2,9 +2,6 @@ parameters:
base_url: '%env(BASE_URL)%' base_url: '%env(BASE_URL)%'
env(BASE_URL): '//' env(BASE_URL): '//'
base_path: '%env(BASE_PATH)%'
env(BASE_PATH): '/'
cookie_path: '%env(COOKIE_PATH)%' cookie_path: '%env(COOKIE_PATH)%'
env(COOKIE_PATH): '/' env(COOKIE_PATH): '/'
framework: framework:
@@ -21,7 +18,7 @@ framework:
storage_factory_id: session.storage.factory.native storage_factory_id: session.storage.factory.native
cookie_path: "%cookie_path%" cookie_path: "%cookie_path%"
assets: assets:
json_manifest_path: '%kernel.project_dir%/public/build/manifest.json' base_urls: '%base_url%'
router: router:
default_uri: '%base_url%' default_uri: '%base_url%'
#esi: true #esi: true

View File

@@ -0,0 +1,2 @@
framework:
lock: '%env(LOCK_DSN)%'

View File

@@ -2,5 +2,5 @@ monolog:
handlers: handlers:
stdout: stdout:
type: stream type: stream
path: php://stdout path: "php://stdout"
level: debug level: "%env(string:LOGGER_LEVEL)%"

View File

@@ -5,7 +5,6 @@ twig:
default_path: "%kernel.project_dir%/templates" default_path: "%kernel.project_dir%/templates"
form_themes: form_themes:
- "bootstrap_5_layout.html.twig" - "bootstrap_5_layout.html.twig"
- "altcha.html.twig"
when@test: when@test:
twig: twig:
strict_variables: true strict_variables: true

View File

@@ -2,10 +2,53 @@ webpack_encore:
# The path where Encore is building the assets - i.e. Encore.setOutputPath() # The path where Encore is building the assets - i.e. Encore.setOutputPath()
# If multiple builds are defined (as shown below), you can disable the default build: # If multiple builds are defined (as shown below), you can disable the default build:
# output_path: false # output_path: false
output_path: "%kernel.project_dir%/public/build" output_path: false
builds:
appConfig: '%kernel.project_dir%/public/build/app'
themeConfig: '%kernel.project_dir%/public/build/theme'
# Set attributes that will be rendered on all script and link tags # Set attributes that will be rendered on all script and link tags
script_attributes: script_attributes:
defer: true defer: true
# Uncomment (also under link_attributes) if using Turbo Drive # Uncomment (also under link_attributes) if using Turbo Drive
# https://turbo.hotwired.dev/handbook/drive#reloading-when-assets-change # https://turbo.hotwired.dev/handbook/drive#reloading-when-assets-change
# 'data-turbo-track': reload # 'data-turbo-track': reload
# link_attributes:
# Uncomment if using Turbo Drive
# 'data-turbo-track': reload
# If using Encore.enableIntegrityHashes() and need the crossorigin attribute (default: false, or use 'anonymous' or 'use-credentials')
# crossorigin: 'anonymous'
# Preload all rendered script and link tags automatically via the HTTP/2 Link header
# preload: true
# Throw an exception if the entrypoints.json file is missing or an entry is missing from the data
# strict_mode: false
# If you have multiple builds:
# builds:
# frontend: '%kernel.project_dir%/public/frontend/build'
# pass the build name as the 3rd argument to the Twig functions
# {{ encore_entry_script_tags('entry1', null, 'frontend') }}
# Cache the entrypoints.json (rebuild Symfony's cache when entrypoints.json changes)
# Put in config/packages/prod/webpack_encore.yaml
# cache: true
framework:
assets:
packages:
app:
json_manifest_path: '%kernel.project_dir%/public/build/app/manifest.json'
theme:
json_manifest_path: '%kernel.project_dir%/public/build/theme/manifest.json'
#when@prod:
# webpack_encore:
# # Cache the entrypoints.json (rebuild Symfony's cache when entrypoints.json changes)
# # Available in version 1.2
# cache: true
#when@test:
# webpack_encore:
# strict_mode: false

View File

@@ -29,6 +29,9 @@ parameters:
env(PEPPER): ~ env(PEPPER): ~
pepper: '%env(resolve:PEPPER)%' pepper: '%env(resolve:PEPPER)%'
env(LOGGER_LEVEL): "info"
services: services:
# default configuration for services in *this* file # default configuration for services in *this* file
_defaults: _defaults:
@@ -75,23 +78,3 @@ services:
$securityPattern: '%security_pattern%' $securityPattern: '%security_pattern%'
# add more service definitions when explicit configuration is needed # add more service definitions when explicit configuration is needed
# please note that last definitions always *replace* previous ones # please note that last definitions always *replace* previous ones
App\Altcha\Form\AltchaType:
arguments:
$altchaHost: "%env(ALTCHA_HOST)%"
$altchaBaseUrl: "%env(ALTCHA_BASE_URL)%"
$altchaDebug: "%env(bool:ALTCHA_DEBUG)%"
$altchaWorkers: "%env(ALTCHA_WORKERS)%"
$altchaDelay: "%env(ALTCHA_DELAY)%"
$altchaMockError: "%env(bool:ALTCHA_MOCK_ERROR)%"
tags:
- { name: form.type, alias: altcha}
App\Form\LoginType:
arguments:
$altchaEnabled: "%env(bool:ALTCHA_ENABLED)%"
App\Altcha\AltchaValidator:
arguments:
$altchaHost: "%env(ALTCHA_HOST)%"
$altchaBaseUrl: "%env(ALTCHA_BASE_URL)%"

View File

@@ -1,52 +1,38 @@
version: "3.8"
services: services:
haproxy:
image: haproxy:2.6.22
volumes:
- ./misc/compose/haproxy/haproxy.cfg:/usr/local/etc/haproxy/haproxy.cfg
ports:
- 10500:10500
- 10501:10501
# - 10502:10502
- 10503:10503
hydra-sql: hydra-sql:
container_name: hydra-sql
build: build:
context: . context: .
dockerfile: ./misc/images/hydra-sql-dev/Dockerfile dockerfile: ./misc/images/hydra-sql-standalone/Dockerfile
args: args:
- SERVER_NAME=http://localhost:10500 - HTTP_PROXY=${HTTP_PROXY}
- HTTPS_PROXY=${HTTPS_PROXY}
- http_proxy=${http_proxy}
- https_proxy=${https_proxy}
ports:
- 8082:8071
volumes:
- .:/app
tmpfs:
- /var/www/var/logs:uid=${FIXUID:-1000},gid=${FIXGID:-1000}
- /var/www/var/cache:uid=${FIXUID:-1000},gid=${FIXGID:-1000}
- /var/www/public/build:uid=${FIXUID:-1000},gid=${FIXGID:-1000}
- /tmp
links: links:
- hydra - hydra
depends_on: extra_hosts:
- redis - "localhost:127.0.0.1"
tty: true - "localhost:host-gateway"
# develop: - "host.docker.internal:host-gateway"
# watch:
# - action: rebuild
# path: ./misc/images/hydra-sql-standalone
# - action: rebuild
# path: ./assets
# - action: sync
# path: ./templates
# target: /app/templates
# - action: sync
# path: ./translations
# target: /app/translations
# - action: sync
# path: ./config
# target: /app/config
# - action: sync
# path: ./src
# target: /app/src
environment: environment:
- SERVER_NAME=http://localhost:10500
- APP_ENV=dev - APP_ENV=dev
- APP_DEBUG=true
- PHP_FPM_MEMORY_LIMIT=128m - PHP_FPM_MEMORY_LIMIT=128m
- APP_LOCALES=fr,en - APP_LOCALES=fr,en
- HYDRA_ADMIN_BASE_URL=http://hydra:4445 - HYDRA_ADMIN_BASE_URL=http://hydra:4445
- TRUSTED_PROXIES=127.0.0.1,REMOTE_ADDR,localhost - TRUSTED_PROXIES=127.0.0.1,REMOTE_ADDR,localhost
- ISSUER_URL=http://localhost:10502 - ISSUER_URL=http://localhost:8000
- BASE_URL=http://localhost:10500 - BASE_URL=http://localhost:8082
- DB_USER=lasql - DB_USER=lasql
- DB_PASSWORD=lasql - DB_PASSWORD=lasql
- DEFAULT_LOCALE=fr - DEFAULT_LOCALE=fr
@@ -54,17 +40,20 @@ services:
- HASH_ALGO_LEGACY="sha256" - HASH_ALGO_LEGACY="sha256"
- SECURITY_PATTERN=password,salt,pepper - SECURITY_PATTERN=password,salt,pepper
- CADDY_HTTP_PORT=8071 - CADDY_HTTP_PORT=8071
- LOGGER_LEVEL=info
- PHP_FPM_DISPLAY_ERRORS=on
- PHP_FPM_CATCH_WORKERS_OUTPUT=1
oidc-test: oidc-test:
image: bornholm/oidc-test:v0.0.0-1-g936a77e image: bornholm/oidc-test:v0.0.0-1-g936a77e
environment: environment:
- LOG_LEVEL=0 - LOG_LEVEL=0
- HTTP_ADDRESS=0.0.0.0:10502 - HTTP_ADDRESS=0.0.0.0:8000
- OIDC_CLIENT_ID=oidc-test - OIDC_CLIENT_ID=oidc-test
- OIDC_CLIENT_SECRET=oidc-test-123456 - OIDC_CLIENT_SECRET=oidc-test-123456
- OIDC_ISSUER_URL=http://localhost:10501/ - OIDC_ISSUER_URL=http://localhost:8081/
- OIDC_REDIRECT_URL=http://localhost:10502 - OIDC_REDIRECT_URL=http://localhost:8000
- OIDC_POST_LOGOUT_REDIRECT_URL=http://localhost:10502 - OIDC_POST_LOGOUT_REDIRECT_URL=http://localhost:8000
depends_on: depends_on:
hydra: hydra:
condition: service_healthy condition: service_healthy
@@ -78,15 +67,20 @@ services:
environment: environment:
- LOG_LEAK_SENSITIVE_VALUES=true - LOG_LEAK_SENSITIVE_VALUES=true
- HYDRA_ALLOW_INSECURE=yes - HYDRA_ALLOW_INSECURE=yes
- HYDRA_URLS_SELF_ISSUER=http://localhost:10501/ - HYDRA_URLS_SELF_ISSUER=http://localhost:8081/
- HYDRA_URLS_LOGOUT=http://localhost:10500/logout - HYDRA_URLS_LOGOUT=http://localhost:8082/logout
- HYDRA_URLS_LOGIN=http://localhost:10500/ - HYDRA_URLS_LOGIN=http://localhost:8082/
- HYDRA_URLS_CONSENT=http://localhost:10500/connect/consent - HYDRA_URLS_CONSENT=http://localhost:8082/connect/consent
- HYDRA_URLS_ERROR=http://localhost:10500/error - HYDRA_URLS_ERROR=http://localhost:8082/error
- HYDRA_LEVEL=debug - HYDRA_LEVEL=debug
- HYDRA_DSN=postgres://lasql:lasql@postgres:5432/hydra - HYDRA_DSN=postgres://lasql:lasql@postgres:5432/hydra
- HYDRA_WAIT4X_DATABASE_DSN=postgres://lasql:lasql@postgres:5432/hydra?sslmode=disable - HYDRA_WAIT4X_DATABASE_DSN=postgres://lasql:lasql@postgres:5432/hydra?sslmode=disable
- HYDRA_WAIT4X_DATABASE_TYPE=postgresql - HYDRA_WAIT4X_DATABASE_TYPE=postgresql
ports:
- 8081:4444
links:
- postgres
healthcheck: healthcheck:
test: test:
[ [
@@ -116,8 +110,8 @@ services:
pgadmin: pgadmin:
image: dpage/pgadmin4 image: dpage/pgadmin4
# ports: ports:
# - 10503:80 - 8085:80
restart: always restart: always
environment: environment:
PGADMIN_DEFAULT_EMAIL: admin@admin.com PGADMIN_DEFAULT_EMAIL: admin@admin.com
@@ -143,11 +137,6 @@ services:
- TZ=Europe/Paris - TZ=Europe/Paris
volumes: volumes:
- /etc/localtime:/etc/localtime:ro - /etc/localtime:/etc/localtime:ro
altcha:
image: reg.cadoles.com/cadoles/altcha:2024.10.29-develop.1213.22e038b
environment:
ALTCHA_HMAC_KEY: 'change_me'
volumes: volumes:
postgres: postgres:
mariadb: mariadb:

View File

@@ -1,30 +0,0 @@
defaults
mode http
timeout client 10s
timeout connect 5s
timeout server 10s
timeout http-request 10s
default-server init-addr last,libc,none
frontend sql-frontend
bind 0.0.0.0:10500
default_backend sql-backend
backend sql-backend
server sql hydra-sql:10500
frontend hydra-frontend
bind 0.0.0.0:10501
default_backend hydra-backend
backend hydra-backend
server hydra hydra:4444
frontend pgadmin-frontend
bind 0.0.0.0:10503
default_backend pgadmin-backend
backend pgadmin-backend
server pgadmin pgadmin:80

View File

@@ -0,0 +1,38 @@
<VirtualHost *:80>
# Uncomment the following line to force Apache to pass the Authorization
# header to PHP: required for "basic_auth" under PHP-FPM and FastCGI
#
# SetEnvIfNoCase ^Authorization$ "(.+)" HTTP_AUTHORIZATION=$1
# For Apache 2.4.9 or higher
# Using SetHandler avoids issues with using ProxyPassMatch in combination
# with mod_rewrite or mod_autoindex
<FilesMatch \.php$>
SetHandler "proxy:unix:/run/php/php8.1-fpm.sock|fcgi://127.0.0.1:9000"
# for Unix sockets, Apache 2.4.10 or higher
# SetHandler proxy:unix:/path/to/fpm.sock|fcgi://dummy
</FilesMatch>
# If you use Apache version below 2.4.9 you must consider update or use this instead
# ProxyPassMatch ^/(.*\.php(/.*)?)$ fcgi://127.0.0.1:9000/var/www/project/public/$1
# If you run your Symfony application on a subpath of your document root, the
# regular expression must be changed accordingly:
# ProxyPassMatch ^/path-to-app/(.*\.php(/.*)?)$ fcgi://127.0.0.1:9000/var/www/project/public/$1
DocumentRoot /var/www/public
<Directory /var/www/public>
# enable the .htaccess rewrites
AllowOverride All
Require all granted
</Directory>
# uncomment the following lines if you install assets as symlinks
# or run into problems when compiling LESS/Sass/CoffeeScript assets
# <Directory /var/www/project>
# Options FollowSymlinks
# </Directory>
ErrorLog /var/log/apache2/project_error.log
CustomLog /var/log/apache2/project_access.log combined
</VirtualHost>

View File

@@ -1,65 +0,0 @@
# The Caddyfile is an easy way to configure FrankenPHP and the Caddy web server.
#
# https://frankenphp.dev/docs/config
# https://caddyserver.com/docs/caddyfile
{
skip_install_trust
auto_https off
admin off
persist_config off
{$CADDY_GLOBAL_OPTIONS}
frankenphp {
php_ini {
opcache.enable_cli 1
opcache.memory_consumption 512
opcache.max_accelerated_files 20000
{$PHPINI_EXTRA_CONFIG}
}
{$FRANKENPHP_CONFIG}
}
}
{$CADDY_EXTRA_CONFIG}
{$SERVER_NAME:localhost} {
root {$SERVER_ROOT:public/}
encode zstd br gzip
{$CADDY_SERVER_EXTRA_DIRECTIVES}
php_server {
root /app/public
try_files {path} index.php
worker {
file /app/public/index.php
env APP_RUNTIME Runtime\FrankenPhpSymfony\Runtime
name hydra-sql-worker
{$FRANKENPHP_WORKER_CONFIG}
}
}
@phpFile {
path *.php*
}
error @phpFile "Not found" 404
@shouldSkip {
expression "{$CADDY_LOG_SKIP:true}" == "true"
path_regexp skipPaths ^/({$CADDY_LOG_FILTER:health|metrics})$
}
skip_log @shouldSkip
log {
output stdout
format {$CADDY_LOG_FORMAT:console}
level {$CADDY_LOG_LEVEL:INFO}
}
}
import Caddyfile.d/*.caddyfile
import Caddyfile.d/*.caddyfile

View File

@@ -0,0 +1,119 @@
FROM ubuntu:22.04
ARG HTTP_PROXY=
ARG HTTPS_PROXY=
ARG http_proxy=
ARG https_proxy=
ENV WAITFORIT_VERSION="v2.4.1"
ARG PHP_VERSION="8.1"
ENV PHP_VERSION $PHP_VERSION
RUN export DEBIAN_FRONTEND=noninteractive && \
apt-get update -y && \
apt-get install -y software-properties-common && \
add-apt-repository ppa:ondrej/php && \
apt-get update -y && \
apt-get install -y --no-install-recommends \
git bash wget ca-certificates supervisor cron rsyslog mysql-client jq \
mutt tree vim python3-setuptools python3-pip make \
php${PHP_VERSION}-cli php${PHP_VERSION}-ldap php${PHP_VERSION}-soap \
php${PHP_VERSION}-intl php${PHP_VERSION}-curl php${PHP_VERSION}-gd \
php${PHP_VERSION}-xml php${PHP_VERSION}-bcmath \
php${PHP_VERSION}-zip php${PHP_VERSION}-fpm \
php${PHP_VERSION}-mbstring \
php${PHP_VERSION}-pgsql \
php${PHP_VERSION}-mysql \
php${PHP_VERSION}-pdo-pgsql \
php${PHP_VERSION}-pdo-mysql \
php${PHP_VERSION}-ssh2 libxml2-utils \
locales \
apache2 \
libapache2-mod-fcgid \
ssh-client \
acl moreutils \
sudo
# Set fr_FR locale
RUN sed -i -e 's/# fr_FR.UTF-8 UTF-8/fr_FR.UTF-8 UTF-8/' /etc/locale.gen && \
dpkg-reconfigure --frontend=noninteractive locales && \
update-locale LANG=fr_FR.UTF-8
ENV LC_ALL fr_FR.UTF-8
ENV LANG fr_FR.UTF-8
ENV LANGUAGE fr_FR.UTF-8
# Install NodeJS
RUN wget -O- https://deb.nodesource.com/setup_18.x | bash - \
&& apt-get install -y nodejs \
&& npm install nodemon -g
# Waitforit - Wait for all service is running before launch tests
RUN wget -q -O /usr/local/bin/waitforit https://github.com/maxcnunes/waitforit/releases/download/$WAITFORIT_VERSION/waitforit-linux_amd64 \
&& chmod +x /usr/local/bin/waitforit
# Install superfsmon to restart supervisor programs on file changes
RUN pip3 install wheel superfsmon
VOLUME /var/www
VOLUME /var/www/var/logs
VOLUME /var/www/var/cache
# Install composer
COPY install-composer.sh /var/www/install-composer.sh
RUN chmod +x /var/www/install-composer.sh &&\
/var/www/install-composer.sh &&\
rm -f /var/www/install-composer.sh
# On active les mods d'apache nécessaires
RUN a2enmod rewrite
RUN a2enmod proxy_fcgi setenvif
RUN a2enconf php8.1-fpm
RUN a2enmod proxy
RUN a2enmod expires
RUN a2enmod headers
# On injecte les bonnes configs apache et php-fpm
COPY 000-default.conf /etc/apache2/sites-available/000-default.conf
COPY www.conf /etc/php/8.1/fpm/pool.d/www.conf
EXPOSE 5000
EXPOSE 80
WORKDIR /var/www
# On démarre php-fpm une fois pour créer les sockets
RUN service php8.1-fpm start
RUN service php8.1-fpm stop
COPY docker-entrypoint.sh /docker-entrypoint.sh
RUN chmod +x /docker-entrypoint.sh
COPY first-run.sh /root/first-run.sh
RUN chmod +x /root/first-run.sh
# Disable rsyslog privileges drop to allow stdout logging
RUN sed -i 's/^\$\(PrivDropTo.*\)$/#\1/' /etc/rsyslog.conf
RUN sed -i '/imklog/s/^/#/' /etc/rsyslog.conf
COPY rsyslog.conf /etc/rsyslog.d/var/www.conf
COPY supervisor.ini /etc/supervisor/supervisor.ini
COPY php.ini /etc/php/8.1/fpm/php.ini
VOLUME /container-lifecycle
RUN wget -O- https://github.com/boxboat/fixuid/releases/download/v0.5.1/fixuid-0.5.1-linux-amd64.tar.gz | tar -C /usr/local/bin -xzf - \
&& chown root:root /usr/local/bin/fixuid \
&& chmod 4755 /usr/local/bin/fixuid \
&& mkdir -p /etc/fixuid
COPY fixuid.yml /etc/fixuid/config.yml
ENTRYPOINT ["/usr/local/bin/fixuid"]
RUN echo "www-data ALL=(ALL:ALL) NOPASSWD: ALL" > /etc/sudoers.d/www-data
USER www-data
CMD ["/docker-entrypoint.sh"]

View File

@@ -0,0 +1,34 @@
#!/bin/bash
set -eo pipefail
export COMPOSER_HOME=/tmp/composer
COMPOSER_AUTH="${COMPOSER_HOME}/auth.json"
function fix_composer_auth {
if [ ! -f "${COMPOSER_AUTH}" ]; then
return
fi
GITHUB_TOKEN=$(cat "${COMPOSER_AUTH}" | jq -r '.["github-oauth"]["github.com"]')
if [ ! -z "${GITHUB_TOKEN}" ]; then
GITHUB_USERNAME=$(cat "${COMPOSER_AUTH}" | jq -r '.["http-basic"]["github.com"].username')
if [ -z "${GITHUB_USERNAME}" ]; then
echo -n "Identifiant Github ? "
read GITHUB_USERNAME
fi
cat "${COMPOSER_AUTH}" | jq ".[\"http-basic\"][\"github.com\"] = {\"username\": \"${GITHUB_USERNAME}\", \"password\":\"${GITHUB_TOKEN}\"}" | sponge "${COMPOSER_AUTH}"
cat "${COMPOSER_AUTH}" | jq "del(.[\"github-oauth\"])" | sponge "${COMPOSER_AUTH}"
fi
}
function main {
fix_composer_auth
php composer.phar ${@:1}
}
main $@

View File

@@ -0,0 +1,18 @@
#!/bin/bash
set -eo pipefail
if [ ! -e /container-lifecycle/first_run ]; then
echo "First hydra-sql run detected. Initializing environment..."
sudo -E /root/first-run.sh
sudo touch /container-lifecycle/first_run
fi
# Récupération des clés SSH de l'hôte pour Composer
if [ -d '/root/.host-ssh' ] && [ $(id -u) -eq 0 ]; then
sudo rm -rf /root/.ssh
sudo cp -r /root/.host-ssh /root/.ssh
sudo chown -R root: /root/.ssh
fi
sudo -E /usr/bin/supervisord -c /etc/supervisor/supervisor.ini

View File

@@ -0,0 +1,17 @@
#!/bin/bash
set -xeo pipefail
[ ! -d /var/www/.config ] && sudo mkdir -p /var/www/.config
[ -d /var/www/.config ] && sudo chown -R www-data: /var/www/.config
[ ! -d /var/www/.cache ] && sudo mkdir -p /var/www/.cache
[ -d /var/www/.cache ] && sudo chown -R www-data: /var/www/.cache
sudo chown -R www-data: /var/www
cp /bin/composer.phar /var/www/composer.phar
cd /var/www
php composer.phar install
npm install
npm run build

View File

@@ -0,0 +1,6 @@
user: www-data
group: www-data
paths:
- /var/www/node_modules
- /var/www/vendor
- /var/www

View File

@@ -1,7 +0,0 @@
{
frankenphp {
php_ini {
}
}
}

View File

@@ -1,14 +0,0 @@
{
frankenphp {
php_ini {
zend.exception_ignore_args On
zend.exception_string_param_max_len 0
error_reporting E_ALL & ~E_DEPRECATED
display_errors Off
display_startup_errors Off
zend.assertions -1
opcache.validate_timestamps 0
opcache.revalidate_freq 0
}
}
}

View File

@@ -0,0 +1,19 @@
#!/bin/bash
set -eo pipefail
EXPECTED_SIGNATURE="$(wget -q -O- https://composer.github.io/installer.sig)"
wget -q -O composer-setup.php https://getcomposer.org/installer
ACTUAL_SIGNATURE="$(php -r "echo hash_file('SHA384', 'composer-setup.php');")"
if [ "$EXPECTED_SIGNATURE" != "$ACTUAL_SIGNATURE" ]
then
>&2 echo 'ERROR: Invalid installer signature'
rm composer-setup.php
exit 1
fi
php composer-setup.php --install-dir=bin
RESULT=$?
rm composer-setup.php
exit $RESULT

View File

@@ -9,15 +9,15 @@
; PHP attempts to find and load this configuration from a number of locations. ; PHP attempts to find and load this configuration from a number of locations.
; The following is a summary of its search order: ; The following is a summary of its search order:
; 1. SAPI module specific location. ; 1. SAPI module specific location.
; 2. The PHPRC environment variable. ; 2. The PHPRC environment variable. (As of PHP 5.2.0)
; 3. A number of predefined registry keys on Windows ; 3. A number of predefined registry keys on Windows (As of PHP 5.2.0)
; 4. Current working directory (except CLI) ; 4. Current working directory (except CLI)
; 5. The web server's directory (for SAPI modules), or directory of PHP ; 5. The web server's directory (for SAPI modules), or directory of PHP
; (otherwise in Windows) ; (otherwise in Windows)
; 6. The directory from the --with-config-file-path compile time option, or the ; 6. The directory from the --with-config-file-path compile time option, or the
; Windows directory (usually C:\windows) ; Windows directory (usually C:\windows)
; See the PHP docs for more specific information. ; See the PHP docs for more specific information.
; https://php.net/configuration.file ; http://php.net/configuration.file
; The syntax of the file is extremely simple. Whitespace and lines ; The syntax of the file is extremely simple. Whitespace and lines
; beginning with a semicolon are silently ignored (as you probably guessed). ; beginning with a semicolon are silently ignored (as you probably guessed).
@@ -31,7 +31,7 @@
; special sections cannot be overridden by user-defined INI files or ; special sections cannot be overridden by user-defined INI files or
; at runtime. Currently, [PATH=] and [HOST=] sections only work under ; at runtime. Currently, [PATH=] and [HOST=] sections only work under
; CGI/FastCGI. ; CGI/FastCGI.
; https://php.net/ini.sections ; http://php.net/ini.sections
; Directives are specified using the following syntax: ; Directives are specified using the following syntax:
; directive = value ; directive = value
@@ -75,7 +75,7 @@
; php.ini-production contains settings which hold security, performance and ; php.ini-production contains settings which hold security, performance and
; best practices at its core. But please be aware, these settings may break ; best practices at its core. But please be aware, these settings may break
; compatibility with older or less security-conscious applications. We ; compatibility with older or less security conscience applications. We
; recommending using the production ini in production and testing environments. ; recommending using the production ini in production and testing environments.
; php.ini-development is very similar to its production variant, except it is ; php.ini-development is very similar to its production variant, except it is
@@ -83,12 +83,11 @@
; development version only in development environments, as errors shown to ; development version only in development environments, as errors shown to
; application users can inadvertently leak otherwise secure information. ; application users can inadvertently leak otherwise secure information.
; This is the php.ini-development INI file. ; This is the php.ini-production INI file.
;;;;;;;;;;;;;;;;;;; ;;;;;;;;;;;;;;;;;;;
; Quick Reference ; ; Quick Reference ;
;;;;;;;;;;;;;;;;;;; ;;;;;;;;;;;;;;;;;;;
; The following are all the settings which are different in either the production ; 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. ; 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 ; Please see the actual settings later in the document for more details as to why
@@ -100,14 +99,19 @@
; Production Value: Off ; Production Value: Off
; display_startup_errors ; display_startup_errors
; Default Value: On ; Default Value: Off
; Development Value: On ; Development Value: On
; Production Value: Off ; Production Value: Off
; error_reporting ; error_reporting
; Default Value: E_ALL ; Default Value: E_ALL & ~E_NOTICE & ~E_STRICT & ~E_DEPRECATED
; Development Value: E_ALL ; Development Value: E_ALL
; Production Value: E_ALL & ~E_DEPRECATED ; Production Value: E_ALL & ~E_DEPRECATED & ~E_STRICT
; html_errors
; Default Value: On
; Development Value: On
; Production value: On
; log_errors ; log_errors
; Default Value: Off ; Default Value: Off
@@ -139,6 +143,11 @@
; Development Value: 1000 ; Development Value: 1000
; Production Value: 1000 ; Production Value: 1000
; session.sid_bits_per_character
; Default Value: 4
; Development Value: 5
; Production Value: 5
; short_open_tag ; short_open_tag
; Default Value: On ; Default Value: On
; Development Value: Off ; Development Value: Off
@@ -149,21 +158,6 @@
; Development Value: "GPCS" ; Development Value: "GPCS"
; Production Value: "GPCS" ; Production Value: "GPCS"
; zend.assertions
; Default Value: 1
; Development Value: 1
; Production Value: -1
; 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 ; ; php.ini Options ;
;;;;;;;;;;;;;;;;;;;; ;;;;;;;;;;;;;;;;;;;;
@@ -181,7 +175,7 @@
;;;;;;;;;;;;;;;;;;;; ;;;;;;;;;;;;;;;;;;;;
; Enable the PHP scripting language engine under Apache. ; Enable the PHP scripting language engine under Apache.
; https://php.net/engine ; http://php.net/engine
engine = On engine = On
; This directive determines whether or not PHP will recognize code between ; This directive determines whether or not PHP will recognize code between
@@ -194,11 +188,11 @@ engine = On
; Default Value: On ; Default Value: On
; Development Value: Off ; Development Value: Off
; Production Value: Off ; Production Value: Off
; https://php.net/short-open-tag ; http://php.net/short-open-tag
short_open_tag = Off short_open_tag = Off
; The number of significant digits displayed in floating point numbers. ; The number of significant digits displayed in floating point numbers.
; https://php.net/precision ; http://php.net/precision
precision = 14 precision = 14
; Output buffering is a mechanism for controlling how much output data ; Output buffering is a mechanism for controlling how much output data
@@ -222,7 +216,7 @@ precision = 14
; Default Value: Off ; Default Value: Off
; Development Value: 4096 ; Development Value: 4096
; Production Value: 4096 ; Production Value: 4096
; https://php.net/output-buffering ; http://php.net/output-buffering
output_buffering = 4096 output_buffering = 4096
; You can redirect all of the output of your scripts to a function. For ; You can redirect all of the output of your scripts to a function. For
@@ -237,7 +231,7 @@ output_buffering = 4096
; and you cannot use both "ob_gzhandler" and "zlib.output_compression". ; and you cannot use both "ob_gzhandler" and "zlib.output_compression".
; Note: output_handler must be empty if this is set 'On' !!!! ; Note: output_handler must be empty if this is set 'On' !!!!
; Instead you must use zlib.output_handler. ; Instead you must use zlib.output_handler.
; https://php.net/output-handler ; http://php.net/output-handler
;output_handler = ;output_handler =
; URL rewriter function rewrites URL on the fly by using ; URL rewriter function rewrites URL on the fly by using
@@ -266,16 +260,16 @@ output_buffering = 4096
; performance, enable output_buffering in addition. ; performance, enable output_buffering in addition.
; Note: You need to use zlib.output_handler instead of the standard ; Note: You need to use zlib.output_handler instead of the standard
; output_handler, or otherwise the output will be corrupted. ; output_handler, or otherwise the output will be corrupted.
; https://php.net/zlib.output-compression ; http://php.net/zlib.output-compression
zlib.output_compression = Off zlib.output_compression = Off
; https://php.net/zlib.output-compression-level ; http://php.net/zlib.output-compression-level
;zlib.output_compression_level = -1 ;zlib.output_compression_level = -1
; You cannot specify additional output handlers if zlib.output_compression ; You cannot specify additional output handlers if zlib.output_compression
; is activated here. This setting does the same as output_handler but in ; is activated here. This setting does the same as output_handler but in
; a different order. ; a different order.
; https://php.net/zlib.output-handler ; http://php.net/zlib.output-handler
;zlib.output_handler = ;zlib.output_handler =
; Implicit flush tells PHP to tell the output layer to flush itself ; Implicit flush tells PHP to tell the output layer to flush itself
@@ -283,7 +277,7 @@ zlib.output_compression = Off
; PHP function flush() after each and every call to print() or echo() and each ; PHP function flush() after each and every call to print() or echo() and each
; and every HTML block. Turning this option on has serious performance ; and every HTML block. Turning this option on has serious performance
; implications and is generally recommended for debugging purposes only. ; implications and is generally recommended for debugging purposes only.
; https://php.net/implicit-flush ; http://php.net/implicit-flush
; Note: This directive is hardcoded to On for the CLI SAPI ; Note: This directive is hardcoded to On for the CLI SAPI
implicit_flush = Off implicit_flush = Off
@@ -295,13 +289,6 @@ implicit_flush = Off
; callback-function. ; callback-function.
unserialize_callback_func = unserialize_callback_func =
; The unserialize_max_depth specifies the default depth limit for unserialized
; structures. Setting the depth limit too high may result in stack overflows
; during unserialization. The unserialize_max_depth ini setting can be
; overridden by the max_depth option on individual unserialize() calls.
; A value of 0 disables the depth limit.
;unserialize_max_depth = 4096
; When floats & doubles are serialized, store serialize_precision significant ; When floats & doubles are serialized, store serialize_precision significant
; digits after the floating point. The default value ensures that when floats ; digits after the floating point. The default value ensures that when floats
; are decoded with unserialize, the data will remain the same. ; are decoded with unserialize, the data will remain the same.
@@ -314,22 +301,22 @@ serialize_precision = -1
; and below. This directive makes most sense if used in a per-directory ; and below. This directive makes most sense if used in a per-directory
; or per-virtualhost web server configuration file. ; or per-virtualhost web server configuration file.
; Note: disables the realpath cache ; Note: disables the realpath cache
; https://php.net/open-basedir ; http://php.net/open-basedir
;open_basedir = ;open_basedir =
; This directive allows you to disable certain functions. ; This directive allows you to disable certain functions for security reasons.
; It receives a comma-delimited list of function names. ; It receives a comma-delimited list of function names.
; https://php.net/disable-functions ; http://php.net/disable-functions
disable_functions = disable_functions = pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wifcontinued,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_get_handler,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority,pcntl_async_signals,
; This directive allows you to disable certain classes. ; This directive allows you to disable certain classes for security reasons.
; It receives a comma-delimited list of class names. ; It receives a comma-delimited list of class names.
; https://php.net/disable-classes ; http://php.net/disable-classes
disable_classes = disable_classes =
; Colors for Syntax Highlighting mode. Anything that's acceptable in ; Colors for Syntax Highlighting mode. Anything that's acceptable in
; <span style="color: ???????"> would work. ; <span style="color: ???????"> would work.
; https://php.net/syntax-highlighting ; http://php.net/syntax-highlighting
;highlight.string = #DD0000 ;highlight.string = #DD0000
;highlight.comment = #FF9900 ;highlight.comment = #FF9900
;highlight.keyword = #007700 ;highlight.keyword = #007700
@@ -340,52 +327,38 @@ disable_classes =
; the request. Consider enabling it if executing long requests, which may end up ; the request. Consider enabling it if executing long requests, which may end up
; being interrupted by the user or a browser timing out. PHP's default behavior ; being interrupted by the user or a browser timing out. PHP's default behavior
; is to disable this feature. ; is to disable this feature.
; https://php.net/ignore-user-abort ; http://php.net/ignore-user-abort
;ignore_user_abort = On ;ignore_user_abort = On
; Determines the size of the realpath cache to be used by PHP. This value should ; Determines the size of the realpath cache to be used by PHP. This value should
; be increased on systems where PHP opens many files to reflect the quantity of ; be increased on systems where PHP opens many files to reflect the quantity of
; the file operations performed. ; the file operations performed.
; Note: if open_basedir is set, the cache is disabled ; Note: if open_basedir is set, the cache is disabled
; https://php.net/realpath-cache-size ; http://php.net/realpath-cache-size
;realpath_cache_size = 4096k ;realpath_cache_size = 4096k
; Duration of time, in seconds for which to cache realpath information for a given ; Duration of time, in seconds for which to cache realpath information for a given
; file or directory. For systems with rarely changing files, consider increasing this ; file or directory. For systems with rarely changing files, consider increasing this
; value. ; value.
; https://php.net/realpath-cache-ttl ; http://php.net/realpath-cache-ttl
;realpath_cache_ttl = 120 ;realpath_cache_ttl = 120
; Enables or disables the circular reference collector. ; Enables or disables the circular reference collector.
; https://php.net/zend.enable-gc ; http://php.net/zend.enable-gc
zend.enable_gc = On zend.enable_gc = On
; If enabled, scripts may be written in encodings that are incompatible with ; 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 ; the scanner. CP936, Big5, CP949 and Shift_JIS are the examples of such
; encodings. To use this feature, mbstring extension must be enabled. ; encodings. To use this feature, mbstring extension must be enabled.
; Default: Off
;zend.multibyte = Off ;zend.multibyte = Off
; Allows to set the default encoding for the scripts. This value will be used ; 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. ; unless "declare(encoding=...)" directive appears at the top of the script.
; Only affects if zend.multibyte is set. ; Only affects if zend.multibyte is set.
; Default: ""
;zend.script_encoding = ;zend.script_encoding =
; 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 = Off
; 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
zend.exception_string_param_max_len = 15
;;;;;;;;;;;;;;;;; ;;;;;;;;;;;;;;;;;
; Miscellaneous ; ; Miscellaneous ;
;;;;;;;;;;;;;;;;; ;;;;;;;;;;;;;;;;;
@@ -394,15 +367,15 @@ zend.exception_string_param_max_len = 15
; (e.g. by adding its signature to the Web server header). It is no security ; (e.g. by adding its signature to the Web server header). It is no security
; threat in any way, but it makes it possible to determine whether you use PHP ; threat in any way, but it makes it possible to determine whether you use PHP
; on your server or not. ; on your server or not.
; https://php.net/expose-php ; http://php.net/expose-php
expose_php = On expose_php = Off
;;;;;;;;;;;;;;;;;;; ;;;;;;;;;;;;;;;;;;;
; Resource Limits ; ; Resource Limits ;
;;;;;;;;;;;;;;;;;;; ;;;;;;;;;;;;;;;;;;;
; Maximum execution time of each script, in seconds ; Maximum execution time of each script, in seconds
; https://php.net/max-execution-time ; http://php.net/max-execution-time
; Note: This directive is hardcoded to 0 for the CLI SAPI ; Note: This directive is hardcoded to 0 for the CLI SAPI
max_execution_time = 30 max_execution_time = 30
@@ -413,23 +386,18 @@ max_execution_time = 30
; Default Value: -1 (Unlimited) ; Default Value: -1 (Unlimited)
; Development Value: 60 (60 seconds) ; Development Value: 60 (60 seconds)
; Production Value: 60 (60 seconds) ; Production Value: 60 (60 seconds)
; https://php.net/max-input-time ; http://php.net/max-input-time
max_input_time = 60 max_input_time = 60
; Maximum input variable nesting level ; Maximum input variable nesting level
; https://php.net/max-input-nesting-level ; http://php.net/max-input-nesting-level
;max_input_nesting_level = 64 ;max_input_nesting_level = 64
; How many GET/POST/COOKIE input variables may be accepted ; How many GET/POST/COOKIE input variables may be accepted
;max_input_vars = 1000 ;max_input_vars = 1000
; How many multipart body parts (combined input variable and file uploads) may ; Maximum amount of memory a script may consume (128MB)
; be accepted. ; http://php.net/memory-limit
; Default Value: -1 (Sum of max_input_vars and max_file_uploads)
;max_multipart_body_parts = 1500
; Maximum amount of memory a script may consume
; https://php.net/memory-limit
memory_limit = 128M memory_limit = 128M
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
@@ -442,7 +410,7 @@ memory_limit = 128M
; operators. The error level constants are below here for convenience as well as ; operators. The error level constants are below here for convenience as well as
; some common settings and their meanings. ; some common settings and their meanings.
; By default, PHP is set to take action on all errors, notices and warnings EXCEPT ; By default, PHP is set to take action on all errors, notices and warnings EXCEPT
; those related to E_NOTICE, which together cover best practices and ; those related to E_NOTICE and E_STRICT, which together cover best practices and
; recommended coding standards in PHP. For performance reasons, this is the ; recommended coding standards in PHP. For performance reasons, this is the
; recommend error reporting setting. Your production server shouldn't be wasting ; recommend error reporting setting. Your production server shouldn't be wasting
; resources complaining about best practices and coding standards. That's what ; resources complaining about best practices and coding standards. That's what
@@ -452,7 +420,7 @@ memory_limit = 128M
; development and early testing. ; development and early testing.
; ;
; Error Level Constants: ; Error Level Constants:
; E_ALL - All errors and warnings ; E_ALL - All errors and warnings (includes E_STRICT as of PHP 5.4.0)
; E_ERROR - fatal run-time errors ; E_ERROR - fatal run-time errors
; E_RECOVERABLE_ERROR - almost fatal run-time errors ; E_RECOVERABLE_ERROR - almost fatal run-time errors
; E_WARNING - run-time warnings (non-fatal errors) ; E_WARNING - run-time warnings (non-fatal errors)
@@ -462,6 +430,9 @@ memory_limit = 128M
; intentional (e.g., using an uninitialized variable and ; intentional (e.g., using an uninitialized variable and
; relying on the fact it is automatically initialized to an ; relying on the fact it is automatically initialized to an
; empty string) ; empty string)
; E_STRICT - run-time notices, enable to have PHP suggest changes
; to your code which will ensure the best interoperability
; and forward compatibility of your code
; E_CORE_ERROR - fatal errors that occur during PHP's initial startup ; E_CORE_ERROR - fatal errors that occur during PHP's initial startup
; E_CORE_WARNING - warnings (non-fatal errors) that occur during PHP's ; E_CORE_WARNING - warnings (non-fatal errors) that occur during PHP's
; initial startup ; initial startup
@@ -477,12 +448,13 @@ memory_limit = 128M
; Common Values: ; Common Values:
; E_ALL (Show all errors, warnings and notices including coding standards.) ; E_ALL (Show all errors, warnings and notices including coding standards.)
; E_ALL & ~E_NOTICE (Show all errors, except for notices) ; 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) ; E_COMPILE_ERROR|E_RECOVERABLE_ERROR|E_ERROR|E_CORE_ERROR (Show only errors)
; Default Value: E_ALL ; Default Value: E_ALL & ~E_NOTICE & ~E_STRICT & ~E_DEPRECATED
; Development Value: E_ALL ; Development Value: E_ALL
; Production Value: E_ALL & ~E_DEPRECATED ; Production Value: E_ALL & ~E_DEPRECATED & ~E_STRICT
; https://php.net/error-reporting ; http://php.net/error-reporting
error_reporting = E_ALL error_reporting = E_ALL & ~E_DEPRECATED & ~E_STRICT
; This directive controls whether or not and where PHP will output errors, ; This directive controls whether or not and where PHP will output errors,
; notices and warnings too. Error output is very useful during development, but ; notices and warnings too. Error output is very useful during development, but
@@ -498,17 +470,19 @@ error_reporting = E_ALL
; Default Value: On ; Default Value: On
; Development Value: On ; Development Value: On
; Production Value: Off ; Production Value: Off
; https://php.net/display-errors ; http://php.net/display-errors
display_errors = On display_errors = Off
; The display of errors which occur during PHP's startup sequence are handled ; The display of errors which occur during PHP's startup sequence are handled
; separately from display_errors. We strongly recommend you set this to 'off' ; separately from display_errors. PHP's default behavior is to suppress those
; for production servers to avoid leaking configuration details. ; errors from clients. Turning the display of startup errors on can be useful in
; Default Value: On ; debugging configuration problems. We strongly recommend you
; set this to 'off' for production servers.
; Default Value: Off
; Development Value: On ; Development Value: On
; Production Value: Off ; Production Value: Off
; https://php.net/display-startup-errors ; http://php.net/display-startup-errors
display_startup_errors = On display_startup_errors = Off
; Besides displaying errors, PHP can also log errors to locations such as a ; Besides displaying errors, PHP can also log errors to locations such as a
; server-specific log, STDERR, or a location specified by the error_log ; server-specific log, STDERR, or a location specified by the error_log
@@ -517,31 +491,46 @@ display_startup_errors = On
; Default Value: Off ; Default Value: Off
; Development Value: On ; Development Value: On
; Production Value: On ; Production Value: On
; https://php.net/log-errors ; http://php.net/log-errors
log_errors = On log_errors = On
; Set maximum length of log_errors. In error_log information about the source is
; added. The default is 1024 and 0 allows to not apply any maximum length at all.
; http://php.net/log-errors-max-len
log_errors_max_len = 1024
; Do not log repeated messages. Repeated errors must occur in same file on same ; Do not log repeated messages. Repeated errors must occur in same file on same
; line unless ignore_repeated_source is set true. ; line unless ignore_repeated_source is set true.
; https://php.net/ignore-repeated-errors ; http://php.net/ignore-repeated-errors
ignore_repeated_errors = Off ignore_repeated_errors = Off
; Ignore source of message when ignoring repeated messages. When this setting ; Ignore source of message when ignoring repeated messages. When this setting
; is On you will not log errors with repeated messages from different files or ; is On you will not log errors with repeated messages from different files or
; source lines. ; source lines.
; https://php.net/ignore-repeated-source ; http://php.net/ignore-repeated-source
ignore_repeated_source = Off ignore_repeated_source = Off
; If this parameter is set to Off, then memory leaks will not be shown (on ; If this parameter is set to Off, then memory leaks will not be shown (on
; stdout or in the log). This is only effective in a debug compile, and if ; stdout or in the log). This has only effect in a debug compile, and if
; error reporting includes E_WARNING in the allowed list ; error reporting includes E_WARNING in the allowed list
; https://php.net/report-memleaks ; http://php.net/report-memleaks
report_memleaks = On report_memleaks = On
; This setting is off by default. ; This setting is on by default.
;report_zend_debug = 0 ;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 ; Turn off normal error reporting and emit XML-RPC error XML
; https://php.net/xmlrpc-errors ; http://php.net/xmlrpc-errors
;xmlrpc_errors = 0 ;xmlrpc_errors = 0
; An XML-RPC faultCode ; An XML-RPC faultCode
@@ -551,40 +540,43 @@ report_memleaks = On
; error message as HTML for easier reading. This directive controls whether ; error message as HTML for easier reading. This directive controls whether
; the error message is formatted as HTML or not. ; the error message is formatted as HTML or not.
; Note: This directive is hardcoded to Off for the CLI SAPI ; Note: This directive is hardcoded to Off for the CLI SAPI
; https://php.net/html-errors ; Default Value: On
;html_errors = On ; Development Value: On
; Production value: On
; http://php.net/html-errors
html_errors = On
; If html_errors is set to On *and* docref_root is not empty, then PHP ; If html_errors is set to On *and* docref_root is not empty, then PHP
; produces clickable error messages that direct to a page describing the error ; produces clickable error messages that direct to a page describing the error
; or function causing the error in detail. ; or function causing the error in detail.
; You can download a copy of the PHP manual from https://php.net/docs ; You can download a copy of the PHP manual from http://php.net/docs
; and change docref_root to the base URL of your local copy including the ; and change docref_root to the base URL of your local copy including the
; leading '/'. You must also specify the file extension being used including ; leading '/'. You must also specify the file extension being used including
; the dot. PHP's default behavior is to leave these settings empty, in which ; the dot. PHP's default behavior is to leave these settings empty, in which
; case no links to documentation are generated. ; case no links to documentation are generated.
; Note: Never use this feature for production boxes. ; Note: Never use this feature for production boxes.
; https://php.net/docref-root ; http://php.net/docref-root
; Examples ; Examples
;docref_root = "/phpmanual/" ;docref_root = "/phpmanual/"
; https://php.net/docref-ext ; http://php.net/docref-ext
;docref_ext = .html ;docref_ext = .html
; String to output before an error message. PHP's default behavior is to leave ; String to output before an error message. PHP's default behavior is to leave
; this setting blank. ; this setting blank.
; https://php.net/error-prepend-string ; http://php.net/error-prepend-string
; Example: ; Example:
;error_prepend_string = "<span style='color: #ff0000'>" ;error_prepend_string = "<span style='color: #ff0000'>"
; String to output after an error message. PHP's default behavior is to leave ; String to output after an error message. PHP's default behavior is to leave
; this setting blank. ; this setting blank.
; https://php.net/error-append-string ; http://php.net/error-append-string
; Example: ; Example:
;error_append_string = "</span>" ;error_append_string = "</span>"
; Log errors to specified file. PHP's default behavior is to leave this value ; Log errors to specified file. PHP's default behavior is to leave this value
; empty. ; empty.
; https://php.net/error-log ; http://php.net/error-log
; Example: ; Example:
;error_log = php_errors.log ;error_log = php_errors.log
; Log errors to syslog (Event Log on Windows). ; Log errors to syslog (Event Log on Windows).
@@ -607,7 +599,7 @@ report_memleaks = On
; no-ctrl (all characters except control characters) ; no-ctrl (all characters except control characters)
; all (all characters) ; all (all characters)
; raw (like "all", but messages are not split at newlines) ; raw (like "all", but messages are not split at newlines)
; https://php.net/syslog.filter ; http://php.net/syslog.filter
;syslog.filter = ascii ;syslog.filter = ascii
;windows.show_crt_warning ;windows.show_crt_warning
@@ -621,14 +613,14 @@ report_memleaks = On
; The separator used in PHP generated URLs to separate arguments. ; The separator used in PHP generated URLs to separate arguments.
; PHP's default setting is "&". ; PHP's default setting is "&".
; https://php.net/arg-separator.output ; http://php.net/arg-separator.output
; Example: ; Example:
;arg_separator.output = "&amp;" ;arg_separator.output = "&amp;"
; List of separator(s) used by PHP to parse input URLs into variables. ; List of separator(s) used by PHP to parse input URLs into variables.
; PHP's default setting is "&". ; PHP's default setting is "&".
; NOTE: Every character in this directive is considered as separator! ; NOTE: Every character in this directive is considered as separator!
; https://php.net/arg-separator.input ; http://php.net/arg-separator.input
; Example: ; Example:
;arg_separator.input = ";&" ;arg_separator.input = ";&"
@@ -642,7 +634,7 @@ report_memleaks = On
; Default Value: "EGPCS" ; Default Value: "EGPCS"
; Development Value: "GPCS" ; Development Value: "GPCS"
; Production Value: "GPCS"; ; Production Value: "GPCS";
; https://php.net/variables-order ; http://php.net/variables-order
variables_order = "GPCS" variables_order = "GPCS"
; This directive determines which super global data (G,P & C) should be ; This directive determines which super global data (G,P & C) should be
@@ -655,7 +647,7 @@ variables_order = "GPCS"
; Default Value: None ; Default Value: None
; Development Value: "GP" ; Development Value: "GP"
; Production Value: "GP" ; Production Value: "GP"
; https://php.net/request-order ; http://php.net/request-order
request_order = "GP" request_order = "GP"
; This directive determines whether PHP registers $argv & $argc each time it ; This directive determines whether PHP registers $argv & $argc each time it
@@ -670,15 +662,15 @@ request_order = "GP"
; Default Value: On ; Default Value: On
; Development Value: Off ; Development Value: Off
; Production Value: Off ; Production Value: Off
; https://php.net/register-argc-argv ; http://php.net/register-argc-argv
register_argc_argv = Off register_argc_argv = Off
; When enabled, the ENV, REQUEST and SERVER variables are created when they're ; When enabled, the ENV, REQUEST and SERVER variables are created when they're
; first used (Just In Time) instead of when the script starts. If these ; first used (Just In Time) instead of when the script starts. If these
; variables are not used within a script, having this directive on will result ; variables are not used within a script, having this directive on will result
; in a performance gain. The PHP directive register_argc_argv must be disabled ; in a performance gain. The PHP directive register_argc_argv must be disabled
; for this directive to have any effect. ; for this directive to have any affect.
; https://php.net/auto-globals-jit ; http://php.net/auto-globals-jit
auto_globals_jit = On auto_globals_jit = On
; Whether PHP will read the POST data. ; Whether PHP will read the POST data.
@@ -687,48 +679,48 @@ auto_globals_jit = On
; and $_FILES to always be empty; the only way you will be able to read the ; and $_FILES to always be empty; the only way you will be able to read the
; POST data will be through the php://input stream wrapper. This can be useful ; POST data will be through the php://input stream wrapper. This can be useful
; to proxy requests or to process the POST data in a memory efficient fashion. ; to proxy requests or to process the POST data in a memory efficient fashion.
; https://php.net/enable-post-data-reading ; http://php.net/enable-post-data-reading
;enable_post_data_reading = Off ;enable_post_data_reading = Off
; Maximum size of POST data that PHP will accept. ; Maximum size of POST data that PHP will accept.
; Its value may be 0 to disable the limit. It is ignored if POST data reading ; Its value may be 0 to disable the limit. It is ignored if POST data reading
; is disabled through enable_post_data_reading. ; is disabled through enable_post_data_reading.
; https://php.net/post-max-size ; http://php.net/post-max-size
post_max_size = 8M post_max_size = 80M
; Automatically add files before PHP document. ; Automatically add files before PHP document.
; https://php.net/auto-prepend-file ; http://php.net/auto-prepend-file
auto_prepend_file = auto_prepend_file =
; Automatically add files after PHP document. ; Automatically add files after PHP document.
; https://php.net/auto-append-file ; http://php.net/auto-append-file
auto_append_file = auto_append_file =
; By default, PHP will output a media type using the Content-Type header. To ; By default, PHP will output a media type using the Content-Type header. To
; disable this, simply set it to be empty. ; disable this, simply set it to be empty.
; ;
; PHP's built-in default media type is set to text/html. ; PHP's built-in default media type is set to text/html.
; https://php.net/default-mimetype ; http://php.net/default-mimetype
default_mimetype = "text/html" default_mimetype = "text/html"
; PHP's default character set is set to UTF-8. ; PHP's default character set is set to UTF-8.
; https://php.net/default-charset ; http://php.net/default-charset
default_charset = "UTF-8" default_charset = "UTF-8"
; PHP internal character encoding is set to empty. ; PHP internal character encoding is set to empty.
; If empty, default_charset is used. ; If empty, default_charset is used.
; https://php.net/internal-encoding ; http://php.net/internal-encoding
;internal_encoding = ;internal_encoding =
; PHP input character encoding is set to empty. ; PHP input character encoding is set to empty.
; If empty, default_charset is used. ; If empty, default_charset is used.
; https://php.net/input-encoding ; http://php.net/input-encoding
;input_encoding = ;input_encoding =
; PHP output character encoding is set to empty. ; PHP output character encoding is set to empty.
; If empty, default_charset is used. ; If empty, default_charset is used.
; See also output_buffer. ; See also output_buffer.
; https://php.net/output-encoding ; http://php.net/output-encoding
;output_encoding = ;output_encoding =
;;;;;;;;;;;;;;;;;;;;;;;;; ;;;;;;;;;;;;;;;;;;;;;;;;;
@@ -736,29 +728,29 @@ default_charset = "UTF-8"
;;;;;;;;;;;;;;;;;;;;;;;;; ;;;;;;;;;;;;;;;;;;;;;;;;;
; UNIX: "/path1:/path2" ; UNIX: "/path1:/path2"
;include_path = ".:/php/includes" ;include_path = ".:/usr/share/php"
; ;
; Windows: "\path1;\path2" ; Windows: "\path1;\path2"
;include_path = ".;c:\php\includes" ;include_path = ".;c:\php\includes"
; ;
; PHP's default setting for include_path is ".;/path/to/php/pear" ; PHP's default setting for include_path is ".;/path/to/php/pear"
; https://php.net/include-path ; http://php.net/include-path
; The root of the PHP pages, used only if nonempty. ; The root of the PHP pages, used only if nonempty.
; if PHP was not compiled with FORCE_REDIRECT, you SHOULD set doc_root ; if PHP was not compiled with FORCE_REDIRECT, you SHOULD set doc_root
; if you are running php as a CGI under any web server (other than IIS) ; if you are running php as a CGI under any web server (other than IIS)
; see documentation for security issues. The alternate is to use the ; see documentation for security issues. The alternate is to use the
; cgi.force_redirect configuration below ; cgi.force_redirect configuration below
; https://php.net/doc-root ; http://php.net/doc-root
doc_root = doc_root =
; The directory under which PHP opens the script using /~username used only ; The directory under which PHP opens the script using /~username used only
; if nonempty. ; if nonempty.
; https://php.net/user-dir ; http://php.net/user-dir
user_dir = user_dir =
; Directory in which the loadable extensions (modules) reside. ; Directory in which the loadable extensions (modules) reside.
; https://php.net/extension-dir ; http://php.net/extension-dir
;extension_dir = "./" ;extension_dir = "./"
; On windows: ; On windows:
;extension_dir = "ext" ;extension_dir = "ext"
@@ -770,14 +762,14 @@ user_dir =
; Whether or not to enable the dl() function. The dl() function does NOT work ; Whether or not to enable the dl() function. The dl() function does NOT work
; properly in multithreaded servers, such as IIS or Zeus, and is automatically ; properly in multithreaded servers, such as IIS or Zeus, and is automatically
; disabled on them. ; disabled on them.
; https://php.net/enable-dl ; http://php.net/enable-dl
enable_dl = Off enable_dl = Off
; cgi.force_redirect is necessary to provide security running PHP as a CGI under ; cgi.force_redirect is necessary to provide security running PHP as a CGI under
; most web servers. Left undefined, PHP turns this on by default. You can ; most web servers. Left undefined, PHP turns this on by default. You can
; turn it off here AT YOUR OWN RISK ; turn it off here AT YOUR OWN RISK
; **You CAN safely turn this off for IIS, in fact, you MUST.** ; **You CAN safely turn this off for IIS, in fact, you MUST.**
; https://php.net/cgi.force-redirect ; http://php.net/cgi.force-redirect
;cgi.force_redirect = 1 ;cgi.force_redirect = 1
; if cgi.nph is enabled it will force cgi to always sent Status: 200 with ; if cgi.nph is enabled it will force cgi to always sent Status: 200 with
@@ -788,7 +780,7 @@ enable_dl = Off
; (iPlanet) web servers, you MAY need to set an environment variable name that PHP ; (iPlanet) web servers, you MAY need to set an environment variable name that PHP
; will look for to know it is OK to continue execution. Setting this variable MAY ; will look for to know it is OK to continue execution. Setting this variable MAY
; cause security issues, KNOW WHAT YOU ARE DOING FIRST. ; cause security issues, KNOW WHAT YOU ARE DOING FIRST.
; https://php.net/cgi.redirect-status-env ; http://php.net/cgi.redirect-status-env
;cgi.redirect_status_env = ;cgi.redirect_status_env =
; cgi.fix_pathinfo provides *real* PATH_INFO/PATH_TRANSLATED support for CGI. PHP's ; cgi.fix_pathinfo provides *real* PATH_INFO/PATH_TRANSLATED support for CGI. PHP's
@@ -797,7 +789,7 @@ enable_dl = Off
; this to 1 will cause PHP CGI to fix its paths to conform to the spec. A setting ; this to 1 will cause PHP CGI to fix its paths to conform to the spec. A setting
; of zero causes PHP to behave as before. Default is 1. You should fix your scripts ; of zero causes PHP to behave as before. Default is 1. You should fix your scripts
; to use SCRIPT_FILENAME rather than PATH_TRANSLATED. ; to use SCRIPT_FILENAME rather than PATH_TRANSLATED.
; https://php.net/cgi.fix-pathinfo ; http://php.net/cgi.fix-pathinfo
;cgi.fix_pathinfo=1 ;cgi.fix_pathinfo=1
; if cgi.discard_path is enabled, the PHP CGI binary can safely be placed outside ; if cgi.discard_path is enabled, the PHP CGI binary can safely be placed outside
@@ -809,7 +801,7 @@ enable_dl = Off
; security context that the request runs under. mod_fastcgi under Apache ; security context that the request runs under. mod_fastcgi under Apache
; does not currently support this feature (03/17/2002) ; does not currently support this feature (03/17/2002)
; Set to 1 if running under IIS. Default is zero. ; Set to 1 if running under IIS. Default is zero.
; https://php.net/fastcgi.impersonate ; http://php.net/fastcgi.impersonate
;fastcgi.impersonate = 1 ;fastcgi.impersonate = 1
; Disable logging through FastCGI connection. PHP's default behavior is to enable ; Disable logging through FastCGI connection. PHP's default behavior is to enable
@@ -821,14 +813,14 @@ enable_dl = Off
; is supported by Apache. When this option is set to 1, PHP will send ; is supported by Apache. When this option is set to 1, PHP will send
; RFC2616 compliant header. ; RFC2616 compliant header.
; Default is zero. ; Default is zero.
; https://php.net/cgi.rfc2616-headers ; http://php.net/cgi.rfc2616-headers
;cgi.rfc2616_headers = 0 ;cgi.rfc2616_headers = 0
; cgi.check_shebang_line controls whether CGI PHP checks for line starting with #! ; cgi.check_shebang_line controls whether CGI PHP checks for line starting with #!
; (shebang) at the top of the running script. This line might be needed if the ; (shebang) at the top of the running script. This line might be needed if the
; script support running both as stand-alone script and via PHP CGI<. PHP in CGI ; script support running both as stand-alone script and via PHP CGI<. PHP in CGI
; mode skips this line and ignores its content if this directive is turned on. ; mode skips this line and ignores its content if this directive is turned on.
; https://php.net/cgi.check-shebang-line ; http://php.net/cgi.check-shebang-line
;cgi.check_shebang_line=1 ;cgi.check_shebang_line=1
;;;;;;;;;;;;;;;; ;;;;;;;;;;;;;;;;
@@ -836,17 +828,17 @@ enable_dl = Off
;;;;;;;;;;;;;;;; ;;;;;;;;;;;;;;;;
; Whether to allow HTTP file uploads. ; Whether to allow HTTP file uploads.
; https://php.net/file-uploads ; http://php.net/file-uploads
file_uploads = On file_uploads = On
; Temporary directory for HTTP uploaded files (will use system default if not ; Temporary directory for HTTP uploaded files (will use system default if not
; specified). ; specified).
; https://php.net/upload-tmp-dir ; http://php.net/upload-tmp-dir
;upload_tmp_dir = ;upload_tmp_dir =
; Maximum allowed size for uploaded files. ; Maximum allowed size for uploaded files.
; https://php.net/upload-max-filesize ; http://php.net/upload-max-filesize
upload_max_filesize = 2M upload_max_filesize = 22M
; Maximum number of files that can be uploaded via a single request ; Maximum number of files that can be uploaded via a single request
max_file_uploads = 20 max_file_uploads = 20
@@ -856,24 +848,24 @@ max_file_uploads = 20
;;;;;;;;;;;;;;;;;; ;;;;;;;;;;;;;;;;;;
; Whether to allow the treatment of URLs (like http:// or ftp://) as files. ; Whether to allow the treatment of URLs (like http:// or ftp://) as files.
; https://php.net/allow-url-fopen ; http://php.net/allow-url-fopen
allow_url_fopen = On allow_url_fopen = On
; Whether to allow include/require to open URLs (like https:// or ftp://) as files. ; Whether to allow include/require to open URLs (like http:// or ftp://) as files.
; https://php.net/allow-url-include ; http://php.net/allow-url-include
allow_url_include = Off allow_url_include = Off
; Define the anonymous ftp password (your email address). PHP's default setting ; Define the anonymous ftp password (your email address). PHP's default setting
; for this is empty. ; for this is empty.
; https://php.net/from ; http://php.net/from
;from="john@doe.com" ;from="john@doe.com"
; Define the User-Agent string. PHP's default setting for this is empty. ; Define the User-Agent string. PHP's default setting for this is empty.
; https://php.net/user-agent ; http://php.net/user-agent
;user_agent="PHP" ;user_agent="PHP"
; Default timeout for socket based streams (seconds) ; Default timeout for socket based streams (seconds)
; https://php.net/default-socket-timeout ; http://php.net/default-socket-timeout
default_socket_timeout = 60 default_socket_timeout = 60
; If your scripts have to deal with files from Macintosh systems, ; If your scripts have to deal with files from Macintosh systems,
@@ -881,7 +873,7 @@ default_socket_timeout = 60
; unix or win32 systems, setting this flag will cause PHP to ; unix or win32 systems, setting this flag will cause PHP to
; automatically detect the EOL character in those files so that ; automatically detect the EOL character in those files so that
; fgets() and file() will work regardless of the source of the file. ; fgets() and file() will work regardless of the source of the file.
; https://php.net/auto-detect-line-endings ; http://php.net/auto-detect-line-endings
;auto_detect_line_endings = Off ;auto_detect_line_endings = Off
;;;;;;;;;;;;;;;;;;;;;; ;;;;;;;;;;;;;;;;;;;;;;
@@ -909,27 +901,29 @@ default_socket_timeout = 60
; ;
; Notes for Windows environments : ; Notes for Windows environments :
; ;
; - Many DLL files are located in the ext/ ; - Many DLL files are located in the extensions/ (PHP 4) or ext/ (PHP 5+)
; extension folders as well as the separate PECL DLL download. ; extension folders as well as the separate PECL DLL download (PHP 5+).
; Be sure to appropriately set the extension_dir directive. ; Be sure to appropriately set the extension_dir directive.
; ;
;extension=bz2 ;extension=bz2
;extension=curl ;extension=curl
;extension=ffi
;extension=ftp
;extension=fileinfo ;extension=fileinfo
;extension=gd ;extension=gd2
;extension=gettext ;extension=gettext
;extension=gmp ;extension=gmp
;extension=intl ;extension=intl
;extension=imap
;extension=interbase
;extension=ldap ;extension=ldap
;extension=mbstring ;extension=mbstring
;extension=exif ; Must be after mbstring as it depends on it ;extension=exif ; Must be after mbstring as it depends on it
;extension=mysqli ;extension=mysqli
;extension=oci8_12c ; Use with Oracle Database 12c Instant Client
;extension=odbc ;extension=odbc
;extension=openssl ;extension=openssl
;extension=pdo_firebird ;extension=pdo_firebird
;extension=pdo_mysql extension=pdo_mysql
;extension=pdo_oci
;extension=pdo_odbc ;extension=pdo_odbc
;extension=pdo_pgsql ;extension=pdo_pgsql
;extension=pdo_sqlite ;extension=pdo_sqlite
@@ -937,7 +931,7 @@ default_socket_timeout = 60
;extension=shmop ;extension=shmop
; The MIBS data available in the PHP distribution must be installed. ; The MIBS data available in the PHP distribution must be installed.
; See https://www.php.net/manual/en/snmp.installation.php ; See http://www.php.net/manual/en/snmp.installation.php
;extension=snmp ;extension=snmp
;extension=soap ;extension=soap
@@ -945,10 +939,8 @@ default_socket_timeout = 60
;extension=sodium ;extension=sodium
;extension=sqlite3 ;extension=sqlite3
;extension=tidy ;extension=tidy
;extension=xmlrpc
;extension=xsl ;extension=xsl
;extension=zip
;zend_extension=opcache
;;;;;;;;;;;;;;;;;;; ;;;;;;;;;;;;;;;;;;;
; Module Settings ; ; Module Settings ;
@@ -960,26 +952,26 @@ cli_server.color = On
[Date] [Date]
; Defines the default timezone used by the date functions ; Defines the default timezone used by the date functions
; https://php.net/date.timezone ; http://php.net/date.timezone
;date.timezone = ;date.timezone =
; https://php.net/date.default-latitude ; http://php.net/date.default-latitude
;date.default_latitude = 31.7667 ;date.default_latitude = 31.7667
; https://php.net/date.default-longitude ; http://php.net/date.default-longitude
;date.default_longitude = 35.2333 ;date.default_longitude = 35.2333
; https://php.net/date.sunrise-zenith ; http://php.net/date.sunrise-zenith
;date.sunrise_zenith = 90.833333 ;date.sunrise_zenith = 90.583333
; https://php.net/date.sunset-zenith ; http://php.net/date.sunset-zenith
;date.sunset_zenith = 90.833333 ;date.sunset_zenith = 90.583333
[filter] [filter]
; https://php.net/filter.default ; http://php.net/filter.default
;filter.default = unsafe_raw ;filter.default = unsafe_raw
; https://php.net/filter.default-flags ; http://php.net/filter.default-flags
;filter.default_flags = ;filter.default_flags =
[iconv] [iconv]
@@ -1000,6 +992,13 @@ cli_server.color = On
; otherwise output encoding conversion cannot be performed. ; otherwise output encoding conversion cannot be performed.
;iconv.output_encoding = ;iconv.output_encoding =
[imap]
; rsh/ssh logins are disabled by default. Use this INI entry if you want to
; enable them. Note that the IMAP library does not filter mailbox names before
; passing them to rsh/ssh command, thus passing untrusted data to this function
; with rsh/ssh enabled is insecure.
;imap.enable_insecure_rsh=0
[intl] [intl]
;intl.default_locale = ;intl.default_locale =
; This directive allows you to produce PHP errors when some error ; This directive allows you to produce PHP errors when some error
@@ -1010,7 +1009,7 @@ cli_server.color = On
[sqlite3] [sqlite3]
; Directory pointing to SQLite3 extensions ; Directory pointing to SQLite3 extensions
; https://php.net/sqlite3.extension-dir ; http://php.net/sqlite3.extension-dir
;sqlite3.extension_dir = ;sqlite3.extension_dir =
; SQLite defensive mode flag (only available from SQLite 3.26+) ; SQLite defensive mode flag (only available from SQLite 3.26+)
@@ -1024,14 +1023,14 @@ cli_server.color = On
[Pcre] [Pcre]
; PCRE library backtracking limit. ; PCRE library backtracking limit.
; https://php.net/pcre.backtrack-limit ; http://php.net/pcre.backtrack-limit
;pcre.backtrack_limit=100000 ;pcre.backtrack_limit=100000
; PCRE library recursion limit. ; PCRE library recursion limit.
; Please note that if you set this value to a high number you may consume all ; Please note that if you set this value to a high number you may consume all
; the available process stack and eventually crash PHP (due to reaching the ; the available process stack and eventually crash PHP (due to reaching the
; stack size limit imposed by the Operating System). ; stack size limit imposed by the Operating System).
; https://php.net/pcre.recursion-limit ; http://php.net/pcre.recursion-limit
;pcre.recursion_limit=100000 ;pcre.recursion_limit=100000
; Enables or disables JIT compilation of patterns. This requires the PCRE ; Enables or disables JIT compilation of patterns. This requires the PCRE
@@ -1040,36 +1039,38 @@ cli_server.color = On
[Pdo] [Pdo]
; Whether to pool ODBC connections. Can be one of "strict", "relaxed" or "off" ; Whether to pool ODBC connections. Can be one of "strict", "relaxed" or "off"
; https://php.net/pdo-odbc.connection-pooling ; http://php.net/pdo-odbc.connection-pooling
;pdo_odbc.connection_pooling=strict ;pdo_odbc.connection_pooling=strict
;pdo_odbc.db2_instance_name
[Pdo_mysql] [Pdo_mysql]
; Default socket name for local MySQL connects. If empty, uses the built-in ; Default socket name for local MySQL connects. If empty, uses the built-in
; MySQL defaults. ; MySQL defaults.
pdo_mysql.default_socket= pdo_mysql.default_socket=
[Phar] [Phar]
; https://php.net/phar.readonly ; http://php.net/phar.readonly
;phar.readonly = On ;phar.readonly = On
; https://php.net/phar.require-hash ; http://php.net/phar.require-hash
;phar.require_hash = On ;phar.require_hash = On
;phar.cache_list = ;phar.cache_list =
[mail function] [mail function]
; For Win32 only. ; For Win32 only.
; https://php.net/smtp ; http://php.net/smtp
SMTP = localhost SMTP = localhost
; https://php.net/smtp-port ; http://php.net/smtp-port
smtp_port = 25 smtp_port = 25
; For Win32 only. ; For Win32 only.
; https://php.net/sendmail-from ; http://php.net/sendmail-from
;sendmail_from = me@example.com ;sendmail_from = me@example.com
; For Unix only. You may supply arguments as well (default: "sendmail -t -i"). ; For Unix only. You may supply arguments as well (default: "sendmail -t -i").
; https://php.net/sendmail-path ; http://php.net/sendmail-path
;sendmail_path = ;sendmail_path =
; Force the addition of the specified parameters to be passed as extra parameters ; Force the addition of the specified parameters to be passed as extra parameters
@@ -1080,10 +1081,6 @@ smtp_port = 25
; Add X-PHP-Originating-Script: that will include uid of the script followed by the filename ; Add X-PHP-Originating-Script: that will include uid of the script followed by the filename
mail.add_x_header = Off mail.add_x_header = Off
; Use mixed LF and CRLF line separators to keep compatibility with some
; RFC 2822 non conformant MTA.
mail.mixed_lf_and_crlf = Off
; The path to a log file that will log all mail() calls. Log entries include ; The path to a log file that will log all mail() calls. Log entries include
; the full path of the script, line number, To address and headers. ; the full path of the script, line number, To address and headers.
;mail.log = ;mail.log =
@@ -1091,13 +1088,13 @@ mail.mixed_lf_and_crlf = Off
;mail.log = syslog ;mail.log = syslog
[ODBC] [ODBC]
; https://php.net/odbc.default-db ; http://php.net/odbc.default-db
;odbc.default_db = Not yet implemented ;odbc.default_db = Not yet implemented
; https://php.net/odbc.default-user ; http://php.net/odbc.default-user
;odbc.default_user = Not yet implemented ;odbc.default_user = Not yet implemented
; https://php.net/odbc.default-pw ; http://php.net/odbc.default-pw
;odbc.default_pw = Not yet implemented ;odbc.default_pw = Not yet implemented
; Controls the ODBC cursor model. ; Controls the ODBC cursor model.
@@ -1105,72 +1102,99 @@ mail.mixed_lf_and_crlf = Off
;odbc.default_cursortype ;odbc.default_cursortype
; Allow or prevent persistent links. ; Allow or prevent persistent links.
; https://php.net/odbc.allow-persistent ; http://php.net/odbc.allow-persistent
odbc.allow_persistent = On odbc.allow_persistent = On
; Check that a connection is still valid before reuse. ; Check that a connection is still valid before reuse.
; https://php.net/odbc.check-persistent ; http://php.net/odbc.check-persistent
odbc.check_persistent = On odbc.check_persistent = On
; Maximum number of persistent links. -1 means no limit. ; Maximum number of persistent links. -1 means no limit.
; https://php.net/odbc.max-persistent ; http://php.net/odbc.max-persistent
odbc.max_persistent = -1 odbc.max_persistent = -1
; Maximum number of links (persistent + non-persistent). -1 means no limit. ; Maximum number of links (persistent + non-persistent). -1 means no limit.
; https://php.net/odbc.max-links ; http://php.net/odbc.max-links
odbc.max_links = -1 odbc.max_links = -1
; Handling of LONG fields. Returns number of bytes to variables. 0 means ; Handling of LONG fields. Returns number of bytes to variables. 0 means
; passthru. ; passthru.
; https://php.net/odbc.defaultlrl ; http://php.net/odbc.defaultlrl
odbc.defaultlrl = 4096 odbc.defaultlrl = 4096
; Handling of binary data. 0 means passthru, 1 return as is, 2 convert to char. ; Handling of binary data. 0 means passthru, 1 return as is, 2 convert to char.
; See the documentation on odbc_binmode and odbc_longreadlen for an explanation ; See the documentation on odbc_binmode and odbc_longreadlen for an explanation
; of odbc.defaultlrl and odbc.defaultbinmode ; of odbc.defaultlrl and odbc.defaultbinmode
; https://php.net/odbc.defaultbinmode ; http://php.net/odbc.defaultbinmode
odbc.defaultbinmode = 1 odbc.defaultbinmode = 1
[Interbase]
; Allow or prevent persistent links.
ibase.allow_persistent = 1
; Maximum number of persistent links. -1 means no limit.
ibase.max_persistent = -1
; Maximum number of links (persistent + non-persistent). -1 means no limit.
ibase.max_links = -1
; Default database name for ibase_connect().
;ibase.default_db =
; Default username for ibase_connect().
;ibase.default_user =
; Default password for ibase_connect().
;ibase.default_password =
; Default charset for ibase_connect().
;ibase.default_charset =
; Default timestamp format.
ibase.timestampformat = "%Y-%m-%d %H:%M:%S"
; Default date format.
ibase.dateformat = "%Y-%m-%d"
; Default time format.
ibase.timeformat = "%H:%M:%S"
[MySQLi] [MySQLi]
; Maximum number of persistent links. -1 means no limit. ; Maximum number of persistent links. -1 means no limit.
; https://php.net/mysqli.max-persistent ; http://php.net/mysqli.max-persistent
mysqli.max_persistent = -1 mysqli.max_persistent = -1
; Allow accessing, from PHP's perspective, local files with LOAD DATA statements ; Allow accessing, from PHP's perspective, local files with LOAD DATA statements
; https://php.net/mysqli.allow_local_infile ; http://php.net/mysqli.allow_local_infile
;mysqli.allow_local_infile = On ;mysqli.allow_local_infile = On
; It allows the user to specify a folder where files that can be sent via LOAD DATA
; LOCAL can exist. It is ignored if mysqli.allow_local_infile is enabled.
;mysqli.local_infile_directory =
; Allow or prevent persistent links. ; Allow or prevent persistent links.
; https://php.net/mysqli.allow-persistent ; http://php.net/mysqli.allow-persistent
mysqli.allow_persistent = On mysqli.allow_persistent = On
; Maximum number of links. -1 means no limit. ; Maximum number of links. -1 means no limit.
; https://php.net/mysqli.max-links ; http://php.net/mysqli.max-links
mysqli.max_links = -1 mysqli.max_links = -1
; Default port number for mysqli_connect(). If unset, mysqli_connect() will use ; Default port number for mysqli_connect(). If unset, mysqli_connect() will use
; the $MYSQL_TCP_PORT or the mysql-tcp entry in /etc/services or the ; the $MYSQL_TCP_PORT or the mysql-tcp entry in /etc/services or the
; compile-time value defined MYSQL_PORT (in that order). Win32 will only look ; compile-time value defined MYSQL_PORT (in that order). Win32 will only look
; at MYSQL_PORT. ; at MYSQL_PORT.
; https://php.net/mysqli.default-port ; http://php.net/mysqli.default-port
mysqli.default_port = 3306 mysqli.default_port = 3306
; Default socket name for local MySQL connects. If empty, uses the built-in ; Default socket name for local MySQL connects. If empty, uses the built-in
; MySQL defaults. ; MySQL defaults.
; https://php.net/mysqli.default-socket ; http://php.net/mysqli.default-socket
mysqli.default_socket = mysqli.default_socket =
; Default host for mysqli_connect() (doesn't apply in safe mode). ; Default host for mysql_connect() (doesn't apply in safe mode).
; https://php.net/mysqli.default-host ; http://php.net/mysqli.default-host
mysqli.default_host = mysqli.default_host =
; Default user for mysqli_connect() (doesn't apply in safe mode). ; Default user for mysql_connect() (doesn't apply in safe mode).
; https://php.net/mysqli.default-user ; http://php.net/mysqli.default-user
mysqli.default_user = mysqli.default_user =
; Default password for mysqli_connect() (doesn't apply in safe mode). ; Default password for mysqli_connect() (doesn't apply in safe mode).
@@ -1178,13 +1202,11 @@ mysqli.default_user =
; *Any* user with PHP access can run 'echo get_cfg_var("mysqli.default_pw") ; *Any* user with PHP access can run 'echo get_cfg_var("mysqli.default_pw")
; and reveal this password! And of course, any users with read access to this ; and reveal this password! And of course, any users with read access to this
; file will be able to reveal the password as well. ; file will be able to reveal the password as well.
; https://php.net/mysqli.default-pw ; http://php.net/mysqli.default-pw
mysqli.default_pw = mysqli.default_pw =
; If this option is enabled, closing a persistent connection will rollback ; Allow or prevent reconnect
; any pending transactions of this connection, before it is put back mysqli.reconnect = Off
; into the persistent connection pool.
;mysqli.rollback_on_cached_plink = Off
[mysqlnd] [mysqlnd]
; Enable / Disable collection of general statistics by mysqlnd which can be ; Enable / Disable collection of general statistics by mysqlnd which can be
@@ -1193,11 +1215,11 @@ mysqlnd.collect_statistics = On
; Enable / Disable collection of memory usage statistics by mysqlnd which can be ; Enable / Disable collection of memory usage statistics by mysqlnd which can be
; used to tune and monitor MySQL operations. ; used to tune and monitor MySQL operations.
mysqlnd.collect_memory_statistics = On mysqlnd.collect_memory_statistics = Off
; Records communication from all extensions using mysqlnd to the specified log ; Records communication from all extensions using mysqlnd to the specified log
; file. ; file.
; https://php.net/mysqlnd.debug ; http://php.net/mysqlnd.debug
;mysqlnd.debug = ;mysqlnd.debug =
; Defines which queries will be logged. ; Defines which queries will be logged.
@@ -1220,46 +1242,99 @@ mysqlnd.collect_memory_statistics = On
; key. ; key.
;mysqlnd.sha256_server_public_key = ;mysqlnd.sha256_server_public_key =
[OCI8]
; Connection: Enables privileged connections using external
; credentials (OCI_SYSOPER, OCI_SYSDBA)
; http://php.net/oci8.privileged-connect
;oci8.privileged_connect = Off
; Connection: The maximum number of persistent OCI8 connections per
; process. Using -1 means no limit.
; http://php.net/oci8.max-persistent
;oci8.max_persistent = -1
; Connection: The maximum number of seconds a process is allowed to
; maintain an idle persistent connection. Using -1 means idle
; persistent connections will be maintained forever.
; http://php.net/oci8.persistent-timeout
;oci8.persistent_timeout = -1
; Connection: The number of seconds that must pass before issuing a
; ping during oci_pconnect() to check the connection validity. When
; set to 0, each oci_pconnect() will cause a ping. Using -1 disables
; pings completely.
; http://php.net/oci8.ping-interval
;oci8.ping_interval = 60
; Connection: Set this to a user chosen connection class to be used
; for all pooled server requests with Oracle 11g Database Resident
; Connection Pooling (DRCP). To use DRCP, this value should be set to
; the same string for all web servers running the same application,
; the database pool must be configured, and the connection string must
; specify to use a pooled server.
;oci8.connection_class =
; High Availability: Using On lets PHP receive Fast Application
; Notification (FAN) events generated when a database node fails. The
; database must also be configured to post FAN events.
;oci8.events = Off
; Tuning: This option enables statement caching, and specifies how
; many statements to cache. Using 0 disables statement caching.
; http://php.net/oci8.statement-cache-size
;oci8.statement_cache_size = 20
; Tuning: Enables statement prefetching and sets the default number of
; rows that will be fetched automatically after statement execution.
; http://php.net/oci8.default-prefetch
;oci8.default_prefetch = 100
; Compatibility. Using On means oci_close() will not close
; oci_connect() and oci_new_connect() connections.
; http://php.net/oci8.old-oci-close-semantics
;oci8.old_oci_close_semantics = Off
[PostgreSQL] [PostgreSQL]
; Allow or prevent persistent links. ; Allow or prevent persistent links.
; https://php.net/pgsql.allow-persistent ; http://php.net/pgsql.allow-persistent
pgsql.allow_persistent = On pgsql.allow_persistent = On
; Detect broken persistent links always with pg_pconnect(). ; Detect broken persistent links always with pg_pconnect().
; Auto reset feature requires a little overheads. ; Auto reset feature requires a little overheads.
; https://php.net/pgsql.auto-reset-persistent ; http://php.net/pgsql.auto-reset-persistent
pgsql.auto_reset_persistent = Off pgsql.auto_reset_persistent = Off
; Maximum number of persistent links. -1 means no limit. ; Maximum number of persistent links. -1 means no limit.
; https://php.net/pgsql.max-persistent ; http://php.net/pgsql.max-persistent
pgsql.max_persistent = -1 pgsql.max_persistent = -1
; Maximum number of links (persistent+non persistent). -1 means no limit. ; Maximum number of links (persistent+non persistent). -1 means no limit.
; https://php.net/pgsql.max-links ; http://php.net/pgsql.max-links
pgsql.max_links = -1 pgsql.max_links = -1
; Ignore PostgreSQL backends Notice message or not. ; Ignore PostgreSQL backends Notice message or not.
; Notice message logging require a little overheads. ; Notice message logging require a little overheads.
; https://php.net/pgsql.ignore-notice ; http://php.net/pgsql.ignore-notice
pgsql.ignore_notice = 0 pgsql.ignore_notice = 0
; Log PostgreSQL backends Notice message or not. ; Log PostgreSQL backends Notice message or not.
; Unless pgsql.ignore_notice=0, module cannot log notice message. ; Unless pgsql.ignore_notice=0, module cannot log notice message.
; https://php.net/pgsql.log-notice ; http://php.net/pgsql.log-notice
pgsql.log_notice = 0 pgsql.log_notice = 0
[bcmath] [bcmath]
; Number of decimal digits for all bcmath functions. ; Number of decimal digits for all bcmath functions.
; https://php.net/bcmath.scale ; http://php.net/bcmath.scale
bcmath.scale = 0 bcmath.scale = 0
[browscap] [browscap]
; https://php.net/browscap ; http://php.net/browscap
;browscap = extra/browscap.ini ;browscap = extra/browscap.ini
[Session] [Session]
; Handler used to store/retrieve data. ; Handler used to store/retrieve data.
; https://php.net/session.save-handler ; http://php.net/session.save-handler
session.save_handler = files session.save_handler = files
; Argument passed to save_handler. In the case of files, this is the path ; Argument passed to save_handler. In the case of files, this is the path
@@ -1288,8 +1363,8 @@ session.save_handler = files
; ;
; where MODE is the octal representation of the mode. Note that this ; where MODE is the octal representation of the mode. Note that this
; does not overwrite the process's umask. ; does not overwrite the process's umask.
; https://php.net/session.save-path ; http://php.net/session.save-path
;session.save_path = "/tmp" ;session.save_path = "/var/lib/php/sessions"
; Whether to use strict session mode. ; Whether to use strict session mode.
; Strict session mode does not accept an uninitialized session ID, and ; Strict session mode does not accept an uninitialized session ID, and
@@ -1301,52 +1376,51 @@ session.save_handler = files
session.use_strict_mode = 0 session.use_strict_mode = 0
; Whether to use cookies. ; Whether to use cookies.
; https://php.net/session.use-cookies ; http://php.net/session.use-cookies
session.use_cookies = 1 session.use_cookies = 1
; https://php.net/session.cookie-secure ; http://php.net/session.cookie-secure
;session.cookie_secure = ;session.cookie_secure =
; This option forces PHP to fetch and use a cookie for storing and maintaining ; This option forces PHP to fetch and use a cookie for storing and maintaining
; the session id. We encourage this operation as it's very helpful in combating ; the session id. We encourage this operation as it's very helpful in combating
; session hijacking when not specifying and managing your own session id. It is ; session hijacking when not specifying and managing your own session id. It is
; not the be-all and end-all of session hijacking defense, but it's a good start. ; not the be-all and end-all of session hijacking defense, but it's a good start.
; https://php.net/session.use-only-cookies ; http://php.net/session.use-only-cookies
session.use_only_cookies = 1 session.use_only_cookies = 1
; Name of the session (used as cookie name). ; Name of the session (used as cookie name).
; https://php.net/session.name ; http://php.net/session.name
session.name = PHPSESSID session.name = PHPSESSID
; Initialize session on request startup. ; Initialize session on request startup.
; https://php.net/session.auto-start ; http://php.net/session.auto-start
session.auto_start = 0 session.auto_start = 0
; Lifetime in seconds of cookie or, if 0, until browser is restarted. ; Lifetime in seconds of cookie or, if 0, until browser is restarted.
; https://php.net/session.cookie-lifetime ; http://php.net/session.cookie-lifetime
session.cookie_lifetime = 0 session.cookie_lifetime = 0
; The path for which the cookie is valid. ; The path for which the cookie is valid.
; https://php.net/session.cookie-path ; http://php.net/session.cookie-path
session.cookie_path = / session.cookie_path = /
; The domain for which the cookie is valid. ; The domain for which the cookie is valid.
; https://php.net/session.cookie-domain ; http://php.net/session.cookie-domain
session.cookie_domain = session.cookie_domain =
; Whether or not to add the httpOnly flag to the cookie, which makes it ; Whether or not to add the httpOnly flag to the cookie, which makes it
; inaccessible to browser scripting languages such as JavaScript. ; inaccessible to browser scripting languages such as JavaScript.
; https://php.net/session.cookie-httponly ; http://php.net/session.cookie-httponly
session.cookie_httponly = session.cookie_httponly =
; Add SameSite attribute to cookie to help mitigate Cross-Site Request Forgery (CSRF/XSRF) ; Add SameSite attribute to cookie to help mitigate Cross-Site Request Forgery (CSRF/XSRF)
; Current valid values are "Strict", "Lax" or "None". When using "None", ; Current valid values are "Lax" or "Strict"
; make sure to include the quotes, as `none` is interpreted like `false` in ini files.
; https://tools.ietf.org/html/draft-west-first-party-cookies-07 ; https://tools.ietf.org/html/draft-west-first-party-cookies-07
session.cookie_samesite = session.cookie_samesite =
; Handler used to serialize data. php is the standard serializer of PHP. ; Handler used to serialize data. php is the standard serializer of PHP.
; https://php.net/session.serialize-handler ; http://php.net/session.serialize-handler
session.serialize_handler = php session.serialize_handler = php
; Defines the probability that the 'garbage collection' process is started on every ; Defines the probability that the 'garbage collection' process is started on every
@@ -1355,8 +1429,8 @@ session.serialize_handler = php
; Default Value: 1 ; Default Value: 1
; Development Value: 1 ; Development Value: 1
; Production Value: 1 ; Production Value: 1
; https://php.net/session.gc-probability ; http://php.net/session.gc-probability
session.gc_probability = 1 session.gc_probability = 0
; Defines the probability that the 'garbage collection' process is started on every ; Defines the probability that the 'garbage collection' process is started on every
; session initialization. The probability is calculated by using gc_probability/gc_divisor, ; session initialization. The probability is calculated by using gc_probability/gc_divisor,
@@ -1365,35 +1439,35 @@ session.gc_probability = 1
; Default Value: 100 ; Default Value: 100
; Development Value: 1000 ; Development Value: 1000
; Production Value: 1000 ; Production Value: 1000
; https://php.net/session.gc-divisor ; http://php.net/session.gc-divisor
session.gc_divisor = 1000 session.gc_divisor = 1000
; After this number of seconds, stored data will be seen as 'garbage' and ; After this number of seconds, stored data will be seen as 'garbage' and
; cleaned up by the garbage collection process. ; cleaned up by the garbage collection process.
; https://php.net/session.gc-maxlifetime ; http://php.net/session.gc-maxlifetime
session.gc_maxlifetime = 1440 session.gc_maxlifetime = 1440
; NOTE: If you are using the subdirectory option for storing session files ; NOTE: If you are using the subdirectory option for storing session files
; (see session.save_path above), then garbage collection does *not* ; (see session.save_path above), then garbage collection does *not*
; happen automatically. You will need to do your own garbage ; happen automatically. You will need to do your own garbage
; collection through a shell script, cron entry, or some other method. ; collection through a shell script, cron entry, or some other method.
; For example, the following script is the equivalent of setting ; For example, the following script would is the equivalent of
; session.gc_maxlifetime to 1440 (1440 seconds = 24 minutes): ; setting session.gc_maxlifetime to 1440 (1440 seconds = 24 minutes):
; find /path/to/sessions -cmin +24 -type f | xargs rm ; find /path/to/sessions -cmin +24 -type f | xargs rm
; Check HTTP Referer to invalidate externally stored URLs containing ids. ; Check HTTP Referer to invalidate externally stored URLs containing ids.
; HTTP_REFERER has to contain this substring for the session to be ; HTTP_REFERER has to contain this substring for the session to be
; considered as valid. ; considered as valid.
; https://php.net/session.referer-check ; http://php.net/session.referer-check
session.referer_check = session.referer_check =
; Set to {nocache,private,public,} to determine HTTP caching aspects ; Set to {nocache,private,public,} to determine HTTP caching aspects
; or leave this empty to avoid sending anti-caching headers. ; or leave this empty to avoid sending anti-caching headers.
; https://php.net/session.cache-limiter ; http://php.net/session.cache-limiter
session.cache_limiter = nocache session.cache_limiter = nocache
; Document expires after n minutes. ; Document expires after n minutes.
; https://php.net/session.cache-expire ; http://php.net/session.cache-expire
session.cache_expire = 180 session.cache_expire = 180
; trans sid support is disabled by default. ; trans sid support is disabled by default.
@@ -1405,9 +1479,18 @@ session.cache_expire = 180
; in publicly accessible computer. ; in publicly accessible computer.
; - User may access your site with the same session ID ; - User may access your site with the same session ID
; always using URL stored in browser's history or bookmarks. ; always using URL stored in browser's history or bookmarks.
; https://php.net/session.use-trans-sid ; http://php.net/session.use-trans-sid
session.use_trans_sid = 0 session.use_trans_sid = 0
; Set session ID character length. This value could be between 22 to 256.
; Shorter length than default is supported only for compatibility reason.
; Users should use 32 or more chars.
; http://php.net/session.sid-length
; Default Value: 32
; Development Value: 26
; Production Value: 26
session.sid_length = 26
; The URL rewriter will look for URLs in a defined set of HTML tags. ; The URL rewriter will look for URLs in a defined set of HTML tags.
; <form> is special; if you include them here, the rewriter will ; <form> is special; if you include them here, the rewriter will
; add a hidden <input> field with the info which is otherwise appended ; add a hidden <input> field with the info which is otherwise appended
@@ -1417,7 +1500,7 @@ session.use_trans_sid = 0
; Default Value: "a=href,area=href,frame=src,form=" ; Default Value: "a=href,area=href,frame=src,form="
; Development Value: "a=href,area=href,frame=src,form=" ; Development Value: "a=href,area=href,frame=src,form="
; Production Value: "a=href,area=href,frame=src,form=" ; Production Value: "a=href,area=href,frame=src,form="
; https://php.net/url-rewriter.tags ; http://php.net/url-rewriter.tags
session.trans_sid_tags = "a=href,area=href,frame=src,form=" session.trans_sid_tags = "a=href,area=href,frame=src,form="
; URL rewriter does not rewrite absolute URLs by default. ; URL rewriter does not rewrite absolute URLs by default.
@@ -1433,11 +1516,23 @@ session.trans_sid_tags = "a=href,area=href,frame=src,form="
; Production Value: "" ; Production Value: ""
;session.trans_sid_hosts="" ;session.trans_sid_hosts=""
; Define how many bits are stored in each character when converting
; the binary hash data to something readable.
; Possible values:
; 4 (4 bits: 0-9, a-f)
; 5 (5 bits: 0-9, a-v)
; 6 (6 bits: 0-9, a-z, A-Z, "-", ",")
; Default Value: 4
; Development Value: 5
; Production Value: 5
; http://php.net/session.hash-bits-per-character
session.sid_bits_per_character = 5
; Enable upload progress tracking in $_SESSION ; Enable upload progress tracking in $_SESSION
; Default Value: On ; Default Value: On
; Development Value: On ; Development Value: On
; Production Value: On ; Production Value: On
; https://php.net/session.upload-progress.enabled ; http://php.net/session.upload-progress.enabled
;session.upload_progress.enabled = On ;session.upload_progress.enabled = On
; Cleanup the progress information as soon as all POST data has been read ; Cleanup the progress information as soon as all POST data has been read
@@ -1445,14 +1540,14 @@ session.trans_sid_tags = "a=href,area=href,frame=src,form="
; Default Value: On ; Default Value: On
; Development Value: On ; Development Value: On
; Production Value: On ; Production Value: On
; https://php.net/session.upload-progress.cleanup ; http://php.net/session.upload-progress.cleanup
;session.upload_progress.cleanup = On ;session.upload_progress.cleanup = On
; A prefix used for the upload progress key in $_SESSION ; A prefix used for the upload progress key in $_SESSION
; Default Value: "upload_progress_" ; Default Value: "upload_progress_"
; Development Value: "upload_progress_" ; Development Value: "upload_progress_"
; Production Value: "upload_progress_" ; Production Value: "upload_progress_"
; https://php.net/session.upload-progress.prefix ; http://php.net/session.upload-progress.prefix
;session.upload_progress.prefix = "upload_progress_" ;session.upload_progress.prefix = "upload_progress_"
; The index name (concatenated with the prefix) in $_SESSION ; The index name (concatenated with the prefix) in $_SESSION
@@ -1460,7 +1555,7 @@ session.trans_sid_tags = "a=href,area=href,frame=src,form="
; Default Value: "PHP_SESSION_UPLOAD_PROGRESS" ; Default Value: "PHP_SESSION_UPLOAD_PROGRESS"
; Development Value: "PHP_SESSION_UPLOAD_PROGRESS" ; Development Value: "PHP_SESSION_UPLOAD_PROGRESS"
; Production Value: "PHP_SESSION_UPLOAD_PROGRESS" ; Production Value: "PHP_SESSION_UPLOAD_PROGRESS"
; https://php.net/session.upload-progress.name ; http://php.net/session.upload-progress.name
;session.upload_progress.name = "PHP_SESSION_UPLOAD_PROGRESS" ;session.upload_progress.name = "PHP_SESSION_UPLOAD_PROGRESS"
; How frequently the upload progress should be updated. ; How frequently the upload progress should be updated.
@@ -1468,18 +1563,18 @@ session.trans_sid_tags = "a=href,area=href,frame=src,form="
; Default Value: "1%" ; Default Value: "1%"
; Development Value: "1%" ; Development Value: "1%"
; Production Value: "1%" ; Production Value: "1%"
; https://php.net/session.upload-progress.freq ; http://php.net/session.upload-progress.freq
;session.upload_progress.freq = "1%" ;session.upload_progress.freq = "1%"
; The minimum delay between updates, in seconds ; The minimum delay between updates, in seconds
; Default Value: 1 ; Default Value: 1
; Development Value: 1 ; Development Value: 1
; Production Value: 1 ; Production Value: 1
; https://php.net/session.upload-progress.min-freq ; http://php.net/session.upload-progress.min-freq
;session.upload_progress.min_freq = "1" ;session.upload_progress.min_freq = "1"
; Only write session data when session data is changed. Enabled by default. ; Only write session data when session data is changed. Enabled by default.
; https://php.net/session.lazy-write ; http://php.net/session.lazy-write
;session.lazy_write = On ;session.lazy_write = On
[Assertion] [Assertion]
@@ -1487,47 +1582,67 @@ session.trans_sid_tags = "a=href,area=href,frame=src,form="
; -1: Do not compile at all ; -1: Do not compile at all
; 0: Jump over assertion at run-time ; 0: Jump over assertion at run-time
; 1: Execute assertions ; 1: Execute assertions
; Changing from or to a negative value is only possible in php.ini! ; Changing from or to a negative value is only possible in php.ini! (For turning assertions on and off at run-time, see assert.active, when zend.assertions = 1)
; (For turning assertions on and off at run-time, toggle zend.assertions between the values 1 and 0)
; Default Value: 1 ; Default Value: 1
; Development Value: 1 ; Development Value: 1
; Production Value: -1 ; Production Value: -1
; https://php.net/zend.assertions ; http://php.net/zend.assertions
zend.assertions = 1 zend.assertions = -1
; Assert(expr); active by default.
; http://php.net/assert.active
;assert.active = On
; Throw an AssertionError on failed assertions
; http://php.net/assert.exception
;assert.exception = On
; Issue a PHP warning for each failed assertion. (Overridden by assert.exception if active)
; http://php.net/assert.warning
;assert.warning = On
; Don't bail out by default.
; http://php.net/assert.bail
;assert.bail = Off
; User-function to be called if an assertion fails.
; 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] [COM]
; path to a file containing GUIDs, IIDs or filenames of files with TypeLibs ; path to a file containing GUIDs, IIDs or filenames of files with TypeLibs
; https://php.net/com.typelib-file ; http://php.net/com.typelib-file
;com.typelib_file = ;com.typelib_file =
; allow Distributed-COM calls ; allow Distributed-COM calls
; https://php.net/com.allow-dcom ; http://php.net/com.allow-dcom
;com.allow_dcom = true ;com.allow_dcom = true
; autoregister constants of a component's typelib on com_load() ; autoregister constants of a component's typlib on com_load()
; https://php.net/com.autoregister-typelib ; http://php.net/com.autoregister-typelib
;com.autoregister_typelib = true ;com.autoregister_typelib = true
; register constants casesensitive ; register constants casesensitive
; https://php.net/com.autoregister-casesensitive ; http://php.net/com.autoregister-casesensitive
;com.autoregister_casesensitive = false ;com.autoregister_casesensitive = false
; show warnings on duplicate constant registrations ; show warnings on duplicate constant registrations
; https://php.net/com.autoregister-verbose ; http://php.net/com.autoregister-verbose
;com.autoregister_verbose = true ;com.autoregister_verbose = true
; The default character set code-page to use when passing strings to and from COM objects. ; The default character set code-page to use when passing strings to and from COM objects.
; Default: system ANSI code page ; Default: system ANSI code page
;com.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] [mbstring]
; language for internal character representation. ; language for internal character representation.
; This affects mb_send_mail() and mbstring.detect_order. ; This affects mb_send_mail() and mbstring.detect_order.
; https://php.net/mbstring.language ; http://php.net/mbstring.language
;mbstring.language = Japanese ;mbstring.language = Japanese
; Use of this INI entry is deprecated, use global internal_encoding instead. ; Use of this INI entry is deprecated, use global internal_encoding instead.
@@ -1541,8 +1656,8 @@ zend.assertions = 1
; http input encoding. ; http input encoding.
; mbstring.encoding_translation = On is needed to use this setting. ; mbstring.encoding_translation = On is needed to use this setting.
; If empty, default_charset or input_encoding or mbstring.input is used. ; If empty, default_charset or input_encoding or mbstring.input is used.
; The precedence is: default_charset < input_encoding < mbstring.http_input ; The precedence is: default_charset < input_encoding < mbsting.http_input
; https://php.net/mbstring.http-input ; http://php.net/mbstring.http-input
;mbstring.http_input = ;mbstring.http_input =
; Use of this INI entry is deprecated, use global output_encoding instead. ; Use of this INI entry is deprecated, use global output_encoding instead.
@@ -1552,7 +1667,7 @@ zend.assertions = 1
; The precedence is: default_charset < output_encoding < mbstring.http_output ; The precedence is: default_charset < output_encoding < mbstring.http_output
; To use an output encoding conversion, mbstring's output handler must be set ; To use an output encoding conversion, mbstring's output handler must be set
; otherwise output encoding conversion cannot be performed. ; otherwise output encoding conversion cannot be performed.
; https://php.net/mbstring.http-output ; http://php.net/mbstring.http-output
;mbstring.http_output = ;mbstring.http_output =
; enable automatic encoding translation according to ; enable automatic encoding translation according to
@@ -1560,40 +1675,49 @@ zend.assertions = 1
; converted to internal encoding by setting this to On. ; converted to internal encoding by setting this to On.
; Note: Do _not_ use automatic encoding translation for ; Note: Do _not_ use automatic encoding translation for
; portable libs/applications. ; portable libs/applications.
; https://php.net/mbstring.encoding-translation ; http://php.net/mbstring.encoding-translation
;mbstring.encoding_translation = Off ;mbstring.encoding_translation = Off
; automatic encoding detection order. ; automatic encoding detection order.
; "auto" detect order is changed according to mbstring.language ; "auto" detect order is changed according to mbstring.language
; https://php.net/mbstring.detect-order ; http://php.net/mbstring.detect-order
;mbstring.detect_order = auto ;mbstring.detect_order = auto
; substitute_character used when character cannot be converted ; substitute_character used when character cannot be converted
; one from another ; one from another
; https://php.net/mbstring.substitute-character ; http://php.net/mbstring.substitute-character
;mbstring.substitute_character = none ;mbstring.substitute_character = none
; Enable strict encoding detection. ; overload(replace) single byte functions by mbstring functions.
;mbstring.strict_detection = Off ; 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
; This directive specifies the regex pattern of content types for which mb_output_handler() ; This directive specifies the regex pattern of content types for which mb_output_handler()
; is activated. ; is activated.
; Default: mbstring.http_output_conv_mimetypes=^(text/|application/xhtml\+xml) ; Default: mbstring.http_output_conv_mimetype=^(text/|application/xhtml\+xml)
;mbstring.http_output_conv_mimetypes= ;mbstring.http_output_conv_mimetype=
; This directive specifies maximum stack depth for mbstring regular expressions. It is similar ; This directive specifies maximum stack depth for mbstring regular expressions. It is similar
; to the pcre.recursion_limit for PCRE. ; to the pcre.recursion_limit for PCRE.
; Default: 100000
;mbstring.regex_stack_limit=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.
;mbstring.regex_retry_limit=1000000
[gd] [gd]
; Tell the jpeg decode to ignore warnings and try to create ; Tell the jpeg decode to ignore warnings and try to create
; a gd image. The warning will then be displayed as notices ; a gd image. The warning will then be displayed as notices
; disabled by default ; disabled by default
; https://php.net/gd.jpeg-ignore-warning ; http://php.net/gd.jpeg-ignore-warning
;gd.jpeg_ignore_warning = 1 ;gd.jpeg_ignore_warning = 1
[exif] [exif]
@@ -1601,48 +1725,48 @@ zend.assertions = 1
; With mbstring support this will automatically be converted into the encoding ; With mbstring support this will automatically be converted into the encoding
; given by corresponding encode setting. When empty mbstring.internal_encoding ; given by corresponding encode setting. When empty mbstring.internal_encoding
; is used. For the decode settings you can distinguish between motorola and ; is used. For the decode settings you can distinguish between motorola and
; intel byte order. A decode setting must not be empty. ; intel byte order. A decode setting cannot be empty.
; https://php.net/exif.encode-unicode ; http://php.net/exif.encode-unicode
;exif.encode_unicode = ISO-8859-15 ;exif.encode_unicode = ISO-8859-15
; https://php.net/exif.decode-unicode-motorola ; http://php.net/exif.decode-unicode-motorola
;exif.decode_unicode_motorola = UCS-2BE ;exif.decode_unicode_motorola = UCS-2BE
; https://php.net/exif.decode-unicode-intel ; http://php.net/exif.decode-unicode-intel
;exif.decode_unicode_intel = UCS-2LE ;exif.decode_unicode_intel = UCS-2LE
; https://php.net/exif.encode-jis ; http://php.net/exif.encode-jis
;exif.encode_jis = ;exif.encode_jis =
; https://php.net/exif.decode-jis-motorola ; http://php.net/exif.decode-jis-motorola
;exif.decode_jis_motorola = JIS ;exif.decode_jis_motorola = JIS
; https://php.net/exif.decode-jis-intel ; http://php.net/exif.decode-jis-intel
;exif.decode_jis_intel = JIS ;exif.decode_jis_intel = JIS
[Tidy] [Tidy]
; The path to a default tidy configuration file to use when using tidy ; The path to a default tidy configuration file to use when using tidy
; https://php.net/tidy.default-config ; http://php.net/tidy.default-config
;tidy.default_config = /usr/local/lib/php/default.tcfg ;tidy.default_config = /usr/local/lib/php/default.tcfg
; Should tidy clean and repair output automatically? ; Should tidy clean and repair output automatically?
; WARNING: Do not use this option if you are generating non-html content ; WARNING: Do not use this option if you are generating non-html content
; such as dynamic images ; such as dynamic images
; https://php.net/tidy.clean-output ; http://php.net/tidy.clean-output
tidy.clean_output = Off tidy.clean_output = Off
[soap] [soap]
; Enables or disables WSDL caching feature. ; Enables or disables WSDL caching feature.
; https://php.net/soap.wsdl-cache-enabled ; http://php.net/soap.wsdl-cache-enabled
soap.wsdl_cache_enabled=1 soap.wsdl_cache_enabled=1
; Sets the directory name where SOAP extension will put cache files. ; Sets the directory name where SOAP extension will put cache files.
; https://php.net/soap.wsdl-cache-dir ; http://php.net/soap.wsdl-cache-dir
soap.wsdl_cache_dir="/tmp" soap.wsdl_cache_dir="/tmp"
; (time to live) Sets the number of second while cached file will be used ; (time to live) Sets the number of second while cached file will be used
; instead of original one. ; instead of original one.
; https://php.net/soap.wsdl-cache-ttl ; http://php.net/soap.wsdl-cache-ttl
soap.wsdl_cache_ttl=86400 soap.wsdl_cache_ttl=86400
; Sets the size of the cache limit. (Max. number of WSDL files to cache) ; Sets the size of the cache limit. (Max. number of WSDL files to cache)
@@ -1701,11 +1825,6 @@ ldap.max_links = -1
; size of the optimized code. ; size of the optimized code.
;opcache.save_comments=1 ;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. ; Allow file existence override (file_exists, etc.) performance feature.
;opcache.enable_file_override=0 ;opcache.enable_file_override=0
@@ -1727,6 +1846,10 @@ ldap.max_links = -1
; are cached. ; are cached.
;opcache.max_file_size=0 ;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 ; How long to wait (in seconds) for a scheduled restart to begin if the cache
; is not being accessed. ; is not being accessed.
;opcache.force_restart_timeout=180 ;opcache.force_restart_timeout=180
@@ -1757,10 +1880,6 @@ ldap.max_links = -1
; errors. ; errors.
;opcache.mmap_base= ;opcache.mmap_base=
; Facilitates multiple OPcache instances per user (for Windows only). All PHP
; processes with the same cache ID and user share an OPcache instance.
;opcache.cache_id=
; Enables and sets the second level cache directory. ; Enables and sets the second level cache directory.
; It should improve performance when SHM memory is full, at server restart or ; It should improve performance when SHM memory is full, at server restart or
; SHM reset. The default "" disables file based caching. ; SHM reset. The default "" disables file based caching.
@@ -1778,13 +1897,8 @@ ldap.max_links = -1
;opcache.file_cache_fallback=1 ;opcache.file_cache_fallback=1
; Enables or disables copying of PHP code (text segment) into HUGE PAGES. ; Enables or disables copying of PHP code (text segment) into HUGE PAGES.
; Under certain circumstances (if only a single global PHP process is ; This should improve performance, but requires appropriate OS configuration.
; started from which all others fork), this can increase performance ;opcache.huge_code_pages=1
; by a tiny amount because TLB misses are reduced. On the other hand, this
; delays PHP startup, increases memory usage and degrades performance
; under memory pressure - use with care.
; Requires appropriate OS configuration.
;opcache.huge_code_pages=0
; Validate cached file permissions. ; Validate cached file permissions.
;opcache.validate_permission=0 ;opcache.validate_permission=0
@@ -1796,24 +1910,6 @@ ldap.max_links = -1
; optimizations. ; optimizations.
;opcache.opt_debug_level=0 ;opcache.opt_debug_level=0
; Specifies a PHP script that is going to be compiled and executed at server
; start-up.
; https://php.net/opcache.preload
;opcache.preload=
; Preloading code as root is not allowed for security reasons. This directive
; facilitates to let the preloading to be run as another user.
; https://php.net/opcache.preload_user
;opcache.preload_user=
; Prevents caching files that are less than this number of seconds old. It
; protects from caching of incompletely updated files. In case all file updates
; on your site are atomic, you may increase performance by setting it to "0".
;opcache.file_update_protection=2
; Absolute path used to store shared lockfiles (for *nix only).
;opcache.lockfile_path=/tmp
[curl] [curl]
; A default value for the CURLOPT_CAINFO option. This is required to be an ; A default value for the CURLOPT_CAINFO option. This is required to be an
; absolute path. ; absolute path.
@@ -1837,12 +1933,6 @@ ldap.max_links = -1
; SSL stream context option. ; SSL stream context option.
;openssl.capath= ;openssl.capath=
[ffi] ; Local Variables:
; FFI API restriction. Possible values: ; tab-width: 4
; "preload" - enabled in CLI scripts and preloaded files (default) ; End:
; "false" - always disabled
; "true" - always enabled
;ffi.enable=preload
; List of headers files to preload, wildcard patterns allowed.
;ffi.preload=

View File

@@ -0,0 +1 @@
*.* -/dev/stdout

View File

@@ -0,0 +1,45 @@
[supervisord]
nodaemon=true
[program:rsyslog]
command = /usr/sbin/rsyslogd -n
directory = /
user = root
autostart = true
stdout_logfile=/dev/stdout
stdout_logfile_maxbytes=0
stderr_logfile=/dev/stderr
stderr_logfile_maxbytes=0
[program:apache2]
environment=HOSTNAME="%(ENV_HOSTNAME)s"
command = apachectl -D "FOREGROUND"
directory = /var/www
user = root
autostart = true
stdout_logfile=/dev/stdout
stdout_logfile_maxbytes=0
stderr_logfile=/dev/stderr
stderr_logfile_maxbytes=0
[program:php-fpm]
environment=HOSTNAME="%(ENV_HOSTNAME)s"
command = /usr/sbin/php-fpm8.1 -F
autostart = true
autorestart = true
directory = /var/www
user = root
stdout_logfile=/dev/stdout
stdout_logfile_maxbytes=0
stderr_logfile=/dev/stderr
stderr_logfile_maxbytes=0
[unix_http_server]
file=/var/run/supervisor.sock
[rpcinterface:supervisor]
supervisor.rpcinterface_factory=supervisor.rpcinterface:make_main_rpcinterface

View File

@@ -0,0 +1,20 @@
[global]
daemonize=no
error_log=/dev/stderr
[www]
user = www-data
group = www-data
listen = /run/php/php8.1-fpm.sock
listen.owner = www-data
listen.group = www-data
pm = dynamic
pm.max_children = 5
pm.start_servers = 2
pm.min_spare_servers = 1
pm.max_spare_servers = 3
catch_workers_output = yes

View File

@@ -9,8 +9,8 @@
"jwks": {}, "jwks": {},
"metadata": {}, "metadata": {},
"token_endpoint_auth_method": "client_secret_basic", "token_endpoint_auth_method": "client_secret_basic",
"post_logout_redirect_uris": ["http://localhost:10502"], "post_logout_redirect_uris": ["http://localhost:8000"],
"redirect_uris": ["http://localhost:10502/oauth2/callback"], "redirect_uris": ["http://localhost:8000/oauth2/callback"],
"response_types": [ "response_types": [
"code" "code"
], ],

View File

@@ -0,0 +1,17 @@
ARG NODE_OPTIONS="--openssl-legacy-provider"
ARG PHP_PKG_VERSION="8.1.22-r0"
ARG ADDITIONAL_PACKAGES="bash=5.2.15-r0 \
build-base=0.5-r3 \
php81-gd=${PHP_PKG_VERSION} \
php81-xsl=${PHP_PKG_VERSION} \
php81-pdo=${PHP_PKG_VERSION} \
php81-pgsql=${PHP_PKG_VERSION} \
php81-pdo_pgsql=${PHP_PKG_VERSION} \
php81-soap=${PHP_PKG_VERSION} \
php81-ldap=${PHP_PKG_VERSION} \
php81-pdo_mysql=${PHP_PKG_VERSION} \
php81-bcmath=${PHP_PKG_VERSION} \
php81-pecl-xdebug"
FROM reg.cadoles.com/cadoles/symfony:alpine-php-8.1-base-2024.10.4-stable.1529.b630c69
RUN chown 1000:www-data -R /app

View File

@@ -1,38 +0,0 @@
## BUILD COMPOSER ##
FROM composer:2.8.11 AS install-composer
WORKDIR /app
COPY . .
RUN composer install
## BUILD NPM ##
FROM node:24.7.0 AS install-npm
ARG ENCORE_MODE=dev
WORKDIR /app
COPY --from=install-composer /app .
RUN npm install \
&& npm run dev
## FINAL IMAGE ##
FROM dunglas/frankenphp:1.9.1-php8.4-bookworm
# ENV FRANKENPHP_CONFIG="worker ./public/index.php" \
# # APP_RUNTIME=Runtime\\FrankenPhpSymfony\\Runtime \
ENV APP_ENV=dev APP_DEBUG=1
COPY ./misc/compose/hydra-sql/Caddyfile /etc/frankenphp/Caddyfile
# COPY ./misc/compose/hydra-sql/frankenphp.caddyfile-dev /etc/frankenphp/Caddyfile.d/frankenphp.caddyfile
WORKDIR /app
COPY --from=install-npm /app .
RUN cp $PHP_INI_DIR/php.ini-development $PHP_INI_DIR/php.ini \
&& install-php-extensions \
pdo_pgsql \
pdo_mysql \
opcache

View File

@@ -0,0 +1,18 @@
ARG NODE_OPTIONS="--openssl-legacy-provider"
ARG PHP_PKG_VERSION="8.1.22-r0"
ARG ADDITIONAL_PACKAGES="bash=5.2.15-r0 \
build-base=0.5-r3 \
php81-gd=${PHP_PKG_VERSION} \
php81-xsl=${PHP_PKG_VERSION} \
php81-pdo=${PHP_PKG_VERSION} \
php81-pgsql=${PHP_PKG_VERSION} \
php81-pdo_pgsql=${PHP_PKG_VERSION} \
php81-soap=${PHP_PKG_VERSION} \
php81-ldap=${PHP_PKG_VERSION} \
php81-pdo_mysql=${PHP_PKG_VERSION} \
php81-bcmath=${PHP_PKG_VERSION} \
php81-pecl-xdebug"
FROM reg.cadoles.com/cadoles/symfony:alpine-php-8.1-standalone-2024.10.4-stable.1529.b630c69
RUN chown 1000:www-data -R /app
USER www-data

9916
package-lock.json generated

File diff suppressed because it is too large Load Diff

View File

@@ -2,12 +2,13 @@
"devDependencies": { "devDependencies": {
"@babel/core": "^7.17.0", "@babel/core": "^7.17.0",
"@babel/preset-env": "^7.16.0", "@babel/preset-env": "^7.16.0",
"@hotwired/stimulus": "^3.0.0",
"@symfony/stimulus-bridge": "^3.2.0",
"@symfony/webpack-encore": "^4.1.2", "@symfony/webpack-encore": "^4.1.2",
"core-js": "^3.23.0", "core-js": "^3.23.0",
"regenerator-runtime": "^0.13.9", "regenerator-runtime": "^0.13.9",
"webpack": "^5.94.0", "webpack": "^5.91.0",
"webpack-cli": "^4.10.0", "webpack-cli": "^4.10.0",
"file-loader": "^6.2.0",
"webpack-notifier": "^1.15.0" "webpack-notifier": "^1.15.0"
}, },
"license": "UNLICENSED", "license": "UNLICENSED",
@@ -25,7 +26,6 @@
"jquery": "^3.6.1", "jquery": "^3.6.1",
"postcss-loader": "^7.0.2", "postcss-loader": "^7.0.2",
"sass": "^1.56.2", "sass": "^1.56.2",
"sass-loader": "^13.2.0", "sass-loader": "^13.2.0"
"altcha": "^2.0.0"
} }
} }

View File

@@ -1,8 +0,0 @@
parameters:
level: 6
paths:
- bin/
- config/
- public/
- src/
- tests/

2
public/build/app/138.js Normal file

File diff suppressed because one or more lines are too long

View File

@@ -0,0 +1,30 @@
/*!
* Bootstrap v5.2.3 (https://getbootstrap.com/)
* Copyright 2011-2022 The Bootstrap Authors (https://github.com/twbs/bootstrap/graphs/contributors)
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
*/
/*!
* Sizzle CSS Selector Engine v2.3.9
* https://sizzlejs.com/
*
* Copyright JS Foundation and other contributors
* Released under the MIT license
* https://js.foundation/
*
* Date: 2022-12-19
*/
/*!
* jQuery JavaScript Library v3.6.3
* https://jquery.com/
*
* Includes Sizzle.js
* https://sizzlejs.com/
*
* Copyright OpenJS Foundation and other contributors
* Released under the MIT license
* https://jquery.org/license
*
* Date: 2022-12-20T21:28Z
*/

1
public/build/app/3.js Normal file

File diff suppressed because one or more lines are too long

1
public/build/app/app.css Normal file
View File

@@ -0,0 +1 @@
body{min-height:50vh}.wrapper,body{align-items:center;display:flex;justify-content:center}.wrapper{height:100%}form{border:1px solid grey;border-radius:5px;display:flex;flex-direction:column;padding:15px}.form-error{color:red}.lang{align-items:center;display:flex;justify-content:center}.lang .flag{height:auto;margin:5px;width:200px}

1
public/build/app/app.js Normal file
View File

@@ -0,0 +1 @@
(self.webpackChunk=self.webpackChunk||[]).push([[143],{4180:(t,e,r)=>{var n={"./hello_controller.js":4695};function o(t){var e=i(t);return r(e)}function i(t){if(!r.o(n,t)){var e=new Error("Cannot find module '"+t+"'");throw e.code="MODULE_NOT_FOUND",e}return n[t]}o.keys=function(){return Object.keys(n)},o.resolve=i,t.exports=o,o.id=4180},8205:(t,e,r)=>{"use strict";r.d(e,{Z:()=>n});const n={}},4695:(t,e,r)=>{"use strict";r.r(e),r.d(e,{default:()=>s});r(8304),r(4812),r(489),r(1539),r(2419),r(8011),r(9070),r(6649),r(6078),r(2526),r(1817),r(9653),r(2165),r(6992),r(8783),r(3948);function n(t){return n="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},n(t)}function o(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function i(t,e){for(var r=0;r<e.length;r++){var o=e[r];o.enumerable=o.enumerable||!1,o.configurable=!0,"value"in o&&(o.writable=!0),Object.defineProperty(t,(i=o.key,u=void 0,u=function(t,e){if("object"!==n(t)||null===t)return t;var r=t[Symbol.toPrimitive];if(void 0!==r){var o=r.call(t,e||"default");if("object"!==n(o))return o;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===e?String:Number)(t)}(i,"string"),"symbol"===n(u)?u:String(u)),o)}var i,u}function u(t,e){return u=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(t,e){return t.__proto__=e,t},u(t,e)}function c(t){var e=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(t){return!1}}();return function(){var r,n=l(t);if(e){var o=l(this).constructor;r=Reflect.construct(n,arguments,o)}else r=n.apply(this,arguments);return f(this,r)}}function f(t,e){if(e&&("object"===n(e)||"function"==typeof e))return e;if(void 0!==e)throw new TypeError("Derived constructors may only return object or undefined");return function(t){if(void 0===t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return t}(t)}function l(t){return l=Object.setPrototypeOf?Object.getPrototypeOf.bind():function(t){return t.__proto__||Object.getPrototypeOf(t)},l(t)}var s=function(t){!function(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function");t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,writable:!0,configurable:!0}}),Object.defineProperty(t,"prototype",{writable:!1}),e&&u(t,e)}(l,t);var e,r,n,f=c(l);function l(){return o(this,l),f.apply(this,arguments)}return e=l,(r=[{key:"connect",value:function(){this.element.textContent="Hello Stimulus! Edit me in assets/controllers/hello_controller.js"}}])&&i(e.prototype,r),n&&i(e,n),Object.defineProperty(e,"prototype",{writable:!1}),l}(r(6599).Qr)},9437:(t,e,r)=>{"use strict";(0,r(2192).x)(r(4180))}},t=>{t.O(0,[3],(()=>{return e=9437,t(t.s=e);var e}));t.O()}]);

7
public/build/app/bootstrap-css.css vendored Normal file

File diff suppressed because one or more lines are too long

1
public/build/app/bootstrap-css.js vendored Normal file
View File

@@ -0,0 +1 @@
"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[113],{9218:()=>{}},s=>{var e;e=9218,s(s.s=e)}]);

1
public/build/app/bootstrap-js.js vendored Normal file
View File

@@ -0,0 +1 @@
"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[144],{2576:(e,s,u)=>{u(3138)}},e=>{e.O(0,[138],(()=>{return s=2576,e(e.s=s);var s}));e.O()}]);

View File

@@ -0,0 +1,30 @@
{
"entrypoints": {
"app": {
"js": [
"/build/app/runtime.js",
"/build/app/3.js",
"/build/app/app.js"
],
"css": [
"/build/app/app.css"
]
},
"bootstrap-css": {
"js": [
"/build/app/runtime.js",
"/build/app/bootstrap-css.js"
],
"css": [
"/build/app/bootstrap-css.css"
]
},
"bootstrap-js": {
"js": [
"/build/app/runtime.js",
"/build/app/138.js",
"/build/app/bootstrap-js.js"
]
}
}
}

View File

@@ -0,0 +1,10 @@
{
"build/app/app.css": "/build/app/app.css",
"build/app/app.js": "/build/app/app.js",
"build/app/bootstrap-css.css": "/build/app/bootstrap-css.css",
"build/app/bootstrap-css.js": "/build/app/bootstrap-css.js",
"build/app/bootstrap-js.js": "/build/app/bootstrap-js.js",
"build/app/runtime.js": "/build/app/runtime.js",
"build/app/3.js": "/build/app/3.js",
"build/app/138.js": "/build/app/138.js"
}

View File

@@ -0,0 +1 @@
(()=>{"use strict";var e,r={},t={};function o(e){var n=t[e];if(void 0!==n)return n.exports;var i=t[e]={exports:{}};return r[e].call(i.exports,i,i.exports,o),i.exports}o.m=r,e=[],o.O=(r,t,n,i)=>{if(!t){var l=1/0;for(s=0;s<e.length;s++){for(var[t,n,i]=e[s],a=!0,u=0;u<t.length;u++)(!1&i||l>=i)&&Object.keys(o.O).every((e=>o.O[e](t[u])))?t.splice(u--,1):(a=!1,i<l&&(l=i));if(a){e.splice(s--,1);var f=n();void 0!==f&&(r=f)}}return r}i=i||0;for(var s=e.length;s>0&&e[s-1][2]>i;s--)e[s]=e[s-1];e[s]=[t,n,i]},o.n=e=>{var r=e&&e.__esModule?()=>e.default:()=>e;return o.d(r,{a:r}),r},o.d=(e,r)=>{for(var t in r)o.o(r,t)&&!o.o(e,t)&&Object.defineProperty(e,t,{enumerable:!0,get:r[t]})},o.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(e){if("object"==typeof window)return window}}(),o.o=(e,r)=>Object.prototype.hasOwnProperty.call(e,r),o.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},(()=>{var e={666:0};o.O.j=r=>0===e[r];var r=(r,t)=>{var n,i,[l,a,u]=t,f=0;if(l.some((r=>0!==e[r]))){for(n in a)o.o(a,n)&&(o.m[n]=a[n]);if(u)var s=u(o)}for(r&&r(t);f<l.length;f++)i=l[f],o.o(e,i)&&e[i]&&e[i][0](),e[i]=0;return o.O(s)},t=self.webpackChunk=self.webpackChunk||[];t.forEach(r.bind(null,0)),t.push=r.bind(null,t.push.bind(t))})()})();

View File

@@ -0,0 +1,13 @@
{
"entrypoints": {
"theme": {
"js": [
"/build/theme/runtime.js",
"/build/theme/theme.js"
],
"css": [
"/build/theme/theme.css"
]
}
}
}

View File

@@ -0,0 +1,5 @@
{
"build/theme/theme.css": "/build/theme/theme.css",
"build/theme/theme.js": "/build/theme/theme.js",
"build/theme/runtime.js": "/build/theme/runtime.js"
}

View File

@@ -0,0 +1 @@
(()=>{"use strict";var e,r={},o={};function t(e){var n=o[e];if(void 0!==n)return n.exports;var l=o[e]={exports:{}};return r[e](l,l.exports,t),l.exports}t.m=r,e=[],t.O=(r,o,n,l)=>{if(!o){var a=1/0;for(p=0;p<e.length;p++){for(var[o,n,l]=e[p],i=!0,f=0;f<o.length;f++)(!1&l||a>=l)&&Object.keys(t.O).every((e=>t.O[e](o[f])))?o.splice(f--,1):(i=!1,l<a&&(a=l));if(i){e.splice(p--,1);var u=n();void 0!==u&&(r=u)}}return r}l=l||0;for(var p=e.length;p>0&&e[p-1][2]>l;p--)e[p]=e[p-1];e[p]=[o,n,l]},t.o=(e,r)=>Object.prototype.hasOwnProperty.call(e,r),t.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},(()=>{var e={666:0};t.O.j=r=>0===e[r];var r=(r,o)=>{var n,l,[a,i,f]=o,u=0;if(a.some((r=>0!==e[r]))){for(n in i)t.o(i,n)&&(t.m[n]=i[n]);if(f)var p=f(t)}for(r&&r(o);u<a.length;u++)l=a[u],t.o(e,l)&&e[l]&&e[l][0](),e[l]=0;return t.O(p)},o=self.webpackChunk=self.webpackChunk||[];o.forEach(r.bind(null,0)),o.push=r.bind(null,o.push.bind(o))})()})();

View File

@@ -0,0 +1 @@
input[type=radio]:checked~.app-item{--tw-shadow:0 10px 15px -3px rgba(22,78,99,.3),0 4px 6px -4px rgba(22,78,99,.3);background-color:rgba(76,233,14,.15)}

View File

@@ -0,0 +1 @@
(self.webpackChunk=self.webpackChunk||[]).push([[505],{755:(s,e,k)=>{k(634),k(681)},634:()=>{},681:(s,e,k)=>{"use strict";k.r(e)}},s=>{var e;e=755,s(s.s=e)}]);

View File

@@ -0,0 +1,2 @@
require('./theme.js')
require('./theme.css')

4
public/theme.css Normal file
View File

@@ -0,0 +1,4 @@
input[type="radio"]:checked ~ .app-item {
--tw-shadow: 0 10px 15px -3px rgb(22 78 99 / 0.3), 0 4px 6px -4px rgb(22 78 99 / 0.3);
background-color: rgb(76 233 14 / 0.15);
}

View File

@@ -46,7 +46,6 @@ Elle permet de se connecter à une base de donnée et de vérifier un mot de pas
| `PHP_FPM_PM_MIN_SPARE_SERVERS` | Définition du nombre minimum de processus enfants inactifs que PHP-FPM doit conserver en réserve. | 1 | | | `PHP_FPM_PM_MIN_SPARE_SERVERS` | Définition du nombre minimum de processus enfants inactifs que PHP-FPM doit conserver en réserve. | 1 | |
| `PHP_FPM_PM_MAX_SPARE_SERVERS` | Définition du nombre maximum de processus enfants inactifs que PHP-FPM peut conserver en réserve. | 3 | | | `PHP_FPM_PM_MAX_SPARE_SERVERS` | Définition du nombre maximum de processus enfants inactifs que PHP-FPM peut conserver en réserve. | 3 | |
| `XDG_DATA_HOME` | Définition du répertoire de base pour le stockage des données spécifiques à l'utilisateur. | /tmp/data | | | `XDG_DATA_HOME` | Définition du répertoire de base pour le stockage des données spécifiques à l'utilisateur. | /tmp/data | |
| `ALTCHA_ENABLED` | Désactivation d'altcha lors de la connexion | true | |
### Algorithmes de hashage compatibles ### Algorithmes de hashage compatibles
@@ -110,10 +109,3 @@ ex : `'redis:?host[redis1:26379]&host[redis2:26379]&host[redis3:26379]&redis_sen
| `postgres` | Base de donnée postgres support du test et pour hydra | `5432` | | `postgres` | Base de donnée postgres support du test et pour hydra | `5432` |
| `mariadb` | Base de donnée mariadb support du test | `3306` | | `mariadb` | Base de donnée mariadb support du test | `3306` |
| `pgadmin` | pour administrer la base de donnée | `8085` | | `pgadmin` | pour administrer la base de donnée | `8085` |
### build du sql theme
copier les images et les fonts dans les dossier ./assets
modifier si besoin le fichier theme-entrypoints.js
lancer un `npm run build`

View File

@@ -1,28 +0,0 @@
<?php
declare(strict_types=1);
use Rector\Config\RectorConfig;
use Rector\Renaming\Rector\Class_\RenameAttributeRector;
use Rector\Symfony\Set\SymfonySetList;
return static function (RectorConfig $rectorConfig): void {
$rectorConfig->paths([
__DIR__ . '/src',
]);
$rectorConfig->sets([
SymfonySetList::SYMFONY_60,
SymfonySetList::SYMFONY_61,
SymfonySetList::SYMFONY_62,
SymfonySetList::SYMFONY_63,
SymfonySetList::SYMFONY_64,
SymfonySetList::SYMFONY_CODE_QUALITY,
SymfonySetList::SYMFONY_CONSTRUCTOR_INJECTION,
]);
$rectorConfig->importShortClasses(false);
$rectorConfig->skip([
RenameAttributeRector::class
]);
};

View File

@@ -1,48 +0,0 @@
<?php
namespace App\Altcha;
use App\Altcha\Form\AltchaModel;
use Symfony\Component\Form\DataTransformerInterface;
class AltchaTransformer implements DataTransformerInterface
{
/**
* {@inheritDoc}
*/
public function reverseTransform($value): AltchaModel
{
if (empty($value)) {
return new AltchaModel();
}
$decodedValue = base64_decode($value);
$data = json_decode($decodedValue);
$model = new AltchaModel();
foreach ($data as $property => $value) {
$model->{$property} = $value;
}
return $model;
}
/**
* {@inheritDoc}
*/
public function transform($value): string
{
if (empty($value)) {
return '';
}
$json = json_encode($value);
if (false === $json) {
return '';
}
return base64_encode($json);
}
}

View File

@@ -1,52 +0,0 @@
<?php
namespace App\Altcha;
use Symfony\Component\Form\FormError;
use Symfony\Component\Form\FormEvent;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Contracts\HttpClient\HttpClientInterface;
use Symfony\Contracts\Translation\TranslatorInterface;
class AltchaValidator
{
public function __construct(
private readonly string $altchaHost,
private readonly string $altchaBaseUrl,
private readonly HttpClientInterface $httpClient,
private readonly TranslatorInterface $translator
) {
}
public function validate(FormEvent $formEvent): void
{
$form = $formEvent->getForm();
$data = $form->getData();
$response = $this->httpClient->request(
'POST',
$this->altchaHost.$this->altchaBaseUrl.'/verify',
[
'body' => json_encode($data),
'headers' => [
'Content-Type' => 'application/json',
],
],
);
if (Response::HTTP_OK !== $response->getStatusCode()) {
$form->addError(new FormError($this->translator->trans('altcha.validator.server_validation_error', [], 'form')));
return;
}
$content = $response->getContent();
$parsedResponse = json_decode($content);
if (true !== $parsedResponse->success) {
$form->addError(new FormError($this->translator->trans('altcha.validator.server_validation_error', [], 'form')));
return;
}
}
}

View File

@@ -1,39 +0,0 @@
<?php
namespace App\Altcha\Form;
use Symfony\Component\Validator\Constraints as Assert;
class AltchaModel
{
/**
* @Assert\NotBlank()
* @Assert\Regex("/^(SHA-1|SHA-256|SHA-512)$/")
*/
public string $algorithm;
/**
* @Assert\NotBlank()
*/
public string $challenge;
/**
* @Assert\NotBlank()
*/
public string $salt;
/**
* @Assert\NotBlank()
*/
public int $number;
/**
* @Assert\NotBlank()
*/
public string $signature;
/**
* @Assert\NotBlank()
*/
public int $took;
}

View File

@@ -1,81 +0,0 @@
<?php
namespace App\Altcha\Form;
use App\Altcha\AltchaTransformer;
use App\Altcha\AltchaValidator;
use Symfony\Component\Form\AbstractType;
use Symfony\Component\Form\Extension\Core\Type\TextType;
use Symfony\Component\Form\FormBuilderInterface;
use Symfony\Component\Form\FormEvents;
use Symfony\Component\Form\FormInterface;
use Symfony\Component\Form\FormView;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Contracts\HttpClient\HttpClientInterface;
use Symfony\Contracts\Translation\TranslatorInterface;
class AltchaType extends AbstractType
{
public function __construct(
private readonly string $altchaHost,
private readonly string $altchaBaseUrl,
private readonly string $altchaDebug,
private readonly string $altchaWorkers,
private readonly string $altchaDelay,
private readonly string $altchaMockError,
private readonly AltchaValidator $altchaValidator,
private readonly HttpClientInterface $httpClient,
private readonly TranslatorInterface $translator
) {
}
public function buildForm(FormBuilderInterface $builder, array $options): void
{
$builder->addModelTransformer(new AltchaTransformer());
$builder->addEventListener(FormEvents::POST_SUBMIT, [$this->altchaValidator, 'validate']);
}
public function buildView(FormView $view, FormInterface $form, array $options)
{
$translations = [
'label' => $this->translator->trans('altcha.widget.label', [], 'form'),
'verified' => $this->translator->trans('altcha.widget.verified', [], 'form'),
'verifying' => $this->translator->trans('altcha.widget.verifying', [], 'form'),
'waitAlert' => $this->translator->trans('altcha.widget.waitalert', [], 'form'),
'error' => $this->translator->trans('altcha.widget.error', [], 'form'),
'expired' => $this->translator->trans('altcha.widget.expired', [], 'form'),
];
$view->vars['translations'] = json_encode($translations);
$view->vars['challengeJson'] = $this->requestChallenge();
$view->vars['debug'] = $this->altchaDebug;
$view->vars['workers'] = $this->altchaWorkers;
$view->vars['delay'] = $this->altchaDelay;
$view->vars['mockError'] = $this->altchaMockError;
}
private function requestChallenge(): string
{
$resp = $this->httpClient->request('GET', $this->altchaHost.$this->altchaBaseUrl.'/request');
if (Response::HTTP_OK === $resp->getStatusCode()) {
return $resp->getContent();
}
return '';
}
public function getParent(): string
{
return TextType::class;
}
public function getName(): string
{
return $this->getBlockPrefix();
}
public function getBlockPrefix(): string
{
return 'altcha';
}
}

View File

@@ -11,17 +11,21 @@ use Symfony\Component\ExpressionLanguage\ExpressionLanguage;
use Symfony\Component\Finder\Exception\AccessDeniedException; use Symfony\Component\Finder\Exception\AccessDeniedException;
use Symfony\Component\HttpFoundation\RedirectResponse; use Symfony\Component\HttpFoundation\RedirectResponse;
use Symfony\Component\HttpFoundation\Request; use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpFoundation\RequestStack;
use Symfony\Component\HttpFoundation\Response; use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\HttpFoundation\Session\SessionInterface;
use Symfony\Component\Routing\Annotation\Route; use Symfony\Component\Routing\Annotation\Route;
class MainController extends AbstractController class MainController extends AbstractController
{ {
public function __construct( private HydraService $hydra;
private readonly RequestStack $requestStack, private Client $client;
private readonly HydraService $hydra, private SessionInterface $session;
private readonly Client $client
){ public function __construct(SessionInterface $session, HydraService $hydra, Client $client)
{
$this->session = $session;
$this->client = $client;
$this->hydra = $hydra;
} }
#[Route('/', name: 'app_home')] #[Route('/', name: 'app_home')]
@@ -34,9 +38,9 @@ class MainController extends AbstractController
* Route de Healthcheck (notament pour kubernetes) * Route de Healthcheck (notament pour kubernetes)
*/ */
#[Route('/health', name: 'health')] #[Route('/health', name: 'health')]
public function health(): Response public function health(Request $request): Response
{ {
return new Response('healthy', Response::HTTP_OK); return new Response('healthy', 200);
} }
#[Route('/connect/login-accept', name: 'app_login_accept', methods: ['GET'])] #[Route('/connect/login-accept', name: 'app_login_accept', methods: ['GET'])]
@@ -47,7 +51,7 @@ class MainController extends AbstractController
if (!$user instanceof User) { if (!$user instanceof User) {
throw new AccessDeniedException(); throw new AccessDeniedException();
} }
$challenge = $this->requestStack->getSession()->get('challenge'); $challenge = $this->session->get('challenge');
if (!$challenge) { if (!$challenge) {
return new RedirectResponse($this->getParameter('issuer_url')); return new RedirectResponse($this->getParameter('issuer_url'));
} }

View File

@@ -39,12 +39,12 @@ class SecurityController extends AbstractController
} }
return $this->render('login.html.twig', [ return $this->render('login.html.twig', [
'loginForm' => $loginForm, 'loginForm' => $loginForm->createView(),
]); ]);
} }
#[Route('/logout', name: 'logout')] #[Route('/logout', name: 'logout')]
public function logout(): void public function logout(Request $request): void
{ {
} }
} }

View File

@@ -8,7 +8,7 @@ use Symfony\Component\Config\Definition\ConfigurationInterface;
class SQLLoginConfiguration implements ConfigurationInterface class SQLLoginConfiguration implements ConfigurationInterface
{ {
public function getConfigTreeBuilder(): TreeBuilder public function getConfigTreeBuilder()
{ {
$treeBuilder = new TreeBuilder('sql_login'); $treeBuilder = new TreeBuilder('sql_login');
$treeBuilder->getRootNode()->children() $treeBuilder->getRootNode()->children()

View File

@@ -9,12 +9,14 @@ class User implements UserInterface
private array $attributes = []; private array $attributes = [];
private string $login; private string $login;
private string $password; private string $password;
private bool $rememberMe;
public function __construct($login, $password, $attributes) public function __construct($login, $password, $attributes, $rememberMe = false)
{ {
$this->password = $password; $this->password = $password;
$this->login = $login; $this->login = $login;
$this->attributes = $attributes; $this->attributes = $attributes;
$this->rememberMe = $rememberMe;
} }
public function getLogin(): ?string public function getLogin(): ?string
@@ -32,6 +34,11 @@ class User implements UserInterface
return $this->attributes; return $this->attributes;
} }
public function getRememberMe(): bool
{
return $this->rememberMe;
}
public function getRoles(): array public function getRoles(): array
{ {
return ['ROLE_USER']; return ['ROLE_USER'];

View File

@@ -2,8 +2,8 @@
namespace App\Form; namespace App\Form;
use App\Altcha\Form\AltchaType;
use Symfony\Component\Form\AbstractType; use Symfony\Component\Form\AbstractType;
use Symfony\Component\Form\Extension\Core\Type\CheckboxType;
use Symfony\Component\Form\Extension\Core\Type\PasswordType; use Symfony\Component\Form\Extension\Core\Type\PasswordType;
use Symfony\Component\Form\Extension\Core\Type\TextType; use Symfony\Component\Form\Extension\Core\Type\TextType;
use Symfony\Component\Form\FormBuilderInterface; use Symfony\Component\Form\FormBuilderInterface;
@@ -11,11 +11,6 @@ use Symfony\Component\OptionsResolver\OptionsResolver;
class LoginType extends AbstractType class LoginType extends AbstractType
{ {
public function __construct(
private readonly bool $altchaEnabled
) {
}
public function buildForm(FormBuilderInterface $builder, array $options): void public function buildForm(FormBuilderInterface $builder, array $options): void
{ {
$builder $builder
@@ -27,15 +22,12 @@ class LoginType extends AbstractType
'translation_domain' => 'form', 'translation_domain' => 'form',
'label' => 'form.label.password', 'label' => 'form.label.password',
]) ])
; ->add('_remember_me', CheckboxType::class, [
'required' => false,
if ($this->altchaEnabled) {
$builder->add('altcha', AltchaType::class, [
'translation_domain' => 'form', 'translation_domain' => 'form',
'label' => 'altcha.widget.title', 'label' => 'form.label.remember_me',
'required' => true, ])
]); ;
}
} }
public function configureOptions(OptionsResolver $resolver): void public function configureOptions(OptionsResolver $resolver): void

View File

@@ -3,22 +3,25 @@
namespace App\Hydra; namespace App\Hydra;
use App\Hydra\Exception\InvalidChallengeException; use App\Hydra\Exception\InvalidChallengeException;
use Exception;
use Symfony\Contracts\HttpClient\HttpClientInterface; use Symfony\Contracts\HttpClient\HttpClientInterface;
use Symfony\Contracts\HttpClient\ResponseInterface; use Symfony\Contracts\HttpClient\ResponseInterface;
class Client class Client
{ {
private const int MAX_RETRY = 3; private HttpClientInterface $client;
private const array SLEEP_TIME = [ private const MAX_RETRY = 3;
private const SLEEP_TIME = [
5, 5,
500, 500,
5000, 5000,
]; ];
private string $hydraAdminBaseUrl;
public function __construct( public function __construct(HttpClientInterface $client, string $hydraAdminBaseUrl)
private readonly HttpClientInterface $client, {
private readonly string $hydraAdminBaseUrl $this->client = $client;
) { $this->hydraAdminBaseUrl = $hydraAdminBaseUrl;
} }
public function fetchLoginRequestInfo(string $loginChallenge): ResponseInterface public function fetchLoginRequestInfo(string $loginChallenge): ResponseInterface
@@ -78,7 +81,7 @@ class Client
$status = $response->getStatusCode(); $status = $response->getStatusCode();
if (503 === $status) { if (503 === $status) {
++$attempt; ++$attempt;
usleep(1000 * self::SLEEP_TIME[$attempt] + random_int(1, 5) * 1000); usleep(1000 * self::SLEEP_TIME[$attempt] + rand(1, 5) * 1000);
continue; continue;
} }
switch ($status) { switch ($status) {
@@ -88,7 +91,7 @@ class Client
break; break;
} }
if (self::MAX_RETRY === $attempt) { if (self::MAX_RETRY === $attempt) {
throw new \Exception(sprintf('Fetch consent a rencontré une erreur %s après %s tentatives', $response->getStatusCode(), self::MAX_RETRY)); throw new Exception(sprintf('Fetch consent a rencontré une erreur %s après %s tentatives', $response->getStatusCode(), self::MAX_RETRY));
} }
return $response; return $response;

View File

@@ -8,18 +8,23 @@ use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\HttpFoundation\Exception\BadRequestException; use Symfony\Component\HttpFoundation\Exception\BadRequestException;
use Symfony\Component\HttpFoundation\RedirectResponse; use Symfony\Component\HttpFoundation\RedirectResponse;
use Symfony\Component\HttpFoundation\Request; use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpFoundation\RequestStack; use Symfony\Component\HttpFoundation\Session\SessionInterface;
use Symfony\Component\Security\Core\Authentication\Token\Storage\TokenStorageInterface; use Symfony\Component\Security\Core\Authentication\Token\Storage\TokenStorageInterface;
use Symfony\Component\Security\Core\Exception\AccessDeniedException; use Symfony\Component\Security\Core\Exception\AccessDeniedException;
class HydraService extends AbstractController class HydraService extends AbstractController
{ {
public function __construct( private SessionInterface $session;
private readonly Client $client, private Client $client;
private readonly RequestStack $requestStack, private TokenStorageInterface $tokenStorage;
private readonly TokenStorageInterface $tokenStorage, private string $baseUrl;
private readonly string $baseUrl
){ public function __construct(Client $client, SessionInterface $session, TokenStorageInterface $tokenStorage, string $baseUrl)
{
$this->session = $session;
$this->client = $client;
$this->tokenStorage = $tokenStorage;
$this->baseUrl = $baseUrl;
} }
public function handleLoginRequest(Request $request): RedirectResponse public function handleLoginRequest(Request $request): RedirectResponse
@@ -33,13 +38,13 @@ class HydraService extends AbstractController
$res = $this->client->fetchLoginRequestInfo($challenge); $res = $this->client->fetchLoginRequestInfo($challenge);
$loginRequestInfo = $res->toArray(); $loginRequestInfo = $res->toArray();
if (200 !== $res->getStatusCode()) { if (200 !== $res->getStatusCode()) {
$this->requestStack->getSession()->clear(); $this->session->clear();
throw new BadRequestException(); throw new BadRequestException();
} }
// si le challenge est validé par hydra, on le stocke en session pour l'utiliser par la suite et on redirige vers une route interne protégée qui va déclencher l'identification FranceConnect // si le challenge est validé par hydra, on le stocke en session pour l'utiliser par la suite et on redirige vers une route interne protégée qui va déclencher l'identification FranceConnect
$this->requestStack->getSession()->set('challenge', $loginRequestInfo['challenge']); $this->session->set('challenge', $loginRequestInfo['challenge']);
return new RedirectResponse($this->baseUrl.'/connect/login-accept'); return new RedirectResponse($this->baseUrl . '/connect/login-accept');
} }
public function handleConsentRequest(Request $request): RedirectResponse public function handleConsentRequest(Request $request): RedirectResponse
@@ -72,7 +77,7 @@ class HydraService extends AbstractController
} }
$logoutRequestInfo = $this->client->fetchLogoutRequestInfo($logoutChallenge)->toArray(); $logoutRequestInfo = $this->client->fetchLogoutRequestInfo($logoutChallenge)->toArray();
$logoutAcceptRes = $this->client->acceptLogoutRequest($logoutRequestInfo['challenge'])->toArray(); $logoutAcceptRes = $this->client->acceptLogoutRequest($logoutRequestInfo['challenge'])->toArray();
$this->requestStack->getSession()->clear(); $this->session->clear();
$this->tokenStorage->setToken(null); $this->tokenStorage->setToken(null);
return new RedirectResponse($logoutAcceptRes['redirect_to']); return new RedirectResponse($logoutAcceptRes['redirect_to']);

View File

@@ -103,6 +103,6 @@ class SQLLoginRequest
{ {
$fields = join(',', array_merge($this->getPasswordFields(), $this->getDataFields())); $fields = join(',', array_merge($this->getPasswordFields(), $this->getDataFields()));
return 'SELECT '.$fields.' FROM '.$this->getTableName().' WHERE '.$this->getLoginColumnName().' = :'.$this->getLoginColumnName().';'; return 'SELECT '.$fields.' FROM '.$this->getTableName().' WHERE LOWER('.$this->getLoginColumnName().') = LOWER(:'.$this->getLoginColumnName().');';
} }
} }

View File

@@ -10,16 +10,17 @@ use App\SQLLogin\Exception\EmptyResultException;
use App\SQLLogin\Exception\InvalidSQLPasswordException; use App\SQLLogin\Exception\InvalidSQLPasswordException;
use App\SQLLogin\Exception\SecurityPatternConfigurationException; use App\SQLLogin\Exception\SecurityPatternConfigurationException;
use App\SQLLogin\SQLLoginRequest; use App\SQLLogin\SQLLoginRequest;
use PDOException;
use Psr\Log\LoggerInterface;
use Symfony\Component\HttpFoundation\RedirectResponse; use Symfony\Component\HttpFoundation\RedirectResponse;
use Symfony\Component\HttpFoundation\Request; use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\Security\Core\Authentication\Token\TokenInterface; use Symfony\Component\Security\Core\Authentication\Token\TokenInterface;
use Symfony\Component\Security\Core\Exception\AuthenticationException; use Symfony\Component\Security\Core\Exception\AuthenticationException;
use Symfony\Component\Security\Core\Exception\UserNotFoundException; use Symfony\Component\Security\Core\Security;
use Symfony\Component\Security\Core\User\UserInterface;
use Symfony\Component\Security\Http\Authenticator\AbstractLoginFormAuthenticator; use Symfony\Component\Security\Http\Authenticator\AbstractLoginFormAuthenticator;
use Symfony\Component\Security\Http\Authenticator\Passport\Badge\RememberMeBadge;
use Symfony\Component\Security\Http\Authenticator\Passport\Badge\UserBadge; use Symfony\Component\Security\Http\Authenticator\Passport\Badge\UserBadge;
use Symfony\Component\Security\Http\Authenticator\Passport\SelfValidatingPassport; use Symfony\Component\Security\Http\Authenticator\Passport\SelfValidatingPassport;
use Symfony\Component\Security\Http\SecurityRequestAttributes;
class SQLLoginUserAuthenticator extends AbstractLoginFormAuthenticator class SQLLoginUserAuthenticator extends AbstractLoginFormAuthenticator
{ {
@@ -27,12 +28,20 @@ class SQLLoginUserAuthenticator extends AbstractLoginFormAuthenticator
public const ERROR_LOGIN = 'error_login'; public const ERROR_LOGIN = 'error_login';
public const TECHNICAL_ERROR = 'technical_error'; public const TECHNICAL_ERROR = 'technical_error';
private string $baseUrl;
public function __construct( public function __construct(
private readonly string $baseUrl, string $baseUrl,
private readonly SQLLoginService $sqlLoginService, private SQLLoginService $sqlLoginService,
private readonly PasswordEncoder $passwordHasher, private PasswordEncoder $passwordHasher,
private readonly SQLLoginRequest $sqlLoginRequest private SQLLoginRequest $sqlLoginRequest,
){ private LoggerInterface $logger
) {
$this->baseUrl = $baseUrl;
$this->sqlLoginService = $sqlLoginService;
$this->passwordHasher = $passwordHasher;
$this->sqlLoginRequest = $sqlLoginRequest;
$this->logger = $logger;
} }
/** /**
@@ -47,28 +56,30 @@ class SQLLoginUserAuthenticator extends AbstractLoginFormAuthenticator
public function onAuthenticationSuccess(Request $request, TokenInterface $token, $providerKey): RedirectResponse public function onAuthenticationSuccess(Request $request, TokenInterface $token, $providerKey): RedirectResponse
{ {
return new RedirectResponse($this->baseUrl.'/connect/login-accept'); return new RedirectResponse($this->baseUrl . '/connect/login-accept');
} }
public function onAuthenticationFailure(Request $request, AuthenticationException $exception): RedirectResponse public function onAuthenticationFailure(Request $request, AuthenticationException $exception): RedirectResponse
{ {
$request->getSession()->set(SecurityRequestAttributes::AUTHENTICATION_ERROR, $exception); $request->getSession()->set(Security::AUTHENTICATION_ERROR, $exception);
return new RedirectResponse($this->baseUrl.'/login'); return new RedirectResponse($this->baseUrl . '/login');
} }
public function authenticate(Request $request): SelfValidatingPassport public function authenticate(Request $request): SelfValidatingPassport
{ {
$form = $request->request->all(key: 'login'); $form = $request->request->get('login');
$login = \strtolower($form['login']); $login = $form['login'];
$plaintextPassword = $form['password']; $plaintextPassword = $form['password'];
$rememberMe = isset($form['_remember_me']) ? true : false;
$session = $request->getSession(); $session = $request->getSession();
try { try {
$datas = $this->sqlLoginService->fetchPasswordAndDatas($login); $datas = $this->sqlLoginService->fetchPasswordAndDatas($login);
} catch (EmptyResultException $e) { } catch (EmptyResultException $e) {
$session->set(self::ERROR_LOGIN, true); $session->set(self::ERROR_LOGIN, true);
$this->logger->warning("authentication failed", ['username' => $login, "remote_address" => $request->getClientIp()]);
throw new AuthenticationException(); throw new AuthenticationException();
} catch (DataToFetchConfigurationException|\PDOException $e) { } catch (DataToFetchConfigurationException | PDOException $e) {
\Sentry\captureException($e); \Sentry\captureException($e);
$session->set(self::TECHNICAL_ERROR, true); $session->set(self::TECHNICAL_ERROR, true);
throw new AuthenticationException(); throw new AuthenticationException();
@@ -88,31 +99,30 @@ class SQLLoginUserAuthenticator extends AbstractLoginFormAuthenticator
$this->passwordHasher->verify($remoteHashedPassword, $plaintextPassword, $remoteSalt); $this->passwordHasher->verify($remoteHashedPassword, $plaintextPassword, $remoteSalt);
} catch (InvalidSQLPasswordException $e) { } catch (InvalidSQLPasswordException $e) {
$session->set(self::ERROR_LOGIN, true); $session->set(self::ERROR_LOGIN, true);
$this->logger->warning("authentication failed", ['username' => $login, "remote_address" => $request->getClientIp()]);
throw new AuthenticationException(); throw new AuthenticationException();
} catch (SecurityPatternConfigurationException $e) { } catch (SecurityPatternConfigurationException $e) {
\Sentry\captureException($e); \Sentry\captureException($e);
$session->set(self::TECHNICAL_ERROR, true); $session->set(self::TECHNICAL_ERROR, true);
throw new AuthenticationException(); throw new AuthenticationException();
} }
$user = new User($login, $remoteHashedPassword, $datas, $rememberMe);
$user = new User($login, $remoteHashedPassword, $datas); $loader = function (string $userIdentifier) use ($user) {
return $user->getLogin() == $userIdentifier ? $user : null;
$loader = function (string $userIdentifier) use ($user): UserInterface {
if ($user->getLogin() !== $userIdentifier) {
throw new UserNotFoundException(sprintf('User "%s" not found.', $userIdentifier));
}
return $user;
}; };
$passport = new SelfValidatingPassport(new UserBadge($login, $loader)); $passport = new SelfValidatingPassport(new UserBadge($login, $loader));
if ($rememberMe) {
$passport->addBadge(new RememberMeBadge());
}
$passport->setAttribute('attributes', $user->getAttributes()); $passport->setAttribute('attributes', $user->getAttributes());
$this->logger->warning("authentication succeeded", ['username' => $login, "remote_address" => $request->getClientIp()]);
return $passport; return $passport;
} }
protected function getLoginUrl(Request $request): string protected function getLoginUrl(Request $request): string
{ {
return $this->baseUrl.'/login'; return $this->baseUrl . '/login';
} }
} }

View File

@@ -3,48 +3,45 @@
namespace App\Security; namespace App\Security;
use App\Entity\User; use App\Entity\User;
use App\Service\SQLLoginService;
use App\SQLLogin\SQLLoginRequest;
use Symfony\Component\HttpFoundation\RequestStack; use Symfony\Component\HttpFoundation\RequestStack;
use Symfony\Component\Security\Core\Exception\UnsupportedUserException; use Symfony\Component\Security\Core\Exception\UnsupportedUserException;
use Symfony\Component\Security\Core\Exception\UserNotFoundException;
use Symfony\Component\Security\Core\User\UserInterface; use Symfony\Component\Security\Core\User\UserInterface;
use Symfony\Component\Security\Core\User\UserProviderInterface; use Symfony\Component\Security\Core\User\UserProviderInterface;
class SQLLoginUserProvider implements UserProviderInterface class SQLLoginUserProvider implements UserProviderInterface
{ {
public function __construct( protected RequestStack $requestStack;
private readonly RequestStack $requestStack,
private readonly SQLLoginService $sqlLoginService, public function __construct(RequestStack $requestStack)
private readonly SQLLoginRequest $sqlLoginRequest {
){ $this->requestStack = $requestStack;
} }
public function loadUserByIdentifier(string $identifier): UserInterface public function loadUserByIdentifier(string $identifier, ?User $user): ?UserInterface
{ {
$user = $this->sqlLoginService->fetchPasswordAndDatas($identifier); if ($user->getUserIdentifier() === $identifier) {
return $user;
$attributes = $user;
unset($attributes[$this->sqlLoginRequest->getPasswordColumnName()]);
if (empty($user[$this->sqlLoginRequest->getLoginColumnName()]) || empty($user[$this->sqlLoginRequest->getPasswordColumnName()])) {
throw new UserNotFoundException('email or password not found');
} }
return new User($user[$this->sqlLoginRequest->getLoginColumnName()], $user[$this->sqlLoginRequest->getPasswordColumnName()], $attributes); return null;
} }
public function refreshUser(UserInterface $user): UserInterface public function loadUserByUsername(string $username): ?UserInterface
{
return $this->loadUserByIdentifier($username, null);
}
public function refreshUser(UserInterface $user): UserInterface|null
{ {
if (!$user instanceof User) { if (!$user instanceof User) {
throw new UnsupportedUserException(sprintf('Invalid user class "%s".', get_class($user))); throw new UnsupportedUserException(sprintf('Invalid user class "%s".', get_class($user)));
} }
return $this->loadUserByIdentifier($user->getUserIdentifier()); return $this->loadUserByIdentifier($user->getUserIdentifier(), $user);
} }
public function supportsClass(string $class): bool public function supportsClass(string $class): bool
{ {
return User::class === $class || \is_subclass_of($class, User::class); return User::class === $class || is_subclass_of($class, User::class);
} }
} }

View File

@@ -8,7 +8,6 @@ use App\SQLLogin\SQLLoginRequest;
use PDO; use PDO;
use Psr\Log\LoggerInterface; use Psr\Log\LoggerInterface;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController; use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\Security\Core\User\UserInterface;
class SQLLoginService extends AbstractController class SQLLoginService extends AbstractController
{ {
@@ -22,9 +21,6 @@ class SQLLoginService extends AbstractController
$this->loggerInterface = $loggerInterface; $this->loggerInterface = $loggerInterface;
} }
/**
* @return array<string,string>
*/
public function fetchPasswordAndDatas(string $login): array public function fetchPasswordAndDatas(string $login): array
{ {
$dataRequest = $this->sqlLoginRequest->getDatasRequest(); $dataRequest = $this->sqlLoginRequest->getDatasRequest();
@@ -33,9 +29,6 @@ class SQLLoginService extends AbstractController
return $datas; return $datas;
} }
/**
* @return array<string,string>
*/
private function executeRequestWithLogin(string $request, string $login): array private function executeRequestWithLogin(string $request, string $login): array
{ {
$attempt = 0; $attempt = 0;

View File

@@ -11,15 +11,6 @@
"config/routes/annotations.yaml" "config/routes/annotations.yaml"
] ]
}, },
"doctrine/deprecations": {
"version": "1.1",
"recipe": {
"repo": "github.com/symfony/recipes",
"branch": "main",
"version": "1.0",
"ref": "87424683adc81d7dc305eefec1fced883084aab9"
}
},
"php-http/discovery": { "php-http/discovery": {
"version": "1.19", "version": "1.19",
"recipe": { "recipe": {
@@ -32,18 +23,6 @@
"config/packages/http_discovery.yaml" "config/packages/http_discovery.yaml"
] ]
}, },
"phpstan/phpstan": {
"version": "2.1",
"recipe": {
"repo": "github.com/symfony/recipes-contrib",
"branch": "main",
"version": "1.0",
"ref": "5e490cc197fb6bb1ae22e5abbc531ddc633b6767"
},
"files": [
"phpstan.dist.neon"
]
},
"sentry/sentry-symfony": { "sentry/sentry-symfony": {
"version": "4.14", "version": "4.14",
"recipe": { "recipe": {
@@ -123,6 +102,18 @@
"src/Kernel.php" "src/Kernel.php"
] ]
}, },
"symfony/lock": {
"version": "5.4",
"recipe": {
"repo": "github.com/symfony/recipes",
"branch": "main",
"version": "5.2",
"ref": "8e937ff2b4735d110af1770f242c1107fdab4c8e"
},
"files": [
"config/packages/lock.yaml"
]
},
"symfony/monolog-bundle": { "symfony/monolog-bundle": {
"version": "3.10", "version": "3.10",
"recipe": { "recipe": {

View File

@@ -1,13 +0,0 @@
{% block altcha_widget %}
<altcha-widget
challengejson={{challengeJson}}
name='altcha'
strings="{{translations}}"
hidelogo
hidefooter
workers= {{ workers }}
delay={{ delay }}
{{ debug ? 'debug' : ''}}
{{ mockError ? 'mockerror' : ''}}
></altcha-widget>
{% endblock %}

View File

@@ -1,19 +1,21 @@
<!DOCTYPE html> <!DOCTYPE html>
<html lang="{{app.request.session.get('_locale') is not null ? app.request.session.get('_locale') : 'fr'}}"> <html>
<head> <head>
<meta charset="UTF-8"> <meta charset="UTF-8">
<title>{% block title %}Welcome!{% endblock %}</title> <title>{% block title %}Welcome!{% endblock %}</title>
{% block stylesheets %} {% block stylesheets %}
{{ encore_entry_link_tags('app') }} {{ encore_entry_link_tags('app', null, 'appConfig') }}
{{ encore_entry_link_tags('bootstrap-css') }} {{ encore_entry_link_tags('bootstrap-css', null, 'appConfig') }}
{{ encore_entry_link_tags('theme', null, 'themeConfig') }}
{% endblock %} {% endblock %}
</head> </head>
<body> <body>
{% block body %}{% endblock %} {% block body %}{% endblock %}
{% block javascripts %} {% block javascripts %}
{{ encore_entry_script_tags('app') }} {{ encore_entry_script_tags('app', null, 'appConfig') }}
{{ encore_entry_script_tags('bootstrap-js') }} {{ encore_entry_script_tags('bootstrap-js', null, 'appConfig') }}
{{ encore_entry_script_tags('theme', null, 'themeConfig') }}
{% endblock %} {% endblock %}
</body> </body>
</html> </html>

View File

@@ -6,23 +6,23 @@
{% block body %} {% block body %}
<div class="login-wrapper"> <div class="login-wrapper">
<div class="login"> <div class="login">
{% if app.user %} {% if app.user %}
<div class="mb-3"> <div class="mb-3">
You are logged in as {{ app.user.login }} You are logged in as {{ app.user.login }}
</div>
{% endif %}
<div class="lang">
{% for locale in locales %}
<a href="{{ path('locale_change', {'locale':locale }) }}" title="{{locale}}" aria-label="{{locale}}" class="flag"><img class="w-10" src="{{ asset('flags/'~ locale ~'.svg') }}"/></a>
{% endfor %}
</div> </div>
{% endif %} <h1 class="h3 mb-3 font-weight-normal">{% trans from 'view' %} sign_in {% endtrans %}</h1>
<div class="lang"> {{form_start(loginForm)}}
{% for locale in locales %} {{form_widget(loginForm)}}
<a href="{{ path('locale_change', {'locale':locale }) }}" title="{{locale}}" aria-label="{{locale}}" class="flag"><img class="w-10" src="{{ asset('flags/'~ locale ~'.svg') }}"/></a>
{% endfor %}
</div>
<h1 class="h3 mb-3 font-weight-normal">{% trans from 'view' %} sign_in {% endtrans %}</h1>
{{form_start(loginForm)}}
{{form_widget(loginForm)}}
<button class="btn btn-lg btn-primary" type="submit"> <button class="btn btn-lg btn-primary" type="submit">
{% trans from 'view' %} submit {% endtrans %} {% trans from 'view' %} submit {% endtrans %}
</button> </button>
{{form_end(loginForm)}} {{form_end(loginForm)}}
</div> </div>
</div> </div>

View File

3
tools/php-cs-fixer/.php-cs-fixer.dist.php Executable file → Normal file
View File

@@ -5,6 +5,8 @@ $finder = PhpCsFixer\Finder::create()
->name('*.php') ->name('*.php')
; ;
// TODO: Définir les règles de style communes
// spécifiques au projet
return (new PhpCsFixer\Config()) return (new PhpCsFixer\Config())
->setRules([ ->setRules([
'@Symfony' => true, '@Symfony' => true,
@@ -20,7 +22,6 @@ return (new PhpCsFixer\Config())
'ternary_operator_spaces' => true, 'ternary_operator_spaces' => true,
'class_definition' => ['single_line' => true], 'class_definition' => ['single_line' => true],
'whitespace_after_comma_in_array' => true, 'whitespace_after_comma_in_array' => true,
'trailing_comma_in_multiline' => true,
// phpdoc // phpdoc
'phpdoc_add_missing_param_annotation' => ['only_untyped' => true], 'phpdoc_add_missing_param_annotation' => ['only_untyped' => true],

View File

@@ -7,47 +7,15 @@
<body> <body>
<trans-unit id="4Lw8Y4y" resname="form.label.login"> <trans-unit id="4Lw8Y4y" resname="form.label.login">
<source>form.label.login</source> <source>form.label.login</source>
<target>Email address *</target> <target>login</target>
</trans-unit> </trans-unit>
<trans-unit id="RmsDr53" resname="form.label.password"> <trans-unit id="RmsDr53" resname="form.label.password">
<source>form.label.password</source> <source>form.label.password</source>
<target>Password *</target> <target>Password</target>
</trans-unit> </trans-unit>
<trans-unit id="4kfMq14" resname="altcha.validator.server_validation_error"> <trans-unit id="t17Vcvs" resname="form.label.remember_me">
<source>altcha.validator.server_validation_error</source> <source>form.label.remember_me</source>
<target>Verification failed. Try again later.</target> <target>Remember me</target>
</trans-unit>
<trans-unit id="7mZdXx_" resname="altcha.widget.error">
<source>altcha.widget.error</source>
<target>Verification failed. Try again later.</target>
</trans-unit>
<trans-unit id="Yg33QZt" resname="altcha.widget.expired">
<source>altcha.widget.expired</source>
<target>Verification expired. Try again.</target>
</trans-unit>
<trans-unit id="3y0.Bhb" resname="altcha.widget.label">
<source>altcha.widget.label</source>
<target>I'm not a robot</target>
</trans-unit>
<trans-unit id="QFBWtGD" resname="altcha.widget.verified">
<source>altcha.widget.verified</source>
<target>Verified</target>
</trans-unit>
<trans-unit id="SfOrgtj" resname="altcha.widget.verifying">
<source>altcha.widget.verifying</source>
<target>Verifying...</target>
</trans-unit>
<trans-unit id="9dhbPuz" resname="altcha.widget.waitalert">
<source>altcha.widget.waitalert</source>
<target>Verifying... please wait.</target>
</trans-unit>
<trans-unit id="9k5hI.D" resname="altcha.widget.title">
<source>altcha.widget.title</source>
<target>Verification *</target>
</trans-unit>
<trans-unit id="vGcy2C3" resname="altcha.widget.info">
<source>altcha.widget.info</source>
<target>Please check the box above to validate that you are not a robot. If you encounter any problem while doing this, please update your browser.</target>
</trans-unit> </trans-unit>
</body> </body>
</file> </file>

View File

@@ -7,47 +7,15 @@
<body> <body>
<trans-unit id="4Lw8Y4y" resname="form.label.login"> <trans-unit id="4Lw8Y4y" resname="form.label.login">
<source>form.label.login</source> <source>form.label.login</source>
<target>Adresse courriel *</target> <target>login</target>
</trans-unit> </trans-unit>
<trans-unit id="RmsDr53" resname="form.label.password"> <trans-unit id="RmsDr53" resname="form.label.password">
<source>form.label.password</source> <source>form.label.password</source>
<target>Mot de passe *</target> <target>Mot de passe</target>
</trans-unit> </trans-unit>
<trans-unit id="4kfMq14" resname="altcha.validator.server_validation_error"> <trans-unit id="t17Vcvs" resname="form.label.remember_me">
<source>altcha.validator.server_validation_error</source> <source>form.label.remember_me</source>
<target>Échec de la vérification. Réessayez plus tard.</target> <target>Se souvenir de moi</target>
</trans-unit>
<trans-unit id="7mZdXx_" resname="altcha.widget.error">
<source>altcha.widget.error</source>
<target>Échec de la vérification. Réesayez plus tard.</target>
</trans-unit>
<trans-unit id="Yg33QZt" resname="altcha.widget.expired">
<source>altcha.widget.expired</source>
<target>Vérification expirée. Réessayez.</target>
</trans-unit>
<trans-unit id="3y0.Bhb" resname="altcha.widget.label">
<source>altcha.widget.label</source>
<target>Je ne suis pas un robot</target>
</trans-unit>
<trans-unit id="QFBWtGD" resname="altcha.widget.verified">
<source>altcha.widget.verified</source>
<target>Vérifié</target>
</trans-unit>
<trans-unit id="SfOrgtj" resname="altcha.widget.verifying">
<source>altcha.widget.verifying</source>
<target>Vérification en cours...</target>
</trans-unit>
<trans-unit id="9dhbPuz" resname="altcha.widget.waitalert">
<source>altcha.widget.waitalert</source>
<target>Vérification en cours... veuillez patienter.</target>
</trans-unit>
<trans-unit id="9k5hI.D" resname="altcha.widget.title">
<source>altcha.widget.title</source>
<target>Vérification *</target>
</trans-unit>
<trans-unit id="vGcy2C3" resname="altcha.widget.info">
<source>altcha.widget.info</source>
<target>Veuillez cocher la case ci dessus afin de valider que vous n'êtes pas un robot. Si vous rencontrez un problème lors de cette action, mettez à jour votre navigateur.</target>
</trans-unit> </trans-unit>
</body> </body>
</file> </file>

View File

@@ -6,19 +6,14 @@ if (!Encore.isRuntimeEnvironmentConfigured()) {
Encore.configureRuntimeEnvironment(process.env.NODE_ENV || 'dev'); Encore.configureRuntimeEnvironment(process.env.NODE_ENV || 'dev');
} }
const basePath = process.env.BASE_PATH || ''
const imagesPath = Encore.isProduction() ? 'images/[path][name].[hash:8].[ext]' : 'images/[path][name].[ext]';
const fontsPath = Encore.isProduction() ? 'fonts/[path][name].[hash:8].[ext]' : 'fonts/[path][name].[ext]';
// Definition de AppConfig // Definition de AppConfig
Encore Encore
// directory where compiled assets will be stored // directory where compiled assets will be stored
.setOutputPath('public/build/') .setOutputPath('public/build/app/')
// public path used by the web server to access the output path // public path used by the web server to access the output path
.setPublicPath(basePath + '/build/') .setPublicPath('/build/app')
// only needed for CDN's or sub-directory deploy // only needed for CDN's or sub-directory deploy
.setManifestKeyPrefix('build') //.setManifestKeyPrefix('build/')
/* /*
* ENTRY CONFIG * ENTRY CONFIG
@@ -29,23 +24,9 @@ Encore
.addEntry('app', './assets/app.js') .addEntry('app', './assets/app.js')
.addEntry('bootstrap-css', './assets/styles/bootstrap.scss') .addEntry('bootstrap-css', './assets/styles/bootstrap.scss')
.addEntry('bootstrap-js', './assets/app-bootstrap.js') .addEntry('bootstrap-js', './assets/app-bootstrap.js')
.addEntry('theme','./assets/theme-entrypoint.js')
.copyFiles({ // enables the Symfony UX Stimulus bridge (used in assets/bootstrap.js)
from: './assets/images', .enableStimulusBridge('./assets/controllers.json')
to: imagesPath,
})
.copyFiles({
from: './assets/fonts',
to: fontsPath,
})
.configureImageRule({
type: 'asset',
})
.configureFontRule({
type: 'asset',
})
// When enabled, Webpack "splits" your files into smaller pieces for greater optimization. // When enabled, Webpack "splits" your files into smaller pieces for greater optimization.
.splitEntryChunks() .splitEntryChunks()
@@ -65,10 +46,10 @@ Encore
.enableBuildNotifications() .enableBuildNotifications()
.enableSourceMaps(!Encore.isProduction()) .enableSourceMaps(!Encore.isProduction())
// enables hashed filenames (e.g. app.abc123.css) // enables hashed filenames (e.g. app.abc123.css)
.enableVersioning(Encore.isProduction()) .enableVersioning(!Encore.isProduction())
.configureBabel((config) => { .configureBabel((config) => {
config.plugins.push('@babel/plugin-transform-class-properties'); config.plugins.push('@babel/plugin-proposal-class-properties');
}) })
// enables @babel/preset-env polyfills // enables @babel/preset-env polyfills
@@ -79,6 +60,37 @@ Encore
.enablePostCssLoader() .enablePostCssLoader()
.autoProvidejQuery() .autoProvidejQuery()
.enableSassLoader() .enableSassLoader()
; // build the first configuration
module.exports = Encore.getWebpackConfig(); const appConfig = Encore.getWebpackConfig();
// Set a unique name for the config (needed later!)
appConfig.name = 'appConfig';
// reset Encore to build the second config
Encore.reset();
// Definition de themeConfig
Encore
// directory where compiled assets will be stored
.setOutputPath('public/build/theme/')
// public path used by the web server to access the output path
.setPublicPath('/build/theme')
.addEntry('theme','./public/theme-entrypoint.js')
.splitEntryChunks()
.enableSingleRuntimeChunk()
.enableBuildNotifications()
.enableSourceMaps(false)
.enableVersioning(false)
.enablePostCssLoader()
;
// build the second configuration
const themeConfig = Encore.getWebpackConfig();
// Set a unique name for the config (needed later!)
themeConfig.name = 'themeConfig';
;
// export the final configuration as an array of multiple configurations
module.exports = [appConfig, themeConfig];