diff --git a/README.md b/README.md index ac5070165e..b0cb6f0a30 100644 --- a/README.md +++ b/README.md @@ -32,12 +32,13 @@ Pull requestを送信する際は、EC-CUBEのコピーライトポリシーに #### システム要件 -| 分類 | ソフトウェア | Version | -|-----------|----------------------|-------------------------------------------------------------------------| -| WebServer | Apache | 2.4.x or higher
(mod_rewrite / mod_ssl 必須) | -| PHP | PHP | 7.4.33 or higher | -| Database | PostgreSQL | 9.x or higher | -| Database | MySQL | 5.x / 8.x or higher
(InnoDBエンジン 必須) | +| 分類 | ソフトウェア | Version | +|-----------|--------------|---------------------------------------------------------| +| WebServer | Apache | 2.4.x or higher
(mod_rewrite / mod_ssl 必須) | +| PHP | PHP | 7.4.33 or higher | +| Database | PostgreSQL | 9.x or higher | +| Database | MySQL | 5.x / 8.0.x / 8.4.x or higher
(InnoDBエンジン 必須) | + ##### 必要な PHP Extensions diff --git a/composer.json b/composer.json index 02284dba1d..ccde4f890e 100644 --- a/composer.json +++ b/composer.json @@ -47,7 +47,8 @@ "pear/xml_util": "*", "setasign/fpdf": "^1.8", "setasign/fpdi": "^2.6", - "smarty/smarty": "^5.0.2" + "smarty/smarty": "^5.0.2", + "symfony/polyfill-php80": "^1.31" }, "autoload": { "classmap": [ diff --git a/composer.lock b/composer.lock index 606c77ddae..e4b92883ba 100644 --- a/composer.lock +++ b/composer.lock @@ -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": "8193790eda3917eed8b2431b71f28b80", + "content-hash": "913b3fad812f8e13e42e3d0e9cbb40d3", "packages": [ { "name": "mobiledetect/mobiledetectlib", @@ -680,16 +680,16 @@ }, { "name": "setasign/fpdi", - "version": "v2.6.1", + "version": "v2.6.2", "source": { "type": "git", "url": "https://github.com/Setasign/FPDI.git", - "reference": "09a816004fcee9ed3405bd164147e3fdbb79a56f" + "reference": "9e013b376939c0d4029f54150d2a16f3c67a5797" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/Setasign/FPDI/zipball/09a816004fcee9ed3405bd164147e3fdbb79a56f", - "reference": "09a816004fcee9ed3405bd164147e3fdbb79a56f", + "url": "https://api.github.com/repos/Setasign/FPDI/zipball/9e013b376939c0d4029f54150d2a16f3c67a5797", + "reference": "9e013b376939c0d4029f54150d2a16f3c67a5797", "shasum": "" }, "require": { @@ -740,7 +740,7 @@ ], "support": { "issues": "https://github.com/Setasign/FPDI/issues", - "source": "https://github.com/Setasign/FPDI/tree/v2.6.1" + "source": "https://github.com/Setasign/FPDI/tree/v2.6.2" }, "funding": [ { @@ -748,20 +748,20 @@ "type": "tidelift" } ], - "time": "2024-09-02T10:17:15+00:00" + "time": "2024-12-10T13:12:19+00:00" }, { "name": "smarty/smarty", - "version": "v5.4.1", + "version": "v5.4.2", "source": { "type": "git", "url": "https://github.com/smarty-php/smarty.git", - "reference": "cd58df7a2603b7d925e5db5c9d50f10987695fd3" + "reference": "642a97adcc2bf6c1b2458d6afeeb36ae001c1c2f" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/smarty-php/smarty/zipball/cd58df7a2603b7d925e5db5c9d50f10987695fd3", - "reference": "cd58df7a2603b7d925e5db5c9d50f10987695fd3", + "url": "https://api.github.com/repos/smarty-php/smarty/zipball/642a97adcc2bf6c1b2458d6afeeb36ae001c1c2f", + "reference": "642a97adcc2bf6c1b2458d6afeeb36ae001c1c2f", "shasum": "" }, "require": { @@ -816,9 +816,9 @@ "support": { "forum": "https://github.com/smarty-php/smarty/discussions", "issues": "https://github.com/smarty-php/smarty/issues", - "source": "https://github.com/smarty-php/smarty/tree/v5.4.1" + "source": "https://github.com/smarty-php/smarty/tree/v5.4.2" }, - "time": "2024-08-29T23:10:45+00:00" + "time": "2024-11-20T21:18:16+00:00" }, { "name": "symfony/polyfill-mbstring", @@ -846,8 +846,8 @@ "type": "library", "extra": { "thanks": { - "name": "symfony/polyfill", - "url": "https://github.com/symfony/polyfill" + "url": "https://github.com/symfony/polyfill", + "name": "symfony/polyfill" } }, "autoload": { @@ -899,6 +899,86 @@ } ], "time": "2024-09-09T11:45:10+00:00" + }, + { + "name": "symfony/polyfill-php80", + "version": "v1.31.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/polyfill-php80.git", + "reference": "60328e362d4c2c802a54fcbf04f9d3fb892b4cf8" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/polyfill-php80/zipball/60328e362d4c2c802a54fcbf04f9d3fb892b4cf8", + "reference": "60328e362d4c2c802a54fcbf04f9d3fb892b4cf8", + "shasum": "" + }, + "require": { + "php": ">=7.2" + }, + "type": "library", + "extra": { + "thanks": { + "name": "symfony/polyfill", + "url": "https://github.com/symfony/polyfill" + } + }, + "autoload": { + "files": [ + "bootstrap.php" + ], + "psr-4": { + "Symfony\\Polyfill\\Php80\\": "" + }, + "classmap": [ + "Resources/stubs" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Ion Bazan", + "email": "ion.bazan@gmail.com" + }, + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony polyfill backporting some PHP 8.0+ features to lower PHP versions", + "homepage": "https://symfony.com", + "keywords": [ + "compatibility", + "polyfill", + "portable", + "shim" + ], + "support": { + "source": "https://github.com/symfony/polyfill-php80/tree/v1.31.0" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2024-09-09T11:45:10+00:00" } ], "packages-dev": [ @@ -5092,86 +5172,6 @@ ], "time": "2024-09-09T11:45:10+00:00" }, - { - "name": "symfony/polyfill-php80", - "version": "v1.31.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/polyfill-php80.git", - "reference": "60328e362d4c2c802a54fcbf04f9d3fb892b4cf8" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-php80/zipball/60328e362d4c2c802a54fcbf04f9d3fb892b4cf8", - "reference": "60328e362d4c2c802a54fcbf04f9d3fb892b4cf8", - "shasum": "" - }, - "require": { - "php": ">=7.2" - }, - "type": "library", - "extra": { - "thanks": { - "name": "symfony/polyfill", - "url": "https://github.com/symfony/polyfill" - } - }, - "autoload": { - "files": [ - "bootstrap.php" - ], - "psr-4": { - "Symfony\\Polyfill\\Php80\\": "" - }, - "classmap": [ - "Resources/stubs" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Ion Bazan", - "email": "ion.bazan@gmail.com" - }, - { - "name": "Nicolas Grekas", - "email": "p@tchwork.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Symfony polyfill backporting some PHP 8.0+ features to lower PHP versions", - "homepage": "https://symfony.com", - "keywords": [ - "compatibility", - "polyfill", - "portable", - "shim" - ], - "support": { - "source": "https://github.com/symfony/polyfill-php80/tree/v1.31.0" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2024-09-09T11:45:10+00:00" - }, { "name": "symfony/polyfill-php81", "version": "v1.31.0", diff --git a/data/class/SC_Initial.php b/data/class/SC_Initial.php index 493ba81caa..cd44a93fd4 100644 --- a/data/class/SC_Initial.php +++ b/data/class/SC_Initial.php @@ -57,7 +57,6 @@ public function init() $this->resetSuperglobalsRequest(); // stripslashesDeepGpc メソッドより後で実行 $this->setTimezone(); // 本当はエラーハンドラーより先に読みたい気も $this->normalizeHostname(); // defineConstants メソッドより後で実行 - $this->compatPhp(); } /** @@ -549,46 +548,4 @@ public function normalizeHostname() SC_Response_Ex::sendRedirect($correct_url); } } - - /** - * PHPバージョン互換処理 - * - * @deprecated https://github.com/EC-CUBE/ec-cube2/issues/681 が実現したら、外部ライブラリへ移行して、削除する予定。 - * - * @return void - */ - public function compatPhp() - { - if (!function_exists('str_starts_with')) { - /** - * 文字列が指定された部分文字列で始まるかを調べる。(for PHP < 8) - * - * @param string $haystack - * @param string $needle - * - * @return bool - */ - function str_starts_with($haystack, $needle) - { - return strncmp($haystack, $needle, strlen($needle)) === 0; - } - } - - if (!function_exists('str_ends_with')) { - /** - * 文字列が、指定された文字列で終わるかを調べる。(for PHP < 8) - * - * @param string $haystack - * @param string $needle - * - * @return bool - */ - function str_ends_with($haystack, $needle) - { - $needle_len = strlen($needle); - - return substr($haystack, -$needle_len, $needle_len) === $needle; - } - } - } } diff --git a/docker-compose.mysql.yml b/docker-compose.mysql.yml index c955b11c19..510e038c3a 100644 --- a/docker-compose.mysql.yml +++ b/docker-compose.mysql.yml @@ -33,8 +33,8 @@ services: PASSWORD_HASH_ALGOS: sha256 mysql: - image: mysql:8.0 - command: mysqld --character-set-server=utf8 --collation-server=utf8_general_ci --default-time-zone=+09:00 + image: mysql:8.4 + command: mysqld --character-set-server=utf8mb4 --collation-server=utf8mb4_general_ci --default-time-zone=+09:00 ports: - '13306:3306' volumes: diff --git a/eccube_install.sh b/eccube_install.sh index 81290dd605..6aa5fbc35e 100755 --- a/eccube_install.sh +++ b/eccube_install.sh @@ -265,9 +265,9 @@ case "${DBTYPE}" in fi # MySQL echo "dropdb..." - ${MYSQL} -u ${ROOTUSER} -h ${DBSERVER} -P ${DBPORT} ${PASSOPT} -e "DROP DATABASE \`${DBNAME}\`" + ${MYSQL} -u ${ROOTUSER} -h ${DBSERVER} -P ${DBPORT} ${PASSOPT} -e "DROP DATABASE IF EXISTS \`${DBNAME}\`" echo "createdb..." - ${MYSQL} -u ${ROOTUSER} -h ${DBSERVER} -P ${DBPORT} ${PASSOPT} -e "CREATE DATABASE \`${DBNAME}\` DEFAULT COLLATE=utf8_general_ci;" + ${MYSQL} -u ${ROOTUSER} -h ${DBSERVER} -P ${DBPORT} ${PASSOPT} -e "CREATE DATABASE \`${DBNAME}\` DEFAULT COLLATE=utf8mb4_general_ci;" #echo "grant user..." #${MYSQL} -u ${ROOTUSER} -h ${DBSERVER} -P ${DBPORT} ${PASSOPT} -e "GRANT ALL ON \`${DBNAME}\`.* TO '${DBUSER}'@'%' IDENTIFIED BY '${DBPASS}'" echo "create table..." diff --git a/phpstan.neon.dist b/phpstan.neon.dist index 2e1b6745f2..fedf1b2161 100644 --- a/phpstan.neon.dist +++ b/phpstan.neon.dist @@ -38,9 +38,6 @@ parameters: - message: "#^Variable \\$SJIS_widths might not be defined\\.$#" path: data/class/helper/SC_Helper_FPDI.php - - - message: "#^Inner named functions are not supported by PHPStan\\.#" - path: data/class/SC_Initial.php - message: '#^Path in include_once\(\) "Auth/SASL.php" is not a file or it does not exist.#' path: data/module/Net/SMTP.php