PHPackages                             se7enxweb/exponential-legacy-installer - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. [DevOps &amp; Deployment](/categories/devops)
4. /
5. se7enxweb/exponential-legacy-installer

ActiveComposer-plugin[DevOps &amp; Deployment](/categories/devops)

se7enxweb/exponential-legacy-installer
======================================

Installer for eZ Publish legacy extensions and legacy kernel itself.

2.2.3(2w ago)1207↓56.3%4GPL-2.0PHPPHP ^7.4 || ^8.1 || ^8.2

Since Jun 8Pushed 2w agoCompare

[ Source](https://github.com/se7enxweb/exponential-legacy-installer)[ Packagist](https://packagist.org/packages/se7enxweb/exponential-legacy-installer)[ Fund](https://account.venmo.com/u/se7enxweb)[ Fund](https://cash.app/$7xweb)[ RSS](/packages/se7enxweb-exponential-legacy-installer/feed)WikiDiscussions master Synced today

READMEChangelog (3)Dependencies (3)Versions (5)Used By (4)

Composer installer for eZ Publish Legacy Stack
==============================================

[](#composer-installer-for-ez-publish-legacy-stack)

This installer lets you install extensions for eZ Publish legacy (4.x) with [Composer](http://getcomposer.org).

It also helps you install eZ Publish legacy (4.x) itself, by not deleting your settings and custom code when you upgrade to a new release.

Installable extensions
----------------------

[](#installable-extensions)

To be able to install a legacy extension, it must be properly exposed to Composer with a valid composer.json file (check [Composer documentation](http://getcomposer.org/doc/) for more information), declaring an `ezpublish-legacy-extension` type.

Example for SQLIImport:

```
{
    "name": "lolautruche/sqliimport",
    "type": "ezpublish-legacy-extension",
    "description": "Import extension for eZ Publish legacy.",
    "license": "GPL-2.0",
    "minimum-stability": "dev",
    "require": {
        "php": ">=5.3.3",
        "ezsystems/ezpublish-legacy-installer": "*"
    }
}
```

### Extension name vs package name

[](#extension-name-vs-package-name)

By default, the legacy extension gets installed in a directory named by your package pretty name. For example, package `lolautruche/sqliimport` gets installed in a directory named `sqliimport`. If you ever need to name your composer package differently from your extension name (for example, legacy extension ezfind comes in a `ezsystems/ezfind-ls` package), you may tell composer to use a specifica extension name rather than the package's pretty name. Just add an `ezpublish-legacy-extension-name` extra option in your composer.json file :

```
{
    "name": "ezsystems/ezfind-ls",
    "description": "eZ Find is a search extension for eZ Publish legacy, providing more functionality and better results than the default search in eZ Publish.",
    "type": "ezpublish-legacy-extension",
    "license": "GPL-2.0",
    "authors": [
        {
            "name": "eZ Publish dev-team & eZ Community",
            "homepage": "https://github.com/ezsystems/ezfind/contributors"
        }
    ],
    "minimum-stability": "dev",
    "require": {
        "ezsystems/ezpublish-legacy-installer": "*"
    },
    "extra": {
        "ezpublish-legacy-extension-name": "ezfind"
    }
}
```

How to install in my project
----------------------------

[](#how-to-install-in-my-project)

All you need to do is create a composer.json at the root of your project and require the extension (if the extension is not published on packagist, you also need to tell composer where to find it):

```
{
    "name": "myvendorname/myproject",
    "description": "My super cool eZ Publish project",
    "license": "GPL-2.0",
    "minimum-stability": "dev",
    "require": {
        "php": ">=5.3.3",
        "lolautruche/sqliimport": "~1.2"
    },
    "repositories" : [
        {
             "type": "vcs",
             "url": "https://github.com/lolautruche/sqliimport.git"
        }
    ]
}
```

Then run `php composer.phar install` (assuming you have already properly installed Composer of course 😉).

Composer 2.10 compatibility note
--------------------------------

[](#composer-210-compatibility-note)

When the legacy root directory is configured as `.`, recent Composer versions may normalize that value to an empty path in low-level filesystem operations. During soft updates, this can make the installer fail while copying files from the temporary install directory back into the existing project root.

This installer resolves dot/empty copy paths to an absolute working directory before calling Composer's `copyThenRemove()`. The behavior is intentionally narrow in scope and only affects the path value used during the final copy step.

Why this does not break platform usage:

- Normal installations are unchanged: explicit directories (for example `ezpublish_legacy`) still pass through untouched.
- Existing soft-update semantics are preserved: the package still installs into a temp directory first, then overlays files onto the actual installation.
- Binary handling remains unchanged: binary stubs are still removed and reinstalled in the same way after copy.
- The change is backward compatible: older Composer versions continue to work, because absolute paths are valid there as well.
- Extension install behavior is unaffected: only the legacy kernel installer copy-path resolution is adjusted.

### eZ Publish 5 case

[](#ez-publish-5-case)

By default, the legacy extension installer assumes that eZ Publish legacy is installed in the current folder; in other words, it is configured for pure-eZ Publish 4 projects. If this is not the case (like in eZ Publish 5, where it resides in the `ezpublish_legacy/` folder), then you'll need to configure where it is:

```
{
    "name": "myvendorname/myproject",
    "description": "My super cool eZ Publish 5 project",
    "license": "GPL-2.0",
    "minimum-stability": "dev",
    "require": {
        "php": ">=5.3.3",
        "lolautruche/sqliimport": "~1.2"
    },
    "repositories" : [
        {
             "type": "vcs",
             "url": "https://github.com/lolautruche/sqliimport.git"
        }
    ],
    "extra": {
        "ezpublish-legacy-dir": "ezpublish_legacy"
    }
}
```

###  Health Score

51

—

FairBetter than 95% of packages

Maintenance97

Actively maintained with recent releases

Popularity15

Limited adoption so far

Community21

Small or concentrated contributor base

Maturity64

Established project with proven stability

 Bus Factor1

Top contributor holds 52.3% of commits — single point of failure

How is this calculated?**Maintenance (25%)** — Last commit recency, latest release date, and issue-to-star ratio. Uses a 2-year decay window.

**Popularity (30%)** — Total and monthly downloads, GitHub stars, and forks. Logarithmic scaling prevents top-heavy scores.

**Community (15%)** — Contributors, dependents, forks, watchers, and maintainers. Measures real ecosystem engagement.

**Maturity (30%)** — Project age, version count, PHP version support, and release stability.

###  Release Activity

Cadence

Every ~490 days

Total

4

Last Release

15d ago

PHP version history (2 changes)2.2.0PHP ^7.4 || ^8.1

2.2.1PHP ^7.4 || ^8.1 || ^8.2

### Community

Maintainers

![](https://avatars.githubusercontent.com/u/1083669?v=4)[7x](/maintainers/7x)[@7x](https://github.com/7x)

---

Top Contributors

[![lolautruche](https://avatars.githubusercontent.com/u/313528?v=4)](https://github.com/lolautruche "lolautruche (23 commits)")[![andrerom](https://avatars.githubusercontent.com/u/289757?v=4)](https://github.com/andrerom "andrerom (9 commits)")[![se7enxweb](https://avatars.githubusercontent.com/u/51429274?v=4)](https://github.com/se7enxweb "se7enxweb (4 commits)")[![emodric](https://avatars.githubusercontent.com/u/362286?v=4)](https://github.com/emodric "emodric (3 commits)")[![bchoquet-heliopsis](https://avatars.githubusercontent.com/u/465757?v=4)](https://github.com/bchoquet-heliopsis "bchoquet-heliopsis (2 commits)")[![gggeek](https://avatars.githubusercontent.com/u/308634?v=4)](https://github.com/gggeek "gggeek (1 commits)")[![bdunogier](https://avatars.githubusercontent.com/u/235928?v=4)](https://github.com/bdunogier "bdunogier (1 commits)")[![pborreli](https://avatars.githubusercontent.com/u/77759?v=4)](https://github.com/pborreli "pborreli (1 commits)")

### Embed Badge

![Health badge](/badges/se7enxweb-exponential-legacy-installer/health.svg)

```
[![Health](https://phpackages.com/badges/se7enxweb-exponential-legacy-installer/health.svg)](https://phpackages.com/packages/se7enxweb-exponential-legacy-installer)
```

###  Alternatives

[phpro/grumphp

A composer plugin that enables source code quality checks.

4.3k16.7M1.0k](/packages/phpro-grumphp)[symfony/runtime

Enables decoupling PHP applications from global state

74798.8M1.0k](/packages/symfony-runtime)[drupal/core-composer-scaffold

A flexible Composer project scaffold builder.

5445.2M564](/packages/drupal-core-composer-scaffold)[johnpbloch/wordpress-core-installer

A custom installer to handle deploying WordPress with composer

21911.3M51](/packages/johnpbloch-wordpress-core-installer)[roots/wordpress-core-installer

A Composer custom installer to handle installing WordPress as a dependency

4216.6M51](/packages/roots-wordpress-core-installer)[drupal/core-project-message

Adds a message after Composer installation.

2124.7M202](/packages/drupal-core-project-message)

PHPackages © 2026

[Directory](/)[Categories](/categories)[Trending](/trending)[Changelog](/changelog)[Analyze](/analyze)
