diff --git a/src/symbols/exception/PhutilMissingSymbolException.php b/src/symbols/exception/PhutilMissingSymbolException.php --- a/src/symbols/exception/PhutilMissingSymbolException.php +++ b/src/symbols/exception/PhutilMissingSymbolException.php @@ -5,16 +5,22 @@ public function __construct($symbol, $type, $reason) { parent::__construct( pht( - "Failed to load %s '%s': %s ". - "If this symbol was recently added or moved, your library map may ". - "be out of date. You can rebuild the map by running '%s'. ". - "For more information, see: %s", + "Failed to load %s '%s': %s.\n\n". + "If you are not a developer, this almost always means that a library ". + "is out of date. For example, you may have upgraded `phabricator` ". + "without upgrading `libphutil`, or vice versa. It might also mean ". + "that you need to restart Apache or PHP-FPM. Make sure all libraries ". + "are up to date and all services have been restarted.\n\n". + "If you are a developer and this symbol was recently added or moved, ". + "your library map may need to be rebuilt. You can rebuild the map by ". + "running '%s'. For more information, see:\n\n". + "%s", $type, $symbol, $reason, 'arc liberate', - 'http://www.phabricator.com/docs/phabricator/article/'. - 'libphutil_Libraries_User_Guide.html')); + 'https://secure.phabricator.com/book/phabcontrib/article/'. + 'adding_new_classes/')); } }