void elasticApmModuleInit()

in prod/native/extension/code/ModuleInit.cpp [64:101]


void elasticApmModuleInit(int moduleType, int moduleNumber) {
    auto const &sapi = *ELASTICAPM_G(globals)->sapi_;
    auto globals = ELASTICAPM_G(globals);

    elasticapm::php::registerElasticApmIniEntries(EAPM_GL(logger_).get(), moduleNumber);
    configManager.update();
    globals->config_->update();

    ELOGF_DEBUG(globals->logger_, MODULE, "%s entered: moduleType: %d, moduleNumber: %d, parent PID: %d, SAPI: %s (%d) is %s", __FUNCTION__, moduleType, moduleNumber, static_cast<int>(elasticapm::osutils::getParentProcessId()), sapi.getName().data(), static_cast<uint8_t>(sapi.getType()), sapi.isSupported() ? "supported" : "unsupported");
    if (!sapi.isSupported()) {
        return;
    }

    registerSigSegvHandler(globals->logger_.get());

    logStartupPreamble(globals->logger_.get());

    if (!EAPM_CFG(enabled)) {
        ELOGF_INFO(globals->logger_, MODULE, "Extension is disabled");
        return;
    }

    if (EAPM_CFG(bootstrap_php_part_file).empty()) {
        ELOGF_WARNING(globals->logger_, MODULE, "bootstrap_php_part_file configuration option is not set - extension will be disabled");
        return;
    }

    ELOGF_DEBUG(globals->logger_, MODULE, "MINIT Replacing hooks");
    elasticapm::php::Hooking::getInstance().fetchOriginalHooks();
    elasticapm::php::Hooking::getInstance().replaceHooks(globals->config_->get().inferred_spans_enabled, globals->config_->get().dependency_autoloader_guard_enabled);

    zend_observer_activate();
    zend_observer_fcall_register(elasticapm::php::elasticRegisterObserver);

    if (php_check_open_basedir_ex(EAPM_GL(config_)->get(&elasticapm::php::ConfigurationSnapshot::bootstrap_php_part_file).c_str(), false) != 0) {
        ELOGF_WARNING(globals->logger_, MODULE, "EDOT PHP bootstrap file (%s) is located outside of paths allowed by open_basedir ini setting. Read more details here https://elastic.github.io/opentelemetry/edot-sdks/php/setup/limitations.html", EAPM_GL(config_)->get(&elasticapm::php::ConfigurationSnapshot::bootstrap_php_part_file).c_str());
    }
}