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