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());
}
}