If Lando starts messing with you
Its possible Lando will get itself in a twist. Hopefully these troubleshooting tips will help.
Good to know: You can view the logs from the containers using the command
lando logswhich will show all messages. You can also view the logs from a specific container using the command
lando logs -s appserverwhere
appserveris the name of the container. You can also follow logs with the
Lando won't start and throws 'Read timed out' errors
lando start you might see errors like this:
Starting landoproxyhyperion5000gandalfedition_proxy_1 ... ERROR: for landoproxyhyperion5000gandalfedition_proxy_1 UnixHTTPConnectionPool(host='localhost', port=None): Read timed out. (read timeout=60) ERROR: for proxy UnixHTTPConnectionPool(host='localhost', port=None): Read timed out. (read timeout=60)
The solution was to restart Docker (if on MacOS then quit Docker from the menu bar icon).
Lando drush commands warn about missing .env file
When running drush commands you might see the following:
warn: Trouble parsing .env file with Error: ENOENT: no such file or directory, open '.env'
This can be safely ignored as when you start the container it already passes in the contents of the
.env file which drush inside the containers makes use of. You will only see this warning when running
lando drush commands from anywhere but the git root (where the
.env file lives).
Trying to run Lando commands, everything freezes on the command line
This is probably because you have xdebug on and in your IDE you are listening for debug connections. As xdebug is also enabled for PHP CLI in the containers this will essentially freeze things until you stop listening for debug connections. While a bit of a pain its not too bad once you're aware of the problem.
There is an open issue in the Lando issue queue to address this.
Drush commands won't work
If you see errors like:
Command cex was not found. Drush was unable to query the database. As a result, many commands are unavailable. Re-run your command with --debug to see relevant log messages.
You probably forgot to add
lando before your command. So
drush cex should be
lando drush cex
Another possibility is a mismatch between database settings in settings.php (Drupal 7) or settings.local.php (Drupal 8+) and what the Lando config has defined. Check the
.lando.yml file and make sure there is a
creds section under
services. It should look like this:
services: database: creds: user: database password: database database: database
This tells Lando's database service to use
database for the user, password and name of the MySQL database.
Now check your
settings.local.php and make sure it looks something like this (Drupal 8+):
$databases['default']['default'] = array ( 'database' => 'database', 'username' => 'database', 'password' => 'database', 'host' => 'database', 'port' => '3306', 'driver' => 'mysql', 'prefix' => '', 'collation' => 'utf8mb4_general_ci', );
Note that the host is also
database, this is the internal network host name for the database container.
Running lando npm start throws an error
If you see an error like:
Error: Node Sass does not yet support your current environment: Linux 64-bit with Unsupported runtime (57)
Its possible you had an old set of
node_modules in your theme. Remove these with:
rm -rf node_modules
Then install them again with
lando npm install
Unable to run remote drush commands like sql-sync
If you try to run a drush command on a remote server and see an error like this:
[error] The command could not be executed successfully (returned: Permission denied (publickey).
It probably means one of three things:
You haven't set up a
~/.lando/config.ymlfile with the
USERenvironement variable. Refer to the documentation to set this up.
You might have the wrong user in your
For example, if you usually log in with something like
ssh email@example.com your username on your computer is
jhallthen you'll need to edit the
~/.lando/config.ymlfile and change the value of the
You have a passphrase protected ssh key. By default Lando won't pass in passphrase protected keys but does provide a config variable to allow it. Unfortunately this config variable does not work. Instead the solution is to pass in an environment variable set in your
containerGlobalEnv: LANDO_LOAD_PP_KEYS: "true"
Restart your Lando project
lando rebuildand your ssh keys should work. Note: you may need to enter your password multiple times.
Unable to access the site on port 80, or only able to access using https
You may well have other containers with a different system or another webserver hogging port 80. Lando will try other ports automatically like
8080. To see which port Lando has assigned you can run
lando info and look under the appserver section.
If you want to run Lando on port 80, first shut down your other web servers and then
lando poweroff. Now when you
lando start you should be able to access your site at
http without specifying a port number.
Switching between Lando RC1 and RC13
Some sites may require a newer/older version of Lando, whilst this may sound like things will break for you, it doesn't appear to be an issue, simply follow the steps below. It may also be an idea to keep a copy of each version on your machine once you know they work.
- Note down the local version of lando you are running (as you may need to switch back at some point) with
- Find the package (eg. .deb for Ubuntu) that you want on GitHub: https://github.com/lando/lando/releases
- Turn off all lando machines with
- Run the package you want to install
- To check this has updated as expected, run
- Now run
lando rebuildon your site