/Drupal 8

function hook_install


Perform setup tasks when the module is installed.

If the module implements hook_schema(), the database tables will be created before this hook is fired.

If the module provides a MODULE.routing.yml or alters routing information these changes will not be available when this hook is fired. If up-to-date router information is required, for example to use \Drupal\Core\Url, then (preferably) use hook_modules_installed() or rebuild the router in the hook_install() implementation.

Implementations of this hook are by convention declared in the module's .install file. The implementation can rely on the .module file being loaded. The hook will only be called when a module is installed. The module's schema version will be set to the module's greatest numbered update hook. Because of this, any time a hook_update_N() is added to the module, this function needs to be updated to reflect the current version of the database schema.

See the Schema API documentation for details on hook_schema and how database tables are defined.

Note that since this function is called from a full bootstrap, all functions (including those in modules enabled by the current page request) are available when this hook is called. Use cases could be displaying a user message, or calling a module function necessary for initial setup, etc.

Please be sure that anything added or modified in this function that can be removed during uninstall should be removed with hook_uninstall().

See also





Related topics

Define functions that alter the behavior of Drupal core.


core/lib/Drupal/Core/Extension/module.api.php, line 230
Hooks related to module and update systems.


function hook_install() {
  // Create the styles directory and ensure it's writable.
  $directory = file_default_scheme() . '://styles';
  $mode = isset($GLOBALS['install_state']['mode']) ? $GLOBALS['install_state']['mode'] : NULL;
  file_prepare_directory($directory, FILE_CREATE_DIRECTORY | FILE_MODIFY_PERMISSIONS, $mode);

© 2001–2016 by the original authors
Licensed under the GNU General Public License, version 2 and later.
Drupal is a registered trademark of Dries Buytaert.