Troubleshooting Lando
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 logs
which will show all messages. You can also view the logs from a specific container using the commandlando logs -s appserver
whereappserver
is the name of the container. You can also follow logs with the-f
switch.
Lando won't start and throws 'Read timed out' errors
After running 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 database
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.php
or 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.yml
file with theUSER
environement variable. Refer to the documentation to set this up. -
You might have the wrong user in your
~/.lando/config.yml
file.For example, if you usually log in with something like
ssh james@bond.org.uk
but your username on your computer isjhall
then you'll need to edit the~/.lando/config.yml
file and change the value of theUSER
key tojames
. -
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
~/.lando/config.yml
file:containerGlobalEnv: LANDO_LOAD_PP_KEYS: "true"
Restart your Lando project
lando rebuild
and 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 8000
and 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
lando version
. - Find the package (eg. .deb for Ubuntu) that you want on GitHub: https://github.com/lando/lando/releases
- Turn off all lando machines with
lando poweroff
- Run the package you want to install
- To check this has updated as expected, run
lando version
- Now run
lando start
and/orlando rebuild
on your site
Last updated: