PHPackages                             augustash/ddev-drupal - 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. augustash/ddev-drupal

ActiveLibrary[DevOps &amp; Deployment](/categories/devops)

augustash/ddev-drupal
=====================

AugustAsh ddev installer.

1.1.63(3w ago)17.0k↑352.1%1MITPHPPHP &gt;=7

Since Jul 17Pushed 3w ago4 watchersCompare

[ Source](https://github.com/augustash/ddev-drupal)[ Packagist](https://packagist.org/packages/augustash/ddev-drupal)[ RSS](/packages/augustash-ddev-drupal/feed)WikiDiscussions master Synced 2w ago

READMEChangelogDependencies (5)Versions (77)Used By (0)

Setup
=====

[](#setup)

### Single line

[](#single-line)

```
ddev composer config --json --merge extra.drupal-scaffold.allowed-packages '["augustash/ddev-drupal"]' && ddev composer config scripts.ddev-setup "Augustash\\Ddev::postPackageInstall" && ddev composer require --dev augustash/ddev-drupal && ddev composer ddev-setup
```

Updating
========

[](#updating)

The scaffolding refreshes **automatically** in update mode (no prompts, ddev-only) via two `composer.json` hooks — keeping your `config.yaml` values and rebuilding only managed files (Selenium, BrowserSync, Solr, Terminus, the Pantheon add-on hook).

**≥ 1.1.62** — automatic; just update:

```
ddev composer update augustash/ddev-drupal   # or `ddev composer install` after a pull
```

**&lt; 1.1.62** — wire the hooks in once, then it's automatic:

```
ddev composer ddev-setup update
```

### Changing configuration values

[](#changing-configuration-values)

Since refreshes are automatic, you only run setup by hand when you actually need to **change** a value (a typo'd client code, a PHP bump, …):

```
ddev composer ddev-setup
```

### Zookeeper image swap (Solr add-on)

[](#zookeeper-image-swap-solr-add-on)

The `zoo` service moved from the legacy Bitnami image to the official multi-arch `zookeeper:3.9` image (fixes the `linux/amd64` platform warning on Apple Silicon). The data path changed from `/bitnami/zookeeper` to `/data`, so the existing volume must be recreated. After updating the add-on, run:

```
ddev stop && docker volume rm "ddev-$(ddev describe -j | jq -r .raw.name)_zoo" && ddev start
```

The `post-start` `ddev solrcollection` hook will repopulate the configset and recreate the collection in the fresh ZK store.

### Solr version (8 or 9)

[](#solr-version-8-or-9)

When Solr is enabled, `ddev-setup` asks which major version to scaffold, matching Pantheon Search's offering. The chosen file is stamped to `.ddev/docker-compose.solr.yaml`; update runs preserve the choice (and re-pin the image), so a `composer update` never reverts your version.

- **8** — the legacy 3-node SolrCloud cluster with external ZooKeeper (`docker-compose.solr.yaml`), pinned to Pantheon's `solr:8.11.4`.
- **9** — the official single-node [ddev-solr](https://github.com/ddev/ddev-solr) build with embedded ZooKeeper (`docker-compose.solr9.yaml`), pinned to Pantheon's `solr:9.10.1`.

**Deploying Solr 9 to Pantheon.** The prompt only scaffolds local ddev — Pantheon's Solr 9 is provisioned separately, and one step isn't discoverable:

1. `pantheon.yml`: add a `search:` block with `version: 9`, then commit + push — Pantheon provisions Solr 9 on deploy.
2. Pin `solr_version` to `9` on each search server in **settings.php** — unset, Search API Solr emits a Solr 8 configset that won't load on Solr 9: ```
    $config['search_api.server.pantheon_search']['backend_config']['connector_config']['solr_version'] = '9';
    $config['search_api.server.local']['backend_config']['connector_config']['solr_version'] = '9';
    ```
3. Upload the v9 configset — **nobody guesses this one; without it search is dead** — then reindex: ```
    terminus remote:drush . -- search-api-pantheon:postSchema
    terminus remote:drush . -- search-api:index
    ```

> Reindex erroring with *“pending server tasks could not be executed”* over a phantom index (e.g. a leftover `removeIndex` from the old Solr)? Clear the stale task, then reindex:
>
> ```
> terminus remote:drush . -- sqlq "DELETE FROM search_api_task WHERE server_id='pantheon_search'"
> ```

Configuration
=============

[](#configuration)

Running `ddev composer ddev-setup` (first-time setup, or to change a value) prompts for:

- Client code
- Document root (defaults to `web`)
- Drupal version
- PHP version
- Is this site hosted on Pantheon? — if yes:
    - Pantheon site name
    - Pantheon site environment
- Subdomains (optional)
- Solr support (and, if enabled, Solr version 8 or 9)

These are used to set config.yaml ddev configuration. On a re-run each prompt is pre-filled with the project's current value, so pressing enter through them keeps the existing configuration unchanged.

Database
========

[](#database)

Database pull is handled by the [ddev-pantheon-db](https://github.com/augustash/ddev-pantheon-db) add-on, which is automatically installed on `ddev start`.

Will not download if there is more than one table in the existing local db.

To force a fresh pull: `ddev db -f`

Troubleshooting
===============

[](#troubleshooting)

#### Configset upload failed with error code 405: Solr HTTP error: OK (405).
Solr HTTP error: OK (405).

[](#configset-upload-failed-with-error-code-405-solr-http-error-ok-405solr-http-error-ok-405)

- Rerun ddev start.

#### Drush was unable to query the database.

[](#drush-was-unable-to-query-the-database)

- The key part is 'Drush was unable to query the database'.
    - Make sure you do not have database credentials in settings.local.
    - You have an empty database, partial import, something is wrong with it.
    - Download a fresh database.

#### Failed to execute command drush en search\_api\_solr\_admin -y.
Failed to execute command drush sapi-sl --field=id:.
Failed to execute command drush solr-upload-conf.

[](#failed-to-execute-command-drush-en-search_api_solr_admin--yfailed-to-execute-command-drush-sapi-sl---fieldidfailed-to-execute-command-drush-solr-upload-conf)

- Run composer require drupal/search\_api\_solr\_admin -W.
- Run ddev solrcollection.

#### Server \[server-name\] is not a Solr server.

[](#server-server-name-is-not-a-solr-server)

- An existing solr server is configured as a database server.
    - Remove this server and create a new solr cloud server.
    - Ensure your settings.local overrides are correct.

#### (The) server with ID 'local' could not be retrieved for index 'Global'.

[](#the-server-with-id-local-could-not-be-retrieved-for-index-global)

- The server 'local' does not exist.
- Comment out configuration overrides in settings.local.php.
    - Start ddev, create the server \[name\].
        - Assign the following values:
            - Server name: local
            - Backend: solr
            - Configure Solr Backend: Solr Cloud with Basic Auth
            - Default Solr Collection: search
            - Username: solr
            - Password: SolrRocks
    - Uncomment configuration values.
    - Make sure \[name\] matches the configuration overrides, in all respective lines.
        - Ex. $config\['search\_api.index.global'\]\['server'\] = \[name\];
        - Ex. $config\['search\_api.server.\[name\]'\]\['backend\_config'\]\['connector'\] = 'solr\_cloud\_basic\_auth';
    - Run: ddev solrcollection

#### Solr version is 8.11.4 in docker-compose.solr, but does not match server version.

[](#solr-version-is-8114-in-docker-composesolr-but-does-not-match-server-version)

- Build version was changed to 8.11.4 to match Pantheon hosts exact version.
    - Recreate your collection.
        - Navigate in your browser to http://\[site-name\].ddev.site:8983/solr/#/~collections.
            - Delete existing collection.
            - Run ddev solrcollection.
    - Reload your collection.
        - Navigate to http://\[site-name\].ddev.site/admin/config/search/search-api/server/\[server-name\].
            - Click 'Reload Collection'.
            - Server version should now be 8.11.4.

#### TypeError: Drupal\\search\_api\_solr\\Utility\\SolrCommandHelper::\_\_construct(): Argument #4 ($configset\_controller) must be of type Drupal\\search\_api\_solr\\Controller\\SolrConfigSetController.

[](#typeerror-drupalsearch_api_solrutilitysolrcommandhelper__construct-argument-4-configset_controller-must-be-of-type-drupalsearch_api_solrcontrollersolrconfigsetcontroller)

- Update drupal/search\_api\_pantheon.

###  Health Score

52

—

FairBetter than 96% of packages

Maintenance95

Actively maintained with recent releases

Popularity27

Limited adoption so far

Community14

Small or concentrated contributor base

Maturity60

Established project with proven stability

 Bus Factor1

Top contributor holds 82.7% 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 ~15 days

Recently: every ~9 days

Total

75

Last Release

24d ago

### Community

Maintainers

![](https://www.gravatar.com/avatar/097ea6514c7dff8bd82162fe88411080a14444a73f86c15ab22eefe28a33059d?d=identicon)[jacerider](/maintainers/jacerider)

![](https://www.gravatar.com/avatar/6cc8e38c0ae4454c5cba5af7c2568edd72238113544f29d322fe8b907330e637?d=identicon)[weberjacob](/maintainers/weberjacob)

![](https://www.gravatar.com/avatar/58f09f3094dbf20ec7c4e7539132ab26b92f16b4aad1aed8812740383ca2af18?d=identicon)[kazajhodo](/maintainers/kazajhodo)

---

Top Contributors

[![kazajhodo](https://avatars.githubusercontent.com/u/1173204?v=4)](https://github.com/kazajhodo "kazajhodo (191 commits)")[![jacerider](https://avatars.githubusercontent.com/u/638651?v=4)](https://github.com/jacerider "jacerider (40 commits)")

###  Code Quality

TestsPHPUnit

### Embed Badge

![Health badge](/badges/augustash-ddev-drupal/health.svg)

```
[![Health](https://phpackages.com/badges/augustash-ddev-drupal/health.svg)](https://phpackages.com/packages/augustash-ddev-drupal)
```

###  Alternatives

[pomander/pomander

Deployment for PHP

19615.7k2](/packages/pomander-pomander)[symfony-tools/docs-builder

The build system for Symfony's documentation

3668.5k1](/packages/symfony-tools-docs-builder)[mwltr/magedeploy2-base

Magento2 Deployment Setup using Robo and Deployer

425.3k](/packages/mwltr-magedeploy2-base)[enygma/composerclean

An additional command for Composer that removes configured files/directory

171.8k](/packages/enygma-composerclean)

PHPackages © 2026

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