chore: Update minimum PHP requirement to 8.2

This commit is contained in:
Roman Kelesidis 2025-06-21 09:55:55 +03:00
commit eba0187568
No known key found for this signature in database
GPG key ID: D8157C4D4C4C6DB4
6 changed files with 106 additions and 133 deletions

View file

@ -41,7 +41,7 @@ jobs:
- name: Setup PHP
uses: shivammathur/setup-php@v2
with:
php-version: '8.1'
php-version: '8.2'
- name: Install Composer dependencies
run: composer install --no-dev --no-progress --prefer-dist --optimize-autoloader

View file

@ -17,7 +17,7 @@ jobs:
- name: Setup PHP 🔩
uses: shivammathur/setup-php@v2
with:
php-version: '8.1'
php-version: '8.2'
- name: Install Composer dependencies 🪚
run: composer install --no-dev --no-progress --prefer-dist --optimize-autoloader
@ -54,7 +54,7 @@ jobs:
- name: 🔩 Setup PHP
uses: shivammathur/setup-php@v2
with:
php-version: '8.1'
php-version: '8.2'
- name: 🖇 Install Composer dependencies
run: composer install --no-dev --no-progress --prefer-dist --optimize-autoloader

View file

@ -57,7 +57,7 @@ and go from there. The documentation will be translated to English in the near f
* Apache / nginx ([example config](install/nginx.conf)) / caddy ([example config](install/Caddyfile))
* MySQL 5.5.3 or above (including MySQL 8.0+) / MariaDB 10.0 or above / Percona
* PHP: 8.1 / 8.2 / 8.3 / 8.4 (8.2+ required for development dependencies)
* PHP: 8.2 / 8.3 / 8.4
* PHP Extensions: mbstring, gd, bcmath, intl, tidy (optional), xml, xmlwriter
* Crontab (Recommended)

View file

@ -46,9 +46,9 @@
"forum": "https://torrentpier.com"
},
"require": {
"php": ">=8.1",
"php": ">=8.2",
"arokettu/bencode": "^4.1.0",
"arokettu/monsterid": "dev-master",
"arokettu/monsterid": "^4.1.0",
"arokettu/random-polyfill": "1.0.2",
"arokettu/torrent-file": "^5.2.1",
"belomaxorka/captcha": "1.*",
@ -70,11 +70,7 @@
"php-curl-class/php-curl-class": "^12.0.0",
"robmorgan/phinx": "^0.16.9",
"samdark/sitemap": "2.4.1",
"symfony/event-dispatcher": "^6.4",
"symfony/filesystem": "^6.4",
"symfony/finder": "^6.4",
"symfony/mailer": "^6.4",
"symfony/mime": "^6.4",
"symfony/mailer": "^7.3",
"symfony/polyfill": "v1.32.0",
"vlucas/phpdotenv": "^5.5",
"z4kn4fein/php-semver": "^v3.0.0"
@ -82,7 +78,7 @@
"require-dev": {
"mockery/mockery": "^1.6",
"pestphp/pest": "^3.8",
"symfony/var-dumper": "^6.4"
"symfony/var-dumper": "^7.3"
},
"autoload": {
"psr-4": {
@ -102,6 +98,6 @@
"php-http/discovery": true
}
},
"minimum-stability": "dev",
"minimum-stability": "stable",
"prefer-stable": true
}

194
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": "22ce2e2cd48a2460b740ef920c114be6",
"content-hash": "7a49154cbc59ebda181451dd8fa93a6d",
"packages": [
{
"name": "arokettu/bencode",
@ -141,7 +141,7 @@
},
{
"name": "arokettu/monsterid",
"version": "dev-master",
"version": "4.1.0",
"source": {
"type": "git",
"url": "https://github.com/arokettu/monsterid.git",
@ -171,7 +171,6 @@
"squizlabs/php_codesniffer": "*",
"vimeo/psalm": "^5.4 || ^6.0"
},
"default-branch": true,
"type": "library",
"extra": {
"discovery": {
@ -605,7 +604,7 @@
},
{
"name": "cakephp/core",
"version": "5.2.4",
"version": "5.2.5",
"source": {
"type": "git",
"url": "https://github.com/cakephp/core.git",
@ -672,16 +671,16 @@
},
{
"name": "cakephp/database",
"version": "5.2.4",
"version": "5.2.5",
"source": {
"type": "git",
"url": "https://github.com/cakephp/database.git",
"reference": "8c4eaecf6612274b445172b680dc47a2dad681a9"
"reference": "a6bf606b1bab532d04ea504fef8a272a1aeba287"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/cakephp/database/zipball/8c4eaecf6612274b445172b680dc47a2dad681a9",
"reference": "8c4eaecf6612274b445172b680dc47a2dad681a9",
"url": "https://api.github.com/repos/cakephp/database/zipball/a6bf606b1bab532d04ea504fef8a272a1aeba287",
"reference": "a6bf606b1bab532d04ea504fef8a272a1aeba287",
"shasum": ""
},
"require": {
@ -735,11 +734,11 @@
"issues": "https://github.com/cakephp/cakephp/issues",
"source": "https://github.com/cakephp/database"
},
"time": "2025-05-09T15:08:51+00:00"
"time": "2025-06-18T02:55:13+00:00"
},
{
"name": "cakephp/datasource",
"version": "5.2.4",
"version": "5.2.5",
"source": {
"type": "git",
"url": "https://github.com/cakephp/datasource.git",
@ -806,16 +805,16 @@
},
{
"name": "cakephp/utility",
"version": "5.2.4",
"version": "5.2.5",
"source": {
"type": "git",
"url": "https://github.com/cakephp/utility.git",
"reference": "76dcd5c20e46aaf5bfdf9ad51e9f5313abffe104"
"reference": "7eaef40766bf671332adfacdc2d6fb9ea8aea5de"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/cakephp/utility/zipball/76dcd5c20e46aaf5bfdf9ad51e9f5313abffe104",
"reference": "76dcd5c20e46aaf5bfdf9ad51e9f5313abffe104",
"url": "https://api.github.com/repos/cakephp/utility/zipball/7eaef40766bf671332adfacdc2d6fb9ea8aea5de",
"reference": "7eaef40766bf671332adfacdc2d6fb9ea8aea5de",
"shasum": ""
},
"require": {
@ -866,7 +865,7 @@
"issues": "https://github.com/cakephp/cakephp/issues",
"source": "https://github.com/cakephp/utility"
},
"time": "2025-04-19T12:34:03+00:00"
"time": "2025-05-21T14:35:19+00:00"
},
{
"name": "claviska/simpleimage",
@ -3569,22 +3568,22 @@
},
{
"name": "symfony/config",
"version": "v7.0.8",
"version": "v7.3.0",
"source": {
"type": "git",
"url": "https://github.com/symfony/config.git",
"reference": "f8a8fb0c2d0a188a00a2dd5af8a4eb070641ec60"
"reference": "ba62ae565f1327c2f6366726312ed828c85853bc"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/symfony/config/zipball/f8a8fb0c2d0a188a00a2dd5af8a4eb070641ec60",
"reference": "f8a8fb0c2d0a188a00a2dd5af8a4eb070641ec60",
"url": "https://api.github.com/repos/symfony/config/zipball/ba62ae565f1327c2f6366726312ed828c85853bc",
"reference": "ba62ae565f1327c2f6366726312ed828c85853bc",
"shasum": ""
},
"require": {
"php": ">=8.2",
"symfony/deprecation-contracts": "^2.5|^3",
"symfony/filesystem": "^6.4|^7.0",
"symfony/filesystem": "^7.1",
"symfony/polyfill-ctype": "~1.8"
},
"conflict": {
@ -3624,7 +3623,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/v7.0.8"
"source": "https://github.com/symfony/config/tree/v7.3.0"
},
"funding": [
{
@ -3640,7 +3639,7 @@
"type": "tidelift"
}
],
"time": "2024-05-31T14:55:39+00:00"
"time": "2025-05-15T09:04:05+00:00"
},
{
"name": "symfony/console",
@ -3805,24 +3804,24 @@
},
{
"name": "symfony/event-dispatcher",
"version": "v6.4.13",
"version": "v7.3.0",
"source": {
"type": "git",
"url": "https://github.com/symfony/event-dispatcher.git",
"reference": "0ffc48080ab3e9132ea74ef4e09d8dcf26bf897e"
"reference": "497f73ac996a598c92409b44ac43b6690c4f666d"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/0ffc48080ab3e9132ea74ef4e09d8dcf26bf897e",
"reference": "0ffc48080ab3e9132ea74ef4e09d8dcf26bf897e",
"url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/497f73ac996a598c92409b44ac43b6690c4f666d",
"reference": "497f73ac996a598c92409b44ac43b6690c4f666d",
"shasum": ""
},
"require": {
"php": ">=8.1",
"php": ">=8.2",
"symfony/event-dispatcher-contracts": "^2.5|^3"
},
"conflict": {
"symfony/dependency-injection": "<5.4",
"symfony/dependency-injection": "<6.4",
"symfony/service-contracts": "<2.5"
},
"provide": {
@ -3831,13 +3830,13 @@
},
"require-dev": {
"psr/log": "^1|^2|^3",
"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/config": "^6.4|^7.0",
"symfony/dependency-injection": "^6.4|^7.0",
"symfony/error-handler": "^6.4|^7.0",
"symfony/expression-language": "^6.4|^7.0",
"symfony/http-foundation": "^6.4|^7.0",
"symfony/service-contracts": "^2.5|^3",
"symfony/stopwatch": "^5.4|^6.0|^7.0"
"symfony/stopwatch": "^6.4|^7.0"
},
"type": "library",
"autoload": {
@ -3865,7 +3864,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/v6.4.13"
"source": "https://github.com/symfony/event-dispatcher/tree/v7.3.0"
},
"funding": [
{
@ -3881,7 +3880,7 @@
"type": "tidelift"
}
],
"time": "2024-09-25T14:18:03+00:00"
"time": "2025-04-22T09:11:45+00:00"
},
{
"name": "symfony/event-dispatcher-contracts",
@ -3961,25 +3960,25 @@
},
{
"name": "symfony/filesystem",
"version": "v6.4.13",
"version": "v7.3.0",
"source": {
"type": "git",
"url": "https://github.com/symfony/filesystem.git",
"reference": "4856c9cf585d5a0313d8d35afd681a526f038dd3"
"reference": "b8dce482de9d7c9fe2891155035a7248ab5c7fdb"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/symfony/filesystem/zipball/4856c9cf585d5a0313d8d35afd681a526f038dd3",
"reference": "4856c9cf585d5a0313d8d35afd681a526f038dd3",
"url": "https://api.github.com/repos/symfony/filesystem/zipball/b8dce482de9d7c9fe2891155035a7248ab5c7fdb",
"reference": "b8dce482de9d7c9fe2891155035a7248ab5c7fdb",
"shasum": ""
},
"require": {
"php": ">=8.1",
"php": ">=8.2",
"symfony/polyfill-ctype": "~1.8",
"symfony/polyfill-mbstring": "~1.8"
},
"require-dev": {
"symfony/process": "^5.4|^6.4|^7.0"
"symfony/process": "^6.4|^7.0"
},
"type": "library",
"autoload": {
@ -4007,7 +4006,7 @@
"description": "Provides basic utilities for the filesystem",
"homepage": "https://symfony.com",
"support": {
"source": "https://github.com/symfony/filesystem/tree/v6.4.13"
"source": "https://github.com/symfony/filesystem/tree/v7.3.0"
},
"funding": [
{
@ -4023,27 +4022,27 @@
"type": "tidelift"
}
],
"time": "2024-10-25T15:07:50+00:00"
"time": "2024-10-25T15:15:23+00:00"
},
{
"name": "symfony/finder",
"version": "v6.4.17",
"version": "v7.3.0",
"source": {
"type": "git",
"url": "https://github.com/symfony/finder.git",
"reference": "1d0e8266248c5d9ab6a87e3789e6dc482af3c9c7"
"reference": "ec2344cf77a48253bbca6939aa3d2477773ea63d"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/symfony/finder/zipball/1d0e8266248c5d9ab6a87e3789e6dc482af3c9c7",
"reference": "1d0e8266248c5d9ab6a87e3789e6dc482af3c9c7",
"url": "https://api.github.com/repos/symfony/finder/zipball/ec2344cf77a48253bbca6939aa3d2477773ea63d",
"reference": "ec2344cf77a48253bbca6939aa3d2477773ea63d",
"shasum": ""
},
"require": {
"php": ">=8.1"
"php": ">=8.2"
},
"require-dev": {
"symfony/filesystem": "^6.0|^7.0"
"symfony/filesystem": "^6.4|^7.0"
},
"type": "library",
"autoload": {
@ -4071,7 +4070,7 @@
"description": "Finds files and directories via an intuitive fluent interface",
"homepage": "https://symfony.com",
"support": {
"source": "https://github.com/symfony/finder/tree/v6.4.17"
"source": "https://github.com/symfony/finder/tree/v7.3.0"
},
"funding": [
{
@ -4087,43 +4086,43 @@
"type": "tidelift"
}
],
"time": "2024-12-29T13:51:37+00:00"
"time": "2024-12-30T19:00:26+00:00"
},
{
"name": "symfony/mailer",
"version": "v6.4.21",
"version": "v7.3.0",
"source": {
"type": "git",
"url": "https://github.com/symfony/mailer.git",
"reference": "ada2809ccd4ec27aba9fc344e3efdaec624c6438"
"reference": "0f375bbbde96ae8c78e4aa3e63aabd486e33364c"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/symfony/mailer/zipball/ada2809ccd4ec27aba9fc344e3efdaec624c6438",
"reference": "ada2809ccd4ec27aba9fc344e3efdaec624c6438",
"url": "https://api.github.com/repos/symfony/mailer/zipball/0f375bbbde96ae8c78e4aa3e63aabd486e33364c",
"reference": "0f375bbbde96ae8c78e4aa3e63aabd486e33364c",
"shasum": ""
},
"require": {
"egulias/email-validator": "^2.1.10|^3|^4",
"php": ">=8.1",
"php": ">=8.2",
"psr/event-dispatcher": "^1",
"psr/log": "^1|^2|^3",
"symfony/event-dispatcher": "^5.4|^6.0|^7.0",
"symfony/mime": "^6.2|^7.0",
"symfony/event-dispatcher": "^6.4|^7.0",
"symfony/mime": "^7.2",
"symfony/service-contracts": "^2.5|^3"
},
"conflict": {
"symfony/http-client-contracts": "<2.5",
"symfony/http-kernel": "<5.4",
"symfony/messenger": "<6.2",
"symfony/mime": "<6.2",
"symfony/twig-bridge": "<6.2.1"
"symfony/http-kernel": "<6.4",
"symfony/messenger": "<6.4",
"symfony/mime": "<6.4",
"symfony/twig-bridge": "<6.4"
},
"require-dev": {
"symfony/console": "^5.4|^6.0|^7.0",
"symfony/http-client": "^5.4|^6.0|^7.0",
"symfony/messenger": "^6.2|^7.0",
"symfony/twig-bridge": "^6.2|^7.0"
"symfony/console": "^6.4|^7.0",
"symfony/http-client": "^6.4|^7.0",
"symfony/messenger": "^6.4|^7.0",
"symfony/twig-bridge": "^6.4|^7.0"
},
"type": "library",
"autoload": {
@ -4151,7 +4150,7 @@
"description": "Helps sending emails",
"homepage": "https://symfony.com",
"support": {
"source": "https://github.com/symfony/mailer/tree/v6.4.21"
"source": "https://github.com/symfony/mailer/tree/v7.3.0"
},
"funding": [
{
@ -4167,25 +4166,24 @@
"type": "tidelift"
}
],
"time": "2025-04-26T23:47:35+00:00"
"time": "2025-04-04T09:51:09+00:00"
},
{
"name": "symfony/mime",
"version": "v6.4.21",
"version": "v7.3.0",
"source": {
"type": "git",
"url": "https://github.com/symfony/mime.git",
"reference": "fec8aa5231f3904754955fad33c2db50594d22d1"
"reference": "0e7b19b2f399c31df0cdbe5d8cbf53f02f6cfcd9"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/symfony/mime/zipball/fec8aa5231f3904754955fad33c2db50594d22d1",
"reference": "fec8aa5231f3904754955fad33c2db50594d22d1",
"url": "https://api.github.com/repos/symfony/mime/zipball/0e7b19b2f399c31df0cdbe5d8cbf53f02f6cfcd9",
"reference": "0e7b19b2f399c31df0cdbe5d8cbf53f02f6cfcd9",
"shasum": ""
},
"require": {
"php": ">=8.1",
"symfony/deprecation-contracts": "^2.5|^3",
"php": ">=8.2",
"symfony/polyfill-intl-idn": "^1.10",
"symfony/polyfill-mbstring": "^1.0"
},
@ -4193,17 +4191,17 @@
"egulias/email-validator": "~3.0.0",
"phpdocumentor/reflection-docblock": "<3.2.2",
"phpdocumentor/type-resolver": "<1.4.0",
"symfony/mailer": "<5.4",
"symfony/mailer": "<6.4",
"symfony/serializer": "<6.4.3|>7.0,<7.0.3"
},
"require-dev": {
"egulias/email-validator": "^2.1.10|^3.1|^4",
"league/html-to-markdown": "^5.0",
"phpdocumentor/reflection-docblock": "^3.0|^4.0|^5.0",
"symfony/dependency-injection": "^5.4|^6.0|^7.0",
"symfony/process": "^5.4|^6.4|^7.0",
"symfony/property-access": "^5.4|^6.0|^7.0",
"symfony/property-info": "^5.4|^6.0|^7.0",
"symfony/dependency-injection": "^6.4|^7.0",
"symfony/process": "^6.4|^7.0",
"symfony/property-access": "^6.4|^7.0",
"symfony/property-info": "^6.4|^7.0",
"symfony/serializer": "^6.4.3|^7.0.3"
},
"type": "library",
@ -4236,7 +4234,7 @@
"mime-type"
],
"support": {
"source": "https://github.com/symfony/mime/tree/v6.4.21"
"source": "https://github.com/symfony/mime/tree/v7.3.0"
},
"funding": [
{
@ -4252,7 +4250,7 @@
"type": "tidelift"
}
],
"time": "2025-04-27T13:27:38+00:00"
"time": "2025-02-19T08:51:26+00:00"
},
{
"name": "symfony/polyfill",
@ -7534,34 +7532,33 @@
},
{
"name": "symfony/var-dumper",
"version": "v6.4.21",
"version": "v7.3.0",
"source": {
"type": "git",
"url": "https://github.com/symfony/var-dumper.git",
"reference": "22560f80c0c5cd58cc0bcaf73455ffd81eb380d5"
"reference": "548f6760c54197b1084e1e5c71f6d9d523f2f78e"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/symfony/var-dumper/zipball/22560f80c0c5cd58cc0bcaf73455ffd81eb380d5",
"reference": "22560f80c0c5cd58cc0bcaf73455ffd81eb380d5",
"url": "https://api.github.com/repos/symfony/var-dumper/zipball/548f6760c54197b1084e1e5c71f6d9d523f2f78e",
"reference": "548f6760c54197b1084e1e5c71f6d9d523f2f78e",
"shasum": ""
},
"require": {
"php": ">=8.1",
"php": ">=8.2",
"symfony/deprecation-contracts": "^2.5|^3",
"symfony/polyfill-mbstring": "~1.0"
},
"conflict": {
"symfony/console": "<5.4"
"symfony/console": "<6.4"
},
"require-dev": {
"ext-iconv": "*",
"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"
"symfony/console": "^6.4|^7.0",
"symfony/http-kernel": "^6.4|^7.0",
"symfony/process": "^6.4|^7.0",
"symfony/uid": "^6.4|^7.0",
"twig/twig": "^3.12"
},
"bin": [
"Resources/bin/var-dump-server"
@ -7599,7 +7596,7 @@
"dump"
],
"support": {
"source": "https://github.com/symfony/var-dumper/tree/v6.4.21"
"source": "https://github.com/symfony/var-dumper/tree/v7.3.0"
},
"funding": [
{
@ -7615,7 +7612,7 @@
"type": "tidelift"
}
],
"time": "2025-04-09T07:34:50+00:00"
"time": "2025-04-27T18:39:23+00:00"
},
{
"name": "ta-tikoma/phpunit-architecture-test",
@ -7786,15 +7783,14 @@
}
],
"aliases": [],
"minimum-stability": "dev",
"minimum-stability": "stable",
"stability-flags": {
"arokettu/monsterid": 20,
"gemorroj/m3u-parser": 20
},
"prefer-stable": true,
"prefer-lowest": false,
"platform": {
"php": ">=8.1"
"php": ">=8.2"
},
"platform-dev": {},
"plugin-api-version": "2.6.0"

View file

@ -25,7 +25,7 @@ require INC_DIR . '/functions_cli.php';
* System requirements
*/
const CHECK_REQUIREMENTS = [
'php_min_version' => '8.1.0',
'php_min_version' => '8.2.0',
'ext_list' => [
'json',
'curl',
@ -146,26 +146,7 @@ if (!is_file(BB_ROOT . 'vendor/autoload.php')) {
if (is_file(BB_ROOT . 'composer.phar')) {
out('- Installing dependencies...', 'info');
// Ask if user is a developer before installing dependencies
$isDeveloper = false;
echo "\nAre you a developer who needs testing tools and dev dependencies? [y/N]: ";
if (str_starts_with(mb_strtolower(trim(readline())), 'y')) {
$isDeveloper = true;
if (!version_compare(PHP_VERSION, '8.2.0', '>=')) {
out("- Warning: Development dependencies require PHP 8.2+, your version is " . PHP_VERSION, 'warning');
out("- Some testing tools may not work properly", 'warning');
}
out("- Installing all dependencies including dev tools...\n", 'info');
} else {
out("- Installing production dependencies only...\n", 'info');
}
$composerFlags = '--no-interaction --no-ansi';
if (!$isDeveloper) {
$composerFlags .= ' --no-dev';
}
runProcess('php ' . BB_ROOT . 'composer.phar install ' . $composerFlags);
runProcess('php ' . BB_ROOT . 'composer.phar install --no-interaction --no-ansi');
define('COMPOSER_COMPLETED', true);
} else {
out('- composer.phar not found. Please, download it (composer.phar) manually', 'error');