Skip to content

Migrating from Valet or Herd

Four stages, each one opt-in, with one rule holding across all of them.

  1. rexenv scans for Valet and Herd installations and lists what it found: sites, their paths, their PHP versions, their domains.

  2. You review the list and choose. Nothing is imported because it was found.

  3. Imported sites are created in rexenv pointing at the same folders. Your code is not copied.

  4. If the sites used a TLD rexenv is not serving yet — .test is 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.

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.

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.

Open the sites. They resolve on rexenv’s DNS, serve through rexenv’s stack, and have real HTTPS from rexenv’s CA.

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.

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.