Skip to content


Switch branches/tags

Latest commit


Git stats


Failed to load latest commit information.
Latest commit message
Commit time


"Everybody loves ioly!"

ioly is a decentralized/centralized universal package installer for web based php software. You can use it with any system that supports modules/extensions/packages. e.g. OXID eSales, Wordpress, Redaxo etc. etc. etc..

The ioly system is driven by a "cookbook", stored on GitHub, which contains "recipes" to install any zip-based package. If something is missing, you can send us a pull request to extend/improve the main ioly cookbook. As soon as we merge your modifications, EVERY ioly installation has access to your package!

Getting started

  1. download ioly core
  2. download ioly connector (e. g. OXID connector) OR install it via ioly core, see below :) E.g. "php ioly.php install ioly/ioly-oxid-connector latest"
  3. search for a recipe
  4. install recipe
  5. done


Manual installation

Download ioly core via console or via HTTP or:

curl -O

Using ioly module manager via console. In this example, we'll add a module to an installation of OXID eSales:

$ cd /var/www/
$ export IOLY_SYSTEM_BASE=/var/www/
$ php ioly.php update
$ php ioly.php install ioly/ioly-oxid-connector latest
$ php ioly.php list
$ php ioly.php search paypal
$ php ioly.php show oxid/paypal
$ php ioly.php install oxid/paypal 3.2.1

NOTE: If you are in the base directory of an OXID eShop, you don't have to set IOLY_SYSTEM_BASE and IOLY_SYSTEM_VERSION, since ioly core uses the current directory and the OXID package info "" file to automatically set those variables.

Install ioly Core via Composer

You can also use the ioly Core via Composer:

  "repositories": {
    "ioly/ioly": {
      "type": "vcs",
      "url": ""
  "require": {
    "ioly/ioly": "dev-core"

and also use it from PHP e.g.:

require_once 'vendor/autoload.php';

$ioly = new \ioly\ioly();

// add custom cookbook(s) - this is optional, see WIKI :)
$ioly->addCookbook('myowncookbook', "");

 * define ioly packages here
$aPackages = array(
    'ioly/ioly-oxid-connector' => 'latest',
    //'myvendor/my-own-custom-module' => 'latest',

foreach ($aPackages as $package => $version) {
    if (!$ioly->isInstalledInVersion($package, $version)) {
        try {
            $ioly->install($package, $version);
            echo "\nPackage: $package installed in version: $version";
        } catch (Exception $ex) {
            echo "\nError installing package '$package': " . $ex->getMessage();
    } else {
        echo "\nPackage $package already installed in version: $version";

So, you can even get fancy and combine Composer and ioly for some kind of auto-deployment, e.g. in Composer, load the ioly core and then call a PHP script at the end:

  "scripts": {
    "post-autoload-dump": [
      "php ./install_with_ioly.php"

which then installs and activates your OXID modules :) If you run into timeouts with your script, try to add this to your "composer.json" file, too:

  "config": {
    "process-timeout": 5000

### Contributing

  1. write a recipe
  2. commit your recipe
  3. send a pull request
  4. done, everybody can use it!

Read more here!

    "name": "PayPal",
    "vendor": "oxid",
    "type": "oxid",
    "license": "GNU",
    "desc": {
        "en": "PayPal payment method for checkout.",
        "de": "PayPal als Zahlart."
    "tags": [
    "versions": {
        "3.2.1": {
            "project": "",
            "url": "",
            "supported": [
            "mapping": [
                    "src": "source/modules/oe/",
                    "dest": "modules/oe/"
            "touch": [

Read more about writing a recipe.


  • PHP 5.3.0 or above (at least 5.3.4 recommended to avoid potential bugs)
  • PHP extensions:
    • cUrl
    • JSON
    • ZIP

### Authors

Dave Holloway - -
Tobias Merkl - -
Stefan Moises - -

You can also view the list of contributors who participated in this project.


ioly is licensed under the MIT License - see the LICENSE file for details.