This repository is the home of an unofficial community-driven project. It's goal is to be a dependable alternative to the Magento CE official releases which integrates improvements directly from the community while maintaining a high level of backwards compatibility to the official releases.
Pull requests with bug fixes and security patches from the community are encouraged and welcome!
-
PHP 7.3+ (PHP 8.0 is supported)
-
MySQL 5.6+ (8.0+ recommended) or MariaDB
-
PHP extension
intl
since 1.9.4.19 & 20.0.17 -
Command
patch
2.7+ (orgpatch
on MacOS/HomeBrew) since 1.9.5.0 & 20.1.0
Please be aware that although OpenMage is compatible that one or more extensions may not be.
- Redis 5+ (6.x recommended, latest verified compatible 6.0.7 with 20.x)
Download the latest archive and extract it, clone the repo, or add a composer dependency to your existing project like so:
composer require "openmage/magento-lts":"^19.5.0"
To get the latest changes use:
composer require "openmage/magento-lts":"dev-main"
Note: dev-main
is just an alias for current 1.9.4.x
branch and may change
If you want to contribute to the project:
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 1.9.4.x
git add -A && git commit
Don't use common paths like /admin for OpenMage Backend URL. Don't use the path in robots.txt and keep it secret. You can change it from Backend (System / Configuration / Admin / Admin Base Url) or by editing app/etc/local.xml:
<config>
<admin>
<routers>
<adminhtml>
<args>
<frontName><![CDATA[admin]]></frontName>
</args>
</adminhtml>
</routers>
</admin>
</config>
Don't use common file names like api.php for OpenMage API URLs to prevent attacks. Don't use the new file name in robots.txt and keep it secret with your partners. After renaming the file you must update the webserver configuration as follows:
- Apache .htaccess:
RewriteRule ^api/rest api.php?type=rest [QSA,L]
- Nginx:
rewrite ^/api/(\w+).*$ /api.php?type=$1 last;
Most important changes will be listed here, all other changes since 19.4.0
can be found in
release notes.
- bug fixes and PHP 7.x, 8.0 and 8.1 compatibility
- added config cache for system.xml #1916
- search for "NULL" in backend grids #1203
- removed lib/flex containing unused ActionScript "file uploader" files #2271
- removed modules:
Mage_Compiler
Mage_GoogleBase
Mage_PageCache
#2258Mage_Xmlconnect
Phoenix_Moneybookers
If you rely on those modules you can reinstall them with composer:
Mage_PageCache
:composer require openmage/module-mage-pagecache
- PHP extension
intl
is required
Do not use 20.x.x if you need IE support.
- removed IE conditional comments, IE styles, IE scripts and IE eot files #1073
- removed frontend default themes (default, modern, iphone, german, french, blank, blue) #1600
- fixed incorrect datetime in customer block (
$useTimezone
parameter) #1525 - added redis as a valid option for
global/session_save
#1513 - reduce needless saves by avoiding setting
_hasDataChanges
flag #2066 - removed support for
global/sales/old_fields_map
defined in XML #921 - enabled website level config cache #2355
- make overrides of Mage_Core_Model_Resource_Db_Abstract::delete respect parent api #1257
For full list of changes, you can compare tags.
Most of the 3rd party libraries/modules that were bundled in our repository were removed and migrated to composer dependencies. This allows for better maintenance and upgradability.
Specifically:
- phpseclib, mcrypt_compat, Cm_RedisSession, Cm_Cache_Backend_Redis, Pelago_Emogrifier (#2411)
- Zend Framework 1 (#2827)
If your project uses OpenMage through composer then all dependencies will be managed automatically.
If you just extracted the release zip/tarball in your project's main folder then be sure to:
- remove the old copy of aforementioned libraries from your project, you can do that with this command:
rm -rf lib/Cm lib/Credis lib/mcryptcompat lib/Pelago lib/phpseclib lib/Zend
- download the new release zip file that is named
openmage-VERSIONNUMBER.zip
, this one is built to contain thevendor
folder generated by composer, with all the dependencies in it - extract the zip file in your project's repository as you always did
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
sitemap_cms_pages_generating_before
sitemap_urlset_generating_before
Since 19.4.17
/20.0.15
we changed the targetNamespace
of all the WSDL files (used in the API modules), from Magento
to OpenMage
.
If your custom modules extends OpenMage's APIs with a custom WSDL file and there are some hardcoded targetNamespace="urn:Magento"
strings, your APIs may stop working.
Please replace all occurrences of
targetNamespace="urn:Magento"
with
targetNamespace="urn:OpenMage"
or alternatively
targetNamespace="urn:{{var wsdl.name}}"
to avoid any problem.
To find which files need the modification you can run this command from the root directory of your project.
grep -rn 'urn:Magento' --include \*.xml
- Install ddev
- Clone the repository as described in installation (Using Git)
- Create a ddev config, defaults should be good for you
$ ddev config
- Open
.ddev/config.yaml
and change the php version to your needs - Download and start the containers
$ ddev start
- Open your site in browser
$ ddev launch
This repo includes class maps for the core Magento files in .phpstorm.meta.php
.
To add class maps for installed extensions, you have to install N98-magerun
and run command:
n98-magerun.phar dev:ide:phpstorm:meta
You can add additional meta files in this directory to cover your own project files. See PhpStorm advanced metadata for more information.
Though Magento does not follow Semantic Versioning we aim to provide a workable system for
dependency definition. Each Magento 1.<minor>.<revision>
release will get its own branch (named 1.<minor>.<revision>.x
)
that will be independently maintained with upstream patches and community bug fixes for as long as it makes sense
to do so (based on available resources). For example, Magento version 1.9.4.5
was merged into the 1.9.4.x
branch.
- Discord (maintained by Flyingmana)
- Lee Saferite
- David Robinson
- Daniel Fahlke aka Flyingmana
- Tymoteusz Motylewski
- Sven Reichel
- Fabrizio Balliano
Thanks goes to these wonderful people (emoji key):
This project follows the all-contributors specification. Contributions of any kind welcome!