A free shopping cart system. OpenCart is an open source PHP-based online e-commerce solution.
OpenCart is a free open source e-commerce platform for online merchants. OpenCart provides a professional and reliable foundation from which to build a successful online store.
Please read the installation instructions included in the repository or download file.
Please read the upgrading instructions included in the repository or download file.
Read the instructions below before you create a bug report.
If you are not sure about your issue, it is always best to ask the community on our bug forum thread
Important!
Fork the repository, edit and submit a pull request.
Please be very clear on your commit messages and pull request, empty pull request messages may be rejected without reason.
Your code standards should match the OpenCart coding standards. We use an automated code scanner to check for most basic mistakes - if the test fails your pull request will be rejected.
This project includes a Docker-based environment for local development.
For Windows Users: It is strongly recommended to use the WSL 2 (Windows Subsystem for Linux) backend for Docker Desktop. Without it, file system performance will be extremely slow, making the application nearly unusable. Docker Desktop will typically prompt you to enable WSL 2 during installation.
Clone the repository to your local machine.
Navigate to the project’s root directory in your terminal.
Run the following command to build and start all services:
docker-compose up -d
After the process is complete, your OpenCart store will be available at http://localhost
. The Adminer database management tool will be available at http://localhost:8080
.
docker-compose down
docker-compose logs -f
The environment uses PHP 8.4 by default. You can easily switch to a different version by editing the build.args
in the docker-compose.yml
file.
For example, to use PHP 8.2:
# in docker-compose.yml
services:
opencart:
build:
context: ./docker/php
args:
- PHP_VERSION=8.2 # Change this value
By default, only the core services (opencart
, mysql
) are started.
Optional services such as Adminer, Redis, Memcached, and PostgreSQL can be enabled using Docker Compose profiles.
To enable one or more optional services, use the --profile
flag:
docker-compose --profile adminer up -d
docker-compose --profile redis --profile memcached up -d
docker-compose --profile adminer --profile redis --profile memcached --profile postgres up -d
If you do not specify the --profile
flag, only the core services will be started.
Tip: You can combine any profiles as needed for your development workflow.
The version is broken down into 4 points e.g 1.2.3.4 We use MAJOR.MINOR.FEATURE.PATCH to describe the version numbers.
A MAJOR is very rare, it would only be considered if the source was effectively re-written or a clean break was desired for other reasons. This increment would likely break most 3rd party modules.
A MINOR is when there are significant changes that affect core structures. This increment would likely break some 3rd party modules.
A FEATURE version is when new extensions or features are added (such as a payment gateway, shipping module etc). Updating a feature version is at a low risk of breaking 3rd party modules.
A PATCH version is when a fix is added, it should be considered safe to update patch versions e.g 1.2.3.4 to 1.2.3.5
OpenCart will announce to developers 1 week prior to public release of FEATURE versions, this is to allow for testing of their own modules for compatibility. For bigger releases (ones that contain many core changes, features and fixes) an extended period will be considered following an announced release candidate (RC). Patch versions (which are considered safe to update with) may have a significantly reduced developer release period.
The master branch will always contain an “_rc” postfix of the next intended version. The next “_rc” version may change at any time.
Developer release source code will not change once tagged.
If a bug is found in an announced developer release that is significant (such as a major feature is broken) then the release will be pulled. A patch version will be issued to replace it, depending on the severity of the patch an extended testing period may be announced. If the developer release version was never made public then the preceding patch version tag will be removed.
To receive developer notifications about release information, sign up to the newsletter on the OpenCart website - located in the footer. Then choose the developer news option.
GNU General Public License version 3 (GPLv3)