Migrating from Valet or Herd
Four stages, each one opt-in, with one rule holding across all of them.
Stage 1 — Scan and import
Section titled “Stage 1 — Scan and import”-
rexenv scans for Valet and Herd installations and lists what it found: sites, their paths, their PHP versions, their domains.
-
You review the list and choose. Nothing is imported because it was found.
-
Imported sites are created in rexenv pointing at the same folders. Your code is not copied.
-
If the sites used a TLD rexenv is not serving yet —
.testis the usual one — it asks for consent before installing that resolver, because taking over a TLD another tool is answering for is exactly the kind of change that should not happen quietly.
Stage 2 — Copy the databases
Section titled “Stage 2 — Copy the databases”Dumps from the source database server and restores into rexenv’s, recording where each database came from.
The source database is read and never modified. Both copies exist afterwards, which is the point: you can compare them, and going back costs nothing.
Stage 3 — Rewrite connection config
Section titled “Stage 3 — Rewrite connection config”Optional, and the most invasive thing in the flow, so it is also the most gated.
An imported site’s wp-config.php or .env still points at your old database server, on the
old port. rexenv can update those to point at its own — and before it does:
- It shows you a diff of exactly what will change.
- It takes a backup of every file it will touch.
- It waits for you to agree.
Declining leaves your config alone, and the site keeps talking to whatever it talked to before. That is a supported outcome, not a failed migration.
Stage 4 — Verify
Section titled “Stage 4 — Verify”Open the sites. They resolve on rexenv’s DNS, serve through rexenv’s stack, and have real HTTPS from rexenv’s CA.
Running both at once
Section titled “Running both at once”You can, for a while — the ports are offset precisely so that rexenv does not collide with another local environment. See Ports.
80 and 443 are the exception. Only one thing can hold them, so only one environment can
serve https://site.test with no port number at a time. In practice that means quitting the
other tool when you want rexenv to serve, and vice versa. See
Port 80 or 443 is in use.
What is not migrated
Section titled “What is not migrated”Global Valet or Herd configuration — parked directories, custom drivers, per-tool PHP extensions. Sites, databases and connection config are what move; anything you customised at the tool level is worth reviewing by hand.