openmage/magento-lts

是 Magento-1 的分支,接受错误修复(与官方 Magento 兼容,可作为官方 Magento 的替代品)

维护者

详细信息

github.com/OpenMage/magento-lts

问题

资助包维护!
Open Collective

安装: 163,096

依赖: 21

建议者: 0

安全: 16

星星: 865

观察者: 65

分支: 436

开放问题: 177

类型:magento-source

v21.0.0-beta2 2024-07-02 13:26 UTC

README

All Contributors Total Downloads License PHP Security workflow Badge CI workflow Badge

Magento - 长期支持

此仓库是 非官方 的社区驱动项目之家。其目标是提供一个可靠的替代方案,替代 Magento CE 的官方版本,它直接整合来自社区的提升,同时保持与官方版本的高度向后兼容性。

鼓励并欢迎来自社区的错误修复和安全补丁的拉取请求!

目录

版本和版本控制

此项目比原始 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-installercweagans/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
  • 不再抑制弃用错误
  • 删除了模块
    • Mage_Backup#2811
    • Mage_Compiler
    • Mage_GoogleBase
    • Mage_PageCache#2258
    • Mage_Poll#3098
    • Mage_Xmlconnect
    • Phoenix_Moneybookers

如果您依赖于这些模块,您可以使用 composer 重新安装它们

  • Mage_Backupcomposer require openmage/module-mage-backup
  • Mage_PageCachecomposer require openmage/module-mage-pagecache
  • Mage_Pollcomposer 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依赖项。这允许更好的维护和升级性。

特别是

  • phpseclibmcrypt_compatCm_RedisSessionCm_Cache_Backend_RedisPelago_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模块)的targetNamespaceMagento更改为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
    
    $FileParentDir$/$FileNameWithoutExtension$.css:$FileParentDir$/$FileNameWithoutExtension$.css.map
    

公开沟通

  • 丹尼尔·法尔克(Daniel Fahlke)

维护者

许可

感谢以下这些人(《emoji key》)

感谢这些可爱的人!

本项目遵循all-contributors规范。欢迎任何类型的贡献!