Q: When I run
drush status on production, it shows the hashed
platformsh URL instead of
Site URI : https://master-7rqtwti-uenxsorgpc5rw.eu-2.platformsh.
This means that links in emails generated by the system during cron, and other tasks like sitemap generation or logging are using the wrong URL.
How to tell the system to use the public URL?
A: This is a pretty common issue when running
drush in any firewalled or routed-to environments. Drush running from the CLI doesn’t natively know what the appropriate hostname is.
We’ve supplied a small fix to support this for you with the utility script platformsh-templates/drupal8: drush/platformsh_generate_drush_yml.php. This fix pulls your routing information from the platfrom.sh environment, and makes it available to
drush via a config file that drush uses.
If you’ve based your build on the Drupal 8 or 9 template, it should already be there. If you imported your project yourself, you probably need to check that this file is there, and that the line in the deploy hook that invokes it is also there.
hooks: deploy: | php ./drush/platformsh_generate_drush_yml.php
To verify, check your deploy log to confirm that it ran cleanly:
platform log deploy
... Created Drush configuration file: /app/.drush/drush.yml
And check the file
.drush/drush.yaml in the built environment to see that it worked.
platform ssh "cat /app/.drush/drush.yml"
# Drush configuration file. # This was automatically generated by the script: # /app/drush/platformsh_generate_drush_yml.php options: # Set the default site URL. uri: "https://my.site.com/"
When it’s working, just a simple
drush status should be enough to confirm that the URL is being correctly detected by the Drupal internals.
platform drush status
Drupal version : 9.0.2 Site URI : https://my.site.com/
drush versions prior to (about?) 8.6, it used
drushrc.php instead of
drush.yml, and this helper script will not help if you’ve got
drush older than that. Updating drush to something newer than 2017 should help.
Although it’s possible to force
drush to use the correct URL by passing it the
--uri= parameter every time, this is not a portable solution to hard-code into your
.platformsh.app.yaml file, as it will now always be incorrect in your development branches. Don’t do that. Use the environment settings to supply your route URL instead.