drush – It doesn’t work without public_html symlink


I have just updated to Ubuntu 20.04 so have a fresh install of everything.
I have a working Drupal 7 site I’ll call mysite.
I have Drush-launcher installed globally at /usr/local/bin/drush
The file structure of the site is the following.

  • /var/www/mysite/composer.json (to install Drush 8.4.1)
  • /var/www/mysite/vendor/drush/drush/drush (local Drush 8.4.1 binary)
  • /var/www/mysite/web
  • /var/www/mysite/public_html (symlink to web)
  • /var/www/mysite/web/sites

Drush works with this configuration. drush status returns a full and accurate site description of about 15 lines.

If I remove the public_html link, the Drupal site runs fine but most Drush commands no longer work. drush status returns only the bare minimum of 7 lines as it does when it can’t find the site. drush --version does return the correct version number either way and if I move the Drush 8 directory, all Drush commands return an error as expected. (This shows I’m still using the correct binary).

I have several Drupal 8 sites that are configured this exact same way (no public_html directory or link) and they work as expected.

I have searched in the ~/.drush directory for any reference to public_html and there are none related to this site. I have cleared the Drush cache. There are no references to public_html in my Apache config for the site. Searching isn’t turning up anything useful.

I could just leave the public_html link in the filesystem but git wants me to add it or ignore which seems kinda silly.

What might I be doing wrong?