8.5.x module.api.php hook_install()
8.0.x module.api.php hook_install()
8.1.x module.api.php hook_install()
8.2.x module.api.php hook_install()
8.3.x module.api.php hook_install()
8.4.x module.api.php hook_install()
8.6.x module.api.php hook_install()
4.7.x install.php hook_install()
5.x install.php hook_install()
6.x install.php hook_install()
7.x system.api.php 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

35 functions implement hook_install()

Note: this list is generated by pattern matching, so it may include some functions that are not actually implementations of this hook.

block_install in core/modules/block/block.install
Implements hook_install().
comment_install in core/modules/comment/comment.install
Implements hook_install().
contact_storage_test_install in core/modules/contact/tests/modules/contact_storage_test/contact_storage_test.install
Implements hook_install().
content_translation_install in core/modules/content_translation/content_translation.install
Implements hook_install().
demo_umami_content_install in core/profiles/demo_umami/modules/demo_umami_content/demo_umami_content.install
Implements hook_install().

... See full list


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


function hook_install() {

  // Create the styles directory and ensure it's writable.
  $directory = file_default_scheme() . '://styles';
  file_prepare_directory($directory, FILE_CREATE_DIRECTORY | FILE_MODIFY_PERMISSIONS);