openmage / magento-lts
是 Magento-1 的分支,接受错误修复(与官方 Magento 兼容,可作为官方 Magento 的替代品)
Requires
- php: >=7.4 <8.5
- ext-ctype: *
- ext-curl: *
- ext-dom: *
- ext-gd: *
- ext-hash: *
- ext-iconv: *
- ext-intl: *
- ext-json: *
- ext-libxml: *
- ext-mbstring: *
- ext-pdo: *
- ext-simplexml: *
- ext-soap: *
- ext-zlib: *
- colinmollenhour/cache-backend-redis: ^1.14
- colinmollenhour/magento-redis-session: ^3.2.0
- cweagans/composer-patches: ^1.7
- ezyang/htmlpurifier: ^4.17
- magento-hackathon/magento-composer-installer: ^3.1 || ^2.1 || ^4.0
- pelago/emogrifier: ^7.0
- phpseclib/mcrypt_compat: ^2.0.3
- phpseclib/phpseclib: ^3.0.14
- shardj/zf1-future: 1.24.0
- symfony/polyfill-php74: ^1.29
- symfony/polyfill-php80: ^1.29
- symfony/polyfill-php81: ^1.29
- symfony/polyfill-php82: ^1.29
Requires (Dev)
- dealerdirect/phpcodesniffer-composer-installer: ^1.0.0
- friendsofphp/php-cs-fixer: ^3.4
- macopedia/phpstan-magento1: ^1.0.5
- magento-ecg/coding-standard: ^4.5
- openmage/dev-meta-package: ^1.0
- phpcompatibility/php-compatibility: ^9.3
- phpmd/phpmd: ^2.13
- phpstan/phpstan: ^1.11
- phpunit/phpunit: ^9.5
- squizlabs/php_codesniffer: ^3.7
- symplify/vendor-patches: ^11.1
Conflicts
- dev-main
- v21.0.0-beta2
- v21.0.0-beta1
- v20.10.2
- v20.10.1
- v20.10.0
- v20.9.0
- v20.8.0
- v20.7.0
- v20.6.0
- v20.5.0
- v20.4.0
- v20.3.0
- v20.2.0
- v20.1.1
- v20.1.0
- v20.1.0-rc7
- v20.1.0-rc6
- v20.1.0-rc5
- v20.1.0-rc4
- v20.1.0-rc3
- v20.1.0-rc2
- v20.1.0-rc1
- v20.0.20
- v20.0.19
- v20.0.18
- v20.0.17
- v20.0.16
- v20.0.15
- v20.0.14
- v20.0.13
- v20.0.12
- v20.0.11
- v20.0.10
- v20.0.8
- v20.0.7
- v20.0.6
- v20.0.5
- v20.0.4
- v20.0.3
- v20.0.2
- v20.0.1
- v20.0.0
- v19.x-dev
- v19.5.3
- v19.5.2
- v19.5.1
- v19.5.0
- v19.5.0-rc5
- v19.5.0-rc4
- v19.5.0-rc3
- v19.5.0-rc2
- v19.5.0-rc1
- v19.4.23
- v19.4.22
- v19.4.21
- v19.4.20
- v19.4.19
- v19.4.18
- v19.4.17
- v19.4.16
- v19.4.15
- v19.4.14
- v19.4.13
- v19.4.12
- v19.4.11
- v19.4.10
- v19.4.9
- v19.4.8
- v19.4.7
- v19.4.6
- v19.4.5
- v19.4.4
- v19.4.3
- v19.4.2
- v19.4.1
- v19.4.0
- 1.9.3.1
- 1.9.3.0
- 1.9.2.4
- 1.9.2.3
- 1.9.2.2
- 1.9.2.1
- 1.9.2.0
- 1.9.1.1
- dev-next
This package is auto-updated.
Last update: 2024-09-22 03:55:06 UTC
README
Magento - 长期支持
此仓库是 非官方 的社区驱动项目之家。其目标是提供一个可靠的替代方案,替代 Magento CE 的官方版本,它直接整合来自社区的提升,同时保持与官方版本的高度向后兼容性。
鼓励并欢迎来自社区的错误修复和安全补丁的拉取请求!
目录
- 版本和版本控制
- 要求
- 安装
- 保护您的安装
- Magento 1 兼容性
- 变更
- 使用 ddev 的开发环境
- PhpStorm 工厂助手
- PhpStorm SCSS 文件文件监视器
- 公开沟通
- 维护者
- 许可
- 贡献者
版本和版本控制
此项目比原始 Magento 版本编号系统更严格地遵守 语义版本控制,其中“1”基本上是一个固定数字。有关 MAJOR、MINOR 和 PATCH 术语的定义和应用的更多信息,请参阅 术语 部分 RFC 0002 - 发布计划。
OpenMage 团队和社区按照以下方式维护 OpenMage LTS 版本:
- 最新的 MAJOR.MINOR 版本始终接收 PATCH 更新。
- 最新的 MAJOR 版本始终接收 MINOR 更新。
- 每个 MAJOR 版本的最新 MAJOR.MINOR 分支在初始 MAJOR 版本发布之日起至少 2 年内接收 PATCH 更新。
简而言之
- 如果您想保持与最新改进的领先地位,请使用最新的 MAJOR 版本。
- 如果您想获得最大的向后兼容性和最小的升级麻烦,请使用下一个最新的 MAJOR 版本,这样您仍然可以接收重要的安全/稳定性/回归修复。
当前维护版本
- 20.x 是最新的 MAJOR 版本,将在 21.x 发布后的 2 年内接收 PATCH 更新。
- 19.4.x 将在 2025 年 4 月 4 日之前接收 PATCH 更新。
要求
-
PHP 7.4 到 8.3
-
MySQL 5.7+(推荐使用 8.0+)或 MariaDB
-
可选:支持 Redis 5.x、6.x 和 7.0.x
-
PHP 扩展
intl
自 1.9.4.19 & 20.0.17 -
命令
patch
2.7+(或 MacOS/HomeBrew 上的gpatch
)自 1.9.5.0 & 20.1.0
安装
手动安装
下载最新的 发布存档,并将其提取到您现有的安装中。重要:您必须从发布页面上的标记版本下载 ZIP 文件,否则将缺少依赖项。
Composer
步骤 1:创建一个新的 composer 项目
composer init
步骤 2: 配置 composer。 以下选项是必需的。 您可以在此处查看所有选项 这里。
# Allow composer to apply patches to dependencies of magento-lts composer config --json extra.enable-patching true # Configure Magento core composer installer to use magento-lts as the Magento source package composer config extra.magento-core-package-type magento-source # Configure the root directory that magento-lts will be installed to, such as "pub", "htdocs", or "www" composer config extra.magento-root-dir pub
步骤 3: 需求 magento-core-composer-installer
# PHP 7 composer require "aydin-hassan/magento-core-composer-installer":"~2.0.0" # PHP 8 composer require "aydin-hassan/magento-core-composer-installer":"^2.1.0"
注意:如果 composer 要求您信任 aydin-hassan/magento-core-composer-installer
,请务必选择 y
。
步骤 4: 需求适当的 magento-lts
版本
# Latest tagged v20 series release composer require "openmage/magento-lts":"^20.0.0" # Legacy v19 tagged release (Magento 1.9.4.x drop-in replacement supported until April 4, 2025) composer require "openmage/magento-lts":"^19.4.0" # Latest on "main" development branch composer require "openmage/magento-lts":"dev-main" # Latest on "next" development branch composer require "openmage/magento-lts":"dev-next"
注意:如果 composer 要求您信任 magento-hackathon/magento-composer-installer
或 cweagans/composer-patches
,请务必选择 y
。
当部署到生产环境时,建议优化 Composer 的自动加载器以加快类查找时间
composer dump-autoload --optimize
Git
如果您想为项目做出贡献
git init git remote add origin https://github.com/<YOUR GIT USERNAME>/magento-lts git pull origin main git remote add upstream https://github.com/OpenMage/magento-lts git pull upstream main git add -A && git commit
保护您的安装
不要使用常见的路径,如 /admin 作为 OpenMage 后端 URL。 不要在 robots.txt 中使用该路径,并保持其机密性。 您可以从“后端”(系统/配置/管理员/管理员基本 URL)或通过编辑 app/etc/local.xml 来更改它
<config> <admin> <routers> <adminhtml> <args> <frontName><![CDATA[admin]]></frontName> </args> </adminhtml> </routers> </admin> </config>
不要使用常见的文件名,如 api.php 作为 OpenMage API URL,以防止攻击。 不要在 robots.txt 中使用新文件名,并与您的合作伙伴保持机密。 在重命名文件后,您必须更新以下 web 服务器配置
Apache .htaccess
RewriteRule ^api/rest api.php?type=rest [QSA,L]
Nginx
rewrite ^/api/(\w+).*$ /api.php?type=$1 last;`
Magento 1 兼容性
OpenMage LTS 19.4.0 是第一个使用 OpenMage LTS 版本命名系统的标记版本,所有 19.x 版本基本上都与 Magento 1.9.4.x 兼容。
OpenMage LTS 20.x 及以后的版本有更多可能不完全是向后兼容的更改,但最小化迁移和升级的麻烦始终被视为一个重要的目标,并且在接受更改时这一点尤为重要,即使在接受“主要”版本更改时也是如此,如上文中发布和版本所述。
变更
最重要的更改将在此列出,从 19.4.0
以来所有的其他更改可以在 发布说明中找到。
在 Magento 1.9.4.5 和 OpenMage 19.x 之间
- 错误修复和 PHP 7.x、8.0、8.1 和 8.2 兼容性
- 为 system.xml 添加了配置缓存(#1916)
- 添加了 frontend_type color(#2945)
- 在后台网格中搜索 "NULL"(#1203)
- 删除了包含未使用 ActionScript "文件上传器" 文件的
lib/flex
(#2271) - Mage_Catalog_Model_Resource_Abstract::getAttributeRawValue() 现在在数据库中存储的值为
0
时返回'0'
而不是false
(#572) - 需要 PHP 扩展
intl
- 不再抑制弃用错误
- 删除了模块
如果您依赖于这些模块,您可以使用 composer 重新安装它们
Mage_Backup
:composer require openmage/module-mage-backup
Mage_PageCache
:composer require openmage/module-mage-pagecache
Mage_Poll
:composer require openmage/module-mage-poll
Legacy 前端主题
:composer require openmage/legacy-frontend-themes
OpenMage 19.x 和 20.x 之间
如果需要 IE 支持,请勿使用 20.x.x。
- 已移除IE条件注释、IE样式、IE脚本和IE eot文件(#1073)
- 已移除前端默认主题(default、modern、iphone、german、french、blank、blue)(#1600)
- 修复了客户块中的不正确日期时间($useTimezone参数)(#1525)
- 将redis添加为
global/session_save
的有效选项(#1513) - 通过避免设置
_hasDataChanges
标志来减少不必要的保存(#2066) - 已移除对XML中定义的
global/sales/old_fields_map
的支持(#921) - 启用了网站级别的配置缓存(#2355)
- 使Mage_Core_Model_Resource_Db_Abstract::delete的重写遵循父API(#1257)
- 将Mage_Eav_Model_Config重写为所有eav实体和属性读取的缓存(#2993)
要查看完整更改列表,您可以比较标签。
自 OpenMage 19.5.0 / 20.1.0 以来
PHP 7.4现在是最低要求版本。
我们仓库中捆绑的大多数第三方库/模块已被移除,并迁移到composer依赖项。这允许更好的维护和升级性。
特别是
phpseclib
、mcrypt_compat
、Cm_RedisSession
、Cm_Cache_Backend_Redis
、Pelago_Emogrifier
(#2411)- Zend Framework 1(#2827)
如果您的项目通过composer使用OpenMage,则所有依赖项将自动管理。
如果您仅将发布zip/tarball提取到项目的主要文件夹中,那么请确保
-
从您的项目中删除上述库的旧版本,您可以使用此命令完成此操作
rm -rf app/code/core/Zend lib/Cm lib/Credis lib/mcryptcompat lib/Pelago lib/phpseclib lib/Zend
-
下载名为
openmage-VERSIONNUMBER.zip
的新版本发布zip文件,该文件构建为包含由composer生成的vendor
文件夹,其中包含所有依赖项 -
像往常一样在您的项目存储库中解压缩zip文件
我们还决定删除我们的Zend_DB补丁(存储在app/code/core/Zend
中),因为它们非常旧,并且与ZF1-Future的新实现不兼容,ZF1-Future要先进得多,功能也更丰富。这可能会生成不使用'Zend_Db_Expr'引号的表达式的'Zend_Db_Select'语句的问题。如果您在升级后看到SQL错误,请记住检查您的代码中的此特定问题。
UPS关闭了他们的旧CGI API,所以我们从Mage_Usa模块中移除了对其的支持。
在OpenMage 20.x和21.x之间(未发布,可在next
分支上找到)
- PHP 8.2作为最低要求版本
- 已移除scriptaculous/dragdrop.js(#3215)
- RWD主题:更新jQuery到3.7.1(#3922)
- 统一CSRF配置(#3147)并添加了表单密钥验证到联系表单(#3146)
- 从HTML按钮中移除了双重span元素(#3123)
- 已删除所有过时的Mysql4_类(《#2730》)。如果您的安装中有任何使用此类旧的模块/扩展,您必须在命令行中运行
shell/rename-mysql4-class-to-resource.php
以将它们转换。在运行脚本之前备份所有文件。 - 已删除“管理员路由兼容模式”(《#1551》)
新配置选项
admin/design/use_legacy_theme
admin/global_search/enable
admin/emails/admin_notification_email_template
catalog/product_image/progressive_threshold
catalog/search/search_separator
dev/log/max_level
newsletter/security/enable_form_key
sitemap/category/lastmod
sitemap/page/lastmod
sitemap/product/lastmod
新事件
adminhtml_block_widget_form_init_form_values_after
adminhtml_block_widget_tabs_html_before
adminhtml_sales_order_create_save_before
checkout_cart_product_add_before
core_app_run_after
mage_run_installed_exception
sitemap_cms_pages_generating_before
sitemap_urlset_generating_before
SOAP/WSDL 的变更
从19.4.17
/20.0.15
开始,我们已将所有WSDL文件(用于API模块)的targetNamespace
从Magento
更改为OpenMage
。如果您的自定义模块通过自定义WSDL文件扩展了OpenMage的API,并且存在一些硬编码的targetNamespace="urn:Magento"
字符串,则您的API可能无法正常工作。
请将所有出现的内容替换为
targetNamespace="urn:Magento"
或选择性地替换为
targetNamespace="urn:OpenMage"
以避免任何问题。
targetNamespace="urn:{{var wsdl.name}}"
要查找需要修改的文件,您可以从项目根目录运行此命令。
使用DDEV开发环境
grep -rn 'urn:Magento' --include \*.xml
安装ddev
- 按照安装说明克隆仓库(《Git》)
- 创建ddev配置,默认值应该适合您
- 打开
.ddev/config.yaml
并将php版本更改为您的需求ddev config
- 下载并启动容器
- 在浏览器中打开您的网站
ddev start
- 此仓库包括在
.phpstorm.meta.php
中为核心Magento文件提供的类映射。要为安装的扩展添加类映射,您必须安装N98-magerun并运行命令ddev launch
PhpStorm 工厂助手
您可以在此目录中添加额外的元文件以覆盖您自己的项目文件。有关更多信息,请参阅PhpStorm高级元数据。
n98-magerun.phar dev:ide:phpstorm:meta
安装SCSS
PhpStorm SCSS 文件文件监视器
- 打开设置
CTRL+ALT+S
并转到文件监视器npm install -g sass
- 将默认设置更改为
- 参数
- 输出路径以刷新
$FileName$:$FileParentDir$/$FileNameWithoutExtension$.css
- Discord(由Flyingmana维护)
$FileParentDir$/$FileNameWithoutExtension$.css:$FileParentDir$/$FileNameWithoutExtension$.css.map
公开沟通
- 丹尼尔·法尔克(Daniel Fahlke)
维护者
- 大卫·罗宾逊(David Robinson)
- 法布里齐奥·巴利亚诺(Fabrizio Balliano)
- 李·塞弗里特(Lee Saferite)
- 穆罕默德·埃尔德里西(Mohamed Elidrissi)
- 杨启生(Ng Kiat Siong)
- 蒂莫泰乌什·莫蒂列夫斯基(Tymoteusz Motylewski)
- OSL v3.0
许可
感谢以下这些人(《emoji key》)
感谢这些可爱的人!
本项目遵循all-contributors规范。欢迎任何类型的贡献!