7 Commits

Author SHA1 Message Date
Valentin Carroy
4c3d84d355 wip
Some checks failed
Cadoles/hydra-sql/pipeline/head There was a failure building this commit
2025-09-11 17:49:56 +02:00
d79cf65bb4 Merge pull request 'chore(alpine): bump alpine version and php package' (#62) from alpine-upgrade into develop
Some checks failed
Cadoles/hydra-sql/pipeline/head There was a failure building this commit
Reviewed-on: #62
2025-09-02 11:53:19 +02:00
7448a9af4d chore(alpine): bump alpine version and php package
Some checks failed
Cadoles/hydra-sql/pipeline/head There was a failure building this commit
Cadoles/hydra-sql/pipeline/pr-develop There was a failure building this commit
2025-09-01 17:05:41 +02:00
3933f8bfba Merge pull request 'fix(login) #59 : handle case earlier during login' (#60) from issue-59 into develop
Some checks failed
Cadoles/hydra-sql/pipeline/head There was a failure building this commit
Reviewed-on: #60
Reviewed-by: Valentin Carroy <vcarroy@cadoles.com>
2025-08-18 11:09:18 +02:00
6faf465733 fix(login) #59 : handle case earlier during login
Some checks failed
Cadoles/hydra-sql/pipeline/pr-develop There was a failure building this commit
Cadoles/hydra-sql/pipeline/head There was a failure building this commit
2025-08-18 10:53:35 +02:00
5f2654c3c4 Merge pull request 'symfony 6.4 and PHP 8.4 upgrade' (#58) from issue-57 into develop
Some checks failed
Cadoles/hydra-sql/pipeline/head There was a failure building this commit
Reviewed-on: #58
2025-07-30 11:46:02 +02:00
2e5e1e72ae chore(symfony) #57 : bump symfony to version 6.4 and fix deprecations
Some checks are pending
Cadoles/hydra-sql/pipeline/pr-develop Build started...
2025-07-30 11:37:06 +02:00
40 changed files with 2243 additions and 2324 deletions

View File

@@ -1,4 +1,5 @@
*
!/misc/compose/hydra-sql
!/assets
!/bin
!/config

10
.env
View File

@@ -24,19 +24,13 @@ DSN_REMOTE_DATABASE="pgsql:host='postgres';port=5432;dbname=lasql"
DB_USER="lasql"
DB_PASSWORD="lasql"
ISSUER_URL="http://localhost:8000"
BASE_URL='http://localhost:8080'
ISSUER_URL="http://localhost:10502"
BASE_URL='http://localhost:10500'
# connexion hydra
HYDRA_ADMIN_BASE_URL='http://hydra:4445'
APP_LOCALES="fr,en"
SECURITY_PATTERN=
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_DSN=
###< sentry/sentry-symfony ###

2
Jenkinsfile vendored
View File

@@ -4,7 +4,7 @@
// 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
// de votre application Symfony
symfonyAppPipeline('ubuntu:22.04', [
symfonyAppPipeline('ubuntu:25.04', [
'hooks': [
// Run docker image build, verification and publication stages
'postSymfonyAppPipeline': {

View File

@@ -1,57 +1,52 @@
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:
build:
context: .
dockerfile: ./misc/images/hydra-sql-standalone/Dockerfile
dockerfile: ./misc/images/hydra-sql-dev/Dockerfile
args:
- BASE_PATH=
- APP_ENV=dev
- ENCORE_MODE=dev
- HTTP_PROXY=${HTTP_PROXY}
- HTTPS_PROXY=${HTTPS_PROXY}
- http_proxy=${http_proxy}
- https_proxy=${https_proxy}
ports:
- 8082:8071
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
- SERVER_NAME=http://localhost:10500
links:
- hydra
depends_on:
- redis
extra_hosts:
- "localhost:127.0.0.1"
- "localhost:host-gateway"
- "host.docker.internal:host-gateway"
develop:
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
tty: true
# develop:
# 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:
- SERVER_NAME=http://localhost:10500
- APP_ENV=dev
- APP_DEBUG=true
- PHP_FPM_MEMORY_LIMIT=128m
- APP_LOCALES=fr,en
- HYDRA_ADMIN_BASE_URL=http://hydra:4445
- TRUSTED_PROXIES=127.0.0.1,REMOTE_ADDR,localhost
- ISSUER_URL=http://localhost:8000
- BASE_URL=http://localhost:8082
- ISSUER_URL=http://localhost:10502
- BASE_URL=http://localhost:10500
- DB_USER=lasql
- DB_PASSWORD=lasql
- DEFAULT_LOCALE=fr
@@ -64,12 +59,12 @@ services:
image: bornholm/oidc-test:v0.0.0-1-g936a77e
environment:
- LOG_LEVEL=0
- HTTP_ADDRESS=0.0.0.0:8000
- HTTP_ADDRESS=0.0.0.0:10502
- OIDC_CLIENT_ID=oidc-test
- OIDC_CLIENT_SECRET=oidc-test-123456
- OIDC_ISSUER_URL=http://localhost:8081/
- OIDC_REDIRECT_URL=http://localhost:8000
- OIDC_POST_LOGOUT_REDIRECT_URL=http://localhost:8000
- OIDC_ISSUER_URL=http://localhost:10501/
- OIDC_REDIRECT_URL=http://localhost:10502
- OIDC_POST_LOGOUT_REDIRECT_URL=http://localhost:10502
depends_on:
hydra:
condition: service_healthy
@@ -83,20 +78,15 @@ services:
environment:
- LOG_LEAK_SENSITIVE_VALUES=true
- HYDRA_ALLOW_INSECURE=yes
- HYDRA_URLS_SELF_ISSUER=http://localhost:8081/
- HYDRA_URLS_LOGOUT=http://localhost:8082/logout
- HYDRA_URLS_LOGIN=http://localhost:8082/
- HYDRA_URLS_CONSENT=http://localhost:8082/connect/consent
- HYDRA_URLS_ERROR=http://localhost:8082/error
- HYDRA_URLS_SELF_ISSUER=http://localhost:10501/
- HYDRA_URLS_LOGOUT=http://localhost:10500/logout
- HYDRA_URLS_LOGIN=http://localhost:10500/
- HYDRA_URLS_CONSENT=http://localhost:10500/connect/consent
- HYDRA_URLS_ERROR=http://localhost:10500/error
- HYDRA_LEVEL=debug
- HYDRA_DSN=postgres://lasql:lasql@postgres:5432/hydra
- HYDRA_WAIT4X_DATABASE_DSN=postgres://lasql:lasql@postgres:5432/hydra?sslmode=disable
- HYDRA_WAIT4X_DATABASE_TYPE=postgresql
ports:
- 8081:4444
links:
- postgres
healthcheck:
test:
[
@@ -126,8 +116,8 @@ services:
pgadmin:
image: dpage/pgadmin4
ports:
- 8085:80
# ports:
# - 10503:80
restart: always
environment:
PGADMIN_DEFAULT_EMAIL: admin@admin.com

View File

@@ -9,26 +9,27 @@
"ext-iconv": "*",
"doctrine/annotations": "^1.13",
"predis/predis": "^2.1",
"runtime/frankenphp-symfony": "^0.2.0",
"sentry/sentry-symfony": "^4.5",
"symfony/apache-pack": "^1.0",
"symfony/asset": "5.4.*",
"symfony/console": "5.4.*",
"symfony/dependency-injection": "5.4.*",
"symfony/dotenv": "5.4.*",
"symfony/expression-language": "5.4.*",
"symfony/asset": "6.4.*",
"symfony/console": "6.4.*",
"symfony/dependency-injection": "6.4.*",
"symfony/dotenv": "6.4.*",
"symfony/expression-language": "6.4.*",
"symfony/flex": "^1.17|^2",
"symfony/form": "5.4.*",
"symfony/framework-bundle": "5.4.*",
"symfony/http-client": "5.4.*",
"symfony/rate-limiter": "5.4.*",
"symfony/runtime": "5.4.*",
"symfony/security-bundle": "5.4.*",
"symfony/translation": "5.4.*",
"symfony/twig-bundle": "5.4.*",
"symfony/validator": "5.4.*",
"symfony/web-profiler-bundle": "5.4.*",
"symfony/form": "6.4.*",
"symfony/framework-bundle": "6.4.*",
"symfony/http-client": "6.4.*",
"symfony/monolog-bundle": "^3.10",
"symfony/rate-limiter": "6.4.*",
"symfony/runtime": "6.4.*",
"symfony/security-bundle": "6.4.*",
"symfony/translation": "6.4.*",
"symfony/twig-bundle": "6.4.*",
"symfony/validator": "6.4.*",
"symfony/webpack-encore-bundle": "^1.16",
"symfony/yaml": "5.4.*"
"symfony/yaml": "6.4.*"
},
"config": {
"allow-plugins": {
@@ -56,7 +57,12 @@
"replace": {
"symfony/polyfill-ctype": "*",
"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": {
"auto-scripts": {
@@ -76,11 +82,12 @@
"extra": {
"symfony": {
"allow-contrib": true,
"require": "5.4.*"
"require": "6.4.*"
}
},
"require-dev": {
"rector/rector": "^2.1",
"symfony/debug-bundle": "5.4.*"
"symfony/debug-bundle": "6.4.*",
"symfony/web-profiler-bundle": "6.4.*"
}
}

2917
composer.lock generated
View File

@@ -4,7 +4,7 @@
"Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies",
"This file is @generated automatically"
],
"content-hash": "647d67f62039f006d5d0115d9874991e",
"content-hash": "2d5009d3b30f452b3b835ebdb1d9f194",
"packages": [
{
"name": "clue/stream-filter",
@@ -276,16 +276,16 @@
},
{
"name": "guzzlehttp/promises",
"version": "2.2.0",
"version": "2.3.0",
"source": {
"type": "git",
"url": "https://github.com/guzzle/promises.git",
"reference": "7c69f28996b0a6920945dd20b3857e499d9ca96c"
"reference": "481557b130ef3790cf82b713667b43030dc9c957"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/guzzle/promises/zipball/7c69f28996b0a6920945dd20b3857e499d9ca96c",
"reference": "7c69f28996b0a6920945dd20b3857e499d9ca96c",
"url": "https://api.github.com/repos/guzzle/promises/zipball/481557b130ef3790cf82b713667b43030dc9c957",
"reference": "481557b130ef3790cf82b713667b43030dc9c957",
"shasum": ""
},
"require": {
@@ -293,7 +293,7 @@
},
"require-dev": {
"bamarni/composer-bin-plugin": "^1.8.2",
"phpunit/phpunit": "^8.5.39 || ^9.6.20"
"phpunit/phpunit": "^8.5.44 || ^9.6.25"
},
"type": "library",
"extra": {
@@ -339,7 +339,7 @@
],
"support": {
"issues": "https://github.com/guzzle/promises/issues",
"source": "https://github.com/guzzle/promises/tree/2.2.0"
"source": "https://github.com/guzzle/promises/tree/2.3.0"
},
"funding": [
{
@@ -355,20 +355,20 @@
"type": "tidelift"
}
],
"time": "2025-03-27T13:27:01+00:00"
"time": "2025-08-22T14:34:08+00:00"
},
{
"name": "guzzlehttp/psr7",
"version": "2.7.1",
"version": "2.8.0",
"source": {
"type": "git",
"url": "https://github.com/guzzle/psr7.git",
"reference": "c2270caaabe631b3b44c85f99e5a04bbb8060d16"
"reference": "21dc724a0583619cd1652f673303492272778051"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/guzzle/psr7/zipball/c2270caaabe631b3b44c85f99e5a04bbb8060d16",
"reference": "c2270caaabe631b3b44c85f99e5a04bbb8060d16",
"url": "https://api.github.com/repos/guzzle/psr7/zipball/21dc724a0583619cd1652f673303492272778051",
"reference": "21dc724a0583619cd1652f673303492272778051",
"shasum": ""
},
"require": {
@@ -384,7 +384,7 @@
"require-dev": {
"bamarni/composer-bin-plugin": "^1.8.2",
"http-interop/http-factory-tests": "0.9.0",
"phpunit/phpunit": "^8.5.39 || ^9.6.20"
"phpunit/phpunit": "^8.5.44 || ^9.6.25"
},
"suggest": {
"laminas/laminas-httphandlerrunner": "Emit PSR-7 responses"
@@ -455,7 +455,7 @@
],
"support": {
"issues": "https://github.com/guzzle/psr7/issues",
"source": "https://github.com/guzzle/psr7/tree/2.7.1"
"source": "https://github.com/guzzle/psr7/tree/2.8.0"
},
"funding": [
{
@@ -471,7 +471,7 @@
"type": "tidelift"
}
],
"time": "2025-03-27T12:30:47+00:00"
"time": "2025-08-23T21:21:41+00:00"
},
{
"name": "http-interop/http-factory-guzzle",
@@ -591,6 +591,109 @@
},
"time": "2025-03-19T14:43:43+00:00"
},
{
"name": "monolog/monolog",
"version": "3.9.0",
"source": {
"type": "git",
"url": "https://github.com/Seldaek/monolog.git",
"reference": "10d85740180ecba7896c87e06a166e0c95a0e3b6"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/Seldaek/monolog/zipball/10d85740180ecba7896c87e06a166e0c95a0e3b6",
"reference": "10d85740180ecba7896c87e06a166e0c95a0e3b6",
"shasum": ""
},
"require": {
"php": ">=8.1",
"psr/log": "^2.0 || ^3.0"
},
"provide": {
"psr/log-implementation": "3.0.0"
},
"require-dev": {
"aws/aws-sdk-php": "^3.0",
"doctrine/couchdb": "~1.0@dev",
"elasticsearch/elasticsearch": "^7 || ^8",
"ext-json": "*",
"graylog2/gelf-php": "^1.4.2 || ^2.0",
"guzzlehttp/guzzle": "^7.4.5",
"guzzlehttp/psr7": "^2.2",
"mongodb/mongodb": "^1.8",
"php-amqplib/php-amqplib": "~2.4 || ^3",
"php-console/php-console": "^3.1.8",
"phpstan/phpstan": "^2",
"phpstan/phpstan-deprecation-rules": "^2",
"phpstan/phpstan-strict-rules": "^2",
"phpunit/phpunit": "^10.5.17 || ^11.0.7",
"predis/predis": "^1.1 || ^2",
"rollbar/rollbar": "^4.0",
"ruflin/elastica": "^7 || ^8",
"symfony/mailer": "^5.4 || ^6",
"symfony/mime": "^5.4 || ^6"
},
"suggest": {
"aws/aws-sdk-php": "Allow sending log messages to AWS services like DynamoDB",
"doctrine/couchdb": "Allow sending log messages to a CouchDB server",
"elasticsearch/elasticsearch": "Allow sending log messages to an Elasticsearch server via official client",
"ext-amqp": "Allow sending log messages to an AMQP server (1.0+ required)",
"ext-curl": "Required to send log messages using the IFTTTHandler, the LogglyHandler, the SendGridHandler, the SlackWebhookHandler or the TelegramBotHandler",
"ext-mbstring": "Allow to work properly with unicode symbols",
"ext-mongodb": "Allow sending log messages to a MongoDB server (via driver)",
"ext-openssl": "Required to send log messages using SSL",
"ext-sockets": "Allow sending log messages to a Syslog server (via UDP driver)",
"graylog2/gelf-php": "Allow sending log messages to a GrayLog2 server",
"mongodb/mongodb": "Allow sending log messages to a MongoDB server (via library)",
"php-amqplib/php-amqplib": "Allow sending log messages to an AMQP server using php-amqplib",
"rollbar/rollbar": "Allow sending log messages to Rollbar",
"ruflin/elastica": "Allow sending log messages to an Elastic Search server"
},
"type": "library",
"extra": {
"branch-alias": {
"dev-main": "3.x-dev"
}
},
"autoload": {
"psr-4": {
"Monolog\\": "src/Monolog"
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"authors": [
{
"name": "Jordi Boggiano",
"email": "j.boggiano@seld.be",
"homepage": "https://seld.be"
}
],
"description": "Sends your logs to files, sockets, inboxes, databases and various web services",
"homepage": "https://github.com/Seldaek/monolog",
"keywords": [
"log",
"logging",
"psr-3"
],
"support": {
"issues": "https://github.com/Seldaek/monolog/issues",
"source": "https://github.com/Seldaek/monolog/tree/3.9.0"
},
"funding": [
{
"url": "https://github.com/Seldaek",
"type": "github"
},
{
"url": "https://tidelift.com/funding/github/packagist/monolog/monolog",
"type": "tidelift"
}
],
"time": "2025-03-24T10:02:05+00:00"
},
{
"name": "php-http/client-common",
"version": "2.7.2",
@@ -1036,16 +1139,16 @@
},
{
"name": "psr/cache",
"version": "2.0.0",
"version": "3.0.0",
"source": {
"type": "git",
"url": "https://github.com/php-fig/cache.git",
"reference": "213f9dbc5b9bfbc4f8db86d2838dc968752ce13b"
"reference": "aa5030cfa5405eccfdcb1083ce040c2cb8d253bf"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/php-fig/cache/zipball/213f9dbc5b9bfbc4f8db86d2838dc968752ce13b",
"reference": "213f9dbc5b9bfbc4f8db86d2838dc968752ce13b",
"url": "https://api.github.com/repos/php-fig/cache/zipball/aa5030cfa5405eccfdcb1083ce040c2cb8d253bf",
"reference": "aa5030cfa5405eccfdcb1083ce040c2cb8d253bf",
"shasum": ""
},
"require": {
@@ -1079,28 +1182,81 @@
"psr-6"
],
"support": {
"source": "https://github.com/php-fig/cache/tree/2.0.0"
"source": "https://github.com/php-fig/cache/tree/3.0.0"
},
"time": "2021-02-03T23:23:37+00:00"
"time": "2021-02-03T23:26:27+00:00"
},
{
"name": "psr/container",
"version": "1.1.2",
"name": "psr/clock",
"version": "1.0.0",
"source": {
"type": "git",
"url": "https://github.com/php-fig/container.git",
"reference": "513e0666f7216c7459170d56df27dfcefe1689ea"
"url": "https://github.com/php-fig/clock.git",
"reference": "e41a24703d4560fd0acb709162f73b8adfc3aa0d"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/php-fig/container/zipball/513e0666f7216c7459170d56df27dfcefe1689ea",
"reference": "513e0666f7216c7459170d56df27dfcefe1689ea",
"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",
"version": "2.0.2",
"source": {
"type": "git",
"url": "https://github.com/php-fig/container.git",
"reference": "c71ecc56dfe541dbd90c5360474fbc405f8d5963"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/php-fig/container/zipball/c71ecc56dfe541dbd90c5360474fbc405f8d5963",
"reference": "c71ecc56dfe541dbd90c5360474fbc405f8d5963",
"shasum": ""
},
"require": {
"php": ">=7.4.0"
},
"type": "library",
"extra": {
"branch-alias": {
"dev-master": "2.0.x-dev"
}
},
"autoload": {
"psr-4": {
"Psr\\Container\\": "src/"
@@ -1127,9 +1283,9 @@
],
"support": {
"issues": "https://github.com/php-fig/container/issues",
"source": "https://github.com/php-fig/container/tree/1.1.2"
"source": "https://github.com/php-fig/container/tree/2.0.2"
},
"time": "2021-11-05T16:50:12+00:00"
"time": "2021-11-05T16:47:00+00:00"
},
{
"name": "psr/event-dispatcher",
@@ -1343,16 +1499,16 @@
},
{
"name": "psr/log",
"version": "2.0.0",
"version": "3.0.2",
"source": {
"type": "git",
"url": "https://github.com/php-fig/log.git",
"reference": "ef29f6d262798707a9edd554e2b82517ef3a9376"
"reference": "f16e1d5863e37f8d8c2a01719f5b34baa2b714d3"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/php-fig/log/zipball/ef29f6d262798707a9edd554e2b82517ef3a9376",
"reference": "ef29f6d262798707a9edd554e2b82517ef3a9376",
"url": "https://api.github.com/repos/php-fig/log/zipball/f16e1d5863e37f8d8c2a01719f5b34baa2b714d3",
"reference": "f16e1d5863e37f8d8c2a01719f5b34baa2b714d3",
"shasum": ""
},
"require": {
@@ -1361,7 +1517,7 @@
"type": "library",
"extra": {
"branch-alias": {
"dev-master": "2.0.x-dev"
"dev-master": "3.x-dev"
}
},
"autoload": {
@@ -1387,9 +1543,9 @@
"psr-3"
],
"support": {
"source": "https://github.com/php-fig/log/tree/2.0.0"
"source": "https://github.com/php-fig/log/tree/3.0.2"
},
"time": "2021-07-14T16:41:46+00:00"
"time": "2024-09-11T13:17:53+00:00"
},
{
"name": "ralouphie/getallheaders",
@@ -1435,6 +1591,58 @@
},
"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",
"version": "3.6.0",
@@ -1734,33 +1942,28 @@
},
{
"name": "symfony/asset",
"version": "v5.4.45",
"version": "v6.4.24",
"source": {
"type": "git",
"url": "https://github.com/symfony/asset.git",
"reference": "b7a18eaff1d717c321b4f13403413f8815bf9cb0"
"reference": "cfee7c0d64be113383db74a2fdd65d426b7f3aab"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/symfony/asset/zipball/b7a18eaff1d717c321b4f13403413f8815bf9cb0",
"reference": "b7a18eaff1d717c321b4f13403413f8815bf9cb0",
"url": "https://api.github.com/repos/symfony/asset/zipball/cfee7c0d64be113383db74a2fdd65d426b7f3aab",
"reference": "cfee7c0d64be113383db74a2fdd65d426b7f3aab",
"shasum": ""
},
"require": {
"php": ">=7.2.5",
"symfony/deprecation-contracts": "^2.1|^3",
"symfony/polyfill-php80": "^1.16"
"php": ">=8.1"
},
"conflict": {
"symfony/http-foundation": "<5.3"
"symfony/http-foundation": "<5.4"
},
"require-dev": {
"symfony/http-client": "^4.4|^5.0|^6.0",
"symfony/http-foundation": "^5.3|^6.0",
"symfony/http-kernel": "^4.4|^5.0|^6.0"
},
"suggest": {
"symfony/http-foundation": ""
"symfony/http-client": "^5.4|^6.0|^7.0",
"symfony/http-foundation": "^5.4|^6.0|^7.0",
"symfony/http-kernel": "^5.4|^6.0|^7.0"
},
"type": "library",
"autoload": {
@@ -1788,7 +1991,7 @@
"description": "Manages URL generation and versioning of web assets such as CSS stylesheets, JavaScript files and image files",
"homepage": "https://symfony.com",
"support": {
"source": "https://github.com/symfony/asset/tree/v5.4.45"
"source": "https://github.com/symfony/asset/tree/v6.4.24"
},
"funding": [
{
@@ -1799,67 +2002,70 @@
"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": "2024-10-22T13:05:35+00:00"
"time": "2025-07-10T08:14:14+00:00"
},
{
"name": "symfony/cache",
"version": "v5.4.46",
"version": "v6.4.24",
"source": {
"type": "git",
"url": "https://github.com/symfony/cache.git",
"reference": "0fe08ee32cec2748fbfea10c52d3ee02049e0f6b"
"reference": "d038cd3054aeaf1c674022a77048b2ef6376a175"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/symfony/cache/zipball/0fe08ee32cec2748fbfea10c52d3ee02049e0f6b",
"reference": "0fe08ee32cec2748fbfea10c52d3ee02049e0f6b",
"url": "https://api.github.com/repos/symfony/cache/zipball/d038cd3054aeaf1c674022a77048b2ef6376a175",
"reference": "d038cd3054aeaf1c674022a77048b2ef6376a175",
"shasum": ""
},
"require": {
"php": ">=7.2.5",
"psr/cache": "^1.0|^2.0",
"php": ">=8.1",
"psr/cache": "^2.0|^3.0",
"psr/log": "^1.1|^2|^3",
"symfony/cache-contracts": "^1.1.7|^2",
"symfony/deprecation-contracts": "^2.1|^3",
"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"
"symfony/cache-contracts": "^2.5|^3",
"symfony/service-contracts": "^2.5|^3",
"symfony/var-exporter": "^6.3.6|^7.0"
},
"conflict": {
"doctrine/dbal": "<2.13.1",
"symfony/dependency-injection": "<4.4",
"symfony/http-kernel": "<4.4",
"symfony/var-dumper": "<4.4"
"symfony/dependency-injection": "<5.4",
"symfony/http-kernel": "<5.4",
"symfony/var-dumper": "<5.4"
},
"provide": {
"psr/cache-implementation": "1.0|2.0",
"psr/simple-cache-implementation": "1.0|2.0",
"symfony/cache-implementation": "1.0|2.0"
"psr/cache-implementation": "2.0|3.0",
"psr/simple-cache-implementation": "1.0|2.0|3.0",
"symfony/cache-implementation": "1.1|2.0|3.0"
},
"require-dev": {
"cache/integration-tests": "dev-master",
"doctrine/cache": "^1.6|^2.0",
"doctrine/dbal": "^2.13.1|^3|^4",
"predis/predis": "^1.1|^2.0",
"psr/simple-cache": "^1.0|^2.0",
"symfony/config": "^4.4|^5.0|^6.0",
"symfony/dependency-injection": "^4.4|^5.0|^6.0",
"symfony/filesystem": "^4.4|^5.0|^6.0",
"symfony/http-kernel": "^4.4|^5.0|^6.0",
"symfony/messenger": "^4.4|^5.0|^6.0",
"symfony/var-dumper": "^4.4|^5.0|^6.0"
"psr/simple-cache": "^1.0|^2.0|^3.0",
"symfony/config": "^5.4|^6.0|^7.0",
"symfony/dependency-injection": "^5.4|^6.0|^7.0",
"symfony/filesystem": "^5.4|^6.0|^7.0",
"symfony/http-kernel": "^5.4|^6.0|^7.0",
"symfony/messenger": "^5.4|^6.0|^7.0",
"symfony/var-dumper": "^5.4|^6.0|^7.0"
},
"type": "library",
"autoload": {
"psr-4": {
"Symfony\\Component\\Cache\\": ""
},
"classmap": [
"Traits/ValueWrapper.php"
],
"exclude-from-classmap": [
"/Tests/"
]
@@ -1885,7 +2091,7 @@
"psr6"
],
"support": {
"source": "https://github.com/symfony/cache/tree/v5.4.46"
"source": "https://github.com/symfony/cache/tree/v6.4.24"
},
"funding": [
{
@@ -1896,33 +2102,34 @@
"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": "2024-11-04T11:43:55+00:00"
"time": "2025-07-30T09:32:03+00:00"
},
{
"name": "symfony/cache-contracts",
"version": "v2.5.4",
"version": "v3.6.0",
"source": {
"type": "git",
"url": "https://github.com/symfony/cache-contracts.git",
"reference": "517c3a3619dadfa6952c4651767fcadffb4df65e"
"reference": "5d68a57d66910405e5c0b63d6f0af941e66fc868"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/symfony/cache-contracts/zipball/517c3a3619dadfa6952c4651767fcadffb4df65e",
"reference": "517c3a3619dadfa6952c4651767fcadffb4df65e",
"url": "https://api.github.com/repos/symfony/cache-contracts/zipball/5d68a57d66910405e5c0b63d6f0af941e66fc868",
"reference": "5d68a57d66910405e5c0b63d6f0af941e66fc868",
"shasum": ""
},
"require": {
"php": ">=7.2.5",
"psr/cache": "^1.0|^2.0|^3.0"
},
"suggest": {
"symfony/cache-implementation": ""
"php": ">=8.1",
"psr/cache": "^3.0"
},
"type": "library",
"extra": {
@@ -1931,7 +2138,7 @@
"name": "symfony/contracts"
},
"branch-alias": {
"dev-main": "2.5-dev"
"dev-main": "3.6-dev"
}
},
"autoload": {
@@ -1964,7 +2171,7 @@
"standards"
],
"support": {
"source": "https://github.com/symfony/cache-contracts/tree/v2.5.4"
"source": "https://github.com/symfony/cache-contracts/tree/v3.6.0"
},
"funding": [
{
@@ -1980,42 +2187,116 @@
"type": "tidelift"
}
],
"time": "2024-09-25T14:11:13+00:00"
"time": "2025-03-13T15:25:07+00:00"
},
{
"name": "symfony/config",
"version": "v5.4.46",
"name": "symfony/clock",
"version": "v6.4.24",
"source": {
"type": "git",
"url": "https://github.com/symfony/config.git",
"reference": "977c88a02d7d3f16904a81907531b19666a08e78"
"url": "https://github.com/symfony/clock.git",
"reference": "5e15a9c9aeeb44a99f7cf24aa75aa9607795f6f8"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/symfony/config/zipball/977c88a02d7d3f16904a81907531b19666a08e78",
"reference": "977c88a02d7d3f16904a81907531b19666a08e78",
"url": "https://api.github.com/repos/symfony/clock/zipball/5e15a9c9aeeb44a99f7cf24aa75aa9607795f6f8",
"reference": "5e15a9c9aeeb44a99f7cf24aa75aa9607795f6f8",
"shasum": ""
},
"require": {
"php": ">=7.2.5",
"symfony/deprecation-contracts": "^2.1|^3",
"symfony/filesystem": "^4.4|^5.0|^6.0",
"symfony/polyfill-ctype": "~1.8",
"symfony/polyfill-php80": "^1.16",
"symfony/polyfill-php81": "^1.22"
"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",
"version": "v6.4.24",
"source": {
"type": "git",
"url": "https://github.com/symfony/config.git",
"reference": "80e2cf005cf17138c97193be0434cdcfd1b2212e"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/symfony/config/zipball/80e2cf005cf17138c97193be0434cdcfd1b2212e",
"reference": "80e2cf005cf17138c97193be0434cdcfd1b2212e",
"shasum": ""
},
"require": {
"php": ">=8.1",
"symfony/deprecation-contracts": "^2.5|^3",
"symfony/filesystem": "^5.4|^6.0|^7.0",
"symfony/polyfill-ctype": "~1.8"
},
"conflict": {
"symfony/finder": "<4.4"
"symfony/finder": "<5.4",
"symfony/service-contracts": "<2.5"
},
"require-dev": {
"symfony/event-dispatcher": "^4.4|^5.0|^6.0",
"symfony/finder": "^4.4|^5.0|^6.0",
"symfony/messenger": "^4.4|^5.0|^6.0",
"symfony/service-contracts": "^1.1|^2|^3",
"symfony/yaml": "^4.4|^5.0|^6.0"
},
"suggest": {
"symfony/yaml": "To use the yaml reference dumper"
"symfony/event-dispatcher": "^5.4|^6.0|^7.0",
"symfony/finder": "^5.4|^6.0|^7.0",
"symfony/messenger": "^5.4|^6.0|^7.0",
"symfony/service-contracts": "^2.5|^3",
"symfony/yaml": "^5.4|^6.0|^7.0"
},
"type": "library",
"autoload": {
@@ -2043,7 +2324,7 @@
"description": "Helps you find, load, combine, autofill and validate configuration values of any kind",
"homepage": "https://symfony.com",
"support": {
"source": "https://github.com/symfony/config/tree/v5.4.46"
"source": "https://github.com/symfony/config/tree/v6.4.24"
},
"funding": [
{
@@ -2054,61 +2335,60 @@
"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": "2024-10-30T07:58:02+00:00"
"time": "2025-07-26T13:50:30+00:00"
},
{
"name": "symfony/console",
"version": "v5.4.47",
"version": "v6.4.25",
"source": {
"type": "git",
"url": "https://github.com/symfony/console.git",
"reference": "c4ba980ca61a9eb18ee6bcc73f28e475852bb1ed"
"reference": "273fd29ff30ba0a88ca5fb83f7cf1ab69306adae"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/symfony/console/zipball/c4ba980ca61a9eb18ee6bcc73f28e475852bb1ed",
"reference": "c4ba980ca61a9eb18ee6bcc73f28e475852bb1ed",
"url": "https://api.github.com/repos/symfony/console/zipball/273fd29ff30ba0a88ca5fb83f7cf1ab69306adae",
"reference": "273fd29ff30ba0a88ca5fb83f7cf1ab69306adae",
"shasum": ""
},
"require": {
"php": ">=7.2.5",
"symfony/deprecation-contracts": "^2.1|^3",
"php": ">=8.1",
"symfony/deprecation-contracts": "^2.5|^3",
"symfony/polyfill-mbstring": "~1.0",
"symfony/polyfill-php73": "^1.9",
"symfony/polyfill-php80": "^1.16",
"symfony/service-contracts": "^1.1|^2|^3",
"symfony/string": "^5.1|^6.0"
"symfony/service-contracts": "^2.5|^3",
"symfony/string": "^5.4|^6.0|^7.0"
},
"conflict": {
"psr/log": ">=3",
"symfony/dependency-injection": "<4.4",
"symfony/dotenv": "<5.1",
"symfony/event-dispatcher": "<4.4",
"symfony/lock": "<4.4",
"symfony/process": "<4.4"
"symfony/dependency-injection": "<5.4",
"symfony/dotenv": "<5.4",
"symfony/event-dispatcher": "<5.4",
"symfony/lock": "<5.4",
"symfony/process": "<5.4"
},
"provide": {
"psr/log-implementation": "1.0|2.0"
"psr/log-implementation": "1.0|2.0|3.0"
},
"require-dev": {
"psr/log": "^1|^2",
"symfony/config": "^4.4|^5.0|^6.0",
"symfony/dependency-injection": "^4.4|^5.0|^6.0",
"symfony/event-dispatcher": "^4.4|^5.0|^6.0",
"symfony/lock": "^4.4|^5.0|^6.0",
"symfony/process": "^4.4|^5.0|^6.0",
"symfony/var-dumper": "^4.4|^5.0|^6.0"
},
"suggest": {
"psr/log": "For using the console logger",
"symfony/event-dispatcher": "",
"symfony/lock": "",
"symfony/process": ""
"psr/log": "^1|^2|^3",
"symfony/config": "^5.4|^6.0|^7.0",
"symfony/dependency-injection": "^5.4|^6.0|^7.0",
"symfony/event-dispatcher": "^5.4|^6.0|^7.0",
"symfony/http-foundation": "^6.4|^7.0",
"symfony/http-kernel": "^6.4|^7.0",
"symfony/lock": "^5.4|^6.0|^7.0",
"symfony/messenger": "^5.4|^6.0|^7.0",
"symfony/process": "^5.4|^6.0|^7.0",
"symfony/stopwatch": "^5.4|^6.0|^7.0",
"symfony/var-dumper": "^5.4|^6.0|^7.0"
},
"type": "library",
"autoload": {
@@ -2142,7 +2422,7 @@
"terminal"
],
"support": {
"source": "https://github.com/symfony/console/tree/v5.4.47"
"source": "https://github.com/symfony/console/tree/v6.4.25"
},
"funding": [
{
@@ -2153,57 +2433,53 @@
"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": "2024-11-06T11:30:55+00:00"
"time": "2025-08-22T10:21:53+00:00"
},
{
"name": "symfony/dependency-injection",
"version": "v5.4.48",
"version": "v6.4.25",
"source": {
"type": "git",
"url": "https://github.com/symfony/dependency-injection.git",
"reference": "e5ca16dee39ef7d63e552ff0bf0a2526a1142c92"
"reference": "900da8a42eceeb4a13a0ec34caa7db49328daff3"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/symfony/dependency-injection/zipball/e5ca16dee39ef7d63e552ff0bf0a2526a1142c92",
"reference": "e5ca16dee39ef7d63e552ff0bf0a2526a1142c92",
"url": "https://api.github.com/repos/symfony/dependency-injection/zipball/900da8a42eceeb4a13a0ec34caa7db49328daff3",
"reference": "900da8a42eceeb4a13a0ec34caa7db49328daff3",
"shasum": ""
},
"require": {
"php": ">=7.2.5",
"psr/container": "^1.1.1",
"symfony/deprecation-contracts": "^2.1|^3",
"symfony/polyfill-php80": "^1.16",
"symfony/polyfill-php81": "^1.22",
"symfony/service-contracts": "^1.1.6|^2"
"php": ">=8.1",
"psr/container": "^1.1|^2.0",
"symfony/deprecation-contracts": "^2.5|^3",
"symfony/service-contracts": "^2.5|^3.0",
"symfony/var-exporter": "^6.4.20|^7.2.5"
},
"conflict": {
"ext-psr": "<1.1|>=2",
"symfony/config": "<5.3",
"symfony/finder": "<4.4",
"symfony/proxy-manager-bridge": "<4.4",
"symfony/yaml": "<4.4.26"
"symfony/config": "<6.1",
"symfony/finder": "<5.4",
"symfony/proxy-manager-bridge": "<6.3",
"symfony/yaml": "<5.4"
},
"provide": {
"psr/container-implementation": "1.0",
"symfony/service-implementation": "1.0|2.0"
"psr/container-implementation": "1.1|2.0",
"symfony/service-implementation": "1.1|2.0|3.0"
},
"require-dev": {
"symfony/config": "^5.3|^6.0",
"symfony/expression-language": "^4.4|^5.0|^6.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": ""
"symfony/config": "^6.1|^7.0",
"symfony/expression-language": "^5.4|^6.0|^7.0",
"symfony/yaml": "^5.4|^6.0|^7.0"
},
"type": "library",
"autoload": {
@@ -2231,7 +2507,7 @@
"description": "Allows you to standardize and centralize the way objects are constructed in your application",
"homepage": "https://symfony.com",
"support": {
"source": "https://github.com/symfony/dependency-injection/tree/v5.4.48"
"source": "https://github.com/symfony/dependency-injection/tree/v6.4.25"
},
"funding": [
{
@@ -2242,12 +2518,16 @@
"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": "2024-11-20T10:51:57+00:00"
"time": "2025-08-13T09:41:44+00:00"
},
{
"name": "symfony/deprecation-contracts",
@@ -2318,25 +2598,28 @@
},
{
"name": "symfony/dotenv",
"version": "v5.4.48",
"version": "v6.4.24",
"source": {
"type": "git",
"url": "https://github.com/symfony/dotenv.git",
"reference": "08013403089c8a126c968179179b817a552841ab"
"reference": "234b6c602f12b00693f4b0d1054386fb30dfc8ff"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/symfony/dotenv/zipball/08013403089c8a126c968179179b817a552841ab",
"reference": "08013403089c8a126c968179179b817a552841ab",
"url": "https://api.github.com/repos/symfony/dotenv/zipball/234b6c602f12b00693f4b0d1054386fb30dfc8ff",
"reference": "234b6c602f12b00693f4b0d1054386fb30dfc8ff",
"shasum": ""
},
"require": {
"php": ">=7.2.5",
"symfony/deprecation-contracts": "^2.1|^3"
"php": ">=8.1"
},
"conflict": {
"symfony/console": "<5.4",
"symfony/process": "<5.4"
},
"require-dev": {
"symfony/console": "^4.4|^5.0|^6.0",
"symfony/process": "^4.4|^5.0|^6.0"
"symfony/console": "^5.4|^6.0|^7.0",
"symfony/process": "^5.4|^6.0|^7.0"
},
"type": "library",
"autoload": {
@@ -2369,7 +2652,7 @@
"environment"
],
"support": {
"source": "https://github.com/symfony/dotenv/tree/v5.4.48"
"source": "https://github.com/symfony/dotenv/tree/v6.4.24"
},
"funding": [
{
@@ -2380,36 +2663,44 @@
"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": "2024-11-27T09:33:00+00:00"
"time": "2025-07-10T08:14:14+00:00"
},
{
"name": "symfony/error-handler",
"version": "v5.4.46",
"version": "v6.4.24",
"source": {
"type": "git",
"url": "https://github.com/symfony/error-handler.git",
"reference": "d19ede7a2cafb386be9486c580649d0f9e3d0363"
"reference": "30fd0b3cf0e972e82636038ce4db0e4fe777112c"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/symfony/error-handler/zipball/d19ede7a2cafb386be9486c580649d0f9e3d0363",
"reference": "d19ede7a2cafb386be9486c580649d0f9e3d0363",
"url": "https://api.github.com/repos/symfony/error-handler/zipball/30fd0b3cf0e972e82636038ce4db0e4fe777112c",
"reference": "30fd0b3cf0e972e82636038ce4db0e4fe777112c",
"shasum": ""
},
"require": {
"php": ">=7.2.5",
"php": ">=8.1",
"psr/log": "^1|^2|^3",
"symfony/var-dumper": "^4.4|^5.0|^6.0"
"symfony/var-dumper": "^5.4|^6.0|^7.0"
},
"conflict": {
"symfony/deprecation-contracts": "<2.5",
"symfony/http-kernel": "<6.4"
},
"require-dev": {
"symfony/deprecation-contracts": "^2.1|^3",
"symfony/http-kernel": "^4.4|^5.0|^6.0",
"symfony/serializer": "^4.4|^5.0|^6.0"
"symfony/deprecation-contracts": "^2.5|^3",
"symfony/http-kernel": "^6.4|^7.0",
"symfony/serializer": "^5.4|^6.0|^7.0"
},
"bin": [
"Resources/bin/patch-type-declarations"
@@ -2440,7 +2731,7 @@
"description": "Provides tools to manage errors and ease debugging PHP code",
"homepage": "https://symfony.com",
"support": {
"source": "https://github.com/symfony/error-handler/tree/v5.4.46"
"source": "https://github.com/symfony/error-handler/tree/v6.4.24"
},
"funding": [
{
@@ -2451,53 +2742,52 @@
"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": "2024-11-05T14:17:06+00:00"
"time": "2025-07-24T08:25:04+00:00"
},
{
"name": "symfony/event-dispatcher",
"version": "v5.4.45",
"version": "v6.4.25",
"source": {
"type": "git",
"url": "https://github.com/symfony/event-dispatcher.git",
"reference": "72982eb416f61003e9bb6e91f8b3213600dcf9e9"
"reference": "b0cf3162020603587363f0551cd3be43958611ff"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/72982eb416f61003e9bb6e91f8b3213600dcf9e9",
"reference": "72982eb416f61003e9bb6e91f8b3213600dcf9e9",
"url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/b0cf3162020603587363f0551cd3be43958611ff",
"reference": "b0cf3162020603587363f0551cd3be43958611ff",
"shasum": ""
},
"require": {
"php": ">=7.2.5",
"symfony/deprecation-contracts": "^2.1|^3",
"symfony/event-dispatcher-contracts": "^2|^3",
"symfony/polyfill-php80": "^1.16"
"php": ">=8.1",
"symfony/event-dispatcher-contracts": "^2.5|^3"
},
"conflict": {
"symfony/dependency-injection": "<4.4"
"symfony/dependency-injection": "<5.4",
"symfony/service-contracts": "<2.5"
},
"provide": {
"psr/event-dispatcher-implementation": "1.0",
"symfony/event-dispatcher-implementation": "2.0"
"symfony/event-dispatcher-implementation": "2.0|3.0"
},
"require-dev": {
"psr/log": "^1|^2|^3",
"symfony/config": "^4.4|^5.0|^6.0",
"symfony/dependency-injection": "^4.4|^5.0|^6.0",
"symfony/error-handler": "^4.4|^5.0|^6.0",
"symfony/expression-language": "^4.4|^5.0|^6.0",
"symfony/http-foundation": "^4.4|^5.0|^6.0",
"symfony/service-contracts": "^1.1|^2|^3",
"symfony/stopwatch": "^4.4|^5.0|^6.0"
},
"suggest": {
"symfony/dependency-injection": "",
"symfony/http-kernel": ""
"symfony/config": "^5.4|^6.0|^7.0",
"symfony/dependency-injection": "^5.4|^6.0|^7.0",
"symfony/error-handler": "^5.4|^6.0|^7.0",
"symfony/expression-language": "^5.4|^6.0|^7.0",
"symfony/http-foundation": "^5.4|^6.0|^7.0",
"symfony/service-contracts": "^2.5|^3",
"symfony/stopwatch": "^5.4|^6.0|^7.0"
},
"type": "library",
"autoload": {
@@ -2525,7 +2815,7 @@
"description": "Provides tools that allow your application components to communicate with each other by dispatching events and listening to them",
"homepage": "https://symfony.com",
"support": {
"source": "https://github.com/symfony/event-dispatcher/tree/v5.4.45"
"source": "https://github.com/symfony/event-dispatcher/tree/v6.4.25"
},
"funding": [
{
@@ -2536,12 +2826,16 @@
"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": "2024-09-25T14:11:13+00:00"
"time": "2025-08-13T09:41:44+00:00"
},
{
"name": "symfony/event-dispatcher-contracts",
@@ -2621,22 +2915,23 @@
},
{
"name": "symfony/expression-language",
"version": "v5.4.45",
"version": "v6.4.24",
"source": {
"type": "git",
"url": "https://github.com/symfony/expression-language.git",
"reference": "a784b66edc4c151eb05076d04707906ee2c209a9"
"reference": "1ea0adaa53539ea7e70821ae9de49ebe03ae7091"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/symfony/expression-language/zipball/a784b66edc4c151eb05076d04707906ee2c209a9",
"reference": "a784b66edc4c151eb05076d04707906ee2c209a9",
"url": "https://api.github.com/repos/symfony/expression-language/zipball/1ea0adaa53539ea7e70821ae9de49ebe03ae7091",
"reference": "1ea0adaa53539ea7e70821ae9de49ebe03ae7091",
"shasum": ""
},
"require": {
"php": ">=7.2.5",
"symfony/cache": "^4.4|^5.0|^6.0",
"symfony/service-contracts": "^1.1|^2|^3"
"php": ">=8.1",
"symfony/cache": "^5.4|^6.0|^7.0",
"symfony/deprecation-contracts": "^2.5|^3",
"symfony/service-contracts": "^2.5|^3"
},
"type": "library",
"autoload": {
@@ -2664,7 +2959,7 @@
"description": "Provides an engine that can compile and evaluate expressions",
"homepage": "https://symfony.com",
"support": {
"source": "https://github.com/symfony/expression-language/tree/v5.4.45"
"source": "https://github.com/symfony/expression-language/tree/v6.4.24"
},
"funding": [
{
@@ -2675,35 +2970,38 @@
"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": "2024-10-04T14:55:40+00:00"
"time": "2025-07-10T08:14:14+00:00"
},
{
"name": "symfony/filesystem",
"version": "v5.4.45",
"version": "v6.4.24",
"source": {
"type": "git",
"url": "https://github.com/symfony/filesystem.git",
"reference": "57c8294ed37d4a055b77057827c67f9558c95c54"
"reference": "75ae2edb7cdcc0c53766c30b0a2512b8df574bd8"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/symfony/filesystem/zipball/57c8294ed37d4a055b77057827c67f9558c95c54",
"reference": "57c8294ed37d4a055b77057827c67f9558c95c54",
"url": "https://api.github.com/repos/symfony/filesystem/zipball/75ae2edb7cdcc0c53766c30b0a2512b8df574bd8",
"reference": "75ae2edb7cdcc0c53766c30b0a2512b8df574bd8",
"shasum": ""
},
"require": {
"php": ">=7.2.5",
"php": ">=8.1",
"symfony/polyfill-ctype": "~1.8",
"symfony/polyfill-mbstring": "~1.8",
"symfony/polyfill-php80": "^1.16"
"symfony/polyfill-mbstring": "~1.8"
},
"require-dev": {
"symfony/process": "^5.4|^6.4"
"symfony/process": "^5.4|^6.4|^7.0"
},
"type": "library",
"autoload": {
@@ -2731,7 +3029,7 @@
"description": "Provides basic utilities for the filesystem",
"homepage": "https://symfony.com",
"support": {
"source": "https://github.com/symfony/filesystem/tree/v5.4.45"
"source": "https://github.com/symfony/filesystem/tree/v6.4.24"
},
"funding": [
{
@@ -2742,31 +3040,36 @@
"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": "2024-10-22T13:05:35+00:00"
"time": "2025-07-10T08:14:14+00:00"
},
{
"name": "symfony/finder",
"version": "v5.4.45",
"version": "v6.4.24",
"source": {
"type": "git",
"url": "https://github.com/symfony/finder.git",
"reference": "63741784cd7b9967975eec610b256eed3ede022b"
"reference": "73089124388c8510efb8d2d1689285d285937b08"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/symfony/finder/zipball/63741784cd7b9967975eec610b256eed3ede022b",
"reference": "63741784cd7b9967975eec610b256eed3ede022b",
"url": "https://api.github.com/repos/symfony/finder/zipball/73089124388c8510efb8d2d1689285d285937b08",
"reference": "73089124388c8510efb8d2d1689285d285937b08",
"shasum": ""
},
"require": {
"php": ">=7.2.5",
"symfony/deprecation-contracts": "^2.1|^3",
"symfony/polyfill-php80": "^1.16"
"php": ">=8.1"
},
"require-dev": {
"symfony/filesystem": "^6.0|^7.0"
},
"type": "library",
"autoload": {
@@ -2794,7 +3097,7 @@
"description": "Finds files and directories via an intuitive fluent interface",
"homepage": "https://symfony.com",
"support": {
"source": "https://github.com/symfony/finder/tree/v5.4.45"
"source": "https://github.com/symfony/finder/tree/v6.4.24"
},
"funding": [
{
@@ -2805,25 +3108,29 @@
"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": "2024-09-28T13:32:08+00:00"
"time": "2025-07-15T12:02:45+00:00"
},
{
"name": "symfony/flex",
"version": "v2.8.1",
"version": "v2.8.2",
"source": {
"type": "git",
"url": "https://github.com/symfony/flex.git",
"reference": "423c36e369361003dc31ef11c5f15fb589e52c01"
"reference": "f356aa35f3cf3d2f46c31d344c1098eb2d260426"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/symfony/flex/zipball/423c36e369361003dc31ef11c5f15fb589e52c01",
"reference": "423c36e369361003dc31ef11c5f15fb589e52c01",
"url": "https://api.github.com/repos/symfony/flex/zipball/f356aa35f3cf3d2f46c31d344c1098eb2d260426",
"reference": "f356aa35f3cf3d2f46c31d344c1098eb2d260426",
"shasum": ""
},
"require": {
@@ -2862,7 +3169,7 @@
"description": "Composer plugin for Symfony",
"support": {
"issues": "https://github.com/symfony/flex/issues",
"source": "https://github.com/symfony/flex/tree/v2.8.1"
"source": "https://github.com/symfony/flex/tree/v2.8.2"
},
"funding": [
{
@@ -2873,70 +3180,69 @@
"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-05T07:45:19+00:00"
"time": "2025-08-22T07:17:23+00:00"
},
{
"name": "symfony/form",
"version": "v5.4.45",
"version": "v6.4.25",
"source": {
"type": "git",
"url": "https://github.com/symfony/form.git",
"reference": "c1974a723cdee8a273cb49ce13fada5c1667706a"
"reference": "ce4d50b8779556a18f72e6122107b3db2f116140"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/symfony/form/zipball/c1974a723cdee8a273cb49ce13fada5c1667706a",
"reference": "c1974a723cdee8a273cb49ce13fada5c1667706a",
"url": "https://api.github.com/repos/symfony/form/zipball/ce4d50b8779556a18f72e6122107b3db2f116140",
"reference": "ce4d50b8779556a18f72e6122107b3db2f116140",
"shasum": ""
},
"require": {
"php": ">=7.2.5",
"symfony/deprecation-contracts": "^2.1|^3",
"symfony/event-dispatcher": "^4.4|^5.0|^6.0",
"symfony/options-resolver": "^5.1|^6.0",
"php": ">=8.1",
"symfony/deprecation-contracts": "^2.5|^3",
"symfony/event-dispatcher": "^5.4|^6.0|^7.0",
"symfony/options-resolver": "^5.4|^6.0|^7.0",
"symfony/polyfill-ctype": "~1.8",
"symfony/polyfill-intl-icu": "^1.21",
"symfony/polyfill-mbstring": "~1.0",
"symfony/polyfill-php80": "^1.16",
"symfony/polyfill-php81": "^1.23",
"symfony/property-access": "^5.0.8|^6.0",
"symfony/service-contracts": "^1.1|^2|^3"
"symfony/property-access": "^5.4|^6.0|^7.0",
"symfony/service-contracts": "^2.5|^3"
},
"conflict": {
"symfony/console": "<4.4",
"symfony/dependency-injection": "<4.4",
"symfony/console": "<5.4",
"symfony/dependency-injection": "<5.4",
"symfony/doctrine-bridge": "<5.4.21|>=6,<6.2.7",
"symfony/error-handler": "<4.4.5",
"symfony/framework-bundle": "<4.4",
"symfony/http-kernel": "<4.4",
"symfony/translation": "<5.4.35|>=6.0,<6.3.12|>=6.4,<6.4.3",
"symfony/translation-contracts": "<1.1.7",
"symfony/twig-bridge": "<5.4.21|>=6,<6.2.7"
"symfony/error-handler": "<5.4",
"symfony/framework-bundle": "<5.4",
"symfony/http-kernel": "<5.4",
"symfony/translation": "<5.4.35|>=6.0,<6.3.12|>=6.4,<6.4.3|>=7.0,<7.0.3",
"symfony/translation-contracts": "<2.5",
"symfony/twig-bridge": "<6.3"
},
"require-dev": {
"doctrine/collections": "^1.0|^2.0",
"symfony/config": "^4.4|^5.0|^6.0",
"symfony/console": "^5.4|^6.0",
"symfony/dependency-injection": "^4.4|^5.0|^6.0",
"symfony/expression-language": "^4.4|^5.0|^6.0",
"symfony/http-foundation": "^4.4|^5.0|^6.0",
"symfony/http-kernel": "^4.4|^5.0|^6.0",
"symfony/intl": "^4.4|^5.0|^6.0",
"symfony/security-csrf": "^4.4|^5.0|^6.0",
"symfony/translation": "^5.4.35|~6.3.12|^6.4.3",
"symfony/uid": "^5.1|^6.0",
"symfony/validator": "^4.4.17|^5.1.9|^6.0",
"symfony/var-dumper": "^4.4|^5.0|^6.0"
},
"suggest": {
"symfony/security-csrf": "For protecting forms against CSRF attacks.",
"symfony/twig-bridge": "For templating with Twig.",
"symfony/validator": "For form validation."
"symfony/config": "^5.4|^6.0|^7.0",
"symfony/console": "^5.4|^6.0|^7.0",
"symfony/dependency-injection": "^5.4|^6.0|^7.0",
"symfony/expression-language": "^5.4|^6.0|^7.0",
"symfony/html-sanitizer": "^6.1|^7.0",
"symfony/http-foundation": "^5.4|^6.0|^7.0",
"symfony/http-kernel": "^5.4|^6.0|^7.0",
"symfony/intl": "^5.4|^6.0|^7.0",
"symfony/security-core": "^6.2|^7.0",
"symfony/security-csrf": "^5.4|^6.0|^7.0",
"symfony/translation": "^5.4.35|~6.3.12|^6.4.3|^7.0.3",
"symfony/uid": "^5.4|^6.0|^7.0",
"symfony/validator": "^5.4|^6.0|^7.0",
"symfony/var-dumper": "^5.4|^6.0|^7.0"
},
"type": "library",
"autoload": {
@@ -2964,7 +3270,7 @@
"description": "Allows to easily create, process and reuse HTML forms",
"homepage": "https://symfony.com",
"support": {
"source": "https://github.com/symfony/form/tree/v5.4.45"
"source": "https://github.com/symfony/form/tree/v6.4.25"
},
"funding": [
{
@@ -2975,120 +3281,122 @@
"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": "2024-10-08T07:27:17+00:00"
"time": "2025-08-18T12:29:30+00:00"
},
{
"name": "symfony/framework-bundle",
"version": "v5.4.45",
"version": "v6.4.25",
"source": {
"type": "git",
"url": "https://github.com/symfony/framework-bundle.git",
"reference": "3d70f14176422d4d8ee400b6acae4e21f7c25ca2"
"reference": "1d6a764b58e4f780df00f71c20ba3a61095ea447"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/symfony/framework-bundle/zipball/3d70f14176422d4d8ee400b6acae4e21f7c25ca2",
"reference": "3d70f14176422d4d8ee400b6acae4e21f7c25ca2",
"url": "https://api.github.com/repos/symfony/framework-bundle/zipball/1d6a764b58e4f780df00f71c20ba3a61095ea447",
"reference": "1d6a764b58e4f780df00f71c20ba3a61095ea447",
"shasum": ""
},
"require": {
"composer-runtime-api": ">=2.1",
"ext-xml": "*",
"php": ">=7.2.5",
"symfony/cache": "^5.2|^6.0",
"symfony/config": "^5.3|^6.0",
"symfony/dependency-injection": "^5.4.44|^6.0.5",
"symfony/deprecation-contracts": "^2.1|^3",
"symfony/error-handler": "^4.4.1|^5.0.1|^6.0",
"symfony/event-dispatcher": "^5.1|^6.0",
"symfony/filesystem": "^4.4|^5.0|^6.0",
"symfony/finder": "^4.4|^5.0|^6.0",
"symfony/http-foundation": "^5.4.24|^6.2.11",
"symfony/http-kernel": "^5.4|^6.0",
"php": ">=8.1",
"symfony/cache": "^5.4|^6.0|^7.0",
"symfony/config": "^6.1|^7.0",
"symfony/dependency-injection": "^6.4.12|^7.0",
"symfony/deprecation-contracts": "^2.5|^3",
"symfony/error-handler": "^6.1|^7.0",
"symfony/event-dispatcher": "^5.4|^6.0|^7.0",
"symfony/filesystem": "^5.4|^6.0|^7.0",
"symfony/finder": "^5.4|^6.0|^7.0",
"symfony/http-foundation": "^6.4|^7.0",
"symfony/http-kernel": "^6.4",
"symfony/polyfill-mbstring": "~1.0",
"symfony/polyfill-php80": "^1.16",
"symfony/polyfill-php81": "^1.22",
"symfony/routing": "^5.3|^6.0"
"symfony/routing": "^6.4|^7.0"
},
"conflict": {
"doctrine/annotations": "<1.13.1",
"doctrine/cache": "<1.11",
"doctrine/persistence": "<1.3",
"phpdocumentor/reflection-docblock": "<3.2.2",
"phpdocumentor/type-resolver": "<1.4.0",
"symfony/asset": "<5.3",
"symfony/console": "<5.2.5|>=7.0",
"symfony/dom-crawler": "<4.4",
"symfony/dotenv": "<5.1",
"symfony/form": "<5.2",
"symfony/http-client": "<4.4",
"symfony/lock": "<4.4",
"symfony/mailer": "<5.2",
"symfony/messenger": "<5.4",
"symfony/mime": "<4.4",
"symfony/property-access": "<5.3",
"symfony/property-info": "<4.4",
"symfony/asset": "<5.4",
"symfony/asset-mapper": "<6.4",
"symfony/clock": "<6.3",
"symfony/console": "<5.4|>=7.0",
"symfony/dom-crawler": "<6.4",
"symfony/dotenv": "<5.4",
"symfony/form": "<5.4",
"symfony/http-client": "<6.3",
"symfony/lock": "<5.4",
"symfony/mailer": "<5.4",
"symfony/messenger": "<6.3",
"symfony/mime": "<6.4",
"symfony/property-access": "<5.4",
"symfony/property-info": "<5.4",
"symfony/runtime": "<5.4.45|>=6.0,<6.4.13|>=7.0,<7.1.6",
"symfony/security-csrf": "<5.3",
"symfony/serializer": "<5.2",
"symfony/service-contracts": ">=3.0",
"symfony/stopwatch": "<4.4",
"symfony/translation": "<5.3",
"symfony/twig-bridge": "<4.4",
"symfony/twig-bundle": "<4.4",
"symfony/validator": "<5.3.11",
"symfony/web-profiler-bundle": "<4.4",
"symfony/workflow": "<5.2"
"symfony/scheduler": "<6.4.4|>=7.0.0,<7.0.4",
"symfony/security-core": "<5.4",
"symfony/security-csrf": "<5.4",
"symfony/serializer": "<6.4",
"symfony/stopwatch": "<5.4",
"symfony/translation": "<6.4",
"symfony/twig-bridge": "<5.4",
"symfony/twig-bundle": "<5.4",
"symfony/validator": "<6.4",
"symfony/web-profiler-bundle": "<6.4",
"symfony/workflow": "<6.4"
},
"require-dev": {
"doctrine/annotations": "^1.13.1|^2",
"doctrine/cache": "^1.11|^2.0",
"doctrine/persistence": "^1.3|^2|^3",
"dragonmantank/cron-expression": "^3.1",
"phpdocumentor/reflection-docblock": "^3.0|^4.0|^5.0",
"symfony/asset": "^5.3|^6.0",
"symfony/browser-kit": "^5.4|^6.0",
"symfony/console": "^5.4.9|^6.0.9",
"symfony/css-selector": "^4.4|^5.0|^6.0",
"symfony/dom-crawler": "^4.4.30|^5.3.7|^6.0",
"symfony/dotenv": "^5.1|^6.0",
"symfony/expression-language": "^4.4|^5.0|^6.0",
"symfony/form": "^5.2|^6.0",
"symfony/http-client": "^4.4|^5.0|^6.0",
"symfony/lock": "^4.4|^5.0|^6.0",
"symfony/mailer": "^5.2|^6.0",
"symfony/messenger": "^5.4|^6.0",
"symfony/mime": "^4.4|^5.0|^6.0",
"symfony/notifier": "^5.4|^6.0",
"seld/jsonlint": "^1.10",
"symfony/asset": "^5.4|^6.0|^7.0",
"symfony/asset-mapper": "^6.4|^7.0",
"symfony/browser-kit": "^5.4|^6.0|^7.0",
"symfony/clock": "^6.2|^7.0",
"symfony/console": "^5.4.9|^6.0.9|^7.0",
"symfony/css-selector": "^5.4|^6.0|^7.0",
"symfony/dom-crawler": "^6.4|^7.0",
"symfony/dotenv": "^5.4|^6.0|^7.0",
"symfony/expression-language": "^5.4|^6.0|^7.0",
"symfony/form": "^5.4|^6.0|^7.0",
"symfony/html-sanitizer": "^6.1|^7.0",
"symfony/http-client": "^6.3|^7.0",
"symfony/lock": "^5.4|^6.0|^7.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/process": "^4.4|^5.0|^6.0",
"symfony/property-info": "^4.4|^5.0|^6.0",
"symfony/rate-limiter": "^5.2|^6.0",
"symfony/security-bundle": "^5.4|^6.0",
"symfony/serializer": "^5.4|^6.0",
"symfony/stopwatch": "^4.4|^5.0|^6.0",
"symfony/string": "^5.0|^6.0",
"symfony/translation": "^5.3|^6.0",
"symfony/twig-bundle": "^4.4|^5.0|^6.0",
"symfony/validator": "^5.3.11|^6.0",
"symfony/web-link": "^4.4|^5.0|^6.0",
"symfony/workflow": "^5.2|^6.0",
"symfony/yaml": "^4.4|^5.0|^6.0",
"symfony/process": "^5.4|^6.0|^7.0",
"symfony/property-info": "^5.4|^6.0|^7.0",
"symfony/rate-limiter": "^5.4|^6.0|^7.0",
"symfony/scheduler": "^6.4.4|^7.0.4",
"symfony/security-bundle": "^5.4|^6.0|^7.0",
"symfony/semaphore": "^5.4|^6.0|^7.0",
"symfony/serializer": "^6.4|^7.0",
"symfony/stopwatch": "^5.4|^6.0|^7.0",
"symfony/string": "^5.4|^6.0|^7.0",
"symfony/translation": "^6.4|^7.0",
"symfony/twig-bundle": "^5.4|^6.0|^7.0",
"symfony/uid": "^5.4|^6.0|^7.0",
"symfony/validator": "^6.4|^7.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"
},
"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",
"autoload": {
"psr-4": {
@@ -3115,7 +3423,7 @@
"description": "Provides a tight integration between Symfony components and the Symfony full-stack framework",
"homepage": "https://symfony.com",
"support": {
"source": "https://github.com/symfony/framework-bundle/tree/v5.4.45"
"source": "https://github.com/symfony/framework-bundle/tree/v6.4.25"
},
"funding": [
{
@@ -3126,41 +3434,48 @@
"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": "2024-10-22T13:05:35+00:00"
"time": "2025-08-26T10:44:20+00:00"
},
{
"name": "symfony/http-client",
"version": "v5.4.49",
"version": "v6.4.25",
"source": {
"type": "git",
"url": "https://github.com/symfony/http-client.git",
"reference": "d77d8e212cde7b5c4a64142bf431522f19487c28"
"reference": "b8e9dce2d8acba3c32af467bb58e0c3656886181"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/symfony/http-client/zipball/d77d8e212cde7b5c4a64142bf431522f19487c28",
"reference": "d77d8e212cde7b5c4a64142bf431522f19487c28",
"url": "https://api.github.com/repos/symfony/http-client/zipball/b8e9dce2d8acba3c32af467bb58e0c3656886181",
"reference": "b8e9dce2d8acba3c32af467bb58e0c3656886181",
"shasum": ""
},
"require": {
"php": ">=7.2.5",
"php": ">=8.1",
"psr/log": "^1|^2|^3",
"symfony/deprecation-contracts": "^2.1|^3",
"symfony/http-client-contracts": "^2.5.4",
"symfony/polyfill-php73": "^1.11",
"symfony/polyfill-php80": "^1.16",
"symfony/service-contracts": "^1.0|^2|^3"
"symfony/deprecation-contracts": "^2.5|^3",
"symfony/http-client-contracts": "~3.4.4|^3.5.2",
"symfony/polyfill-php83": "^1.29",
"symfony/service-contracts": "^2.5|^3"
},
"conflict": {
"php-http/discovery": "<1.15",
"symfony/http-foundation": "<6.3"
},
"provide": {
"php-http/async-client-implementation": "*",
"php-http/client-implementation": "*",
"psr/http-client-implementation": "1.0",
"symfony/http-client-implementation": "2.4"
"symfony/http-client-implementation": "3.0"
},
"require-dev": {
"amphp/amp": "^2.5",
@@ -3170,12 +3485,12 @@
"guzzlehttp/promises": "^1.4|^2.0",
"nyholm/psr7": "^1.0",
"php-http/httplug": "^1.0|^2.0",
"php-http/message-factory": "^1.0",
"psr/http-client": "^1.0",
"symfony/dependency-injection": "^4.4|^5.0|^6.0",
"symfony/http-kernel": "^4.4.13|^5.1.5|^6.0",
"symfony/process": "^4.4|^5.0|^6.0",
"symfony/stopwatch": "^4.4|^5.0|^6.0"
"symfony/dependency-injection": "^5.4|^6.0|^7.0",
"symfony/http-kernel": "^5.4|^6.0|^7.0",
"symfony/messenger": "^5.4|^6.0|^7.0",
"symfony/process": "^5.4|^6.0|^7.0",
"symfony/stopwatch": "^5.4|^6.0|^7.0"
},
"type": "library",
"autoload": {
@@ -3206,7 +3521,7 @@
"http"
],
"support": {
"source": "https://github.com/symfony/http-client/tree/v5.4.49"
"source": "https://github.com/symfony/http-client/tree/v6.4.25"
},
"funding": [
{
@@ -3217,32 +3532,33 @@
"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": "2024-11-28T08:37:04+00:00"
"time": "2025-08-27T07:01:16+00:00"
},
{
"name": "symfony/http-client-contracts",
"version": "v2.5.5",
"version": "v3.6.0",
"source": {
"type": "git",
"url": "https://github.com/symfony/http-client-contracts.git",
"reference": "48ef1d0a082885877b664332b9427662065a360c"
"reference": "75d7043853a42837e68111812f4d964b01e5101c"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/symfony/http-client-contracts/zipball/48ef1d0a082885877b664332b9427662065a360c",
"reference": "48ef1d0a082885877b664332b9427662065a360c",
"url": "https://api.github.com/repos/symfony/http-client-contracts/zipball/75d7043853a42837e68111812f4d964b01e5101c",
"reference": "75d7043853a42837e68111812f4d964b01e5101c",
"shasum": ""
},
"require": {
"php": ">=7.2.5"
},
"suggest": {
"symfony/http-client-implementation": ""
"php": ">=8.1"
},
"type": "library",
"extra": {
@@ -3251,13 +3567,16 @@
"name": "symfony/contracts"
},
"branch-alias": {
"dev-main": "2.5-dev"
"dev-main": "3.6-dev"
}
},
"autoload": {
"psr-4": {
"Symfony\\Contracts\\HttpClient\\": ""
}
},
"exclude-from-classmap": [
"/Test/"
]
},
"notification-url": "https://packagist.org/downloads/",
"license": [
@@ -3284,7 +3603,7 @@
"standards"
],
"support": {
"source": "https://github.com/symfony/http-client-contracts/tree/v2.5.5"
"source": "https://github.com/symfony/http-client-contracts/tree/v3.6.0"
},
"funding": [
{
@@ -3300,39 +3619,40 @@
"type": "tidelift"
}
],
"time": "2024-11-28T08:37:04+00:00"
"time": "2025-04-29T11:18:49+00:00"
},
{
"name": "symfony/http-foundation",
"version": "v5.4.48",
"version": "v6.4.25",
"source": {
"type": "git",
"url": "https://github.com/symfony/http-foundation.git",
"reference": "3f38b8af283b830e1363acd79e5bc3412d055341"
"reference": "6bc974c0035b643aa497c58d46d9e25185e4b272"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/symfony/http-foundation/zipball/3f38b8af283b830e1363acd79e5bc3412d055341",
"reference": "3f38b8af283b830e1363acd79e5bc3412d055341",
"url": "https://api.github.com/repos/symfony/http-foundation/zipball/6bc974c0035b643aa497c58d46d9e25185e4b272",
"reference": "6bc974c0035b643aa497c58d46d9e25185e4b272",
"shasum": ""
},
"require": {
"php": ">=7.2.5",
"symfony/deprecation-contracts": "^2.1|^3",
"php": ">=8.1",
"symfony/deprecation-contracts": "^2.5|^3",
"symfony/polyfill-mbstring": "~1.1",
"symfony/polyfill-php80": "^1.16"
"symfony/polyfill-php83": "^1.27"
},
"conflict": {
"symfony/cache": "<6.4.12|>=7.0,<7.1.5"
},
"require-dev": {
"predis/predis": "^1.0|^2.0",
"symfony/cache": "^4.4|^5.0|^6.0",
"symfony/dependency-injection": "^5.4|^6.0",
"symfony/expression-language": "^4.4|^5.0|^6.0",
"symfony/http-kernel": "^5.4.12|^6.0.12|^6.1.4",
"symfony/mime": "^4.4|^5.0|^6.0",
"symfony/rate-limiter": "^5.2|^6.0"
},
"suggest": {
"symfony/mime": "To use the file extension guesser"
"doctrine/dbal": "^2.13.1|^3|^4",
"predis/predis": "^1.1|^2.0",
"symfony/cache": "^6.4.12|^7.1.5",
"symfony/dependency-injection": "^5.4|^6.0|^7.0",
"symfony/expression-language": "^5.4|^6.0|^7.0",
"symfony/http-kernel": "^5.4.12|^6.0.12|^6.1.4|^7.0",
"symfony/mime": "^5.4|^6.0|^7.0",
"symfony/rate-limiter": "^5.4|^6.0|^7.0"
},
"type": "library",
"autoload": {
@@ -3360,7 +3680,7 @@
"description": "Defines an object-oriented layer for the HTTP specification",
"homepage": "https://symfony.com",
"support": {
"source": "https://github.com/symfony/http-foundation/tree/v5.4.48"
"source": "https://github.com/symfony/http-foundation/tree/v6.4.25"
},
"funding": [
{
@@ -3371,82 +3691,87 @@
"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": "2024-11-13T18:58:02+00:00"
"time": "2025-08-20T06:48:20+00:00"
},
{
"name": "symfony/http-kernel",
"version": "v5.4.48",
"version": "v6.4.25",
"source": {
"type": "git",
"url": "https://github.com/symfony/http-kernel.git",
"reference": "c2dbfc92b851404567160d1ecf3fb7d9b7bde9b0"
"reference": "a0ee3cea5cabf4ed960fd2ef57668ceeacdb6e15"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/symfony/http-kernel/zipball/c2dbfc92b851404567160d1ecf3fb7d9b7bde9b0",
"reference": "c2dbfc92b851404567160d1ecf3fb7d9b7bde9b0",
"url": "https://api.github.com/repos/symfony/http-kernel/zipball/a0ee3cea5cabf4ed960fd2ef57668ceeacdb6e15",
"reference": "a0ee3cea5cabf4ed960fd2ef57668ceeacdb6e15",
"shasum": ""
},
"require": {
"php": ">=7.2.5",
"psr/log": "^1|^2",
"symfony/deprecation-contracts": "^2.1|^3",
"symfony/error-handler": "^4.4|^5.0|^6.0",
"symfony/event-dispatcher": "^5.0|^6.0",
"symfony/http-foundation": "^5.4.21|^6.2.7",
"symfony/polyfill-ctype": "^1.8",
"symfony/polyfill-php73": "^1.9",
"symfony/polyfill-php80": "^1.16"
"php": ">=8.1",
"psr/log": "^1|^2|^3",
"symfony/deprecation-contracts": "^2.5|^3",
"symfony/error-handler": "^6.4|^7.0",
"symfony/event-dispatcher": "^5.4|^6.0|^7.0",
"symfony/http-foundation": "^6.4|^7.0",
"symfony/polyfill-ctype": "^1.8"
},
"conflict": {
"symfony/browser-kit": "<5.4",
"symfony/cache": "<5.0",
"symfony/config": "<5.0",
"symfony/console": "<4.4",
"symfony/dependency-injection": "<5.3",
"symfony/doctrine-bridge": "<5.0",
"symfony/form": "<5.0",
"symfony/http-client": "<5.0",
"symfony/mailer": "<5.0",
"symfony/messenger": "<5.0",
"symfony/translation": "<5.0",
"symfony/twig-bridge": "<5.0",
"symfony/validator": "<5.0",
"symfony/cache": "<5.4",
"symfony/config": "<6.1",
"symfony/console": "<5.4",
"symfony/dependency-injection": "<6.4",
"symfony/doctrine-bridge": "<5.4",
"symfony/form": "<5.4",
"symfony/http-client": "<5.4",
"symfony/http-client-contracts": "<2.5",
"symfony/mailer": "<5.4",
"symfony/messenger": "<5.4",
"symfony/translation": "<5.4",
"symfony/translation-contracts": "<2.5",
"symfony/twig-bridge": "<5.4",
"symfony/validator": "<6.4",
"symfony/var-dumper": "<6.3",
"twig/twig": "<2.13"
},
"provide": {
"psr/log-implementation": "1.0|2.0"
"psr/log-implementation": "1.0|2.0|3.0"
},
"require-dev": {
"psr/cache": "^1.0|^2.0|^3.0",
"symfony/browser-kit": "^5.4|^6.0",
"symfony/config": "^5.0|^6.0",
"symfony/console": "^4.4|^5.0|^6.0",
"symfony/css-selector": "^4.4|^5.0|^6.0",
"symfony/dependency-injection": "^5.3|^6.0",
"symfony/dom-crawler": "^4.4|^5.0|^6.0",
"symfony/expression-language": "^4.4|^5.0|^6.0",
"symfony/finder": "^4.4|^5.0|^6.0",
"symfony/http-client-contracts": "^1.1|^2|^3",
"symfony/process": "^4.4|^5.0|^6.0",
"symfony/routing": "^4.4|^5.0|^6.0",
"symfony/stopwatch": "^4.4|^5.0|^6.0",
"symfony/translation": "^4.4|^5.0|^6.0",
"symfony/translation-contracts": "^1.1|^2|^3",
"symfony/var-dumper": "^4.4.31|^5.4",
"symfony/browser-kit": "^5.4|^6.0|^7.0",
"symfony/clock": "^6.2|^7.0",
"symfony/config": "^6.1|^7.0",
"symfony/console": "^5.4|^6.0|^7.0",
"symfony/css-selector": "^5.4|^6.0|^7.0",
"symfony/dependency-injection": "^6.4|^7.0",
"symfony/dom-crawler": "^5.4|^6.0|^7.0",
"symfony/expression-language": "^5.4|^6.0|^7.0",
"symfony/finder": "^5.4|^6.0|^7.0",
"symfony/http-client-contracts": "^2.5|^3",
"symfony/process": "^5.4|^6.0|^7.0",
"symfony/property-access": "^5.4.5|^6.0.5|^7.0",
"symfony/routing": "^5.4|^6.0|^7.0",
"symfony/serializer": "^6.4.4|^7.0.4",
"symfony/stopwatch": "^5.4|^6.0|^7.0",
"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"
},
"suggest": {
"symfony/browser-kit": "",
"symfony/config": "",
"symfony/console": "",
"symfony/dependency-injection": ""
},
"type": "library",
"autoload": {
"psr-4": {
@@ -3473,7 +3798,7 @@
"description": "Provides a structured process for converting a Request into a Response",
"homepage": "https://symfony.com",
"support": {
"source": "https://github.com/symfony/http-kernel/tree/v5.4.48"
"source": "https://github.com/symfony/http-kernel/tree/v6.4.25"
},
"funding": [
{
@@ -3484,44 +3809,56 @@
"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": "2024-11-27T12:43:17+00:00"
"time": "2025-08-29T07:55:45+00:00"
},
{
"name": "symfony/lock",
"version": "v5.4.45",
"name": "symfony/monolog-bridge",
"version": "v6.4.25",
"source": {
"type": "git",
"url": "https://github.com/symfony/lock.git",
"reference": "f85ebc5346a2f0e4f9e347e9154922a6d4665c65"
"url": "https://github.com/symfony/monolog-bridge.git",
"reference": "6711737a4f6acc6cea94344d252fa5d457a5d647"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/symfony/lock/zipball/f85ebc5346a2f0e4f9e347e9154922a6d4665c65",
"reference": "f85ebc5346a2f0e4f9e347e9154922a6d4665c65",
"url": "https://api.github.com/repos/symfony/monolog-bridge/zipball/6711737a4f6acc6cea94344d252fa5d457a5d647",
"reference": "6711737a4f6acc6cea94344d252fa5d457a5d647",
"shasum": ""
},
"require": {
"php": ">=7.2.5",
"psr/log": "^1|^2|^3",
"symfony/deprecation-contracts": "^2.1|^3",
"symfony/polyfill-php80": "^1.16"
"monolog/monolog": "^1.25.1|^2|^3",
"php": ">=8.1",
"symfony/deprecation-contracts": "^2.5|^3",
"symfony/http-kernel": "^5.4|^6.0|^7.0",
"symfony/service-contracts": "^2.5|^3"
},
"conflict": {
"doctrine/dbal": "<2.13"
"symfony/console": "<5.4",
"symfony/http-foundation": "<5.4",
"symfony/security-core": "<5.4"
},
"require-dev": {
"doctrine/dbal": "^2.13|^3|^4",
"predis/predis": "^1.0|^2.0"
"symfony/console": "^5.4|^6.0|^7.0",
"symfony/http-client": "^5.4|^6.0|^7.0",
"symfony/mailer": "^5.4|^6.0|^7.0",
"symfony/messenger": "^5.4|^6.0|^7.0",
"symfony/mime": "^5.4|^6.0|^7.0",
"symfony/security-core": "^5.4|^6.0|^7.0",
"symfony/var-dumper": "^5.4|^6.0|^7.0"
},
"type": "library",
"type": "symfony-bridge",
"autoload": {
"psr-4": {
"Symfony\\Component\\Lock\\": ""
"Symfony\\Bridge\\Monolog\\": ""
},
"exclude-from-classmap": [
"/Tests/"
@@ -3533,26 +3870,103 @@
],
"authors": [
{
"name": "Jérémy Derussé",
"email": "jeremy@derusse.com"
"name": "Fabien Potencier",
"email": "fabien@symfony.com"
},
{
"name": "Symfony Community",
"homepage": "https://symfony.com/contributors"
}
],
"description": "Creates and manages locks, a mechanism to provide exclusive access to a shared resource",
"description": "Provides integration for Monolog with various Symfony components",
"homepage": "https://symfony.com",
"support": {
"source": "https://github.com/symfony/monolog-bridge/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-13T09:41:44+00:00"
},
{
"name": "symfony/monolog-bundle",
"version": "v3.10.0",
"source": {
"type": "git",
"url": "https://github.com/symfony/monolog-bundle.git",
"reference": "414f951743f4aa1fd0f5bf6a0e9c16af3fe7f181"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/symfony/monolog-bundle/zipball/414f951743f4aa1fd0f5bf6a0e9c16af3fe7f181",
"reference": "414f951743f4aa1fd0f5bf6a0e9c16af3fe7f181",
"shasum": ""
},
"require": {
"monolog/monolog": "^1.25.1 || ^2.0 || ^3.0",
"php": ">=7.2.5",
"symfony/config": "^5.4 || ^6.0 || ^7.0",
"symfony/dependency-injection": "^5.4 || ^6.0 || ^7.0",
"symfony/http-kernel": "^5.4 || ^6.0 || ^7.0",
"symfony/monolog-bridge": "^5.4 || ^6.0 || ^7.0"
},
"require-dev": {
"symfony/console": "^5.4 || ^6.0 || ^7.0",
"symfony/phpunit-bridge": "^6.3 || ^7.0",
"symfony/yaml": "^5.4 || ^6.0 || ^7.0"
},
"type": "symfony-bundle",
"extra": {
"branch-alias": {
"dev-master": "3.x-dev"
}
},
"autoload": {
"psr-4": {
"Symfony\\Bundle\\MonologBundle\\": ""
},
"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 MonologBundle",
"homepage": "https://symfony.com",
"keywords": [
"cas",
"flock",
"locking",
"mutex",
"redlock",
"semaphore"
"log",
"logging"
],
"support": {
"source": "https://github.com/symfony/lock/tree/v5.4.45"
"issues": "https://github.com/symfony/monolog-bundle/issues",
"source": "https://github.com/symfony/monolog-bundle/tree/v3.10.0"
},
"funding": [
{
@@ -3568,27 +3982,25 @@
"type": "tidelift"
}
],
"time": "2024-10-21T20:36:41+00:00"
"time": "2023-11-06T17:08:13+00:00"
},
{
"name": "symfony/options-resolver",
"version": "v5.4.45",
"version": "v6.4.25",
"source": {
"type": "git",
"url": "https://github.com/symfony/options-resolver.git",
"reference": "74e5b6f0db3e8589e6cfd5efb317a1fc2bb52fb6"
"reference": "d28e7e2db8a73e9511df892d36445f61314bbebe"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/symfony/options-resolver/zipball/74e5b6f0db3e8589e6cfd5efb317a1fc2bb52fb6",
"reference": "74e5b6f0db3e8589e6cfd5efb317a1fc2bb52fb6",
"url": "https://api.github.com/repos/symfony/options-resolver/zipball/d28e7e2db8a73e9511df892d36445f61314bbebe",
"reference": "d28e7e2db8a73e9511df892d36445f61314bbebe",
"shasum": ""
},
"require": {
"php": ">=7.2.5",
"symfony/deprecation-contracts": "^2.1|^3",
"symfony/polyfill-php73": "~1.0",
"symfony/polyfill-php80": "^1.16"
"php": ">=8.1",
"symfony/deprecation-contracts": "^2.5|^3"
},
"type": "library",
"autoload": {
@@ -3621,7 +4033,7 @@
"options"
],
"support": {
"source": "https://github.com/symfony/options-resolver/tree/v5.4.45"
"source": "https://github.com/symfony/options-resolver/tree/v6.4.25"
},
"funding": [
{
@@ -3632,38 +4044,40 @@
"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": "2024-09-25T14:11:13+00:00"
"time": "2025-08-04T17:06:28+00:00"
},
{
"name": "symfony/password-hasher",
"version": "v5.4.45",
"version": "v6.4.24",
"source": {
"type": "git",
"url": "https://github.com/symfony/password-hasher.git",
"reference": "6c5993b24505f98b90ca4896448012bbec54c7c8"
"reference": "dcab5ac87450aaed26483ba49c2ce86808da7557"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/symfony/password-hasher/zipball/6c5993b24505f98b90ca4896448012bbec54c7c8",
"reference": "6c5993b24505f98b90ca4896448012bbec54c7c8",
"url": "https://api.github.com/repos/symfony/password-hasher/zipball/dcab5ac87450aaed26483ba49c2ce86808da7557",
"reference": "dcab5ac87450aaed26483ba49c2ce86808da7557",
"shasum": ""
},
"require": {
"php": ">=7.2.5",
"symfony/deprecation-contracts": "^2.1|^3",
"symfony/polyfill-php80": "^1.15"
"php": ">=8.1"
},
"conflict": {
"symfony/security-core": "<5.3"
"symfony/security-core": "<5.4"
},
"require-dev": {
"symfony/console": "^5.3|^6.0",
"symfony/security-core": "^5.3|^6.0"
"symfony/console": "^5.4|^6.0|^7.0",
"symfony/security-core": "^5.4|^6.0|^7.0"
},
"type": "library",
"autoload": {
@@ -3695,7 +4109,7 @@
"password"
],
"support": {
"source": "https://github.com/symfony/password-hasher/tree/v5.4.45"
"source": "https://github.com/symfony/password-hasher/tree/v6.4.24"
},
"funding": [
{
@@ -3706,25 +4120,29 @@
"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": "2024-09-25T14:11:13+00:00"
"time": "2025-07-10T08:14:14+00:00"
},
{
"name": "symfony/polyfill-intl-grapheme",
"version": "v1.32.0",
"version": "v1.33.0",
"source": {
"type": "git",
"url": "https://github.com/symfony/polyfill-intl-grapheme.git",
"reference": "b9123926e3b7bc2f98c02ad54f6a4b02b91a8abe"
"reference": "380872130d3a5dd3ace2f4010d95125fde5d5c70"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/symfony/polyfill-intl-grapheme/zipball/b9123926e3b7bc2f98c02ad54f6a4b02b91a8abe",
"reference": "b9123926e3b7bc2f98c02ad54f6a4b02b91a8abe",
"url": "https://api.github.com/repos/symfony/polyfill-intl-grapheme/zipball/380872130d3a5dd3ace2f4010d95125fde5d5c70",
"reference": "380872130d3a5dd3ace2f4010d95125fde5d5c70",
"shasum": ""
},
"require": {
@@ -3773,7 +4191,7 @@
"shim"
],
"support": {
"source": "https://github.com/symfony/polyfill-intl-grapheme/tree/v1.32.0"
"source": "https://github.com/symfony/polyfill-intl-grapheme/tree/v1.33.0"
},
"funding": [
{
@@ -3784,25 +4202,29 @@
"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": "2024-09-09T11:45:10+00:00"
"time": "2025-06-27T09:58:17+00:00"
},
{
"name": "symfony/polyfill-intl-icu",
"version": "v1.32.0",
"version": "v1.33.0",
"source": {
"type": "git",
"url": "https://github.com/symfony/polyfill-intl-icu.git",
"reference": "763d2a91fea5681509ca01acbc1c5e450d127811"
"reference": "bfc8fa13dbaf21d69114b0efcd72ab700fb04d0c"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/symfony/polyfill-intl-icu/zipball/763d2a91fea5681509ca01acbc1c5e450d127811",
"reference": "763d2a91fea5681509ca01acbc1c5e450d127811",
"url": "https://api.github.com/repos/symfony/polyfill-intl-icu/zipball/bfc8fa13dbaf21d69114b0efcd72ab700fb04d0c",
"reference": "bfc8fa13dbaf21d69114b0efcd72ab700fb04d0c",
"shasum": ""
},
"require": {
@@ -3857,7 +4279,7 @@
"shim"
],
"support": {
"source": "https://github.com/symfony/polyfill-intl-icu/tree/v1.32.0"
"source": "https://github.com/symfony/polyfill-intl-icu/tree/v1.33.0"
},
"funding": [
{
@@ -3868,16 +4290,20 @@
"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": "2024-12-21T18:38:29+00:00"
"time": "2025-06-20T22:24:30+00:00"
},
{
"name": "symfony/polyfill-intl-normalizer",
"version": "v1.32.0",
"version": "v1.33.0",
"source": {
"type": "git",
"url": "https://github.com/symfony/polyfill-intl-normalizer.git",
@@ -3938,7 +4364,7 @@
"shim"
],
"support": {
"source": "https://github.com/symfony/polyfill-intl-normalizer/tree/v1.32.0"
"source": "https://github.com/symfony/polyfill-intl-normalizer/tree/v1.33.0"
},
"funding": [
{
@@ -3949,6 +4375,10 @@
"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"
@@ -3958,7 +4388,7 @@
},
{
"name": "symfony/polyfill-mbstring",
"version": "v1.32.0",
"version": "v1.33.0",
"source": {
"type": "git",
"url": "https://github.com/symfony/polyfill-mbstring.git",
@@ -4019,7 +4449,7 @@
"shim"
],
"support": {
"source": "https://github.com/symfony/polyfill-mbstring/tree/v1.32.0"
"source": "https://github.com/symfony/polyfill-mbstring/tree/v1.33.0"
},
"funding": [
{
@@ -4030,6 +4460,10 @@
"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"
@@ -4038,17 +4472,17 @@
"time": "2024-12-23T08:48:59+00:00"
},
{
"name": "symfony/polyfill-php73",
"version": "v1.32.0",
"name": "symfony/polyfill-php83",
"version": "v1.33.0",
"source": {
"type": "git",
"url": "https://github.com/symfony/polyfill-php73.git",
"reference": "0f68c03565dcaaf25a890667542e8bd75fe7e5bb"
"url": "https://github.com/symfony/polyfill-php83.git",
"reference": "17f6f9a6b1735c0f163024d959f700cfbc5155e5"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/symfony/polyfill-php73/zipball/0f68c03565dcaaf25a890667542e8bd75fe7e5bb",
"reference": "0f68c03565dcaaf25a890667542e8bd75fe7e5bb",
"url": "https://api.github.com/repos/symfony/polyfill-php83/zipball/17f6f9a6b1735c0f163024d959f700cfbc5155e5",
"reference": "17f6f9a6b1735c0f163024d959f700cfbc5155e5",
"shasum": ""
},
"require": {
@@ -4066,7 +4500,7 @@
"bootstrap.php"
],
"psr-4": {
"Symfony\\Polyfill\\Php73\\": ""
"Symfony\\Polyfill\\Php83\\": ""
},
"classmap": [
"Resources/stubs"
@@ -4086,7 +4520,7 @@
"homepage": "https://symfony.com/contributors"
}
],
"description": "Symfony polyfill backporting some PHP 7.3+ features to lower PHP versions",
"description": "Symfony polyfill backporting some PHP 8.3+ features to lower PHP versions",
"homepage": "https://symfony.com",
"keywords": [
"compatibility",
@@ -4095,7 +4529,7 @@
"shim"
],
"support": {
"source": "https://github.com/symfony/polyfill-php73/tree/v1.32.0"
"source": "https://github.com/symfony/polyfill-php83/tree/v1.33.0"
},
"funding": [
{
@@ -4107,83 +4541,7 @@
"type": "github"
},
{
"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.32.0",
"source": {
"type": "git",
"url": "https://github.com/symfony/polyfill-php80.git",
"reference": "0cc9dd0f17f61d8131e7df6b84bd344899fe2608"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/symfony/polyfill-php80/zipball/0cc9dd0f17f61d8131e7df6b84bd344899fe2608",
"reference": "0cc9dd0f17f61d8131e7df6b84bd344899fe2608",
"shasum": ""
},
"require": {
"php": ">=7.2"
},
"type": "library",
"extra": {
"thanks": {
"url": "https://github.com/symfony/polyfill",
"name": "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.32.0"
},
"funding": [
{
"url": "https://symfony.com/sponsor",
"type": "custom"
},
{
"url": "https://github.com/fabpot",
"url": "https://github.com/nicolas-grekas",
"type": "github"
},
{
@@ -4191,109 +4549,29 @@
"type": "tidelift"
}
],
"time": "2025-01-02T08:10:11+00:00"
},
{
"name": "symfony/polyfill-php81",
"version": "v1.32.0",
"source": {
"type": "git",
"url": "https://github.com/symfony/polyfill-php81.git",
"reference": "4a4cfc2d253c21a5ad0e53071df248ed48c6ce5c"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/symfony/polyfill-php81/zipball/4a4cfc2d253c21a5ad0e53071df248ed48c6ce5c",
"reference": "4a4cfc2d253c21a5ad0e53071df248ed48c6ce5c",
"shasum": ""
},
"require": {
"php": ">=7.2"
},
"type": "library",
"extra": {
"thanks": {
"url": "https://github.com/symfony/polyfill",
"name": "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.32.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"
"time": "2025-07-08T02:45:35+00:00"
},
{
"name": "symfony/property-access",
"version": "v5.4.45",
"version": "v6.4.25",
"source": {
"type": "git",
"url": "https://github.com/symfony/property-access.git",
"reference": "111e7ed617509f1a9139686055d234aad6e388e0"
"reference": "fedc771326d4978a7d3167fa009a509b06a2e168"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/symfony/property-access/zipball/111e7ed617509f1a9139686055d234aad6e388e0",
"reference": "111e7ed617509f1a9139686055d234aad6e388e0",
"url": "https://api.github.com/repos/symfony/property-access/zipball/fedc771326d4978a7d3167fa009a509b06a2e168",
"reference": "fedc771326d4978a7d3167fa009a509b06a2e168",
"shasum": ""
},
"require": {
"php": ">=7.2.5",
"symfony/deprecation-contracts": "^2.1|^3",
"symfony/polyfill-php80": "^1.16",
"symfony/property-info": "^5.2|^6.0"
"php": ">=8.1",
"symfony/deprecation-contracts": "^2.5|^3",
"symfony/property-info": "^5.4|^6.0|^7.0"
},
"require-dev": {
"symfony/cache": "^4.4|^5.0|^6.0"
},
"suggest": {
"psr/cache-implementation": "To cache access methods."
"symfony/cache": "^5.4|^6.0|^7.0"
},
"type": "library",
"autoload": {
@@ -4332,7 +4610,7 @@
"reflection"
],
"support": {
"source": "https://github.com/symfony/property-access/tree/v5.4.45"
"source": "https://github.com/symfony/property-access/tree/v6.4.25"
},
"funding": [
{
@@ -4343,51 +4621,50 @@
"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": "2024-09-25T14:11:13+00:00"
"time": "2025-08-12T15:42:57+00:00"
},
{
"name": "symfony/property-info",
"version": "v5.4.48",
"version": "v6.4.24",
"source": {
"type": "git",
"url": "https://github.com/symfony/property-info.git",
"reference": "a0396295ad585f95fccd690bc6a281e5bd303902"
"reference": "1056ae3621eeddd78d7c5ec074f1c1784324eec6"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/symfony/property-info/zipball/a0396295ad585f95fccd690bc6a281e5bd303902",
"reference": "a0396295ad585f95fccd690bc6a281e5bd303902",
"url": "https://api.github.com/repos/symfony/property-info/zipball/1056ae3621eeddd78d7c5ec074f1c1784324eec6",
"reference": "1056ae3621eeddd78d7c5ec074f1c1784324eec6",
"shasum": ""
},
"require": {
"php": ">=7.2.5",
"symfony/deprecation-contracts": "^2.1|^3",
"symfony/polyfill-php80": "^1.16",
"symfony/string": "^5.1|^6.0"
"php": ">=8.1",
"symfony/string": "^5.4|^6.0|^7.0"
},
"conflict": {
"phpdocumentor/reflection-docblock": "<3.2.2",
"phpdocumentor/type-resolver": "<1.4.0",
"symfony/dependency-injection": "<4.4"
"doctrine/annotations": "<1.12",
"phpdocumentor/reflection-docblock": "<5.2",
"phpdocumentor/type-resolver": "<1.5.1",
"symfony/cache": "<5.4",
"symfony/dependency-injection": "<5.4|>=6.0,<6.4",
"symfony/serializer": "<5.4"
},
"require-dev": {
"doctrine/annotations": "^1.10.4|^2",
"phpdocumentor/reflection-docblock": "^3.0|^4.0|^5.0",
"doctrine/annotations": "^1.12|^2",
"phpdocumentor/reflection-docblock": "^5.2",
"phpstan/phpdoc-parser": "^1.0|^2.0",
"symfony/cache": "^4.4|^5.0|^6.0",
"symfony/dependency-injection": "^4.4|^5.0|^6.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"
"symfony/cache": "^5.4|^6.0|^7.0",
"symfony/dependency-injection": "^5.4|^6.0|^7.0",
"symfony/serializer": "^5.4|^6.4|^7.0"
},
"type": "library",
"autoload": {
@@ -4423,7 +4700,7 @@
"validator"
],
"support": {
"source": "https://github.com/symfony/property-info/tree/v5.4.48"
"source": "https://github.com/symfony/property-info/tree/v6.4.24"
},
"funding": [
{
@@ -4434,52 +4711,51 @@
"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": "2024-11-25T16:14:41+00:00"
"time": "2025-07-14T16:38:25+00:00"
},
{
"name": "symfony/psr-http-message-bridge",
"version": "v2.3.1",
"version": "v6.4.24",
"source": {
"type": "git",
"url": "https://github.com/symfony/psr-http-message-bridge.git",
"reference": "581ca6067eb62640de5ff08ee1ba6850a0ee472e"
"reference": "6954b4e8aef0e5d46f8558c90edcf27bb01b4724"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/symfony/psr-http-message-bridge/zipball/581ca6067eb62640de5ff08ee1ba6850a0ee472e",
"reference": "581ca6067eb62640de5ff08ee1ba6850a0ee472e",
"url": "https://api.github.com/repos/symfony/psr-http-message-bridge/zipball/6954b4e8aef0e5d46f8558c90edcf27bb01b4724",
"reference": "6954b4e8aef0e5d46f8558c90edcf27bb01b4724",
"shasum": ""
},
"require": {
"php": ">=7.2.5",
"psr/http-message": "^1.0 || ^2.0",
"symfony/deprecation-contracts": "^2.5 || ^3.0",
"symfony/http-foundation": "^5.4 || ^6.0"
"php": ">=8.1",
"psr/http-message": "^1.0|^2.0",
"symfony/http-foundation": "^5.4|^6.0|^7.0"
},
"conflict": {
"php-http/discovery": "<1.15",
"symfony/http-kernel": "<6.2"
},
"require-dev": {
"nyholm/psr7": "^1.1",
"psr/log": "^1.1 || ^2 || ^3",
"symfony/browser-kit": "^5.4 || ^6.0",
"symfony/config": "^5.4 || ^6.0",
"symfony/event-dispatcher": "^5.4 || ^6.0",
"symfony/framework-bundle": "^5.4 || ^6.0",
"symfony/http-kernel": "^5.4 || ^6.0",
"symfony/phpunit-bridge": "^6.2"
},
"suggest": {
"nyholm/psr7": "For a super lightweight PSR-7/17 implementation"
"php-http/discovery": "^1.15",
"psr/log": "^1.1.4|^2|^3",
"symfony/browser-kit": "^5.4|^6.0|^7.0",
"symfony/config": "^5.4|^6.0|^7.0",
"symfony/event-dispatcher": "^5.4|^6.0|^7.0",
"symfony/framework-bundle": "^6.2|^7.0",
"symfony/http-kernel": "^6.2|^7.0"
},
"type": "symfony-bridge",
"extra": {
"branch-alias": {
"dev-main": "2.3-dev"
}
},
"autoload": {
"psr-4": {
"Symfony\\Bridge\\PsrHttpMessage\\": ""
@@ -4499,11 +4775,11 @@
},
{
"name": "Symfony Community",
"homepage": "http://symfony.com/contributors"
"homepage": "https://symfony.com/contributors"
}
],
"description": "PSR HTTP message bridge",
"homepage": "http://symfony.com",
"homepage": "https://symfony.com",
"keywords": [
"http",
"http-message",
@@ -4511,8 +4787,7 @@
"psr-7"
],
"support": {
"issues": "https://github.com/symfony/psr-http-message-bridge/issues",
"source": "https://github.com/symfony/psr-http-message-bridge/tree/v2.3.1"
"source": "https://github.com/symfony/psr-http-message-bridge/tree/v6.4.24"
},
"funding": [
{
@@ -4523,34 +4798,39 @@
"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": "2023-07-26T11:53:26+00:00"
"time": "2025-07-10T08:14:14+00:00"
},
{
"name": "symfony/rate-limiter",
"version": "v5.4.47",
"version": "v6.4.24",
"source": {
"type": "git",
"url": "https://github.com/symfony/rate-limiter.git",
"reference": "c902bf796ca6c9656c3cc8185b53afb9acbb7c72"
"reference": "15a9a10fd0f060243c88ce98d5c29e9cc4b886e7"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/symfony/rate-limiter/zipball/c902bf796ca6c9656c3cc8185b53afb9acbb7c72",
"reference": "c902bf796ca6c9656c3cc8185b53afb9acbb7c72",
"url": "https://api.github.com/repos/symfony/rate-limiter/zipball/15a9a10fd0f060243c88ce98d5c29e9cc4b886e7",
"reference": "15a9a10fd0f060243c88ce98d5c29e9cc4b886e7",
"shasum": ""
},
"require": {
"php": ">=7.2.5",
"symfony/lock": "^5.2|^6.0",
"symfony/options-resolver": "^5.1|^6.0"
"php": ">=8.1",
"symfony/deprecation-contracts": "^2.5|^3",
"symfony/options-resolver": "^5.4|^6.0|^7.0"
},
"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",
"autoload": {
@@ -4582,7 +4862,7 @@
"rate-limiter"
],
"support": {
"source": "https://github.com/symfony/rate-limiter/tree/v5.4.47"
"source": "https://github.com/symfony/rate-limiter/tree/v6.4.24"
},
"funding": [
{
@@ -4593,52 +4873,49 @@
"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": "2024-11-07T11:51:21+00:00"
"time": "2025-07-10T08:14:14+00:00"
},
{
"name": "symfony/routing",
"version": "v5.4.48",
"version": "v6.4.24",
"source": {
"type": "git",
"url": "https://github.com/symfony/routing.git",
"reference": "dd08c19879a9b37ff14fd30dcbdf99a4cf045db1"
"reference": "e4f94e625c8e6f910aa004a0042f7b2d398278f5"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/symfony/routing/zipball/dd08c19879a9b37ff14fd30dcbdf99a4cf045db1",
"reference": "dd08c19879a9b37ff14fd30dcbdf99a4cf045db1",
"url": "https://api.github.com/repos/symfony/routing/zipball/e4f94e625c8e6f910aa004a0042f7b2d398278f5",
"reference": "e4f94e625c8e6f910aa004a0042f7b2d398278f5",
"shasum": ""
},
"require": {
"php": ">=7.2.5",
"symfony/deprecation-contracts": "^2.1|^3",
"symfony/polyfill-php80": "^1.16"
"php": ">=8.1",
"symfony/deprecation-contracts": "^2.5|^3"
},
"conflict": {
"doctrine/annotations": "<1.12",
"symfony/config": "<5.3",
"symfony/dependency-injection": "<4.4",
"symfony/yaml": "<4.4"
"symfony/config": "<6.2",
"symfony/dependency-injection": "<5.4",
"symfony/yaml": "<5.4"
},
"require-dev": {
"doctrine/annotations": "^1.12|^2",
"psr/log": "^1|^2|^3",
"symfony/config": "^5.3|^6.0",
"symfony/dependency-injection": "^4.4|^5.0|^6.0",
"symfony/expression-language": "^4.4|^5.0|^6.0",
"symfony/http-foundation": "^4.4|^5.0|^6.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"
"symfony/config": "^6.2|^7.0",
"symfony/dependency-injection": "^5.4|^6.0|^7.0",
"symfony/expression-language": "^5.4|^6.0|^7.0",
"symfony/http-foundation": "^5.4|^6.0|^7.0",
"symfony/yaml": "^5.4|^6.0|^7.0"
},
"type": "library",
"autoload": {
@@ -4672,7 +4949,7 @@
"url"
],
"support": {
"source": "https://github.com/symfony/routing/tree/v5.4.48"
"source": "https://github.com/symfony/routing/tree/v6.4.24"
},
"funding": [
{
@@ -4683,41 +4960,44 @@
"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": "2024-11-12T18:20:21+00:00"
"time": "2025-07-15T08:46:37+00:00"
},
{
"name": "symfony/runtime",
"version": "v5.4.46",
"version": "v6.4.24",
"source": {
"type": "git",
"url": "https://github.com/symfony/runtime.git",
"reference": "242b4d773c004fa258e1b412f3f49fc2ac78353a"
"reference": "c1cc6721646f546627236c57f835272806087337"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/symfony/runtime/zipball/242b4d773c004fa258e1b412f3f49fc2ac78353a",
"reference": "242b4d773c004fa258e1b412f3f49fc2ac78353a",
"url": "https://api.github.com/repos/symfony/runtime/zipball/c1cc6721646f546627236c57f835272806087337",
"reference": "c1cc6721646f546627236c57f835272806087337",
"shasum": ""
},
"require": {
"composer-plugin-api": "^1.0|^2.0",
"php": ">=7.2.5",
"symfony/polyfill-php80": "^1.15"
"php": ">=8.1"
},
"conflict": {
"symfony/dotenv": "<5.1"
"symfony/dotenv": "<5.4"
},
"require-dev": {
"composer/composer": "^1.0.2|^2.0",
"symfony/console": "^4.4.30|^5.4.9|^6.0.9",
"symfony/dotenv": "^5.1|^6.0",
"symfony/http-foundation": "^4.4.30|^5.3.7|^6.0",
"symfony/http-kernel": "^4.4.30|^5.3.7|^6.0"
"symfony/console": "^5.4.9|^6.0.9|^7.0",
"symfony/dotenv": "^5.4|^6.0|^7.0",
"symfony/http-foundation": "^5.4|^6.0|^7.0",
"symfony/http-kernel": "^5.4|^6.0|^7.0"
},
"type": "composer-plugin",
"extra": {
@@ -4752,7 +5032,7 @@
"runtime"
],
"support": {
"source": "https://github.com/symfony/runtime/tree/v5.4.46"
"source": "https://github.com/symfony/runtime/tree/v6.4.24"
},
"funding": [
{
@@ -4763,71 +5043,84 @@
"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": "2024-11-06T08:58:41+00:00"
"time": "2025-07-10T08:14:14+00:00"
},
{
"name": "symfony/security-bundle",
"version": "v5.4.45",
"version": "v6.4.25",
"source": {
"type": "git",
"url": "https://github.com/symfony/security-bundle.git",
"reference": "d6081d1b9118f944df90bb77444a8617eba01542"
"reference": "9780abdfc2011f0998f3cb6c7c88ad8453bd34ef"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/symfony/security-bundle/zipball/d6081d1b9118f944df90bb77444a8617eba01542",
"reference": "d6081d1b9118f944df90bb77444a8617eba01542",
"url": "https://api.github.com/repos/symfony/security-bundle/zipball/9780abdfc2011f0998f3cb6c7c88ad8453bd34ef",
"reference": "9780abdfc2011f0998f3cb6c7c88ad8453bd34ef",
"shasum": ""
},
"require": {
"composer-runtime-api": ">=2.1",
"ext-xml": "*",
"php": ">=7.2.5",
"symfony/config": "^4.4|^5.0|^6.0",
"symfony/dependency-injection": "^5.4.43|^6.4.11",
"symfony/deprecation-contracts": "^2.1|^3",
"symfony/event-dispatcher": "^5.1|^6.0",
"symfony/http-foundation": "^5.3|^6.0",
"symfony/http-kernel": "^5.3|^6.0",
"symfony/password-hasher": "^5.3|^6.0",
"symfony/polyfill-php80": "^1.16",
"symfony/security-core": "^5.4|^6.0",
"symfony/security-csrf": "^4.4|^5.0|^6.0",
"symfony/security-guard": "^5.3",
"symfony/security-http": "^5.4.30|^6.3.6",
"symfony/service-contracts": "^1.10|^2|^3"
"php": ">=8.1",
"symfony/clock": "^6.3|^7.0",
"symfony/config": "^6.1|^7.0",
"symfony/dependency-injection": "^6.4.11|^7.1.4",
"symfony/deprecation-contracts": "^2.5|^3",
"symfony/event-dispatcher": "^5.4|^6.0|^7.0",
"symfony/http-foundation": "^6.2|^7.0",
"symfony/http-kernel": "^6.2",
"symfony/password-hasher": "^5.4|^6.0|^7.0",
"symfony/security-core": "^6.2|^7.0",
"symfony/security-csrf": "^5.4|^6.0|^7.0",
"symfony/security-http": "^6.3.6|^7.0",
"symfony/service-contracts": "^2.5|^3"
},
"conflict": {
"symfony/browser-kit": "<4.4",
"symfony/console": "<4.4",
"symfony/framework-bundle": "<4.4",
"symfony/ldap": "<5.1",
"symfony/twig-bundle": "<4.4"
"symfony/browser-kit": "<5.4",
"symfony/console": "<5.4",
"symfony/framework-bundle": "<6.4",
"symfony/http-client": "<5.4",
"symfony/ldap": "<5.4",
"symfony/serializer": "<6.4",
"symfony/twig-bundle": "<5.4",
"symfony/validator": "<6.4"
},
"require-dev": {
"doctrine/annotations": "^1.10.4|^2",
"symfony/asset": "^4.4|^5.0|^6.0",
"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/dom-crawler": "^4.4|^5.0|^6.0",
"symfony/expression-language": "^4.4|^5.0|^6.0",
"symfony/form": "^4.4|^5.0|^6.0",
"symfony/framework-bundle": "^5.3|^6.0",
"symfony/ldap": "^5.3|^6.0",
"symfony/process": "^4.4|^5.0|^6.0",
"symfony/rate-limiter": "^5.2|^6.0",
"symfony/serializer": "^4.4|^5.0|^6.0",
"symfony/translation": "^4.4|^5.0|^6.0",
"symfony/twig-bridge": "^4.4|^5.0|^6.0",
"symfony/twig-bundle": "^4.4|^5.0|^6.0",
"symfony/validator": "^4.4|^5.0|^6.0",
"symfony/yaml": "^4.4|^5.0|^6.0",
"twig/twig": "^2.13|^3.0.4"
"symfony/asset": "^5.4|^6.0|^7.0",
"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/dom-crawler": "^5.4|^6.0|^7.0",
"symfony/expression-language": "^5.4|^6.0|^7.0",
"symfony/form": "^5.4|^6.0|^7.0",
"symfony/framework-bundle": "^6.4|^7.0",
"symfony/http-client": "^5.4|^6.0|^7.0",
"symfony/ldap": "^5.4|^6.0|^7.0",
"symfony/process": "^5.4|^6.0|^7.0",
"symfony/rate-limiter": "^5.4|^6.0|^7.0",
"symfony/serializer": "^6.4|^7.0",
"symfony/translation": "^5.4|^6.0|^7.0",
"symfony/twig-bridge": "^5.4|^6.0|^7.0",
"symfony/twig-bundle": "^5.4|^6.0|^7.0",
"symfony/validator": "^6.4|^7.0",
"symfony/yaml": "^5.4|^6.0|^7.0",
"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",
"autoload": {
@@ -4855,7 +5148,7 @@
"description": "Provides a tight integration of the Security component into the Symfony full-stack framework",
"homepage": "https://symfony.com",
"support": {
"source": "https://github.com/symfony/security-bundle/tree/v5.4.45"
"source": "https://github.com/symfony/security-bundle/tree/v6.4.25"
},
"funding": [
{
@@ -4866,62 +5159,58 @@
"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": "2024-09-25T14:11:13+00:00"
"time": "2025-08-05T13:23:39+00:00"
},
{
"name": "symfony/security-core",
"version": "v5.4.48",
"version": "v6.4.25",
"source": {
"type": "git",
"url": "https://github.com/symfony/security-core.git",
"reference": "cca947b1a74bdbc21c4d6288a4abb938d9a7eaba"
"reference": "b70b1ac76c89eb76faed5721b0dcad3b61a1d747"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/symfony/security-core/zipball/cca947b1a74bdbc21c4d6288a4abb938d9a7eaba",
"reference": "cca947b1a74bdbc21c4d6288a4abb938d9a7eaba",
"url": "https://api.github.com/repos/symfony/security-core/zipball/b70b1ac76c89eb76faed5721b0dcad3b61a1d747",
"reference": "b70b1ac76c89eb76faed5721b0dcad3b61a1d747",
"shasum": ""
},
"require": {
"php": ">=7.2.5",
"symfony/deprecation-contracts": "^2.1|^3",
"symfony/event-dispatcher-contracts": "^1.1|^2|^3",
"symfony/password-hasher": "^5.3|^6.0",
"symfony/polyfill-php80": "^1.16",
"symfony/service-contracts": "^1.1.6|^2|^3"
"php": ">=8.1",
"symfony/deprecation-contracts": "^2.5|^3",
"symfony/event-dispatcher-contracts": "^2.5|^3",
"symfony/password-hasher": "^5.4|^6.0|^7.0",
"symfony/service-contracts": "^2.5|^3"
},
"conflict": {
"symfony/event-dispatcher": "<4.4",
"symfony/http-foundation": "<5.3",
"symfony/ldap": "<4.4",
"symfony/security-guard": "<4.4",
"symfony/translation": "<5.4.35|>=6.0,<6.3.12|>=6.4,<6.4.3",
"symfony/validator": "<5.2"
"symfony/event-dispatcher": "<5.4",
"symfony/http-foundation": "<5.4",
"symfony/ldap": "<5.4",
"symfony/security-guard": "<5.4",
"symfony/translation": "<5.4.35|>=6.0,<6.3.12|>=6.4,<6.4.3|>=7.0,<7.0.3",
"symfony/validator": "<5.4"
},
"require-dev": {
"psr/cache": "^1.0|^2.0|^3.0",
"psr/container": "^1.0|^2.0",
"psr/container": "^1.1|^2.0",
"psr/log": "^1|^2|^3",
"symfony/cache": "^4.4|^5.0|^6.0",
"symfony/event-dispatcher": "^4.4|^5.0|^6.0",
"symfony/expression-language": "^4.4|^5.0|^6.0",
"symfony/http-foundation": "^5.3|^6.0",
"symfony/ldap": "^4.4|^5.0|^6.0",
"symfony/translation": "^5.4.35|~6.3.12|^6.4.3",
"symfony/validator": "^5.2|^6.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"
"symfony/cache": "^5.4|^6.0|^7.0",
"symfony/event-dispatcher": "^5.4|^6.0|^7.0",
"symfony/expression-language": "^5.4|^6.0|^7.0",
"symfony/http-foundation": "^5.4|^6.0|^7.0",
"symfony/ldap": "^5.4|^6.0|^7.0",
"symfony/string": "^5.4|^6.0|^7.0",
"symfony/translation": "^5.4.35|~6.3.12|^6.4.3|^7.0.3",
"symfony/validator": "^6.4|^7.0"
},
"type": "library",
"autoload": {
@@ -4949,7 +5238,7 @@
"description": "Symfony Security Component - Core Library",
"homepage": "https://symfony.com",
"support": {
"source": "https://github.com/symfony/security-core/tree/v5.4.48"
"source": "https://github.com/symfony/security-core/tree/v6.4.25"
},
"funding": [
{
@@ -4960,41 +5249,40 @@
"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": "2024-11-27T08:58:20+00:00"
"time": "2025-08-21T19:23:36+00:00"
},
{
"name": "symfony/security-csrf",
"version": "v5.4.45",
"version": "v6.4.24",
"source": {
"type": "git",
"url": "https://github.com/symfony/security-csrf.git",
"reference": "28dcafc3220f12264bb2aabe2389a2163458c1f4"
"reference": "9a1efc8c10b86bcedc9233affd10c716b54ca1b7"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/symfony/security-csrf/zipball/28dcafc3220f12264bb2aabe2389a2163458c1f4",
"reference": "28dcafc3220f12264bb2aabe2389a2163458c1f4",
"url": "https://api.github.com/repos/symfony/security-csrf/zipball/9a1efc8c10b86bcedc9233affd10c716b54ca1b7",
"reference": "9a1efc8c10b86bcedc9233affd10c716b54ca1b7",
"shasum": ""
},
"require": {
"php": ">=7.2.5",
"symfony/deprecation-contracts": "^2.1|^3",
"symfony/polyfill-php80": "^1.16",
"symfony/security-core": "^4.4|^5.0|^6.0"
"php": ">=8.1",
"symfony/security-core": "^5.4|^6.0|^7.0"
},
"conflict": {
"symfony/http-foundation": "<5.3"
"symfony/http-foundation": "<5.4"
},
"require-dev": {
"symfony/http-foundation": "^5.3|^6.0"
},
"suggest": {
"symfony/http-foundation": "For using the class SessionTokenStorage."
"symfony/http-foundation": "^5.4|^6.0|^7.0"
},
"type": "library",
"autoload": {
@@ -5022,7 +5310,7 @@
"description": "Symfony Security Component - CSRF Library",
"homepage": "https://symfony.com",
"support": {
"source": "https://github.com/symfony/security-csrf/tree/v5.4.45"
"source": "https://github.com/symfony/security-csrf/tree/v6.4.24"
},
"funding": [
{
@@ -5034,71 +5322,7 @@
"type": "github"
},
{
"url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
"type": "tidelift"
}
],
"time": "2024-09-25T14:11:13+00:00"
},
{
"name": "symfony/security-guard",
"version": "v5.4.45",
"source": {
"type": "git",
"url": "https://github.com/symfony/security-guard.git",
"reference": "f3da3dbec38aaedaf287ffeb4e3a90994af37faa"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/symfony/security-guard/zipball/f3da3dbec38aaedaf287ffeb4e3a90994af37faa",
"reference": "f3da3dbec38aaedaf287ffeb4e3a90994af37faa",
"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.45"
},
"funding": [
{
"url": "https://symfony.com/sponsor",
"type": "custom"
},
{
"url": "https://github.com/fabpot",
"url": "https://github.com/nicolas-grekas",
"type": "github"
},
{
@@ -5106,49 +5330,51 @@
"type": "tidelift"
}
],
"time": "2024-09-25T14:11:13+00:00"
"time": "2025-07-10T08:14:14+00:00"
},
{
"name": "symfony/security-http",
"version": "v5.4.47",
"version": "v6.4.25",
"source": {
"type": "git",
"url": "https://github.com/symfony/security-http.git",
"reference": "cde02b002e0447075430e6a84482e38f2fd9268d"
"reference": "878667b04451f2e17b4161237379e5d062575181"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/symfony/security-http/zipball/cde02b002e0447075430e6a84482e38f2fd9268d",
"reference": "cde02b002e0447075430e6a84482e38f2fd9268d",
"url": "https://api.github.com/repos/symfony/security-http/zipball/878667b04451f2e17b4161237379e5d062575181",
"reference": "878667b04451f2e17b4161237379e5d062575181",
"shasum": ""
},
"require": {
"php": ">=7.2.5",
"symfony/deprecation-contracts": "^2.1|^3",
"symfony/http-foundation": "^5.3|^6.0",
"symfony/http-kernel": "^5.3|^6.0",
"php": ">=8.1",
"symfony/deprecation-contracts": "^2.5|^3",
"symfony/http-foundation": "^6.2|^7.0",
"symfony/http-kernel": "^6.3|^7.0",
"symfony/polyfill-mbstring": "~1.0",
"symfony/polyfill-php80": "^1.16",
"symfony/property-access": "^4.4|^5.0|^6.0",
"symfony/security-core": "^5.4.19|~6.0.19|~6.1.11|^6.2.5",
"symfony/service-contracts": "^1.10|^2|^3"
"symfony/property-access": "^5.4|^6.0|^7.0",
"symfony/security-core": "^6.4|^7.0",
"symfony/service-contracts": "^2.5|^3"
},
"conflict": {
"symfony/event-dispatcher": "<4.3",
"symfony/security-bundle": "<5.3",
"symfony/security-csrf": "<4.4"
"symfony/clock": "<6.3",
"symfony/event-dispatcher": "<5.4.9|>=6,<6.0.9",
"symfony/http-client-contracts": "<3.0",
"symfony/security-bundle": "<5.4",
"symfony/security-csrf": "<5.4"
},
"require-dev": {
"psr/log": "^1|^2|^3",
"symfony/cache": "^4.4|^5.0|^6.0",
"symfony/rate-limiter": "^5.2|^6.0",
"symfony/routing": "^4.4|^5.0|^6.0",
"symfony/security-csrf": "^4.4|^5.0|^6.0",
"symfony/translation": "^4.4|^5.0|^6.0"
},
"suggest": {
"symfony/routing": "For using the HttpUtils class to create sub-requests, redirect the user, and match URLs",
"symfony/security-csrf": "For using tokens to protect authentication/logout attempts"
"symfony/cache": "^5.4|^6.0|^7.0",
"symfony/clock": "^6.3|^7.0",
"symfony/expression-language": "^5.4|^6.0|^7.0",
"symfony/http-client-contracts": "^3.0",
"symfony/rate-limiter": "^5.4|^6.0|^7.0",
"symfony/routing": "^5.4|^6.0|^7.0",
"symfony/security-csrf": "^5.4|^6.0|^7.0",
"symfony/translation": "^5.4|^6.0|^7.0",
"web-token/jwt-checker": "^3.1",
"web-token/jwt-signature-algorithm-ecdsa": "^3.1"
},
"type": "library",
"autoload": {
@@ -5176,7 +5402,7 @@
"description": "Symfony Security Component - HTTP Integration",
"homepage": "https://symfony.com",
"support": {
"source": "https://github.com/symfony/security-http/tree/v5.4.47"
"source": "https://github.com/symfony/security-http/tree/v6.4.25"
},
"funding": [
{
@@ -5187,38 +5413,39 @@
"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": "2024-11-07T14:12:41+00:00"
"time": "2025-08-21T13:09:57+00:00"
},
{
"name": "symfony/service-contracts",
"version": "v2.5.4",
"version": "v3.6.0",
"source": {
"type": "git",
"url": "https://github.com/symfony/service-contracts.git",
"reference": "f37b419f7aea2e9abf10abd261832cace12e3300"
"reference": "f021b05a130d35510bd6b25fe9053c2a8a15d5d4"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/symfony/service-contracts/zipball/f37b419f7aea2e9abf10abd261832cace12e3300",
"reference": "f37b419f7aea2e9abf10abd261832cace12e3300",
"url": "https://api.github.com/repos/symfony/service-contracts/zipball/f021b05a130d35510bd6b25fe9053c2a8a15d5d4",
"reference": "f021b05a130d35510bd6b25fe9053c2a8a15d5d4",
"shasum": ""
},
"require": {
"php": ">=7.2.5",
"psr/container": "^1.1",
"symfony/deprecation-contracts": "^2.1|^3"
"php": ">=8.1",
"psr/container": "^1.1|^2.0",
"symfony/deprecation-contracts": "^2.5|^3"
},
"conflict": {
"ext-psr": "<1.1|>=2"
},
"suggest": {
"symfony/service-implementation": ""
},
"type": "library",
"extra": {
"thanks": {
@@ -5226,13 +5453,16 @@
"name": "symfony/contracts"
},
"branch-alias": {
"dev-main": "2.5-dev"
"dev-main": "3.6-dev"
}
},
"autoload": {
"psr-4": {
"Symfony\\Contracts\\Service\\": ""
}
},
"exclude-from-classmap": [
"/Test/"
]
},
"notification-url": "https://packagist.org/downloads/",
"license": [
@@ -5259,7 +5489,7 @@
"standards"
],
"support": {
"source": "https://github.com/symfony/service-contracts/tree/v2.5.4"
"source": "https://github.com/symfony/service-contracts/tree/v3.6.0"
},
"funding": [
{
@@ -5275,38 +5505,38 @@
"type": "tidelift"
}
],
"time": "2024-09-25T14:11:13+00:00"
"time": "2025-04-25T09:37:31+00:00"
},
{
"name": "symfony/string",
"version": "v5.4.47",
"version": "v6.4.25",
"source": {
"type": "git",
"url": "https://github.com/symfony/string.git",
"reference": "136ca7d72f72b599f2631aca474a4f8e26719799"
"reference": "7cdec7edfaf2cdd9c18901e35bcf9653d6209ff1"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/symfony/string/zipball/136ca7d72f72b599f2631aca474a4f8e26719799",
"reference": "136ca7d72f72b599f2631aca474a4f8e26719799",
"url": "https://api.github.com/repos/symfony/string/zipball/7cdec7edfaf2cdd9c18901e35bcf9653d6209ff1",
"reference": "7cdec7edfaf2cdd9c18901e35bcf9653d6209ff1",
"shasum": ""
},
"require": {
"php": ">=7.2.5",
"php": ">=8.1",
"symfony/polyfill-ctype": "~1.8",
"symfony/polyfill-intl-grapheme": "~1.0",
"symfony/polyfill-intl-normalizer": "~1.0",
"symfony/polyfill-mbstring": "~1.0",
"symfony/polyfill-php80": "~1.15"
"symfony/polyfill-mbstring": "~1.0"
},
"conflict": {
"symfony/translation-contracts": ">=3.0"
"symfony/translation-contracts": "<2.5"
},
"require-dev": {
"symfony/error-handler": "^4.4|^5.0|^6.0",
"symfony/http-client": "^4.4|^5.0|^6.0",
"symfony/translation-contracts": "^1.1|^2",
"symfony/var-exporter": "^4.4|^5.0|^6.0"
"symfony/error-handler": "^5.4|^6.0|^7.0",
"symfony/http-client": "^5.4|^6.0|^7.0",
"symfony/intl": "^6.2|^7.0",
"symfony/translation-contracts": "^2.5|^3.0",
"symfony/var-exporter": "^5.4|^6.0|^7.0"
},
"type": "library",
"autoload": {
@@ -5345,7 +5575,7 @@
"utf8"
],
"support": {
"source": "https://github.com/symfony/string/tree/v5.4.47"
"source": "https://github.com/symfony/string/tree/v6.4.25"
},
"funding": [
{
@@ -5356,62 +5586,64 @@
"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": "2024-11-10T20:33:58+00:00"
"time": "2025-08-22T12:33:20+00:00"
},
{
"name": "symfony/translation",
"version": "v5.4.45",
"version": "v6.4.24",
"source": {
"type": "git",
"url": "https://github.com/symfony/translation.git",
"reference": "98f26acc99341ca4bab345fb14d7b1d7cb825bed"
"reference": "300b72643e89de0734d99a9e3f8494a3ef6936e1"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/symfony/translation/zipball/98f26acc99341ca4bab345fb14d7b1d7cb825bed",
"reference": "98f26acc99341ca4bab345fb14d7b1d7cb825bed",
"url": "https://api.github.com/repos/symfony/translation/zipball/300b72643e89de0734d99a9e3f8494a3ef6936e1",
"reference": "300b72643e89de0734d99a9e3f8494a3ef6936e1",
"shasum": ""
},
"require": {
"php": ">=7.2.5",
"symfony/deprecation-contracts": "^2.1|^3",
"php": ">=8.1",
"symfony/deprecation-contracts": "^2.5|^3",
"symfony/polyfill-mbstring": "~1.0",
"symfony/polyfill-php80": "^1.16",
"symfony/translation-contracts": "^2.3"
"symfony/translation-contracts": "^2.5|^3.0"
},
"conflict": {
"symfony/config": "<4.4",
"symfony/console": "<5.3",
"symfony/dependency-injection": "<5.0",
"symfony/http-kernel": "<5.0",
"symfony/twig-bundle": "<5.0",
"symfony/yaml": "<4.4"
"symfony/config": "<5.4",
"symfony/console": "<5.4",
"symfony/dependency-injection": "<5.4",
"symfony/http-client-contracts": "<2.5",
"symfony/http-kernel": "<5.4",
"symfony/service-contracts": "<2.5",
"symfony/twig-bundle": "<5.4",
"symfony/yaml": "<5.4"
},
"provide": {
"symfony/translation-implementation": "2.3"
"symfony/translation-implementation": "2.3|3.0"
},
"require-dev": {
"nikic/php-parser": "^4.18|^5.0",
"psr/log": "^1|^2|^3",
"symfony/config": "^4.4|^5.0|^6.0",
"symfony/console": "^5.4|^6.0",
"symfony/dependency-injection": "^5.0|^6.0",
"symfony/finder": "^4.4|^5.0|^6.0",
"symfony/http-client-contracts": "^1.1|^2.0|^3.0",
"symfony/http-kernel": "^5.0|^6.0",
"symfony/intl": "^4.4|^5.0|^6.0",
"symfony/config": "^5.4|^6.0|^7.0",
"symfony/console": "^5.4|^6.0|^7.0",
"symfony/dependency-injection": "^5.4|^6.0|^7.0",
"symfony/finder": "^5.4|^6.0|^7.0",
"symfony/http-client-contracts": "^2.5|^3.0",
"symfony/http-kernel": "^5.4|^6.0|^7.0",
"symfony/intl": "^5.4|^6.0|^7.0",
"symfony/polyfill-intl-icu": "^1.21",
"symfony/service-contracts": "^1.1.2|^2|^3",
"symfony/yaml": "^4.4|^5.0|^6.0"
},
"suggest": {
"psr/log-implementation": "To use logging capability in translator",
"symfony/config": "",
"symfony/yaml": ""
"symfony/routing": "^5.4|^6.0|^7.0",
"symfony/service-contracts": "^2.5|^3",
"symfony/yaml": "^5.4|^6.0|^7.0"
},
"type": "library",
"autoload": {
@@ -5442,7 +5674,7 @@
"description": "Provides tools to internationalize your application",
"homepage": "https://symfony.com",
"support": {
"source": "https://github.com/symfony/translation/tree/v5.4.45"
"source": "https://github.com/symfony/translation/tree/v6.4.24"
},
"funding": [
{
@@ -5453,32 +5685,33 @@
"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": "2024-09-25T14:11:13+00:00"
"time": "2025-07-30T17:30:48+00:00"
},
{
"name": "symfony/translation-contracts",
"version": "v2.5.4",
"version": "v3.6.0",
"source": {
"type": "git",
"url": "https://github.com/symfony/translation-contracts.git",
"reference": "450d4172653f38818657022252f9d81be89ee9a8"
"reference": "df210c7a2573f1913b2d17cc95f90f53a73d8f7d"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/symfony/translation-contracts/zipball/450d4172653f38818657022252f9d81be89ee9a8",
"reference": "450d4172653f38818657022252f9d81be89ee9a8",
"url": "https://api.github.com/repos/symfony/translation-contracts/zipball/df210c7a2573f1913b2d17cc95f90f53a73d8f7d",
"reference": "df210c7a2573f1913b2d17cc95f90f53a73d8f7d",
"shasum": ""
},
"require": {
"php": ">=7.2.5"
},
"suggest": {
"symfony/translation-implementation": ""
"php": ">=8.1"
},
"type": "library",
"extra": {
@@ -5487,13 +5720,16 @@
"name": "symfony/contracts"
},
"branch-alias": {
"dev-main": "2.5-dev"
"dev-main": "3.6-dev"
}
},
"autoload": {
"psr-4": {
"Symfony\\Contracts\\Translation\\": ""
}
},
"exclude-from-classmap": [
"/Test/"
]
},
"notification-url": "https://packagist.org/downloads/",
"license": [
@@ -5520,7 +5756,7 @@
"standards"
],
"support": {
"source": "https://github.com/symfony/translation-contracts/tree/v2.5.4"
"source": "https://github.com/symfony/translation-contracts/tree/v3.6.0"
},
"funding": [
{
@@ -5536,85 +5772,73 @@
"type": "tidelift"
}
],
"time": "2024-09-25T14:11:13+00:00"
"time": "2024-09-27T08:32:26+00:00"
},
{
"name": "symfony/twig-bridge",
"version": "v5.4.48",
"version": "v6.4.25",
"source": {
"type": "git",
"url": "https://github.com/symfony/twig-bridge.git",
"reference": "853a0c9aa40123a9feeb335c865b659d94e49e5d"
"reference": "9d13e87591c9de3221c8d6f23cd9a2b5958607bf"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/symfony/twig-bridge/zipball/853a0c9aa40123a9feeb335c865b659d94e49e5d",
"reference": "853a0c9aa40123a9feeb335c865b659d94e49e5d",
"url": "https://api.github.com/repos/symfony/twig-bridge/zipball/9d13e87591c9de3221c8d6f23cd9a2b5958607bf",
"reference": "9d13e87591c9de3221c8d6f23cd9a2b5958607bf",
"shasum": ""
},
"require": {
"php": ">=7.2.5",
"symfony/polyfill-php80": "^1.16",
"symfony/translation-contracts": "^1.1|^2|^3",
"php": ">=8.1",
"symfony/deprecation-contracts": "^2.5|^3",
"symfony/translation-contracts": "^2.5|^3",
"twig/twig": "^2.13|^3.0.4"
},
"conflict": {
"phpdocumentor/reflection-docblock": "<3.2.2",
"phpdocumentor/type-resolver": "<1.4.0",
"symfony/console": "<5.3",
"symfony/form": "<5.4.21|>=6,<6.2.7",
"symfony/http-foundation": "<5.3",
"symfony/http-kernel": "<4.4",
"symfony/translation": "<5.2",
"symfony/workflow": "<5.2"
"symfony/console": "<5.4",
"symfony/form": "<6.3",
"symfony/http-foundation": "<5.4",
"symfony/http-kernel": "<6.4",
"symfony/mime": "<6.2",
"symfony/serializer": "<6.4",
"symfony/translation": "<5.4",
"symfony/workflow": "<5.4"
},
"require-dev": {
"doctrine/annotations": "^1.12|^2",
"egulias/email-validator": "^2.1.10|^3|^4",
"league/html-to-markdown": "^5.0",
"phpdocumentor/reflection-docblock": "^3.0|^4.0|^5.0",
"symfony/asset": "^4.4|^5.0|^6.0",
"symfony/console": "^5.3|^6.0",
"symfony/dependency-injection": "^4.4|^5.0|^6.0",
"symfony/expression-language": "^4.4|^5.0|^6.0",
"symfony/finder": "^4.4|^5.0|^6.0",
"symfony/form": "^5.4.21|^6.2.7",
"symfony/http-foundation": "^5.3|^6.0",
"symfony/http-kernel": "^4.4|^5.0|^6.0",
"symfony/intl": "^4.4|^5.0|^6.0",
"symfony/mime": "^5.2|^6.0",
"symfony/asset": "^5.4|^6.0|^7.0",
"symfony/asset-mapper": "^6.3|^7.0",
"symfony/console": "^5.4|^6.0|^7.0",
"symfony/dependency-injection": "^5.4|^6.0|^7.0",
"symfony/expression-language": "^5.4|^6.0|^7.0",
"symfony/finder": "^5.4|^6.0|^7.0",
"symfony/form": "^6.4.20|^7.2.5",
"symfony/html-sanitizer": "^6.1|^7.0",
"symfony/http-foundation": "^5.4|^6.0|^7.0",
"symfony/http-kernel": "^6.4|^7.0",
"symfony/intl": "^5.4|^6.0|^7.0",
"symfony/mime": "^6.2|^7.0",
"symfony/polyfill-intl-icu": "~1.0",
"symfony/property-info": "^4.4|^5.1|^6.0",
"symfony/routing": "^4.4|^5.0|^6.0",
"symfony/property-info": "^5.4|^6.0|^7.0",
"symfony/routing": "^5.4|^6.0|^7.0",
"symfony/security-acl": "^2.8|^3.0",
"symfony/security-core": "^4.4|^5.0|^6.0",
"symfony/security-csrf": "^4.4|^5.0|^6.0",
"symfony/security-http": "^4.4|^5.0|^6.0",
"symfony/serializer": "^5.4.35|~6.3.12|^6.4.3",
"symfony/stopwatch": "^4.4|^5.0|^6.0",
"symfony/translation": "^5.2|^6.0",
"symfony/web-link": "^4.4|^5.0|^6.0",
"symfony/workflow": "^5.2|^6.0",
"symfony/yaml": "^4.4|^5.0|^6.0",
"symfony/security-core": "^5.4|^6.0|^7.0",
"symfony/security-csrf": "^5.4|^6.0|^7.0",
"symfony/security-http": "^5.4|^6.0|^7.0",
"symfony/serializer": "^6.4.3|^7.0.3",
"symfony/stopwatch": "^5.4|^6.0|^7.0",
"symfony/translation": "^6.1|^7.0",
"symfony/web-link": "^5.4|^6.0|^7.0",
"symfony/workflow": "^5.4|^6.0|^7.0",
"symfony/yaml": "^5.4|^6.0|^7.0",
"twig/cssinliner-extra": "^2.12|^3",
"twig/inky-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",
"autoload": {
"psr-4": {
@@ -5641,7 +5865,7 @@
"description": "Provides integration for Twig with various Symfony components",
"homepage": "https://symfony.com",
"support": {
"source": "https://github.com/symfony/twig-bridge/tree/v5.4.48"
"source": "https://github.com/symfony/twig-bridge/tree/v6.4.25"
},
"funding": [
{
@@ -5652,58 +5876,56 @@
"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": "2024-11-22T08:19:51+00:00"
"time": "2025-08-13T09:41:44+00:00"
},
{
"name": "symfony/twig-bundle",
"version": "v5.4.45",
"version": "v6.4.24",
"source": {
"type": "git",
"url": "https://github.com/symfony/twig-bundle.git",
"reference": "e1ca56e1dc7791eb19f0aff71d3d94e6a91cc8f9"
"reference": "3b48b6e8225495c6d2438828982b4d219ca565ba"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/symfony/twig-bundle/zipball/e1ca56e1dc7791eb19f0aff71d3d94e6a91cc8f9",
"reference": "e1ca56e1dc7791eb19f0aff71d3d94e6a91cc8f9",
"url": "https://api.github.com/repos/symfony/twig-bundle/zipball/3b48b6e8225495c6d2438828982b4d219ca565ba",
"reference": "3b48b6e8225495c6d2438828982b4d219ca565ba",
"shasum": ""
},
"require": {
"php": ">=7.2.5",
"symfony/config": "^4.4|^5.0|^6.0",
"symfony/deprecation-contracts": "^2.1|^3",
"symfony/http-foundation": "^4.4|^5.0|^6.0",
"symfony/http-kernel": "^5.0|^6.0",
"symfony/polyfill-ctype": "~1.8",
"symfony/polyfill-php80": "^1.16",
"symfony/twig-bridge": "^5.3|^6.0",
"composer-runtime-api": ">=2.1",
"php": ">=8.1",
"symfony/config": "^6.1|^7.0",
"symfony/dependency-injection": "^6.1|^7.0",
"symfony/http-foundation": "^5.4|^6.0|^7.0",
"symfony/http-kernel": "^6.2",
"symfony/twig-bridge": "^6.4",
"twig/twig": "^2.13|^3.0.4"
},
"conflict": {
"symfony/dependency-injection": "<5.3",
"symfony/framework-bundle": "<5.0",
"symfony/service-contracts": ">=3.0",
"symfony/translation": "<5.0"
"symfony/framework-bundle": "<5.4",
"symfony/translation": "<5.4"
},
"require-dev": {
"doctrine/annotations": "^1.10.4|^2",
"doctrine/cache": "^1.0|^2.0",
"symfony/asset": "^4.4|^5.0|^6.0",
"symfony/dependency-injection": "^5.3|^6.0",
"symfony/expression-language": "^4.4|^5.0|^6.0",
"symfony/finder": "^4.4|^5.0|^6.0",
"symfony/form": "^4.4|^5.0|^6.0",
"symfony/framework-bundle": "^5.0|^6.0",
"symfony/routing": "^4.4|^5.0|^6.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"
"symfony/asset": "^5.4|^6.0|^7.0",
"symfony/expression-language": "^5.4|^6.0|^7.0",
"symfony/finder": "^5.4|^6.0|^7.0",
"symfony/form": "^5.4|^6.0|^7.0",
"symfony/framework-bundle": "^5.4|^6.0|^7.0",
"symfony/routing": "^5.4|^6.0|^7.0",
"symfony/stopwatch": "^5.4|^6.0|^7.0",
"symfony/translation": "^5.4|^6.0|^7.0",
"symfony/web-link": "^5.4|^6.0|^7.0",
"symfony/yaml": "^5.4|^6.0|^7.0"
},
"type": "symfony-bundle",
"autoload": {
@@ -5731,7 +5953,7 @@
"description": "Provides a tight integration of Twig into the Symfony full-stack framework",
"homepage": "https://symfony.com",
"support": {
"source": "https://github.com/symfony/twig-bundle/tree/v5.4.45"
"source": "https://github.com/symfony/twig-bundle/tree/v6.4.24"
},
"funding": [
{
@@ -5742,80 +5964,68 @@
"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": "2024-09-25T14:11:13+00:00"
"time": "2025-07-10T08:14:14+00:00"
},
{
"name": "symfony/validator",
"version": "v5.4.48",
"version": "v6.4.25",
"source": {
"type": "git",
"url": "https://github.com/symfony/validator.git",
"reference": "883667679d93d6c30f1b7490d669801712d3be2f"
"reference": "9352177c0e937793423053846f80bee805552324"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/symfony/validator/zipball/883667679d93d6c30f1b7490d669801712d3be2f",
"reference": "883667679d93d6c30f1b7490d669801712d3be2f",
"url": "https://api.github.com/repos/symfony/validator/zipball/9352177c0e937793423053846f80bee805552324",
"reference": "9352177c0e937793423053846f80bee805552324",
"shasum": ""
},
"require": {
"php": ">=7.2.5",
"symfony/deprecation-contracts": "^2.1|^3",
"php": ">=8.1",
"symfony/deprecation-contracts": "^2.5|^3",
"symfony/polyfill-ctype": "~1.8",
"symfony/polyfill-mbstring": "~1.0",
"symfony/polyfill-php73": "~1.0",
"symfony/polyfill-php80": "^1.16",
"symfony/polyfill-php81": "^1.22",
"symfony/translation-contracts": "^1.1|^2|^3"
"symfony/polyfill-php83": "^1.27",
"symfony/translation-contracts": "^2.5|^3"
},
"conflict": {
"doctrine/annotations": "<1.13",
"doctrine/cache": "<1.11",
"doctrine/lexer": "<1.1",
"symfony/dependency-injection": "<4.4",
"symfony/expression-language": "<5.1",
"symfony/http-kernel": "<4.4",
"symfony/intl": "<4.4",
"symfony/property-info": "<5.3",
"symfony/translation": "<5.4.35|>=6.0,<6.3.12|>=6.4,<6.4.3",
"symfony/yaml": "<4.4"
"symfony/dependency-injection": "<5.4",
"symfony/expression-language": "<5.4",
"symfony/http-kernel": "<5.4",
"symfony/intl": "<5.4",
"symfony/property-info": "<5.4",
"symfony/translation": "<5.4.35|>=6.0,<6.3.12|>=6.4,<6.4.3|>=7.0,<7.0.3",
"symfony/yaml": "<5.4"
},
"require-dev": {
"doctrine/annotations": "^1.13|^2",
"doctrine/cache": "^1.11|^2.0",
"egulias/email-validator": "^2.1.10|^3|^4",
"symfony/cache": "^4.4|^5.0|^6.0",
"symfony/config": "^4.4|^5.0|^6.0",
"symfony/console": "^4.4|^5.0|^6.0",
"symfony/dependency-injection": "^4.4|^5.0|^6.0",
"symfony/expression-language": "^5.1|^6.0",
"symfony/finder": "^4.4|^5.0|^6.0",
"symfony/http-client": "^4.4|^5.0|^6.0",
"symfony/http-foundation": "^4.4|^5.0|^6.0",
"symfony/http-kernel": "^4.4|^5.0|^6.0",
"symfony/intl": "^4.4|^5.0|^6.0",
"symfony/mime": "^4.4|^5.0|^6.0",
"symfony/property-access": "^5.4|^6.0",
"symfony/property-info": "^5.3|^6.0",
"symfony/translation": "^5.4.35|~6.3.12|^6.4.3",
"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": ""
"symfony/cache": "^5.4|^6.0|^7.0",
"symfony/config": "^5.4|^6.0|^7.0",
"symfony/console": "^5.4|^6.0|^7.0",
"symfony/dependency-injection": "^5.4|^6.0|^7.0",
"symfony/expression-language": "^5.4|^6.0|^7.0",
"symfony/finder": "^5.4|^6.0|^7.0",
"symfony/http-client": "^5.4|^6.0|^7.0",
"symfony/http-foundation": "^5.4|^6.0|^7.0",
"symfony/http-kernel": "^5.4|^6.0|^7.0",
"symfony/intl": "^5.4|^6.0|^7.0",
"symfony/mime": "^5.4|^6.0|^7.0",
"symfony/property-access": "^5.4|^6.0|^7.0",
"symfony/property-info": "^5.4|^6.0|^7.0",
"symfony/translation": "^5.4.35|~6.3.12|^6.4.3|^7.0.3",
"symfony/yaml": "^5.4|^6.0|^7.0"
},
"type": "library",
"autoload": {
@@ -5844,7 +6054,7 @@
"description": "Provides tools to validate values",
"homepage": "https://symfony.com",
"support": {
"source": "https://github.com/symfony/validator/tree/v5.4.48"
"source": "https://github.com/symfony/validator/tree/v6.4.25"
},
"funding": [
{
@@ -5855,48 +6065,47 @@
"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": "2024-11-27T08:58:20+00:00"
"time": "2025-08-27T11:31:57+00:00"
},
{
"name": "symfony/var-dumper",
"version": "v5.4.48",
"version": "v6.4.25",
"source": {
"type": "git",
"url": "https://github.com/symfony/var-dumper.git",
"reference": "42f18f170aa86d612c3559cfb3bd11a375df32c8"
"reference": "c6cd92486e9fc32506370822c57bc02353a5a92c"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/symfony/var-dumper/zipball/42f18f170aa86d612c3559cfb3bd11a375df32c8",
"reference": "42f18f170aa86d612c3559cfb3bd11a375df32c8",
"url": "https://api.github.com/repos/symfony/var-dumper/zipball/c6cd92486e9fc32506370822c57bc02353a5a92c",
"reference": "c6cd92486e9fc32506370822c57bc02353a5a92c",
"shasum": ""
},
"require": {
"php": ">=7.2.5",
"symfony/polyfill-mbstring": "~1.0",
"symfony/polyfill-php80": "^1.16"
"php": ">=8.1",
"symfony/deprecation-contracts": "^2.5|^3",
"symfony/polyfill-mbstring": "~1.0"
},
"conflict": {
"symfony/console": "<4.4"
"symfony/console": "<5.4"
},
"require-dev": {
"ext-iconv": "*",
"symfony/console": "^4.4|^5.0|^6.0",
"symfony/http-kernel": "^4.4|^5.0|^6.0",
"symfony/process": "^4.4|^5.0|^6.0",
"symfony/uid": "^5.1|^6.0",
"symfony/console": "^5.4|^6.0|^7.0",
"symfony/error-handler": "^6.3|^7.0",
"symfony/http-kernel": "^5.4|^6.0|^7.0",
"symfony/process": "^5.4|^6.0|^7.0",
"symfony/uid": "^5.4|^6.0|^7.0",
"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": [
"Resources/bin/var-dump-server"
],
@@ -5933,7 +6142,7 @@
"dump"
],
"support": {
"source": "https://github.com/symfony/var-dumper/tree/v5.4.48"
"source": "https://github.com/symfony/var-dumper/tree/v6.4.25"
},
"funding": [
{
@@ -5944,25 +6153,29 @@
"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": "2024-11-08T15:21:10+00:00"
"time": "2025-08-13T09:41:44+00:00"
},
{
"name": "symfony/var-exporter",
"version": "v6.4.22",
"version": "v6.4.25",
"source": {
"type": "git",
"url": "https://github.com/symfony/var-exporter.git",
"reference": "f28cf841f5654955c9f88ceaf4b9dc29571988a9"
"reference": "4ff50a1b7c75d1d596aca50899d0c8c7e3de8358"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/symfony/var-exporter/zipball/f28cf841f5654955c9f88ceaf4b9dc29571988a9",
"reference": "f28cf841f5654955c9f88ceaf4b9dc29571988a9",
"url": "https://api.github.com/repos/symfony/var-exporter/zipball/4ff50a1b7c75d1d596aca50899d0c8c7e3de8358",
"reference": "4ff50a1b7c75d1d596aca50899d0c8c7e3de8358",
"shasum": ""
},
"require": {
@@ -6010,7 +6223,7 @@
"serialize"
],
"support": {
"source": "https://github.com/symfony/var-exporter/tree/v6.4.22"
"source": "https://github.com/symfony/var-exporter/tree/v6.4.25"
},
"funding": [
{
@@ -6022,83 +6235,7 @@
"type": "github"
},
{
"url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
"type": "tidelift"
}
],
"time": "2025-05-14T13:00:13+00:00"
},
{
"name": "symfony/web-profiler-bundle",
"version": "v5.4.48",
"source": {
"type": "git",
"url": "https://github.com/symfony/web-profiler-bundle.git",
"reference": "4afb0399456b966be92410d2bbd6146cc3ce2174"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/symfony/web-profiler-bundle/zipball/4afb0399456b966be92410d2bbd6146cc3ce2174",
"reference": "4afb0399456b966be92410d2bbd6146cc3ce2174",
"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.48"
},
"funding": [
{
"url": "https://symfony.com/sponsor",
"type": "custom"
},
{
"url": "https://github.com/fabpot",
"url": "https://github.com/nicolas-grekas",
"type": "github"
},
{
@@ -6106,7 +6243,7 @@
"type": "tidelift"
}
],
"time": "2024-11-19T09:26:40+00:00"
"time": "2025-08-18T13:06:32+00:00"
},
{
"name": "symfony/webpack-encore-bundle",
@@ -6183,31 +6320,28 @@
},
{
"name": "symfony/yaml",
"version": "v5.4.45",
"version": "v6.4.25",
"source": {
"type": "git",
"url": "https://github.com/symfony/yaml.git",
"reference": "a454d47278cc16a5db371fe73ae66a78a633371e"
"reference": "e54b060bc9c3dc3d4258bf0d165d0064e755f565"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/symfony/yaml/zipball/a454d47278cc16a5db371fe73ae66a78a633371e",
"reference": "a454d47278cc16a5db371fe73ae66a78a633371e",
"url": "https://api.github.com/repos/symfony/yaml/zipball/e54b060bc9c3dc3d4258bf0d165d0064e755f565",
"reference": "e54b060bc9c3dc3d4258bf0d165d0064e755f565",
"shasum": ""
},
"require": {
"php": ">=7.2.5",
"symfony/deprecation-contracts": "^2.1|^3",
"php": ">=8.1",
"symfony/deprecation-contracts": "^2.5|^3",
"symfony/polyfill-ctype": "^1.8"
},
"conflict": {
"symfony/console": "<5.3"
"symfony/console": "<5.4"
},
"require-dev": {
"symfony/console": "^5.3|^6.0"
},
"suggest": {
"symfony/console": "For validating YAML files using the lint command"
"symfony/console": "^5.4|^6.0|^7.0"
},
"bin": [
"Resources/bin/yaml-lint"
@@ -6238,7 +6372,7 @@
"description": "Loads and dumps YAML files",
"homepage": "https://symfony.com",
"support": {
"source": "https://github.com/symfony/yaml/tree/v5.4.45"
"source": "https://github.com/symfony/yaml/tree/v6.4.25"
},
"funding": [
{
@@ -6249,12 +6383,16 @@
"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": "2024-09-25T14:11:13+00:00"
"time": "2025-08-26T16:59:00+00:00"
},
{
"name": "twig/twig",
@@ -6339,16 +6477,16 @@
"packages-dev": [
{
"name": "phpstan/phpstan",
"version": "2.1.17",
"version": "2.1.22",
"source": {
"type": "git",
"url": "https://github.com/phpstan/phpstan.git",
"reference": "89b5ef665716fa2a52ecd2633f21007a6a349053"
"reference": "41600c8379eb5aee63e9413fe9e97273e25d57e4"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/phpstan/phpstan/zipball/89b5ef665716fa2a52ecd2633f21007a6a349053",
"reference": "89b5ef665716fa2a52ecd2633f21007a6a349053",
"url": "https://api.github.com/repos/phpstan/phpstan/zipball/41600c8379eb5aee63e9413fe9e97273e25d57e4",
"reference": "41600c8379eb5aee63e9413fe9e97273e25d57e4",
"shasum": ""
},
"require": {
@@ -6393,25 +6531,25 @@
"type": "github"
}
],
"time": "2025-05-21T20:55:28+00:00"
"time": "2025-08-04T19:17:37+00:00"
},
{
"name": "rector/rector",
"version": "2.1.0",
"version": "2.1.6",
"source": {
"type": "git",
"url": "https://github.com/rectorphp/rector.git",
"reference": "d513dea45a94394b660e15c155d1fa27826f8e30"
"reference": "729aabc0ec66e700ef164e26454a1357f222a2f3"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/rectorphp/rector/zipball/d513dea45a94394b660e15c155d1fa27826f8e30",
"reference": "d513dea45a94394b660e15c155d1fa27826f8e30",
"url": "https://api.github.com/repos/rectorphp/rector/zipball/729aabc0ec66e700ef164e26454a1357f222a2f3",
"reference": "729aabc0ec66e700ef164e26454a1357f222a2f3",
"shasum": ""
},
"require": {
"php": "^7.4|^8.0",
"phpstan/phpstan": "^2.1.17"
"phpstan/phpstan": "^2.1.18"
},
"conflict": {
"rector/rector-doctrine": "*",
@@ -6445,7 +6583,7 @@
],
"support": {
"issues": "https://github.com/rectorphp/rector/issues",
"source": "https://github.com/rectorphp/rector/tree/2.1.0"
"source": "https://github.com/rectorphp/rector/tree/2.1.6"
},
"funding": [
{
@@ -6453,42 +6591,37 @@
"type": "github"
}
],
"time": "2025-06-24T20:26:57+00:00"
"time": "2025-09-05T15:43:08+00:00"
},
{
"name": "symfony/debug-bundle",
"version": "v5.4.45",
"version": "v6.4.13",
"source": {
"type": "git",
"url": "https://github.com/symfony/debug-bundle.git",
"reference": "653c7629d036ef24ac5de54a157aecdc400d2570"
"reference": "7bcfaff39e094cc09455201916d016d9b2ae08ff"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/symfony/debug-bundle/zipball/653c7629d036ef24ac5de54a157aecdc400d2570",
"reference": "653c7629d036ef24ac5de54a157aecdc400d2570",
"url": "https://api.github.com/repos/symfony/debug-bundle/zipball/7bcfaff39e094cc09455201916d016d9b2ae08ff",
"reference": "7bcfaff39e094cc09455201916d016d9b2ae08ff",
"shasum": ""
},
"require": {
"ext-xml": "*",
"php": ">=7.2.5",
"symfony/http-kernel": "^4.4|^5.0|^6.0",
"symfony/polyfill-php80": "^1.16",
"symfony/twig-bridge": "^4.4|^5.0|^6.0",
"symfony/var-dumper": "^4.4|^5.0|^6.0"
"php": ">=8.1",
"symfony/dependency-injection": "^5.4|^6.0|^7.0",
"symfony/http-kernel": "^5.4|^6.0|^7.0",
"symfony/twig-bridge": "^5.4|^6.0|^7.0",
"symfony/var-dumper": "^5.4|^6.0|^7.0"
},
"conflict": {
"symfony/config": "<4.4",
"symfony/dependency-injection": "<5.2"
"symfony/config": "<5.4",
"symfony/dependency-injection": "<5.4"
},
"require-dev": {
"symfony/config": "^4.4|^5.0|^6.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"
"symfony/config": "^5.4|^6.0|^7.0",
"symfony/web-profiler-bundle": "^5.4|^6.0|^7.0"
},
"type": "symfony-bundle",
"autoload": {
@@ -6516,7 +6649,7 @@
"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",
"support": {
"source": "https://github.com/symfony/debug-bundle/tree/v5.4.45"
"source": "https://github.com/symfony/debug-bundle/tree/v6.4.13"
},
"funding": [
{
@@ -6532,7 +6665,93 @@
"type": "tidelift"
}
],
"time": "2024-09-25T14:11:13+00:00"
"time": "2024-09-25T14:18:03+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": [],
@@ -6546,5 +6765,13 @@
"ext-iconv": "*"
},
"platform-dev": {},
"platform-overrides": {
"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

@@ -8,4 +8,5 @@ return [
Symfony\WebpackEncoreBundle\WebpackEncoreBundle::class => ['all' => true],
Sentry\SentryBundle\SentryBundle::class => ['all' => true],
Symfony\Bundle\DebugBundle\DebugBundle::class => ['dev' => true],
Symfony\Bundle\MonologBundle\MonologBundle::class => ['all' => true],
];

View File

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

View File

@@ -0,0 +1,6 @@
monolog:
handlers:
stdout:
type: stream
path: php://stdout
level: debug

View File

@@ -0,0 +1,30 @@
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

@@ -1,38 +0,0 @@
<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.4-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

@@ -0,0 +1,65 @@
# 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

@@ -1,119 +0,0 @@
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.4"
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.4-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.4/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.4-fpm start
RUN service php8.4-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.4/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

@@ -1,34 +0,0 @@
#!/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

@@ -1,18 +0,0 @@
#!/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

@@ -1,17 +0,0 @@
#!/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

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

View File

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

View File

@@ -0,0 +1,14 @@
{
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

@@ -1,19 +0,0 @@
#!/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.
; The following is a summary of its search order:
; 1. SAPI module specific location.
; 2. The PHPRC environment variable. (As of PHP 5.2.0)
; 3. A number of predefined registry keys on Windows (As of PHP 5.2.0)
; 2. The PHPRC environment variable.
; 3. A number of predefined registry keys on Windows
; 4. Current working directory (except CLI)
; 5. The web server's directory (for SAPI modules), or directory of PHP
; (otherwise in Windows)
; 6. The directory from the --with-config-file-path compile time option, or the
; Windows directory (usually C:\windows)
; See the PHP docs for more specific information.
; http://php.net/configuration.file
; https://php.net/configuration.file
; The syntax of the file is extremely simple. Whitespace and lines
; 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
; at runtime. Currently, [PATH=] and [HOST=] sections only work under
; CGI/FastCGI.
; http://php.net/ini.sections
; https://php.net/ini.sections
; Directives are specified using the following syntax:
; directive = value
@@ -75,7 +75,7 @@
; php.ini-production contains settings which hold security, performance and
; best practices at its core. But please be aware, these settings may break
; compatibility with older or less security conscience applications. We
; compatibility with older or less security-conscious applications. We
; recommending using the production ini in production and testing environments.
; php.ini-development is very similar to its production variant, except it is
@@ -83,11 +83,12 @@
; development version only in development environments, as errors shown to
; application users can inadvertently leak otherwise secure information.
; This is the php.ini-production INI file.
; This is the php.ini-development INI file.
;;;;;;;;;;;;;;;;;;;
; Quick Reference ;
;;;;;;;;;;;;;;;;;;;
; The following are all the settings which are different in either the production
; or development versions of the INIs with respect to PHP's default behavior.
; Please see the actual settings later in the document for more details as to why
@@ -99,19 +100,14 @@
; Production Value: Off
; display_startup_errors
; Default Value: Off
; Default Value: On
; Development Value: On
; Production Value: Off
; error_reporting
; Default Value: E_ALL & ~E_NOTICE & ~E_STRICT & ~E_DEPRECATED
; Default Value: E_ALL
; Development Value: E_ALL
; Production Value: E_ALL & ~E_DEPRECATED & ~E_STRICT
; html_errors
; Default Value: On
; Development Value: On
; Production value: On
; Production Value: E_ALL & ~E_DEPRECATED
; log_errors
; Default Value: Off
@@ -143,11 +139,6 @@
; Development Value: 1000
; Production Value: 1000
; session.sid_bits_per_character
; Default Value: 4
; Development Value: 5
; Production Value: 5
; short_open_tag
; Default Value: On
; Development Value: Off
@@ -158,6 +149,21 @@
; Development 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 ;
;;;;;;;;;;;;;;;;;;;;
@@ -175,7 +181,7 @@
;;;;;;;;;;;;;;;;;;;;
; Enable the PHP scripting language engine under Apache.
; http://php.net/engine
; https://php.net/engine
engine = On
; This directive determines whether or not PHP will recognize code between
@@ -188,11 +194,11 @@ engine = On
; Default Value: On
; Development Value: Off
; Production Value: Off
; http://php.net/short-open-tag
; https://php.net/short-open-tag
short_open_tag = Off
; The number of significant digits displayed in floating point numbers.
; http://php.net/precision
; https://php.net/precision
precision = 14
; Output buffering is a mechanism for controlling how much output data
@@ -216,7 +222,7 @@ precision = 14
; Default Value: Off
; Development Value: 4096
; Production Value: 4096
; http://php.net/output-buffering
; https://php.net/output-buffering
output_buffering = 4096
; You can redirect all of the output of your scripts to a function. For
@@ -231,7 +237,7 @@ output_buffering = 4096
; and you cannot use both "ob_gzhandler" and "zlib.output_compression".
; Note: output_handler must be empty if this is set 'On' !!!!
; Instead you must use zlib.output_handler.
; http://php.net/output-handler
; https://php.net/output-handler
;output_handler =
; URL rewriter function rewrites URL on the fly by using
@@ -260,16 +266,16 @@ output_buffering = 4096
; performance, enable output_buffering in addition.
; Note: You need to use zlib.output_handler instead of the standard
; output_handler, or otherwise the output will be corrupted.
; http://php.net/zlib.output-compression
; https://php.net/zlib.output-compression
zlib.output_compression = Off
; http://php.net/zlib.output-compression-level
; https://php.net/zlib.output-compression-level
;zlib.output_compression_level = -1
; You cannot specify additional output handlers if zlib.output_compression
; is activated here. This setting does the same as output_handler but in
; a different order.
; http://php.net/zlib.output-handler
; https://php.net/zlib.output-handler
;zlib.output_handler =
; Implicit flush tells PHP to tell the output layer to flush itself
@@ -277,7 +283,7 @@ zlib.output_compression = Off
; 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
; implications and is generally recommended for debugging purposes only.
; http://php.net/implicit-flush
; https://php.net/implicit-flush
; Note: This directive is hardcoded to On for the CLI SAPI
implicit_flush = Off
@@ -289,6 +295,13 @@ implicit_flush = Off
; callback-function.
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
; digits after the floating point. The default value ensures that when floats
; are decoded with unserialize, the data will remain the same.
@@ -301,22 +314,22 @@ serialize_precision = -1
; and below. This directive makes most sense if used in a per-directory
; or per-virtualhost web server configuration file.
; Note: disables the realpath cache
; http://php.net/open-basedir
; https://php.net/open-basedir
;open_basedir =
; This directive allows you to disable certain functions for security reasons.
; This directive allows you to disable certain functions.
; It receives a comma-delimited list of function names.
; http://php.net/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,
; https://php.net/disable-functions
disable_functions =
; This directive allows you to disable certain classes for security reasons.
; This directive allows you to disable certain classes.
; It receives a comma-delimited list of class names.
; http://php.net/disable-classes
; https://php.net/disable-classes
disable_classes =
; Colors for Syntax Highlighting mode. Anything that's acceptable in
; <span style="color: ???????"> would work.
; http://php.net/syntax-highlighting
; https://php.net/syntax-highlighting
;highlight.string = #DD0000
;highlight.comment = #FF9900
;highlight.keyword = #007700
@@ -327,38 +340,52 @@ disable_classes =
; 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
; is to disable this feature.
; http://php.net/ignore-user-abort
; https://php.net/ignore-user-abort
;ignore_user_abort = On
; 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
; the file operations performed.
; Note: if open_basedir is set, the cache is disabled
; http://php.net/realpath-cache-size
; https://php.net/realpath-cache-size
;realpath_cache_size = 4096k
; 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
; value.
; http://php.net/realpath-cache-ttl
; https://php.net/realpath-cache-ttl
;realpath_cache_ttl = 120
; Enables or disables the circular reference collector.
; http://php.net/zend.enable-gc
; https://php.net/zend.enable-gc
zend.enable_gc = On
; If enabled, scripts may be written in encodings that are incompatible with
; the scanner. CP936, Big5, CP949 and Shift_JIS are the examples of such
; encodings. To use this feature, mbstring extension must be enabled.
; Default: Off
;zend.multibyte = Off
; Allows to set the default encoding for the scripts. This value will be used
; unless "declare(encoding=...)" directive appears at the top of the script.
; Only affects if zend.multibyte is set.
; Default: ""
;zend.script_encoding =
; Allows to include or exclude arguments from stack traces generated for exceptions.
; 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 ;
;;;;;;;;;;;;;;;;;
@@ -367,15 +394,15 @@ zend.enable_gc = On
; (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
; on your server or not.
; http://php.net/expose-php
expose_php = Off
; https://php.net/expose-php
expose_php = On
;;;;;;;;;;;;;;;;;;;
; Resource Limits ;
;;;;;;;;;;;;;;;;;;;
; Maximum execution time of each script, in seconds
; http://php.net/max-execution-time
; https://php.net/max-execution-time
; Note: This directive is hardcoded to 0 for the CLI SAPI
max_execution_time = 30
@@ -386,18 +413,23 @@ max_execution_time = 30
; Default Value: -1 (Unlimited)
; Development Value: 60 (60 seconds)
; Production Value: 60 (60 seconds)
; http://php.net/max-input-time
; https://php.net/max-input-time
max_input_time = 60
; Maximum input variable nesting level
; http://php.net/max-input-nesting-level
; https://php.net/max-input-nesting-level
;max_input_nesting_level = 64
; How many GET/POST/COOKIE input variables may be accepted
;max_input_vars = 1000
; Maximum amount of memory a script may consume (128MB)
; http://php.net/memory-limit
; How many multipart body parts (combined input variable and file uploads) may
; be accepted.
; 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
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
@@ -410,7 +442,7 @@ memory_limit = 128M
; operators. The error level constants are below here for convenience as well as
; some common settings and their meanings.
; By default, PHP is set to take action on all errors, notices and warnings EXCEPT
; those related to E_NOTICE and E_STRICT, which together cover best practices and
; those related to E_NOTICE, which together cover best practices and
; recommended coding standards in PHP. For performance reasons, this is the
; recommend error reporting setting. Your production server shouldn't be wasting
; resources complaining about best practices and coding standards. That's what
@@ -420,7 +452,7 @@ memory_limit = 128M
; development and early testing.
;
; Error Level Constants:
; E_ALL - All errors and warnings (includes E_STRICT as of PHP 5.4.0)
; E_ALL - All errors and warnings
; E_ERROR - fatal run-time errors
; E_RECOVERABLE_ERROR - almost fatal run-time errors
; E_WARNING - run-time warnings (non-fatal errors)
@@ -430,9 +462,6 @@ memory_limit = 128M
; intentional (e.g., using an uninitialized variable and
; relying on the fact it is automatically initialized to an
; 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_WARNING - warnings (non-fatal errors) that occur during PHP's
; initial startup
@@ -448,13 +477,12 @@ memory_limit = 128M
; Common Values:
; 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 & ~E_STRICT (Show all errors, except for notices and coding standards warnings.)
; E_COMPILE_ERROR|E_RECOVERABLE_ERROR|E_ERROR|E_CORE_ERROR (Show only errors)
; Default Value: E_ALL & ~E_NOTICE & ~E_STRICT & ~E_DEPRECATED
; Default Value: E_ALL
; Development Value: E_ALL
; Production Value: E_ALL & ~E_DEPRECATED & ~E_STRICT
; http://php.net/error-reporting
error_reporting = E_ALL & ~E_DEPRECATED & ~E_STRICT
; Production Value: E_ALL & ~E_DEPRECATED
; https://php.net/error-reporting
error_reporting = E_ALL
; This directive controls whether or not and where PHP will output errors,
; notices and warnings too. Error output is very useful during development, but
@@ -470,19 +498,17 @@ error_reporting = E_ALL & ~E_DEPRECATED & ~E_STRICT
; Default Value: On
; Development Value: On
; Production Value: Off
; http://php.net/display-errors
display_errors = Off
; https://php.net/display-errors
display_errors = On
; The display of errors which occur during PHP's startup sequence are handled
; separately from display_errors. PHP's default behavior is to suppress those
; errors from clients. Turning the display of startup errors on can be useful in
; debugging configuration problems. We strongly recommend you
; set this to 'off' for production servers.
; Default Value: Off
; separately from display_errors. We strongly recommend you set this to 'off'
; for production servers to avoid leaking configuration details.
; Default Value: On
; Development Value: On
; Production Value: Off
; http://php.net/display-startup-errors
display_startup_errors = Off
; https://php.net/display-startup-errors
display_startup_errors = On
; 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
@@ -491,46 +517,31 @@ display_startup_errors = Off
; Default Value: Off
; Development Value: On
; Production Value: On
; http://php.net/log-errors
; https://php.net/log-errors
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
; line unless ignore_repeated_source is set true.
; http://php.net/ignore-repeated-errors
; https://php.net/ignore-repeated-errors
ignore_repeated_errors = Off
; 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
; source lines.
; http://php.net/ignore-repeated-source
; https://php.net/ignore-repeated-source
ignore_repeated_source = Off
; If this parameter is set to Off, then memory leaks will not be shown (on
; stdout or in the log). This has only effect in a debug compile, and if
; stdout or in the log). This is only effective in a debug compile, and if
; error reporting includes E_WARNING in the allowed list
; http://php.net/report-memleaks
; https://php.net/report-memleaks
report_memleaks = On
; This setting is on by default.
; This setting is off by default.
;report_zend_debug = 0
; Store the last error/warning message in $php_errormsg (boolean). Setting this value
; to On can assist in debugging and is appropriate for development servers. It should
; however be disabled on production servers.
; This directive is DEPRECATED.
; Default Value: Off
; Development Value: Off
; Production Value: Off
; http://php.net/track-errors
;track_errors = Off
; Turn off normal error reporting and emit XML-RPC error XML
; http://php.net/xmlrpc-errors
; https://php.net/xmlrpc-errors
;xmlrpc_errors = 0
; An XML-RPC faultCode
@@ -540,43 +551,40 @@ report_memleaks = On
; error message as HTML for easier reading. This directive controls whether
; the error message is formatted as HTML or not.
; Note: This directive is hardcoded to Off for the CLI SAPI
; Default Value: On
; Development Value: On
; Production value: On
; http://php.net/html-errors
html_errors = On
; https://php.net/html-errors
;html_errors = On
; 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
; or function causing the error in detail.
; You can download a copy of the PHP manual from http://php.net/docs
; You can download a copy of the PHP manual from https://php.net/docs
; 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
; the dot. PHP's default behavior is to leave these settings empty, in which
; case no links to documentation are generated.
; Note: Never use this feature for production boxes.
; http://php.net/docref-root
; https://php.net/docref-root
; Examples
;docref_root = "/phpmanual/"
; http://php.net/docref-ext
; https://php.net/docref-ext
;docref_ext = .html
; String to output before an error message. PHP's default behavior is to leave
; this setting blank.
; http://php.net/error-prepend-string
; https://php.net/error-prepend-string
; Example:
;error_prepend_string = "<span style='color: #ff0000'>"
; String to output after an error message. PHP's default behavior is to leave
; this setting blank.
; http://php.net/error-append-string
; https://php.net/error-append-string
; Example:
;error_append_string = "</span>"
; Log errors to specified file. PHP's default behavior is to leave this value
; empty.
; http://php.net/error-log
; https://php.net/error-log
; Example:
;error_log = php_errors.log
; Log errors to syslog (Event Log on Windows).
@@ -599,7 +607,7 @@ html_errors = On
; no-ctrl (all characters except control characters)
; all (all characters)
; raw (like "all", but messages are not split at newlines)
; http://php.net/syslog.filter
; https://php.net/syslog.filter
;syslog.filter = ascii
;windows.show_crt_warning
@@ -613,14 +621,14 @@ html_errors = On
; The separator used in PHP generated URLs to separate arguments.
; PHP's default setting is "&".
; http://php.net/arg-separator.output
; https://php.net/arg-separator.output
; Example:
;arg_separator.output = "&amp;"
; List of separator(s) used by PHP to parse input URLs into variables.
; PHP's default setting is "&".
; NOTE: Every character in this directive is considered as separator!
; http://php.net/arg-separator.input
; https://php.net/arg-separator.input
; Example:
;arg_separator.input = ";&"
@@ -634,7 +642,7 @@ html_errors = On
; Default Value: "EGPCS"
; Development Value: "GPCS"
; Production Value: "GPCS";
; http://php.net/variables-order
; https://php.net/variables-order
variables_order = "GPCS"
; This directive determines which super global data (G,P & C) should be
@@ -647,7 +655,7 @@ variables_order = "GPCS"
; Default Value: None
; Development Value: "GP"
; Production Value: "GP"
; http://php.net/request-order
; https://php.net/request-order
request_order = "GP"
; This directive determines whether PHP registers $argv & $argc each time it
@@ -662,15 +670,15 @@ request_order = "GP"
; Default Value: On
; Development Value: Off
; Production Value: Off
; http://php.net/register-argc-argv
; https://php.net/register-argc-argv
register_argc_argv = Off
; 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
; 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
; for this directive to have any affect.
; http://php.net/auto-globals-jit
; for this directive to have any effect.
; https://php.net/auto-globals-jit
auto_globals_jit = On
; Whether PHP will read the POST data.
@@ -679,48 +687,48 @@ auto_globals_jit = On
; 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
; to proxy requests or to process the POST data in a memory efficient fashion.
; http://php.net/enable-post-data-reading
; https://php.net/enable-post-data-reading
;enable_post_data_reading = Off
; 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
; is disabled through enable_post_data_reading.
; http://php.net/post-max-size
post_max_size = 80M
; https://php.net/post-max-size
post_max_size = 8M
; Automatically add files before PHP document.
; http://php.net/auto-prepend-file
; https://php.net/auto-prepend-file
auto_prepend_file =
; Automatically add files after PHP document.
; http://php.net/auto-append-file
; https://php.net/auto-append-file
auto_append_file =
; By default, PHP will output a media type using the Content-Type header. To
; disable this, simply set it to be empty.
;
; PHP's built-in default media type is set to text/html.
; http://php.net/default-mimetype
; https://php.net/default-mimetype
default_mimetype = "text/html"
; PHP's default character set is set to UTF-8.
; http://php.net/default-charset
; https://php.net/default-charset
default_charset = "UTF-8"
; PHP internal character encoding is set to empty.
; If empty, default_charset is used.
; http://php.net/internal-encoding
; https://php.net/internal-encoding
;internal_encoding =
; PHP input character encoding is set to empty.
; If empty, default_charset is used.
; http://php.net/input-encoding
; https://php.net/input-encoding
;input_encoding =
; PHP output character encoding is set to empty.
; If empty, default_charset is used.
; See also output_buffer.
; http://php.net/output-encoding
; https://php.net/output-encoding
;output_encoding =
;;;;;;;;;;;;;;;;;;;;;;;;;
@@ -728,29 +736,29 @@ default_charset = "UTF-8"
;;;;;;;;;;;;;;;;;;;;;;;;;
; UNIX: "/path1:/path2"
;include_path = ".:/usr/share/php"
;include_path = ".:/php/includes"
;
; Windows: "\path1;\path2"
;include_path = ".;c:\php\includes"
;
; PHP's default setting for include_path is ".;/path/to/php/pear"
; http://php.net/include-path
; https://php.net/include-path
; The root of the PHP pages, used only if nonempty.
; 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)
; see documentation for security issues. The alternate is to use the
; cgi.force_redirect configuration below
; http://php.net/doc-root
; https://php.net/doc-root
doc_root =
; The directory under which PHP opens the script using /~username used only
; if nonempty.
; http://php.net/user-dir
; https://php.net/user-dir
user_dir =
; Directory in which the loadable extensions (modules) reside.
; http://php.net/extension-dir
; https://php.net/extension-dir
;extension_dir = "./"
; On windows:
;extension_dir = "ext"
@@ -762,14 +770,14 @@ user_dir =
; 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
; disabled on them.
; http://php.net/enable-dl
; https://php.net/enable-dl
enable_dl = Off
; 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
; turn it off here AT YOUR OWN RISK
; **You CAN safely turn this off for IIS, in fact, you MUST.**
; http://php.net/cgi.force-redirect
; https://php.net/cgi.force-redirect
;cgi.force_redirect = 1
; if cgi.nph is enabled it will force cgi to always sent Status: 200 with
@@ -780,7 +788,7 @@ enable_dl = Off
; (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
; cause security issues, KNOW WHAT YOU ARE DOING FIRST.
; http://php.net/cgi.redirect-status-env
; https://php.net/cgi.redirect-status-env
;cgi.redirect_status_env =
; cgi.fix_pathinfo provides *real* PATH_INFO/PATH_TRANSLATED support for CGI. PHP's
@@ -789,7 +797,7 @@ enable_dl = Off
; 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
; to use SCRIPT_FILENAME rather than PATH_TRANSLATED.
; http://php.net/cgi.fix-pathinfo
; https://php.net/cgi.fix-pathinfo
;cgi.fix_pathinfo=1
; if cgi.discard_path is enabled, the PHP CGI binary can safely be placed outside
@@ -801,7 +809,7 @@ enable_dl = Off
; security context that the request runs under. mod_fastcgi under Apache
; does not currently support this feature (03/17/2002)
; Set to 1 if running under IIS. Default is zero.
; http://php.net/fastcgi.impersonate
; https://php.net/fastcgi.impersonate
;fastcgi.impersonate = 1
; Disable logging through FastCGI connection. PHP's default behavior is to enable
@@ -813,14 +821,14 @@ enable_dl = Off
; is supported by Apache. When this option is set to 1, PHP will send
; RFC2616 compliant header.
; Default is zero.
; http://php.net/cgi.rfc2616-headers
; https://php.net/cgi.rfc2616-headers
;cgi.rfc2616_headers = 0
; 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
; 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.
; http://php.net/cgi.check-shebang-line
; https://php.net/cgi.check-shebang-line
;cgi.check_shebang_line=1
;;;;;;;;;;;;;;;;
@@ -828,17 +836,17 @@ enable_dl = Off
;;;;;;;;;;;;;;;;
; Whether to allow HTTP file uploads.
; http://php.net/file-uploads
; https://php.net/file-uploads
file_uploads = On
; Temporary directory for HTTP uploaded files (will use system default if not
; specified).
; http://php.net/upload-tmp-dir
; https://php.net/upload-tmp-dir
;upload_tmp_dir =
; Maximum allowed size for uploaded files.
; http://php.net/upload-max-filesize
upload_max_filesize = 22M
; https://php.net/upload-max-filesize
upload_max_filesize = 2M
; Maximum number of files that can be uploaded via a single request
max_file_uploads = 20
@@ -848,24 +856,24 @@ max_file_uploads = 20
;;;;;;;;;;;;;;;;;;
; Whether to allow the treatment of URLs (like http:// or ftp://) as files.
; http://php.net/allow-url-fopen
; https://php.net/allow-url-fopen
allow_url_fopen = On
; Whether to allow include/require to open URLs (like http:// or ftp://) as files.
; http://php.net/allow-url-include
; Whether to allow include/require to open URLs (like https:// or ftp://) as files.
; https://php.net/allow-url-include
allow_url_include = Off
; Define the anonymous ftp password (your email address). PHP's default setting
; for this is empty.
; http://php.net/from
; https://php.net/from
;from="john@doe.com"
; Define the User-Agent string. PHP's default setting for this is empty.
; http://php.net/user-agent
; https://php.net/user-agent
;user_agent="PHP"
; Default timeout for socket based streams (seconds)
; http://php.net/default-socket-timeout
; https://php.net/default-socket-timeout
default_socket_timeout = 60
; If your scripts have to deal with files from Macintosh systems,
@@ -873,7 +881,7 @@ default_socket_timeout = 60
; unix or win32 systems, setting this flag will cause PHP to
; automatically detect the EOL character in those files so that
; fgets() and file() will work regardless of the source of the file.
; http://php.net/auto-detect-line-endings
; https://php.net/auto-detect-line-endings
;auto_detect_line_endings = Off
;;;;;;;;;;;;;;;;;;;;;;
@@ -901,29 +909,27 @@ default_socket_timeout = 60
;
; Notes for Windows environments :
;
; - Many DLL files are located in the extensions/ (PHP 4) or ext/ (PHP 5+)
; extension folders as well as the separate PECL DLL download (PHP 5+).
; - Many DLL files are located in the ext/
; extension folders as well as the separate PECL DLL download.
; Be sure to appropriately set the extension_dir directive.
;
;extension=bz2
;extension=curl
;extension=ffi
;extension=ftp
;extension=fileinfo
;extension=gd2
;extension=gd
;extension=gettext
;extension=gmp
;extension=intl
;extension=imap
;extension=interbase
;extension=ldap
;extension=mbstring
;extension=exif ; Must be after mbstring as it depends on it
;extension=mysqli
;extension=oci8_12c ; Use with Oracle Database 12c Instant Client
;extension=odbc
;extension=openssl
;extension=pdo_firebird
extension=pdo_mysql
;extension=pdo_oci
;extension=pdo_mysql
;extension=pdo_odbc
;extension=pdo_pgsql
;extension=pdo_sqlite
@@ -931,7 +937,7 @@ extension=pdo_mysql
;extension=shmop
; The MIBS data available in the PHP distribution must be installed.
; See http://www.php.net/manual/en/snmp.installation.php
; See https://www.php.net/manual/en/snmp.installation.php
;extension=snmp
;extension=soap
@@ -939,8 +945,10 @@ extension=pdo_mysql
;extension=sodium
;extension=sqlite3
;extension=tidy
;extension=xmlrpc
;extension=xsl
;extension=zip
;zend_extension=opcache
;;;;;;;;;;;;;;;;;;;
; Module Settings ;
@@ -952,26 +960,26 @@ cli_server.color = On
[Date]
; Defines the default timezone used by the date functions
; http://php.net/date.timezone
; https://php.net/date.timezone
;date.timezone =
; http://php.net/date.default-latitude
; https://php.net/date.default-latitude
;date.default_latitude = 31.7667
; http://php.net/date.default-longitude
; https://php.net/date.default-longitude
;date.default_longitude = 35.2333
; http://php.net/date.sunrise-zenith
;date.sunrise_zenith = 90.583333
; https://php.net/date.sunrise-zenith
;date.sunrise_zenith = 90.833333
; http://php.net/date.sunset-zenith
;date.sunset_zenith = 90.583333
; https://php.net/date.sunset-zenith
;date.sunset_zenith = 90.833333
[filter]
; http://php.net/filter.default
; https://php.net/filter.default
;filter.default = unsafe_raw
; http://php.net/filter.default-flags
; https://php.net/filter.default-flags
;filter.default_flags =
[iconv]
@@ -992,13 +1000,6 @@ cli_server.color = On
; otherwise output encoding conversion cannot be performed.
;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.default_locale =
; This directive allows you to produce PHP errors when some error
@@ -1009,7 +1010,7 @@ cli_server.color = On
[sqlite3]
; Directory pointing to SQLite3 extensions
; http://php.net/sqlite3.extension-dir
; https://php.net/sqlite3.extension-dir
;sqlite3.extension_dir =
; SQLite defensive mode flag (only available from SQLite 3.26+)
@@ -1023,14 +1024,14 @@ cli_server.color = On
[Pcre]
; PCRE library backtracking limit.
; http://php.net/pcre.backtrack-limit
; https://php.net/pcre.backtrack-limit
;pcre.backtrack_limit=100000
; PCRE library recursion limit.
; 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
; stack size limit imposed by the Operating System).
; http://php.net/pcre.recursion-limit
; https://php.net/pcre.recursion-limit
;pcre.recursion_limit=100000
; Enables or disables JIT compilation of patterns. This requires the PCRE
@@ -1039,38 +1040,36 @@ cli_server.color = On
[Pdo]
; Whether to pool ODBC connections. Can be one of "strict", "relaxed" or "off"
; http://php.net/pdo-odbc.connection-pooling
; https://php.net/pdo-odbc.connection-pooling
;pdo_odbc.connection_pooling=strict
;pdo_odbc.db2_instance_name
[Pdo_mysql]
; Default socket name for local MySQL connects. If empty, uses the built-in
; MySQL defaults.
pdo_mysql.default_socket=
[Phar]
; http://php.net/phar.readonly
; https://php.net/phar.readonly
;phar.readonly = On
; http://php.net/phar.require-hash
; https://php.net/phar.require-hash
;phar.require_hash = On
;phar.cache_list =
[mail function]
; For Win32 only.
; http://php.net/smtp
; https://php.net/smtp
SMTP = localhost
; http://php.net/smtp-port
; https://php.net/smtp-port
smtp_port = 25
; For Win32 only.
; http://php.net/sendmail-from
; https://php.net/sendmail-from
;sendmail_from = me@example.com
; For Unix only. You may supply arguments as well (default: "sendmail -t -i").
; http://php.net/sendmail-path
; https://php.net/sendmail-path
;sendmail_path =
; Force the addition of the specified parameters to be passed as extra parameters
@@ -1081,6 +1080,10 @@ smtp_port = 25
; Add X-PHP-Originating-Script: that will include uid of the script followed by the filename
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 full path of the script, line number, To address and headers.
;mail.log =
@@ -1088,13 +1091,13 @@ mail.add_x_header = Off
;mail.log = syslog
[ODBC]
; http://php.net/odbc.default-db
; https://php.net/odbc.default-db
;odbc.default_db = Not yet implemented
; http://php.net/odbc.default-user
; https://php.net/odbc.default-user
;odbc.default_user = Not yet implemented
; http://php.net/odbc.default-pw
; https://php.net/odbc.default-pw
;odbc.default_pw = Not yet implemented
; Controls the ODBC cursor model.
@@ -1102,99 +1105,72 @@ mail.add_x_header = Off
;odbc.default_cursortype
; Allow or prevent persistent links.
; http://php.net/odbc.allow-persistent
; https://php.net/odbc.allow-persistent
odbc.allow_persistent = On
; Check that a connection is still valid before reuse.
; http://php.net/odbc.check-persistent
; https://php.net/odbc.check-persistent
odbc.check_persistent = On
; Maximum number of persistent links. -1 means no limit.
; http://php.net/odbc.max-persistent
; https://php.net/odbc.max-persistent
odbc.max_persistent = -1
; Maximum number of links (persistent + non-persistent). -1 means no limit.
; http://php.net/odbc.max-links
; https://php.net/odbc.max-links
odbc.max_links = -1
; Handling of LONG fields. Returns number of bytes to variables. 0 means
; passthru.
; http://php.net/odbc.defaultlrl
; https://php.net/odbc.defaultlrl
odbc.defaultlrl = 4096
; 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
; of odbc.defaultlrl and odbc.defaultbinmode
; http://php.net/odbc.defaultbinmode
; https://php.net/odbc.defaultbinmode
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]
; Maximum number of persistent links. -1 means no limit.
; http://php.net/mysqli.max-persistent
; https://php.net/mysqli.max-persistent
mysqli.max_persistent = -1
; Allow accessing, from PHP's perspective, local files with LOAD DATA statements
; http://php.net/mysqli.allow_local_infile
; https://php.net/mysqli.allow_local_infile
;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.
; http://php.net/mysqli.allow-persistent
; https://php.net/mysqli.allow-persistent
mysqli.allow_persistent = On
; Maximum number of links. -1 means no limit.
; http://php.net/mysqli.max-links
; https://php.net/mysqli.max-links
mysqli.max_links = -1
; 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
; compile-time value defined MYSQL_PORT (in that order). Win32 will only look
; at MYSQL_PORT.
; http://php.net/mysqli.default-port
; https://php.net/mysqli.default-port
mysqli.default_port = 3306
; Default socket name for local MySQL connects. If empty, uses the built-in
; MySQL defaults.
; http://php.net/mysqli.default-socket
; https://php.net/mysqli.default-socket
mysqli.default_socket =
; Default host for mysql_connect() (doesn't apply in safe mode).
; http://php.net/mysqli.default-host
; Default host for mysqli_connect() (doesn't apply in safe mode).
; https://php.net/mysqli.default-host
mysqli.default_host =
; Default user for mysql_connect() (doesn't apply in safe mode).
; http://php.net/mysqli.default-user
; Default user for mysqli_connect() (doesn't apply in safe mode).
; https://php.net/mysqli.default-user
mysqli.default_user =
; Default password for mysqli_connect() (doesn't apply in safe mode).
@@ -1202,11 +1178,13 @@ mysqli.default_user =
; *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
; file will be able to reveal the password as well.
; http://php.net/mysqli.default-pw
; https://php.net/mysqli.default-pw
mysqli.default_pw =
; Allow or prevent reconnect
mysqli.reconnect = Off
; If this option is enabled, closing a persistent connection will rollback
; any pending transactions of this connection, before it is put back
; into the persistent connection pool.
;mysqli.rollback_on_cached_plink = Off
[mysqlnd]
; Enable / Disable collection of general statistics by mysqlnd which can be
@@ -1215,11 +1193,11 @@ mysqlnd.collect_statistics = On
; Enable / Disable collection of memory usage statistics by mysqlnd which can be
; used to tune and monitor MySQL operations.
mysqlnd.collect_memory_statistics = Off
mysqlnd.collect_memory_statistics = On
; Records communication from all extensions using mysqlnd to the specified log
; file.
; http://php.net/mysqlnd.debug
; https://php.net/mysqlnd.debug
;mysqlnd.debug =
; Defines which queries will be logged.
@@ -1242,99 +1220,46 @@ mysqlnd.collect_memory_statistics = Off
; 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]
; Allow or prevent persistent links.
; http://php.net/pgsql.allow-persistent
; https://php.net/pgsql.allow-persistent
pgsql.allow_persistent = On
; Detect broken persistent links always with pg_pconnect().
; Auto reset feature requires a little overheads.
; http://php.net/pgsql.auto-reset-persistent
; https://php.net/pgsql.auto-reset-persistent
pgsql.auto_reset_persistent = Off
; Maximum number of persistent links. -1 means no limit.
; http://php.net/pgsql.max-persistent
; https://php.net/pgsql.max-persistent
pgsql.max_persistent = -1
; Maximum number of links (persistent+non persistent). -1 means no limit.
; http://php.net/pgsql.max-links
; https://php.net/pgsql.max-links
pgsql.max_links = -1
; Ignore PostgreSQL backends Notice message or not.
; Notice message logging require a little overheads.
; http://php.net/pgsql.ignore-notice
; https://php.net/pgsql.ignore-notice
pgsql.ignore_notice = 0
; Log PostgreSQL backends Notice message or not.
; Unless pgsql.ignore_notice=0, module cannot log notice message.
; http://php.net/pgsql.log-notice
; https://php.net/pgsql.log-notice
pgsql.log_notice = 0
[bcmath]
; Number of decimal digits for all bcmath functions.
; http://php.net/bcmath.scale
; https://php.net/bcmath.scale
bcmath.scale = 0
[browscap]
; http://php.net/browscap
; https://php.net/browscap
;browscap = extra/browscap.ini
[Session]
; Handler used to store/retrieve data.
; http://php.net/session.save-handler
; https://php.net/session.save-handler
session.save_handler = files
; Argument passed to save_handler. In the case of files, this is the path
@@ -1363,8 +1288,8 @@ session.save_handler = files
;
; where MODE is the octal representation of the mode. Note that this
; does not overwrite the process's umask.
; http://php.net/session.save-path
;session.save_path = "/var/lib/php/sessions"
; https://php.net/session.save-path
;session.save_path = "/tmp"
; Whether to use strict session mode.
; Strict session mode does not accept an uninitialized session ID, and
@@ -1376,51 +1301,52 @@ session.save_handler = files
session.use_strict_mode = 0
; Whether to use cookies.
; http://php.net/session.use-cookies
; https://php.net/session.use-cookies
session.use_cookies = 1
; http://php.net/session.cookie-secure
; https://php.net/session.cookie-secure
;session.cookie_secure =
; 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
; 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.
; http://php.net/session.use-only-cookies
; https://php.net/session.use-only-cookies
session.use_only_cookies = 1
; Name of the session (used as cookie name).
; http://php.net/session.name
; https://php.net/session.name
session.name = PHPSESSID
; Initialize session on request startup.
; http://php.net/session.auto-start
; https://php.net/session.auto-start
session.auto_start = 0
; Lifetime in seconds of cookie or, if 0, until browser is restarted.
; http://php.net/session.cookie-lifetime
; https://php.net/session.cookie-lifetime
session.cookie_lifetime = 0
; The path for which the cookie is valid.
; http://php.net/session.cookie-path
; https://php.net/session.cookie-path
session.cookie_path = /
; The domain for which the cookie is valid.
; http://php.net/session.cookie-domain
; https://php.net/session.cookie-domain
session.cookie_domain =
; Whether or not to add the httpOnly flag to the cookie, which makes it
; inaccessible to browser scripting languages such as JavaScript.
; http://php.net/session.cookie-httponly
; https://php.net/session.cookie-httponly
session.cookie_httponly =
; Add SameSite attribute to cookie to help mitigate Cross-Site Request Forgery (CSRF/XSRF)
; Current valid values are "Lax" or "Strict"
; Current valid values are "Strict", "Lax" or "None". When using "None",
; 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
session.cookie_samesite =
; Handler used to serialize data. php is the standard serializer of PHP.
; http://php.net/session.serialize-handler
; https://php.net/session.serialize-handler
session.serialize_handler = php
; Defines the probability that the 'garbage collection' process is started on every
@@ -1429,8 +1355,8 @@ session.serialize_handler = php
; Default Value: 1
; Development Value: 1
; Production Value: 1
; http://php.net/session.gc-probability
session.gc_probability = 0
; https://php.net/session.gc-probability
session.gc_probability = 1
; Defines the probability that the 'garbage collection' process is started on every
; session initialization. The probability is calculated by using gc_probability/gc_divisor,
@@ -1439,35 +1365,35 @@ session.gc_probability = 0
; Default Value: 100
; Development Value: 1000
; Production Value: 1000
; http://php.net/session.gc-divisor
; https://php.net/session.gc-divisor
session.gc_divisor = 1000
; After this number of seconds, stored data will be seen as 'garbage' and
; cleaned up by the garbage collection process.
; http://php.net/session.gc-maxlifetime
; https://php.net/session.gc-maxlifetime
session.gc_maxlifetime = 1440
; NOTE: If you are using the subdirectory option for storing session files
; (see session.save_path above), then garbage collection does *not*
; happen automatically. You will need to do your own garbage
; collection through a shell script, cron entry, or some other method.
; For example, the following script would is the equivalent of
; setting session.gc_maxlifetime to 1440 (1440 seconds = 24 minutes):
; For example, the following script is the equivalent of setting
; session.gc_maxlifetime to 1440 (1440 seconds = 24 minutes):
; find /path/to/sessions -cmin +24 -type f | xargs rm
; Check HTTP Referer to invalidate externally stored URLs containing ids.
; HTTP_REFERER has to contain this substring for the session to be
; considered as valid.
; http://php.net/session.referer-check
; https://php.net/session.referer-check
session.referer_check =
; Set to {nocache,private,public,} to determine HTTP caching aspects
; or leave this empty to avoid sending anti-caching headers.
; http://php.net/session.cache-limiter
; https://php.net/session.cache-limiter
session.cache_limiter = nocache
; Document expires after n minutes.
; http://php.net/session.cache-expire
; https://php.net/session.cache-expire
session.cache_expire = 180
; trans sid support is disabled by default.
@@ -1479,18 +1405,9 @@ session.cache_expire = 180
; in publicly accessible computer.
; - User may access your site with the same session ID
; always using URL stored in browser's history or bookmarks.
; http://php.net/session.use-trans-sid
; https://php.net/session.use-trans-sid
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.
; <form> is special; if you include them here, the rewriter will
; add a hidden <input> field with the info which is otherwise appended
@@ -1500,7 +1417,7 @@ session.sid_length = 26
; Default 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="
; http://php.net/url-rewriter.tags
; https://php.net/url-rewriter.tags
session.trans_sid_tags = "a=href,area=href,frame=src,form="
; URL rewriter does not rewrite absolute URLs by default.
@@ -1516,23 +1433,11 @@ session.trans_sid_tags = "a=href,area=href,frame=src,form="
; Production Value: ""
;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
; Default Value: On
; Development Value: On
; Production Value: On
; http://php.net/session.upload-progress.enabled
; https://php.net/session.upload-progress.enabled
;session.upload_progress.enabled = On
; Cleanup the progress information as soon as all POST data has been read
@@ -1540,14 +1445,14 @@ session.sid_bits_per_character = 5
; Default Value: On
; Development Value: On
; Production Value: On
; http://php.net/session.upload-progress.cleanup
; https://php.net/session.upload-progress.cleanup
;session.upload_progress.cleanup = On
; A prefix used for the upload progress key in $_SESSION
; Default Value: "upload_progress_"
; Development Value: "upload_progress_"
; Production Value: "upload_progress_"
; http://php.net/session.upload-progress.prefix
; https://php.net/session.upload-progress.prefix
;session.upload_progress.prefix = "upload_progress_"
; The index name (concatenated with the prefix) in $_SESSION
@@ -1555,7 +1460,7 @@ session.sid_bits_per_character = 5
; Default Value: "PHP_SESSION_UPLOAD_PROGRESS"
; Development Value: "PHP_SESSION_UPLOAD_PROGRESS"
; Production Value: "PHP_SESSION_UPLOAD_PROGRESS"
; http://php.net/session.upload-progress.name
; https://php.net/session.upload-progress.name
;session.upload_progress.name = "PHP_SESSION_UPLOAD_PROGRESS"
; How frequently the upload progress should be updated.
@@ -1563,18 +1468,18 @@ session.sid_bits_per_character = 5
; Default Value: "1%"
; Development Value: "1%"
; Production Value: "1%"
; http://php.net/session.upload-progress.freq
; https://php.net/session.upload-progress.freq
;session.upload_progress.freq = "1%"
; The minimum delay between updates, in seconds
; Default Value: 1
; Development Value: 1
; Production Value: 1
; http://php.net/session.upload-progress.min-freq
; https://php.net/session.upload-progress.min-freq
;session.upload_progress.min_freq = "1"
; Only write session data when session data is changed. Enabled by default.
; http://php.net/session.lazy-write
; https://php.net/session.lazy-write
;session.lazy_write = On
[Assertion]
@@ -1582,67 +1487,47 @@ session.sid_bits_per_character = 5
; -1: Do not compile at all
; 0: Jump over assertion at run-time
; 1: Execute assertions
; 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)
; Changing from or to a negative value is only possible in php.ini!
; (For turning assertions on and off at run-time, toggle zend.assertions between the values 1 and 0)
; Default Value: 1
; Development Value: 1
; Production Value: -1
; http://php.net/zend.assertions
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
; https://php.net/zend.assertions
zend.assertions = 1
[COM]
; path to a file containing GUIDs, IIDs or filenames of files with TypeLibs
; http://php.net/com.typelib-file
; https://php.net/com.typelib-file
;com.typelib_file =
; allow Distributed-COM calls
; http://php.net/com.allow-dcom
; https://php.net/com.allow-dcom
;com.allow_dcom = true
; autoregister constants of a component's typlib on com_load()
; http://php.net/com.autoregister-typelib
; autoregister constants of a component's typelib on com_load()
; https://php.net/com.autoregister-typelib
;com.autoregister_typelib = true
; register constants casesensitive
; http://php.net/com.autoregister-casesensitive
; https://php.net/com.autoregister-casesensitive
;com.autoregister_casesensitive = false
; show warnings on duplicate constant registrations
; http://php.net/com.autoregister-verbose
; https://php.net/com.autoregister-verbose
;com.autoregister_verbose = true
; The default character set code-page to use when passing strings to and from COM objects.
; Default: system ANSI code page
;com.code_page=
; The version of the .NET framework to use. The value of the setting are the first three parts
; of the framework's version number, separated by dots, and prefixed with "v", e.g. "v4.0.30319".
;com.dotnet_version=
[mbstring]
; language for internal character representation.
; This affects mb_send_mail() and mbstring.detect_order.
; http://php.net/mbstring.language
; https://php.net/mbstring.language
;mbstring.language = Japanese
; Use of this INI entry is deprecated, use global internal_encoding instead.
@@ -1656,8 +1541,8 @@ zend.assertions = -1
; http input encoding.
; mbstring.encoding_translation = On is needed to use this setting.
; If empty, default_charset or input_encoding or mbstring.input is used.
; The precedence is: default_charset < input_encoding < mbsting.http_input
; http://php.net/mbstring.http-input
; The precedence is: default_charset < input_encoding < mbstring.http_input
; https://php.net/mbstring.http-input
;mbstring.http_input =
; Use of this INI entry is deprecated, use global output_encoding instead.
@@ -1667,7 +1552,7 @@ zend.assertions = -1
; The precedence is: default_charset < output_encoding < mbstring.http_output
; To use an output encoding conversion, mbstring's output handler must be set
; otherwise output encoding conversion cannot be performed.
; http://php.net/mbstring.http-output
; https://php.net/mbstring.http-output
;mbstring.http_output =
; enable automatic encoding translation according to
@@ -1675,49 +1560,40 @@ zend.assertions = -1
; converted to internal encoding by setting this to On.
; Note: Do _not_ use automatic encoding translation for
; portable libs/applications.
; http://php.net/mbstring.encoding-translation
; https://php.net/mbstring.encoding-translation
;mbstring.encoding_translation = Off
; automatic encoding detection order.
; "auto" detect order is changed according to mbstring.language
; http://php.net/mbstring.detect-order
; https://php.net/mbstring.detect-order
;mbstring.detect_order = auto
; substitute_character used when character cannot be converted
; one from another
; http://php.net/mbstring.substitute-character
; https://php.net/mbstring.substitute-character
;mbstring.substitute_character = none
; overload(replace) single byte functions by mbstring functions.
; mail(), ereg(), etc are overloaded by mb_send_mail(), mb_ereg(),
; etc. Possible values are 0,1,2,4 or combination of them.
; For example, 7 for overload everything.
; 0: No overload
; 1: Overload mail() function
; 2: Overload str*() functions
; 4: Overload ereg*() functions
; http://php.net/mbstring.func-overload
;mbstring.func_overload = 0
; enable strict encoding detection.
; Default: Off
;mbstring.strict_detection = On
; Enable strict encoding detection.
;mbstring.strict_detection = Off
; This directive specifies the regex pattern of content types for which mb_output_handler()
; is activated.
; Default: mbstring.http_output_conv_mimetype=^(text/|application/xhtml\+xml)
;mbstring.http_output_conv_mimetype=
; Default: mbstring.http_output_conv_mimetypes=^(text/|application/xhtml\+xml)
;mbstring.http_output_conv_mimetypes=
; This directive specifies maximum stack depth for mbstring regular expressions. It is similar
; to the pcre.recursion_limit for PCRE.
; Default: 100000
;mbstring.regex_stack_limit=100000
; This directive specifies maximum retry count for mbstring regular expressions. It is similar
; to the pcre.backtrack_limit for PCRE.
;mbstring.regex_retry_limit=1000000
[gd]
; Tell the jpeg decode to ignore warnings and try to create
; a gd image. The warning will then be displayed as notices
; disabled by default
; http://php.net/gd.jpeg-ignore-warning
; https://php.net/gd.jpeg-ignore-warning
;gd.jpeg_ignore_warning = 1
[exif]
@@ -1725,48 +1601,48 @@ zend.assertions = -1
; With mbstring support this will automatically be converted into the encoding
; given by corresponding encode setting. When empty mbstring.internal_encoding
; is used. For the decode settings you can distinguish between motorola and
; intel byte order. A decode setting cannot be empty.
; http://php.net/exif.encode-unicode
; intel byte order. A decode setting must not be empty.
; https://php.net/exif.encode-unicode
;exif.encode_unicode = ISO-8859-15
; http://php.net/exif.decode-unicode-motorola
; https://php.net/exif.decode-unicode-motorola
;exif.decode_unicode_motorola = UCS-2BE
; http://php.net/exif.decode-unicode-intel
; https://php.net/exif.decode-unicode-intel
;exif.decode_unicode_intel = UCS-2LE
; http://php.net/exif.encode-jis
; https://php.net/exif.encode-jis
;exif.encode_jis =
; http://php.net/exif.decode-jis-motorola
; https://php.net/exif.decode-jis-motorola
;exif.decode_jis_motorola = JIS
; http://php.net/exif.decode-jis-intel
; https://php.net/exif.decode-jis-intel
;exif.decode_jis_intel = JIS
[Tidy]
; The path to a default tidy configuration file to use when using tidy
; http://php.net/tidy.default-config
; https://php.net/tidy.default-config
;tidy.default_config = /usr/local/lib/php/default.tcfg
; Should tidy clean and repair output automatically?
; WARNING: Do not use this option if you are generating non-html content
; such as dynamic images
; http://php.net/tidy.clean-output
; https://php.net/tidy.clean-output
tidy.clean_output = Off
[soap]
; Enables or disables WSDL caching feature.
; http://php.net/soap.wsdl-cache-enabled
; https://php.net/soap.wsdl-cache-enabled
soap.wsdl_cache_enabled=1
; Sets the directory name where SOAP extension will put cache files.
; http://php.net/soap.wsdl-cache-dir
; https://php.net/soap.wsdl-cache-dir
soap.wsdl_cache_dir="/tmp"
; (time to live) Sets the number of second while cached file will be used
; instead of original one.
; http://php.net/soap.wsdl-cache-ttl
; https://php.net/soap.wsdl-cache-ttl
soap.wsdl_cache_ttl=86400
; Sets the size of the cache limit. (Max. number of WSDL files to cache)
@@ -1825,6 +1701,11 @@ ldap.max_links = -1
; size of the optimized code.
;opcache.save_comments=1
; If enabled, compilation warnings (including notices and deprecations) will
; be recorded and replayed each time a file is included. Otherwise, compilation
; warnings will only be emitted when the file is first cached.
;opcache.record_warnings=0
; Allow file existence override (file_exists, etc.) performance feature.
;opcache.enable_file_override=0
@@ -1846,10 +1727,6 @@ ldap.max_links = -1
; are cached.
;opcache.max_file_size=0
; Check the cache checksum each N requests.
; The default value of "0" means that the checks are disabled.
;opcache.consistency_checks=0
; How long to wait (in seconds) for a scheduled restart to begin if the cache
; is not being accessed.
;opcache.force_restart_timeout=180
@@ -1880,6 +1757,10 @@ ldap.max_links = -1
; errors.
;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.
; It should improve performance when SHM memory is full, at server restart or
; SHM reset. The default "" disables file based caching.
@@ -1897,8 +1778,13 @@ ldap.max_links = -1
;opcache.file_cache_fallback=1
; Enables or disables copying of PHP code (text segment) into HUGE PAGES.
; This should improve performance, but requires appropriate OS configuration.
;opcache.huge_code_pages=1
; Under certain circumstances (if only a single global PHP process is
; started from which all others fork), this can increase performance
; 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.
;opcache.validate_permission=0
@@ -1910,6 +1796,24 @@ ldap.max_links = -1
; optimizations.
;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]
; A default value for the CURLOPT_CAINFO option. This is required to be an
; absolute path.
@@ -1933,6 +1837,12 @@ ldap.max_links = -1
; SSL stream context option.
;openssl.capath=
; Local Variables:
; tab-width: 4
; End:
[ffi]
; FFI API restriction. Possible values:
; "preload" - enabled in CLI scripts and preloaded files (default)
; "false" - always disabled
; "true" - always enabled
;ffi.enable=preload
; List of headers files to preload, wildcard patterns allowed.
;ffi.preload=

View File

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

View File

@@ -1,45 +0,0 @@
[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.4 -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

@@ -1,20 +0,0 @@
[global]
daemonize=no
error_log=/dev/stderr
[www]
user = www-data
group = www-data
listen = /run/php/php8.4-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": {},
"metadata": {},
"token_endpoint_auth_method": "client_secret_basic",
"post_logout_redirect_uris": ["http://localhost:8000"],
"redirect_uris": ["http://localhost:8000/oauth2/callback"],
"post_logout_redirect_uris": ["http://localhost:10502"],
"redirect_uris": ["http://localhost:10502/oauth2/callback"],
"response_types": [
"code"
],

View File

@@ -1,23 +0,0 @@
ARG NODE_OPTIONS="--openssl-legacy-provider" \
PHP_PKG_VERSION="8.4.5-r0" \
ENCORE_MODE="production" \
APP_ENV="prod" \
BASE_PATH="" \
APP_LOCALES="fr,en" \
ADDITIONAL_PACKAGES=" \
php84-gd=${PHP_PKG_VERSION} \
php84-xsl=${PHP_PKG_VERSION} \
php84-pgsql=${PHP_PKG_VERSION} \
php84-pdo_pgsql=${PHP_PKG_VERSION} \
php84-soap=${PHP_PKG_VERSION} \
php84-ldap=${PHP_PKG_VERSION} \
php84-pdo_mysql=${PHP_PKG_VERSION} \
php84-bcmath=${PHP_PKG_VERSION} \
php84-xdebug" \
ADDITIONAL_ENV=" \
ENCORE_MODE=${ENCORE_MODE} \
APP_ENV=${APP_ENV} \
BASE_PATH=${BASE_PATH} \
APP_LOCALES=${APP_LOCALES}"
FROM reg.cadoles.com/cadoles/symfony:alpine-php-8.4-base-2025.6.12-stable.1038.48ea3b9

View File

@@ -0,0 +1,38 @@
## 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

@@ -1,24 +0,0 @@
ARG NODE_OPTIONS="--openssl-legacy-provider" \
PHP_PKG_VERSION="8.4.5-r0" \
ENCORE_MODE="production" \
APP_ENV="prod" \
BASE_PATH="" \
APP_LOCALES="fr,en" \
ADDITIONAL_PACKAGES=" \
php84-gd=${PHP_PKG_VERSION} \
php84-xsl=${PHP_PKG_VERSION} \
php84-pgsql=${PHP_PKG_VERSION} \
php84-pdo_pgsql=${PHP_PKG_VERSION} \
php84-soap=${PHP_PKG_VERSION} \
php84-ldap=${PHP_PKG_VERSION} \
php84-pdo_mysql=${PHP_PKG_VERSION} \
php84-bcmath=${PHP_PKG_VERSION} \
php84-xdebug" \
ADDITIONAL_ENV=" \
ENCORE_MODE=${ENCORE_MODE} \
APP_ENV=${APP_ENV} \
BASE_PATH=${BASE_PATH} \
APP_LOCALES=${APP_LOCALES}"
FROM reg.cadoles.com/cadoles/symfony:alpine-php-8.4-standalone-2025.6.12-stable.1038.48ea3b9
USER www-data

View File

@@ -3,13 +3,26 @@
declare(strict_types=1);
use Rector\Config\RectorConfig;
use Rector\Set\ValueObject\LevelSetList;
use Rector\Renaming\Rector\Class_\RenameAttributeRector;
use Rector\Symfony\Set\SymfonySetList;
return static function (RectorConfig $rectorConfig): void {
$rectorConfig->paths([__DIR__ . '/src']);
$rectorConfig->paths([
__DIR__ . '/src',
]);
// Upgrade to PHP 8.4 syntax
$rectorConfig->sets([
LevelSetList::UP_TO_PHP_84,
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

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

View File

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

View File

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

View File

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

View File

@@ -8,23 +8,18 @@ use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\HttpFoundation\Exception\BadRequestException;
use Symfony\Component\HttpFoundation\RedirectResponse;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpFoundation\Session\SessionInterface;
use Symfony\Component\HttpFoundation\RequestStack;
use Symfony\Component\Security\Core\Authentication\Token\Storage\TokenStorageInterface;
use Symfony\Component\Security\Core\Exception\AccessDeniedException;
class HydraService extends AbstractController
{
private SessionInterface $session;
private Client $client;
private TokenStorageInterface $tokenStorage;
private 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 __construct(
private readonly Client $client,
private readonly RequestStack $requestStack,
private readonly TokenStorageInterface $tokenStorage,
private readonly string $baseUrl
){
}
public function handleLoginRequest(Request $request): RedirectResponse
@@ -38,11 +33,11 @@ class HydraService extends AbstractController
$res = $this->client->fetchLoginRequestInfo($challenge);
$loginRequestInfo = $res->toArray();
if (200 !== $res->getStatusCode()) {
$this->session->clear();
$this->requestStack->getSession()->clear();
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
$this->session->set('challenge', $loginRequestInfo['challenge']);
$this->requestStack->getSession()->set('challenge', $loginRequestInfo['challenge']);
return new RedirectResponse($this->baseUrl.'/connect/login-accept');
}
@@ -77,7 +72,7 @@ class HydraService extends AbstractController
}
$logoutRequestInfo = $this->client->fetchLogoutRequestInfo($logoutChallenge)->toArray();
$logoutAcceptRes = $this->client->acceptLogoutRequest($logoutRequestInfo['challenge'])->toArray();
$this->session->clear();
$this->requestStack->getSession()->clear();
$this->tokenStorage->setToken(null);
return new RedirectResponse($logoutAcceptRes['redirect_to']);

View File

@@ -10,16 +10,16 @@ use App\SQLLogin\Exception\EmptyResultException;
use App\SQLLogin\Exception\InvalidSQLPasswordException;
use App\SQLLogin\Exception\SecurityPatternConfigurationException;
use App\SQLLogin\SQLLoginRequest;
use PDOException;
use Symfony\Component\HttpFoundation\RedirectResponse;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\Security\Core\Authentication\Token\TokenInterface;
use Symfony\Component\Security\Core\Exception\AuthenticationException;
use Symfony\Component\Security\Core\Security;
use Symfony\Component\Security\Core\Exception\UserNotFoundException;
use Symfony\Component\Security\Core\User\UserInterface;
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\SelfValidatingPassport;
use Symfony\Component\Security\Http\SecurityRequestAttributes;
class SQLLoginUserAuthenticator extends AbstractLoginFormAuthenticator
{
@@ -27,18 +27,12 @@ class SQLLoginUserAuthenticator extends AbstractLoginFormAuthenticator
public const ERROR_LOGIN = 'error_login';
public const TECHNICAL_ERROR = 'technical_error';
private string $baseUrl;
public function __construct(
string $baseUrl,
private SQLLoginService $sqlLoginService,
private PasswordEncoder $passwordHasher,
private SQLLoginRequest $sqlLoginRequest
) {
$this->baseUrl = $baseUrl;
$this->sqlLoginService = $sqlLoginService;
$this->passwordHasher = $passwordHasher;
$this->sqlLoginRequest = $sqlLoginRequest;
private readonly string $baseUrl,
private readonly SQLLoginService $sqlLoginService,
private readonly PasswordEncoder $passwordHasher,
private readonly SQLLoginRequest $sqlLoginRequest
){
}
/**
@@ -58,24 +52,23 @@ class SQLLoginUserAuthenticator extends AbstractLoginFormAuthenticator
public function onAuthenticationFailure(Request $request, AuthenticationException $exception): RedirectResponse
{
$request->getSession()->set(Security::AUTHENTICATION_ERROR, $exception);
$request->getSession()->set(SecurityRequestAttributes::AUTHENTICATION_ERROR, $exception);
return new RedirectResponse($this->baseUrl.'/login');
}
public function authenticate(Request $request): SelfValidatingPassport
{
$form = $request->request->get('login');
$login = $form['login'];
$form = $request->request->all(key: 'login');
$login = \strtolower($form['login']);
$plaintextPassword = $form['password'];
$rememberMe = isset($form['_remember_me']) ? true : false;
$session = $request->getSession();
try {
$datas = $this->sqlLoginService->fetchPasswordAndDatas($login);
} catch (EmptyResultException $e) {
$session->set(self::ERROR_LOGIN, true);
throw new AuthenticationException();
} catch (DataToFetchConfigurationException|PDOException $e) {
} catch (DataToFetchConfigurationException|\PDOException $e) {
\Sentry\captureException($e);
$session->set(self::TECHNICAL_ERROR, true);
throw new AuthenticationException();
@@ -101,14 +94,18 @@ class SQLLoginUserAuthenticator extends AbstractLoginFormAuthenticator
$session->set(self::TECHNICAL_ERROR, true);
throw new AuthenticationException();
}
$user = new User($login, $remoteHashedPassword, $datas, $rememberMe);
$loader = function (string $userIdentifier) use ($user) {
return $user->getLogin() == $userIdentifier ? $user : null;
};
$passport = new SelfValidatingPassport(new UserBadge($login, $loader));
if ($rememberMe) {
$passport->addBadge(new RememberMeBadge());
$user = new User($login, $remoteHashedPassword, $datas);
$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->setAttribute('attributes', $user->getAttributes());
return $passport;

View File

@@ -3,45 +3,48 @@
namespace App\Security;
use App\Entity\User;
use App\Service\SQLLoginService;
use App\SQLLogin\SQLLoginRequest;
use Symfony\Component\HttpFoundation\RequestStack;
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\UserProviderInterface;
class SQLLoginUserProvider implements UserProviderInterface
{
protected RequestStack $requestStack;
public function __construct(
private readonly RequestStack $requestStack,
private readonly SQLLoginService $sqlLoginService,
private readonly SQLLoginRequest $sqlLoginRequest
){
}
public function __construct(RequestStack $requestStack)
public function loadUserByIdentifier(string $identifier): UserInterface
{
$this->requestStack = $requestStack;
$user = $this->sqlLoginService->fetchPasswordAndDatas($identifier);
$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');
}
public function loadUserByIdentifier(string $identifier, ?User $user): ?UserInterface
{
if ($user->getUserIdentifier() === $identifier) {
return $user;
return new User($user[$this->sqlLoginRequest->getLoginColumnName()], $user[$this->sqlLoginRequest->getPasswordColumnName()], $attributes);
}
return null;
}
public function loadUserByUsername(string $username): ?UserInterface
{
return $this->loadUserByIdentifier($username, null);
}
public function refreshUser(UserInterface $user): UserInterface|null
public function refreshUser(UserInterface $user): UserInterface
{
if (!$user instanceof User) {
throw new UnsupportedUserException(sprintf('Invalid user class "%s".', get_class($user)));
}
return $this->loadUserByIdentifier($user->getUserIdentifier(), $user);
return $this->loadUserByIdentifier($user->getUserIdentifier());
}
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,6 +8,7 @@ use App\SQLLogin\SQLLoginRequest;
use PDO;
use Psr\Log\LoggerInterface;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\Security\Core\User\UserInterface;
class SQLLoginService extends AbstractController
{
@@ -21,15 +22,20 @@ class SQLLoginService extends AbstractController
$this->loggerInterface = $loggerInterface;
}
/**
* @return array<string,string>
*/
public function fetchPasswordAndDatas(string $login): array
{
$dataRequest = $this->sqlLoginRequest->getDatasRequest();
$login = \strtolower($login);
$datas = $this->executeRequestWithLogin($dataRequest, $login);
return $datas;
}
/**
* @return array<string,string>
*/
private function executeRequestWithLogin(string $request, string $login): array
{
$attempt = 0;

View File

@@ -123,16 +123,16 @@
"src/Kernel.php"
]
},
"symfony/lock": {
"version": "5.4",
"symfony/monolog-bundle": {
"version": "3.10",
"recipe": {
"repo": "github.com/symfony/recipes",
"branch": "main",
"version": "5.2",
"ref": "8e937ff2b4735d110af1770f242c1107fdab4c8e"
"version": "3.7",
"ref": "aff23899c4440dd995907613c1dd709b6f59503f"
},
"files": [
"config/packages/lock.yaml"
"config/packages/monolog.yaml"
]
},
"symfony/routing": {

View File

@@ -13,10 +13,6 @@
<source>form.label.password</source>
<target>Password *</target>
</trans-unit>
<trans-unit id="t17Vcvs" resname="form.label.remember_me">
<source>form.label.remember_me</source>
<target>Remember me</target>
</trans-unit>
<trans-unit id="4kfMq14" resname="altcha.validator.server_validation_error">
<source>altcha.validator.server_validation_error</source>
<target>Verification failed. Try again later.</target>

View File

@@ -13,10 +13,6 @@
<source>form.label.password</source>
<target>Mot de passe *</target>
</trans-unit>
<trans-unit id="t17Vcvs" resname="form.label.remember_me">
<source>form.label.remember_me</source>
<target>Se souvenir de moi</target>
</trans-unit>
<trans-unit id="4kfMq14" resname="altcha.validator.server_validation_error">
<source>altcha.validator.server_validation_error</source>
<target>Échec de la vérification. Réessayez plus tard.</target>