diff options
-rw-r--r-- | 952.patch | 51 | ||||
-rw-r--r-- | PHPINFO | 330 | ||||
-rw-r--r-- | REFLECTION | 1722 | ||||
-rw-r--r-- | engine_api.c | 39 | ||||
-rw-r--r-- | engine_api.h | 17 | ||||
-rw-r--r-- | handlers_curl.c | 269 | ||||
-rwxr-xr-x | makedeps.sh | 21 | ||||
-rw-r--r-- | php-pecl-datadog-trace.spec | 512 |
8 files changed, 2397 insertions, 564 deletions
diff --git a/952.patch b/952.patch deleted file mode 100644 index 3cba6f5..0000000 --- a/952.patch +++ /dev/null @@ -1,51 +0,0 @@ -From 7720c13ed242e87ce1e934f80378a6f145ebd769 Mon Sep 17 00:00:00 2001 -From: Remi Collet <remi@remirepo.net> -Date: Thu, 9 Jul 2020 07:50:18 +0200 -Subject: [PATCH 1/2] improve CGI usage - ---- - tests/ext/startup_logging.inc | 8 ++++++-- - 1 file changed, 6 insertions(+), 2 deletions(-) - -diff --git a/tests/ext/startup_logging.inc b/tests/ext/startup_logging.inc -index 17235e11e..869e65da5 100644 ---- a/tests/ext/startup_logging.inc -+++ b/tests/ext/startup_logging.inc -@@ -2,8 +2,12 @@ - - function dd_get_php_cgi() - { -- $executable = dirname(getenv('TEST_PHP_EXECUTABLE')) . '/php-cgi'; -- return file_exists($executable) && is_executable($executable) ? $executable : ''; -+ $executable = getenv('TEST_PHP_CGI_EXECUTABLE') ?: getenv('TEST_PHP_EXECUTABLE') . '-cgi'; -+ if (file_exists($executable) && is_executable($executable)) { -+ $args = getenv('TEST_PHP_ARGS'); -+ return $args ? "$executable $args" : "$executable"; -+ } -+ return ''; - } - - function dd_get_startup_logs(array $args = [], array $env = []) - -From 60396869f4ee09a68d532d40a5e72c4c0cfcc102 Mon Sep 17 00:00:00 2001 -From: Remi Collet <remi@remirepo.net> -Date: Thu, 9 Jul 2020 08:09:50 +0200 -Subject: [PATCH 2/2] relax test expectation - ---- - tests/ext/startup_logging_diagnostics.phpt | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/tests/ext/startup_logging_diagnostics.phpt b/tests/ext/startup_logging_diagnostics.phpt -index 13c458997..581b6098b 100644 ---- a/tests/ext/startup_logging_diagnostics.phpt -+++ b/tests/ext/startup_logging_diagnostics.phpt -@@ -31,7 +31,7 @@ dd_dump_startup_logs($logs, [ - ]); - ?> - --EXPECTF-- --agent_error: "Could not resolve host: invalid_host" -+agent_error: %sinvalid_host%s - open_basedir_init_hook_allowed: false - open_basedir_container_tagging_allowed: false - service_name: "foo_service" @@ -6,16 +6,324 @@ Datadog PHP tracer extension For help, check out the documentation at https://docs.datadoghq.com/tracing/languages/php/ (c) Datadog 2020 -Datadog tracing support => enabled -Version => 0.47.0 -DATADOG TRACER CONFIGURATION => {"date":"2020-07-09T06:04:15Z","os_name":"Linux builder.remirepo.net 5.7.7-100.fc31.x86_64 #1 SMP Wed Jul 1 20:37:05 UTC 2020 x86_64","os_version":"5.7.7-100.fc31.x86_64","version":"0.47.0","lang":"php","lang_version":"7.3.20","env":null,"enabled":true,"service":null,"enabled_cli":false,"agent_url":"http://localhost:8126","debug":false,"analytics_enabled":false,"sample_rate":1.000000,"sampling_rules":null,"tags":null,"service_mapping":null,"distributed_tracing_enabled":true,"priority_sampling_enabled":true,"dd_version":null,"architecture":"x86_64","sapi":"cli","ddtrace.request_init_hook":null,"open_basedir_configured":false,"uri_fragment_regex":null,"uri_mapping_incoming":null,"uri_mapping_outgoing":null,"auto_flush_enabled":false,"generate_root_span":true,"http_client_split_by_domain":false,"measure_compile_time":true,"report_hostname_on_root_span":false,"traced_internal_functions":null,"auto_prepend_file_configured":false,"integrations_disabled":null,"enabled_from_env":true,"opcache.file_cache":null,"agent_error":"Failed to connect to localhost port 8126: Connection refused","ddtrace.request_init_hook_reachable":false} - - Diagnostics -agent_error => Failed to connect to localhost port 8126: Connection refused -ddtrace.request_init_hook_reachable => false -Diagnostic checks => failed +Datadog tracing support => disabled +Version => 1.0.0beta1 +DATADOG TRACER CONFIGURATION => { + "date": "2024-04-17T09:23:00Z", + "os_name": "Linux builder.remirepo.net 6.8.5-201.fc39.x86_64 #1 SMP PREEMPT_DYNAMIC Thu Apr 11 18:25:26 UTC 2024 x86_64", + "os_version": "6.8.5-201.fc39.x86_64", + "version": "1.0.0beta1", + "lang": "php", + "lang_version": "8.2.18", + "env": null, + "enabled": true, + "service": null, + "enabled_cli": false, + "agent_url": "http:\/\/localhost:8126", + "debug": false, + "analytics_enabled": false, + "sample_rate": -1, + "sampling_rules": [], + "tags": [], + "service_mapping": [], + "distributed_tracing_enabled": true, + "dd_version": null, + "architecture": "x86_64", + "sapi": "cli", + "datadog.trace.sources_path": "\/usr\/share\/pear\/datadog_trace\/src\/", + "open_basedir_configured": false, + "uri_fragment_regex": null, + "uri_mapping_incoming": null, + "uri_mapping_outgoing": null, + "auto_flush_enabled": false, + "generate_root_span": true, + "http_client_split_by_domain": false, + "measure_compile_time": true, + "report_hostname_on_root_span": false, + "traced_internal_functions": null, + "enabled_from_env": false, + "opcache.file_cache": null, + "agent_error": "Failed to connect to localhost port 8126 after 0 ms: Couldn't connect to server" +} Directive => Local Value => Master Value -ddtrace.disable => Off => Off -ddtrace.request_init_hook => no value => no value -ddtrace.strict_mode => Off => Off +ddtrace.disable => 0 => 0 +ddtrace.cgroup_file => /proc/self/cgroup => /proc/self/cgroup +datadog.trace.sidecar_trace_sender => Off => Off +datadog.trace.sources_path => /usr/share/pear/datadog_trace/src/ => /usr/share/pear/datadog_trace/src/ +datadog.autoload_no_compile => 0 => 0 +datadog.trace.agent_url => no value => no value +datadog.agent_host => no value => no value +datadog.dogstatsd_url => no value => no value +datadog.api_key => no value => no value +datadog.distributed_tracing => On => On +datadog.dogstatsd_port => 8125 => 8125 +datadog.env => no value => no value +datadog.autofinish_spans => Off => Off +datadog.trace.url_as_resource_names_enabled => On => On +datadog.http_server_route_based_naming => On => On +datadog.service => no value => no value +datadog.service_mapping => no value => no value +datadog.tags => no value => no value +datadog.trace.agent_port => 0 => 0 +datadog.trace.analytics_enabled => Off => Off +datadog.trace.append_trace_ids_to_logs => Off => Off +datadog.trace.auto_flush_enabled => Off => Off +datadog.trace.cli_enabled => Off => Off +datadog.trace.measure_compile_time => On => On +datadog.trace.debug => Off => Off +datadog.trace.enabled => Off => On +datadog.instrumentation_telemetry_enabled => On => On +datadog.trace.health_metrics_enabled => Off => Off +datadog.trace.health_metrics_heartbeat_sample_rate => 0.001 => 0.001 +datadog.trace.db_client_split_by_instance => Off => Off +datadog.trace.http_client_split_by_domain => Off => Off +datadog.trace.redis_client_split_by_host => Off => Off +datadog.trace.memory_limit => no value => no value +datadog.trace.report_hostname => Off => Off +datadog.trace.flush_collect_cycles => Off => Off +datadog.trace.laravel_queue_distributed_tracing => On => On +datadog.trace.remove_root_span_laravel_queue => On => On +datadog.trace.remove_autoinstrumentation_orphans => Off => Off +datadog.trace.resource_uri_fragment_regex => no value => no value +datadog.trace.resource_uri_mapping_incoming => no value => no value +datadog.trace.resource_uri_mapping_outgoing => no value => no value +datadog.trace.resource_uri_query_param_allowed => no value => no value +datadog.trace.http_url_query_param_allowed => * => * +datadog.trace.http_post_data_param_allowed => no value => no value +datadog.trace.rate_limit => 0 => 0 +datadog.trace.sample_rate => -1 => -1 +datadog.trace.sampling_rules => [] => [] +datadog.trace.sampling_rules_format => glob => glob +datadog.span_sampling_rules => [] => [] +datadog.span_sampling_rules_file => no value => no value +datadog.trace.header_tags => no value => no value +datadog.trace.x_datadog_tags_max_length => 512 => 512 +datadog.trace.peer_service_mapping => no value => no value +datadog.trace.peer_service_defaults_enabled => Off => Off +datadog.trace.remove_integration_service_names_enabled => Off => Off +datadog.trace.propagate_service => Off => Off +datadog.trace.propagation_style_extract => datadog,tracecontext,B3,B3 single header => datadog,tracecontext,B3,B3 single header +datadog.trace.propagation_style_inject => datadog,tracecontext => datadog,tracecontext +datadog.trace.propagation_style => datadog,tracecontext => datadog,tracecontext +datadog.trace.traced_internal_functions => no value => no value +datadog.trace.agent_timeout => 500 => 500 +datadog.trace.agent_connect_timeout => 100 => 100 +datadog.trace.debug_prng_seed => -1 => -1 +datadog.log_backtrace => Off => Off +datadog.trace.generate_root_span => On => On +datadog.trace.spans_limit => 1000 => 1000 +datadog.trace.128_bit_traceid_generation_enabled => On => On +datadog.trace.128_bit_traceid_logging_enabled => Off => Off +datadog.trace.bgs_connect_timeout => 2000 => 2000 +datadog.trace.bgs_timeout => 5000 => 5000 +datadog.trace.agent_flush_interval => 5000 => 5000 +datadog.trace.agent_flush_after_n_requests => 10 => 10 +datadog.trace.shutdown_timeout => 5000 => 5000 +datadog.trace.startup_logs => On => On +datadog.trace.once_logs => On => On +datadog.trace.agent_retries => 0 => 0 +datadog.trace.agent_debug_verbose_curl => Off => Off +datadog.trace.debug_curl_output => Off => Off +datadog.trace.beta_high_memory_pressure_percent => 80 => 80 +datadog.trace.agentless => Off => Off +datadog.trace.warn_legacy_dd_trace => On => On +datadog.trace.retain_thread_capabilities => Off => Off +datadog.version => no value => no value +datadog.trace.obfuscation_query_string_regexp => (?i)(?:(?:"|%22)?)(?:(?:old[-_]?|new[-_]?)?p(?:ass)?w(?:or)?d(?:1|2)?|pass(?:[-_]?phrase)?|secret|(?:api[-_]?|private[-_]?|public[-_]?|access[-_]?|secret[-_]?|app(?:lication)?[-_]?)key(?:[-_]?id)?|token|consumer[-_]?(?:id|key|secret)|sign(?:ed|ature)?|auth(?:entication|orization)?)(?:(?:\s|%20)*(?:=|%3D)[^&]+|(?:"|%22)(?:\s|%20)*(?::|%3A)(?:\s|%20)*(?:"|%22)(?:%2[^2]|%[^2]|[^"%])+(?:"|%22))|(?:bearer(?:\s|%20)+[a-z0-9._\-]+|token(?::|%3A)[a-z0-9]{13}|gh[opsu]_[0-9a-zA-Z]{36}|ey[I-L](?:[\w=-]|%3D)+\.ey[I-L](?:[\w=-]|%3D)+(?:\.(?:[\w.+/=-]|%3D|%2F|%2B)+)?|-{5}BEGIN(?:[a-z\s]|%20)+PRIVATE(?:\s|%20)KEY-{5}[^\-]+-{5}END(?:[a-z\s]|%20)+PRIVATE(?:\s|%20)KEY(?:-{5})?(?:\n|%0A)?|(?:ssh-(?:rsa|dss)|ecdsa-[a-z0-9]+-[a-z0-9]+)(?:\s|%20|%09)+(?:[a-z0-9/.+]|%2F|%5C|%2B){100,}(?:=|%3D)*(?:(?:\s|%20|%09)+[a-z0-9._-]+)?) => (?i)(?:(?:"|%22)?)(?:(?:old[-_]?|new[-_]?)?p(?:ass)?w(?:or)?d(?:1|2)?|pass(?:[-_]?phrase)?|secret|(?:api[-_]?|private[-_]?|public[-_]?|access[-_]?|secret[-_]?|app(?:lication)?[-_]?)key(?:[-_]?id)?|token|consumer[-_]?(?:id|key|secret)|sign(?:ed|ature)?|auth(?:entication|orization)?)(?:(?:\s|%20)*(?:=|%3D)[^&]+|(?:"|%22)(?:\s|%20)*(?::|%3A)(?:\s|%20)*(?:"|%22)(?:%2[^2]|%[^2]|[^"%])+(?:"|%22))|(?:bearer(?:\s|%20)+[a-z0-9._\-]+|token(?::|%3A)[a-z0-9]{13}|gh[opsu]_[0-9a-zA-Z]{36}|ey[I-L](?:[\w=-]|%3D)+\.ey[I-L](?:[\w=-]|%3D)+(?:\.(?:[\w.+/=-]|%3D|%2F|%2B)+)?|-{5}BEGIN(?:[a-z\s]|%20)+PRIVATE(?:\s|%20)KEY-{5}[^\-]+-{5}END(?:[a-z\s]|%20)+PRIVATE(?:\s|%20)KEY(?:-{5})?(?:\n|%0A)?|(?:ssh-(?:rsa|dss)|ecdsa-[a-z0-9]+-[a-z0-9]+)(?:\s|%20|%09)+(?:[a-z0-9/.+]|%2F|%5C|%2B){100,}(?:=|%3D)*(?:(?:\s|%20|%09)+[a-z0-9._-]+)?) +datadog.trace.client_ip_enabled => Off => Off +datadog.trace.client_ip_header => no value => no value +datadog.trace.forked_process => On => On +datadog.trace.hook_limit => 100 => 100 +datadog.trace.agent_max_payload_size => 52428800 => 52428800 +datadog.trace.agent_stack_initial_size => 131072 => 131072 +datadog.trace.agent_stack_backlog => 12 => 12 +datadog.trace.propagate_user_id_default => Off => Off +datadog.dbm_propagation_mode => disabled => disabled +datadog.trace.wordpress_additional_actions => no value => no value +datadog.trace.wordpress_callbacks => On => On +datadog.trace.otel_enabled => Off => Off +datadog.trace.log_file => no value => no value +datadog.trace.log_level => error => error +datadog.appsec.sca_enabled => Off => Off +datadog.trace.amqp_enabled => On => On +datadog.trace.amqp_analytics_enabled => Off => Off +datadog.amqp_analytics_enabled => Off => Off +datadog.trace.amqp_analytics_sample_rate => 1 => 1 +datadog.amqp_analytics_sample_rate => 1 => 1 +datadog.trace.cakephp_enabled => On => On +datadog.trace.cakephp_analytics_enabled => Off => Off +datadog.cakephp_analytics_enabled => Off => Off +datadog.trace.cakephp_analytics_sample_rate => 1 => 1 +datadog.cakephp_analytics_sample_rate => 1 => 1 +datadog.trace.codeigniter_enabled => On => On +datadog.trace.codeigniter_analytics_enabled => Off => Off +datadog.codeigniter_analytics_enabled => Off => Off +datadog.trace.codeigniter_analytics_sample_rate => 1 => 1 +datadog.codeigniter_analytics_sample_rate => 1 => 1 +datadog.trace.exec_enabled => On => On +datadog.trace.exec_analytics_enabled => Off => Off +datadog.exec_analytics_enabled => Off => Off +datadog.trace.exec_analytics_sample_rate => 1 => 1 +datadog.exec_analytics_sample_rate => 1 => 1 +datadog.trace.curl_enabled => On => On +datadog.trace.curl_analytics_enabled => Off => Off +datadog.curl_analytics_enabled => Off => Off +datadog.trace.curl_analytics_sample_rate => 1 => 1 +datadog.curl_analytics_sample_rate => 1 => 1 +datadog.trace.drupal_enabled => On => On +datadog.trace.drupal_analytics_enabled => Off => Off +datadog.drupal_analytics_enabled => Off => Off +datadog.trace.drupal_analytics_sample_rate => 1 => 1 +datadog.drupal_analytics_sample_rate => 1 => 1 +datadog.trace.elasticsearch_enabled => On => On +datadog.trace.elasticsearch_analytics_enabled => Off => Off +datadog.elasticsearch_analytics_enabled => Off => Off +datadog.trace.elasticsearch_analytics_sample_rate => 1 => 1 +datadog.elasticsearch_analytics_sample_rate => 1 => 1 +datadog.trace.eloquent_enabled => On => On +datadog.trace.eloquent_analytics_enabled => Off => Off +datadog.eloquent_analytics_enabled => Off => Off +datadog.trace.eloquent_analytics_sample_rate => 1 => 1 +datadog.eloquent_analytics_sample_rate => 1 => 1 +datadog.trace.frankenphp_enabled => On => On +datadog.trace.frankenphp_analytics_enabled => Off => Off +datadog.frankenphp_analytics_enabled => Off => Off +datadog.trace.frankenphp_analytics_sample_rate => 1 => 1 +datadog.frankenphp_analytics_sample_rate => 1 => 1 +datadog.trace.guzzle_enabled => On => On +datadog.trace.guzzle_analytics_enabled => Off => Off +datadog.guzzle_analytics_enabled => Off => Off +datadog.trace.guzzle_analytics_sample_rate => 1 => 1 +datadog.guzzle_analytics_sample_rate => 1 => 1 +datadog.trace.laminas_enabled => On => On +datadog.trace.laminas_analytics_enabled => Off => Off +datadog.laminas_analytics_enabled => Off => Off +datadog.trace.laminas_analytics_sample_rate => 1 => 1 +datadog.laminas_analytics_sample_rate => 1 => 1 +datadog.trace.laravel_enabled => On => On +datadog.trace.laravel_analytics_enabled => Off => Off +datadog.laravel_analytics_enabled => Off => Off +datadog.trace.laravel_analytics_sample_rate => 1 => 1 +datadog.laravel_analytics_sample_rate => 1 => 1 +datadog.trace.laravelqueue_enabled => On => On +datadog.trace.laravelqueue_analytics_enabled => Off => Off +datadog.laravelqueue_analytics_enabled => Off => Off +datadog.trace.laravelqueue_analytics_sample_rate => 1 => 1 +datadog.laravelqueue_analytics_sample_rate => 1 => 1 +datadog.trace.logs_enabled => Off => Off +datadog.logs_injection => Off => Off +datadog.trace.logs_analytics_enabled => Off => Off +datadog.logs_analytics_enabled => Off => Off +datadog.trace.logs_analytics_sample_rate => 1 => 1 +datadog.logs_analytics_sample_rate => 1 => 1 +datadog.trace.lumen_enabled => On => On +datadog.trace.lumen_analytics_enabled => Off => Off +datadog.lumen_analytics_enabled => Off => Off +datadog.trace.lumen_analytics_sample_rate => 1 => 1 +datadog.lumen_analytics_sample_rate => 1 => 1 +datadog.trace.magento_enabled => On => On +datadog.trace.magento_analytics_enabled => Off => Off +datadog.magento_analytics_enabled => Off => Off +datadog.trace.magento_analytics_sample_rate => 1 => 1 +datadog.magento_analytics_sample_rate => 1 => 1 +datadog.trace.memcache_enabled => On => On +datadog.trace.memcache_analytics_enabled => Off => Off +datadog.memcache_analytics_enabled => Off => Off +datadog.trace.memcache_analytics_sample_rate => 1 => 1 +datadog.memcache_analytics_sample_rate => 1 => 1 +datadog.trace.memcached_enabled => On => On +datadog.trace.memcached_analytics_enabled => Off => Off +datadog.memcached_analytics_enabled => Off => Off +datadog.trace.memcached_analytics_sample_rate => 1 => 1 +datadog.memcached_analytics_sample_rate => 1 => 1 +datadog.trace.mongo_enabled => On => On +datadog.trace.mongo_analytics_enabled => Off => Off +datadog.mongo_analytics_enabled => Off => Off +datadog.trace.mongo_analytics_sample_rate => 1 => 1 +datadog.mongo_analytics_sample_rate => 1 => 1 +datadog.trace.mongodb_enabled => On => On +datadog.trace.mongodb_analytics_enabled => Off => Off +datadog.mongodb_analytics_enabled => Off => Off +datadog.trace.mongodb_analytics_sample_rate => 1 => 1 +datadog.mongodb_analytics_sample_rate => 1 => 1 +datadog.trace.mysqli_enabled => On => On +datadog.trace.mysqli_analytics_enabled => Off => Off +datadog.mysqli_analytics_enabled => Off => Off +datadog.trace.mysqli_analytics_sample_rate => 1 => 1 +datadog.mysqli_analytics_sample_rate => 1 => 1 +datadog.trace.nette_enabled => On => On +datadog.trace.nette_analytics_enabled => Off => Off +datadog.nette_analytics_enabled => Off => Off +datadog.trace.nette_analytics_sample_rate => 1 => 1 +datadog.nette_analytics_sample_rate => 1 => 1 +datadog.trace.pcntl_enabled => On => On +datadog.trace.pcntl_analytics_enabled => Off => Off +datadog.pcntl_analytics_enabled => Off => Off +datadog.trace.pcntl_analytics_sample_rate => 1 => 1 +datadog.pcntl_analytics_sample_rate => 1 => 1 +datadog.trace.pdo_enabled => On => On +datadog.trace.pdo_analytics_enabled => Off => Off +datadog.pdo_analytics_enabled => Off => Off +datadog.trace.pdo_analytics_sample_rate => 1 => 1 +datadog.pdo_analytics_sample_rate => 1 => 1 +datadog.trace.phpredis_enabled => On => On +datadog.trace.phpredis_analytics_enabled => Off => Off +datadog.phpredis_analytics_enabled => Off => Off +datadog.trace.phpredis_analytics_sample_rate => 1 => 1 +datadog.phpredis_analytics_sample_rate => 1 => 1 +datadog.trace.predis_enabled => On => On +datadog.trace.predis_analytics_enabled => Off => Off +datadog.predis_analytics_enabled => Off => Off +datadog.trace.predis_analytics_sample_rate => 1 => 1 +datadog.predis_analytics_sample_rate => 1 => 1 +datadog.trace.psr18_enabled => On => On +datadog.trace.psr18_analytics_enabled => Off => Off +datadog.psr18_analytics_enabled => Off => Off +datadog.trace.psr18_analytics_sample_rate => 1 => 1 +datadog.psr18_analytics_sample_rate => 1 => 1 +datadog.trace.roadrunner_enabled => On => On +datadog.trace.roadrunner_analytics_enabled => Off => Off +datadog.roadrunner_analytics_enabled => Off => Off +datadog.trace.roadrunner_analytics_sample_rate => 1 => 1 +datadog.roadrunner_analytics_sample_rate => 1 => 1 +datadog.trace.sqlsrv_enabled => On => On +datadog.trace.sqlsrv_analytics_enabled => Off => Off +datadog.sqlsrv_analytics_enabled => Off => Off +datadog.trace.sqlsrv_analytics_sample_rate => 1 => 1 +datadog.sqlsrv_analytics_sample_rate => 1 => 1 +datadog.trace.slim_enabled => On => On +datadog.trace.slim_analytics_enabled => Off => Off +datadog.slim_analytics_enabled => Off => Off +datadog.trace.slim_analytics_sample_rate => 1 => 1 +datadog.slim_analytics_sample_rate => 1 => 1 +datadog.trace.swoole_enabled => On => On +datadog.trace.swoole_analytics_enabled => Off => Off +datadog.swoole_analytics_enabled => Off => Off +datadog.trace.swoole_analytics_sample_rate => 1 => 1 +datadog.swoole_analytics_sample_rate => 1 => 1 +datadog.trace.symfony_enabled => On => On +datadog.trace.symfony_analytics_enabled => Off => Off +datadog.symfony_analytics_enabled => Off => Off +datadog.trace.symfony_analytics_sample_rate => 1 => 1 +datadog.symfony_analytics_sample_rate => 1 => 1 +datadog.trace.web_enabled => On => On +datadog.trace.web_analytics_enabled => Off => Off +datadog.web_analytics_enabled => Off => Off +datadog.trace.web_analytics_sample_rate => 1 => 1 +datadog.web_analytics_sample_rate => 1 => 1 +datadog.trace.wordpress_enabled => On => On +datadog.trace.wordpress_analytics_enabled => Off => Off +datadog.wordpress_analytics_enabled => Off => Off +datadog.trace.wordpress_analytics_sample_rate => 1 => 1 +datadog.wordpress_analytics_sample_rate => 1 => 1 +datadog.trace.yii_enabled => On => On +datadog.trace.yii_analytics_enabled => Off => Off +datadog.yii_analytics_enabled => Off => Off +datadog.trace.yii_analytics_sample_rate => 1 => 1 +datadog.yii_analytics_sample_rate => 1 => 1 +datadog.trace.zendframework_enabled => On => On +datadog.trace.zendframework_analytics_enabled => Off => Off +datadog.zendframework_analytics_enabled => Off => Off +datadog.trace.zendframework_analytics_sample_rate => 1 => 1 +datadog.zendframework_analytics_sample_rate => 1 => 1 @@ -1,174 +1,1481 @@ -Extension [ <persistent> extension #116 ddtrace version 0.47.0 ] { +Extension [ <persistent> extension #68 ddtrace version 1.0.0beta1 ] { + + - Dependencies { + Dependency [ json (Required) ] + Dependency [ standard (Required) ] + } - INI { Entry [ ddtrace.disable <SYSTEM> ] Current = '0' } - Entry [ ddtrace.request_init_hook <SYSTEM> ] + Entry [ ddtrace.cgroup_file <SYSTEM> ] + Current = '/proc/self/cgroup' + } + Entry [ datadog.trace.sidecar_trace_sender <SYSTEM> ] + Current = 'false' + } + Entry [ datadog.trace.sources_path <SYSTEM> ] + Current = '/usr/share/pear/datadog_trace/src/' + } + Entry [ datadog.autoload_no_compile <SYSTEM> ] + Current = '0' + } + Entry [ datadog.trace.agent_url <SYSTEM> ] + Current = '' + } + Entry [ datadog.agent_host <SYSTEM> ] + Current = '' + } + Entry [ datadog.dogstatsd_url <ALL> ] + Current = '' + } + Entry [ datadog.api_key <SYSTEM> ] + Current = '' + } + Entry [ datadog.distributed_tracing <ALL> ] + Current = 'true' + } + Entry [ datadog.dogstatsd_port <ALL> ] + Current = '8125' + } + Entry [ datadog.env <ALL> ] + Current = '' + } + Entry [ datadog.autofinish_spans <ALL> ] + Current = 'false' + } + Entry [ datadog.trace.url_as_resource_names_enabled <ALL> ] + Current = 'true' + } + Entry [ datadog.http_server_route_based_naming <ALL> ] + Current = 'true' + } + Entry [ datadog.service <ALL> ] + Current = '' + } + Entry [ datadog.service_mapping <ALL> ] + Current = '' + } + Entry [ datadog.tags <ALL> ] + Current = '' + } + Entry [ datadog.trace.agent_port <SYSTEM> ] + Current = '0' + } + Entry [ datadog.trace.analytics_enabled <ALL> ] + Current = 'false' + } + Entry [ datadog.trace.append_trace_ids_to_logs <ALL> ] + Current = 'false' + } + Entry [ datadog.trace.auto_flush_enabled <ALL> ] + Current = 'false' + } + Entry [ datadog.trace.cli_enabled <ALL> ] + Current = 'false' + } + Entry [ datadog.trace.measure_compile_time <ALL> ] + Current = 'true' + } + Entry [ datadog.trace.debug <ALL> ] + Current = 'false' + } + Entry [ datadog.trace.enabled <ALL> ] + Current = '0' + Default = 'true' + } + Entry [ datadog.instrumentation_telemetry_enabled <SYSTEM> ] + Current = 'true' + } + Entry [ datadog.trace.health_metrics_enabled <SYSTEM> ] + Current = 'false' + } + Entry [ datadog.trace.health_metrics_heartbeat_sample_rate <ALL> ] + Current = '0.001' + } + Entry [ datadog.trace.db_client_split_by_instance <ALL> ] + Current = 'false' + } + Entry [ datadog.trace.http_client_split_by_domain <ALL> ] + Current = 'false' + } + Entry [ datadog.trace.redis_client_split_by_host <ALL> ] + Current = 'false' + } + Entry [ datadog.trace.memory_limit <ALL> ] + Current = '' + } + Entry [ datadog.trace.report_hostname <ALL> ] + Current = 'false' + } + Entry [ datadog.trace.flush_collect_cycles <ALL> ] + Current = 'false' + } + Entry [ datadog.trace.laravel_queue_distributed_tracing <ALL> ] + Current = 'true' + } + Entry [ datadog.trace.remove_root_span_laravel_queue <ALL> ] + Current = 'true' + } + Entry [ datadog.trace.remove_autoinstrumentation_orphans <ALL> ] + Current = 'false' + } + Entry [ datadog.trace.resource_uri_fragment_regex <ALL> ] + Current = '' + } + Entry [ datadog.trace.resource_uri_mapping_incoming <ALL> ] + Current = '' + } + Entry [ datadog.trace.resource_uri_mapping_outgoing <ALL> ] + Current = '' + } + Entry [ datadog.trace.resource_uri_query_param_allowed <ALL> ] + Current = '' + } + Entry [ datadog.trace.http_url_query_param_allowed <ALL> ] + Current = '*' + } + Entry [ datadog.trace.http_post_data_param_allowed <ALL> ] + Current = '' + } + Entry [ datadog.trace.rate_limit <SYSTEM> ] + Current = '0' + } + Entry [ datadog.trace.sample_rate <ALL> ] + Current = '-1' + } + Entry [ datadog.trace.sampling_rules <ALL> ] + Current = '[]' + } + Entry [ datadog.trace.sampling_rules_format <ALL> ] + Current = 'glob' + } + Entry [ datadog.span_sampling_rules <ALL> ] + Current = '[]' + } + Entry [ datadog.span_sampling_rules_file <ALL> ] + Current = '' + } + Entry [ datadog.trace.header_tags <ALL> ] + Current = '' + } + Entry [ datadog.trace.x_datadog_tags_max_length <ALL> ] + Current = '512' + } + Entry [ datadog.trace.peer_service_mapping <ALL> ] + Current = '' + } + Entry [ datadog.trace.peer_service_defaults_enabled <ALL> ] + Current = 'false' + } + Entry [ datadog.trace.remove_integration_service_names_enabled <ALL> ] + Current = 'false' + } + Entry [ datadog.trace.propagate_service <ALL> ] + Current = 'false' + } + Entry [ datadog.trace.propagation_style_extract <ALL> ] + Current = 'datadog,tracecontext,B3,B3 single header' + } + Entry [ datadog.trace.propagation_style_inject <ALL> ] + Current = 'datadog,tracecontext' + } + Entry [ datadog.trace.propagation_style <ALL> ] + Current = 'datadog,tracecontext' + } + Entry [ datadog.trace.traced_internal_functions <ALL> ] Current = '' } - Entry [ ddtrace.strict_mode <SYSTEM> ] + Entry [ datadog.trace.agent_timeout <SYSTEM> ] + Current = '500' + } + Entry [ datadog.trace.agent_connect_timeout <SYSTEM> ] + Current = '100' + } + Entry [ datadog.trace.debug_prng_seed <ALL> ] + Current = '-1' + } + Entry [ datadog.log_backtrace <ALL> ] + Current = 'false' + } + Entry [ datadog.trace.generate_root_span <ALL> ] + Current = 'true' + } + Entry [ datadog.trace.spans_limit <ALL> ] + Current = '1000' + } + Entry [ datadog.trace.128_bit_traceid_generation_enabled <ALL> ] + Current = 'true' + } + Entry [ datadog.trace.128_bit_traceid_logging_enabled <ALL> ] + Current = 'false' + } + Entry [ datadog.trace.bgs_connect_timeout <SYSTEM> ] + Current = '2000' + } + Entry [ datadog.trace.bgs_timeout <SYSTEM> ] + Current = '5000' + } + Entry [ datadog.trace.agent_flush_interval <SYSTEM> ] + Current = '5000' + } + Entry [ datadog.trace.agent_flush_after_n_requests <ALL> ] + Current = '10' + } + Entry [ datadog.trace.shutdown_timeout <SYSTEM> ] + Current = '5000' + } + Entry [ datadog.trace.startup_logs <ALL> ] + Current = 'true' + } + Entry [ datadog.trace.once_logs <ALL> ] + Current = 'true' + } + Entry [ datadog.trace.agent_retries <SYSTEM> ] + Current = '0' + } + Entry [ datadog.trace.agent_debug_verbose_curl <SYSTEM> ] + Current = 'false' + } + Entry [ datadog.trace.debug_curl_output <SYSTEM> ] + Current = 'false' + } + Entry [ datadog.trace.beta_high_memory_pressure_percent <SYSTEM> ] + Current = '80' + } + Entry [ datadog.trace.agentless <SYSTEM> ] + Current = 'false' + } + Entry [ datadog.trace.warn_legacy_dd_trace <ALL> ] + Current = 'true' + } + Entry [ datadog.trace.retain_thread_capabilities <SYSTEM> ] + Current = 'false' + } + Entry [ datadog.version <ALL> ] + Current = '' + } + Entry [ datadog.trace.obfuscation_query_string_regexp <ALL> ] + Current = '(?i)(?:(?:"|%22)?)(?:(?:old[-_]?|new[-_]?)?p(?:ass)?w(?:or)?d(?:1|2)?|pass(?:[-_]?phrase)?|secret|(?:api[-_]?|private[-_]?|public[-_]?|access[-_]?|secret[-_]?|app(?:lication)?[-_]?)key(?:[-_]?id)?|token|consumer[-_]?(?:id|key|secret)|sign(?:ed|ature)?|auth(?:entication|orization)?)(?:(?:\s|%20)*(?:=|%3D)[^&]+|(?:"|%22)(?:\s|%20)*(?::|%3A)(?:\s|%20)*(?:"|%22)(?:%2[^2]|%[^2]|[^"%])+(?:"|%22))|(?:bearer(?:\s|%20)+[a-z0-9._\-]+|token(?::|%3A)[a-z0-9]{13}|gh[opsu]_[0-9a-zA-Z]{36}|ey[I-L](?:[\w=-]|%3D)+\.ey[I-L](?:[\w=-]|%3D)+(?:\.(?:[\w.+/=-]|%3D|%2F|%2B)+)?|-{5}BEGIN(?:[a-z\s]|%20)+PRIVATE(?:\s|%20)KEY-{5}[^\-]+-{5}END(?:[a-z\s]|%20)+PRIVATE(?:\s|%20)KEY(?:-{5})?(?:\n|%0A)?|(?:ssh-(?:rsa|dss)|ecdsa-[a-z0-9]+-[a-z0-9]+)(?:\s|%20|%09)+(?:[a-z0-9/.+]|%2F|%5C|%2B){100,}(?:=|%3D)*(?:(?:\s|%20|%09)+[a-z0-9._-]+)?)' + } + Entry [ datadog.trace.client_ip_enabled <ALL> ] + Current = 'false' + } + Entry [ datadog.trace.client_ip_header <ALL> ] + Current = '' + } + Entry [ datadog.trace.forked_process <ALL> ] + Current = 'true' + } + Entry [ datadog.trace.hook_limit <ALL> ] + Current = '100' + } + Entry [ datadog.trace.agent_max_payload_size <SYSTEM> ] + Current = '52428800' + } + Entry [ datadog.trace.agent_stack_initial_size <SYSTEM> ] + Current = '131072' + } + Entry [ datadog.trace.agent_stack_backlog <SYSTEM> ] + Current = '12' + } + Entry [ datadog.trace.propagate_user_id_default <ALL> ] + Current = 'false' + } + Entry [ datadog.dbm_propagation_mode <ALL> ] + Current = 'disabled' + } + Entry [ datadog.trace.wordpress_additional_actions <ALL> ] + Current = '' + } + Entry [ datadog.trace.wordpress_callbacks <ALL> ] + Current = 'true' + } + Entry [ datadog.trace.otel_enabled <ALL> ] + Current = 'false' + } + Entry [ datadog.trace.log_file <SYSTEM> ] + Current = '' + } + Entry [ datadog.trace.log_level <ALL> ] + Current = 'error' + } + Entry [ datadog.appsec.sca_enabled <SYSTEM> ] + Current = 'false' + } + Entry [ datadog.trace.amqp_enabled <ALL> ] + Current = 'true' + } + Entry [ datadog.trace.amqp_analytics_enabled <ALL> ] + Current = '0' + } + Entry [ datadog.amqp_analytics_enabled <ALL> ] + Current = '0' + } + Entry [ datadog.trace.amqp_analytics_sample_rate <ALL> ] + Current = '1' + } + Entry [ datadog.amqp_analytics_sample_rate <ALL> ] + Current = '1' + } + Entry [ datadog.trace.cakephp_enabled <ALL> ] + Current = 'true' + } + Entry [ datadog.trace.cakephp_analytics_enabled <ALL> ] + Current = '0' + } + Entry [ datadog.cakephp_analytics_enabled <ALL> ] + Current = '0' + } + Entry [ datadog.trace.cakephp_analytics_sample_rate <ALL> ] + Current = '1' + } + Entry [ datadog.cakephp_analytics_sample_rate <ALL> ] + Current = '1' + } + Entry [ datadog.trace.codeigniter_enabled <ALL> ] + Current = 'true' + } + Entry [ datadog.trace.codeigniter_analytics_enabled <ALL> ] + Current = '0' + } + Entry [ datadog.codeigniter_analytics_enabled <ALL> ] + Current = '0' + } + Entry [ datadog.trace.codeigniter_analytics_sample_rate <ALL> ] + Current = '1' + } + Entry [ datadog.codeigniter_analytics_sample_rate <ALL> ] + Current = '1' + } + Entry [ datadog.trace.exec_enabled <ALL> ] + Current = 'true' + } + Entry [ datadog.trace.exec_analytics_enabled <ALL> ] + Current = '0' + } + Entry [ datadog.exec_analytics_enabled <ALL> ] + Current = '0' + } + Entry [ datadog.trace.exec_analytics_sample_rate <ALL> ] + Current = '1' + } + Entry [ datadog.exec_analytics_sample_rate <ALL> ] + Current = '1' + } + Entry [ datadog.trace.curl_enabled <ALL> ] + Current = 'true' + } + Entry [ datadog.trace.curl_analytics_enabled <ALL> ] + Current = '0' + } + Entry [ datadog.curl_analytics_enabled <ALL> ] + Current = '0' + } + Entry [ datadog.trace.curl_analytics_sample_rate <ALL> ] + Current = '1' + } + Entry [ datadog.curl_analytics_sample_rate <ALL> ] + Current = '1' + } + Entry [ datadog.trace.drupal_enabled <ALL> ] + Current = 'true' + } + Entry [ datadog.trace.drupal_analytics_enabled <ALL> ] + Current = '0' + } + Entry [ datadog.drupal_analytics_enabled <ALL> ] + Current = '0' + } + Entry [ datadog.trace.drupal_analytics_sample_rate <ALL> ] + Current = '1' + } + Entry [ datadog.drupal_analytics_sample_rate <ALL> ] + Current = '1' + } + Entry [ datadog.trace.elasticsearch_enabled <ALL> ] + Current = 'true' + } + Entry [ datadog.trace.elasticsearch_analytics_enabled <ALL> ] + Current = '0' + } + Entry [ datadog.elasticsearch_analytics_enabled <ALL> ] + Current = '0' + } + Entry [ datadog.trace.elasticsearch_analytics_sample_rate <ALL> ] + Current = '1' + } + Entry [ datadog.elasticsearch_analytics_sample_rate <ALL> ] + Current = '1' + } + Entry [ datadog.trace.eloquent_enabled <ALL> ] + Current = 'true' + } + Entry [ datadog.trace.eloquent_analytics_enabled <ALL> ] + Current = '0' + } + Entry [ datadog.eloquent_analytics_enabled <ALL> ] + Current = '0' + } + Entry [ datadog.trace.eloquent_analytics_sample_rate <ALL> ] + Current = '1' + } + Entry [ datadog.eloquent_analytics_sample_rate <ALL> ] + Current = '1' + } + Entry [ datadog.trace.frankenphp_enabled <ALL> ] + Current = 'true' + } + Entry [ datadog.trace.frankenphp_analytics_enabled <ALL> ] + Current = '0' + } + Entry [ datadog.frankenphp_analytics_enabled <ALL> ] + Current = '0' + } + Entry [ datadog.trace.frankenphp_analytics_sample_rate <ALL> ] + Current = '1' + } + Entry [ datadog.frankenphp_analytics_sample_rate <ALL> ] + Current = '1' + } + Entry [ datadog.trace.guzzle_enabled <ALL> ] + Current = 'true' + } + Entry [ datadog.trace.guzzle_analytics_enabled <ALL> ] + Current = '0' + } + Entry [ datadog.guzzle_analytics_enabled <ALL> ] Current = '0' } + Entry [ datadog.trace.guzzle_analytics_sample_rate <ALL> ] + Current = '1' + } + Entry [ datadog.guzzle_analytics_sample_rate <ALL> ] + Current = '1' + } + Entry [ datadog.trace.laminas_enabled <ALL> ] + Current = 'true' + } + Entry [ datadog.trace.laminas_analytics_enabled <ALL> ] + Current = '0' + } + Entry [ datadog.laminas_analytics_enabled <ALL> ] + Current = '0' + } + Entry [ datadog.trace.laminas_analytics_sample_rate <ALL> ] + Current = '1' + } + Entry [ datadog.laminas_analytics_sample_rate <ALL> ] + Current = '1' + } + Entry [ datadog.trace.laravel_enabled <ALL> ] + Current = 'true' + } + Entry [ datadog.trace.laravel_analytics_enabled <ALL> ] + Current = '0' + } + Entry [ datadog.laravel_analytics_enabled <ALL> ] + Current = '0' + } + Entry [ datadog.trace.laravel_analytics_sample_rate <ALL> ] + Current = '1' + } + Entry [ datadog.laravel_analytics_sample_rate <ALL> ] + Current = '1' + } + Entry [ datadog.trace.laravelqueue_enabled <ALL> ] + Current = 'true' + } + Entry [ datadog.trace.laravelqueue_analytics_enabled <ALL> ] + Current = '0' + } + Entry [ datadog.laravelqueue_analytics_enabled <ALL> ] + Current = '0' + } + Entry [ datadog.trace.laravelqueue_analytics_sample_rate <ALL> ] + Current = '1' + } + Entry [ datadog.laravelqueue_analytics_sample_rate <ALL> ] + Current = '1' + } + Entry [ datadog.trace.logs_enabled <ALL> ] + Current = 'false' + } + Entry [ datadog.logs_injection <ALL> ] + Current = 'false' + } + Entry [ datadog.trace.logs_analytics_enabled <ALL> ] + Current = '0' + } + Entry [ datadog.logs_analytics_enabled <ALL> ] + Current = '0' + } + Entry [ datadog.trace.logs_analytics_sample_rate <ALL> ] + Current = '1' + } + Entry [ datadog.logs_analytics_sample_rate <ALL> ] + Current = '1' + } + Entry [ datadog.trace.lumen_enabled <ALL> ] + Current = 'true' + } + Entry [ datadog.trace.lumen_analytics_enabled <ALL> ] + Current = '0' + } + Entry [ datadog.lumen_analytics_enabled <ALL> ] + Current = '0' + } + Entry [ datadog.trace.lumen_analytics_sample_rate <ALL> ] + Current = '1' + } + Entry [ datadog.lumen_analytics_sample_rate <ALL> ] + Current = '1' + } + Entry [ datadog.trace.magento_enabled <ALL> ] + Current = 'true' + } + Entry [ datadog.trace.magento_analytics_enabled <ALL> ] + Current = '0' + } + Entry [ datadog.magento_analytics_enabled <ALL> ] + Current = '0' + } + Entry [ datadog.trace.magento_analytics_sample_rate <ALL> ] + Current = '1' + } + Entry [ datadog.magento_analytics_sample_rate <ALL> ] + Current = '1' + } + Entry [ datadog.trace.memcache_enabled <ALL> ] + Current = 'true' + } + Entry [ datadog.trace.memcache_analytics_enabled <ALL> ] + Current = '0' + } + Entry [ datadog.memcache_analytics_enabled <ALL> ] + Current = '0' + } + Entry [ datadog.trace.memcache_analytics_sample_rate <ALL> ] + Current = '1' + } + Entry [ datadog.memcache_analytics_sample_rate <ALL> ] + Current = '1' + } + Entry [ datadog.trace.memcached_enabled <ALL> ] + Current = 'true' + } + Entry [ datadog.trace.memcached_analytics_enabled <ALL> ] + Current = '0' + } + Entry [ datadog.memcached_analytics_enabled <ALL> ] + Current = '0' + } + Entry [ datadog.trace.memcached_analytics_sample_rate <ALL> ] + Current = '1' + } + Entry [ datadog.memcached_analytics_sample_rate <ALL> ] + Current = '1' + } + Entry [ datadog.trace.mongo_enabled <ALL> ] + Current = 'true' + } + Entry [ datadog.trace.mongo_analytics_enabled <ALL> ] + Current = '0' + } + Entry [ datadog.mongo_analytics_enabled <ALL> ] + Current = '0' + } + Entry [ datadog.trace.mongo_analytics_sample_rate <ALL> ] + Current = '1' + } + Entry [ datadog.mongo_analytics_sample_rate <ALL> ] + Current = '1' + } + Entry [ datadog.trace.mongodb_enabled <ALL> ] + Current = 'true' + } + Entry [ datadog.trace.mongodb_analytics_enabled <ALL> ] + Current = '0' + } + Entry [ datadog.mongodb_analytics_enabled <ALL> ] + Current = '0' + } + Entry [ datadog.trace.mongodb_analytics_sample_rate <ALL> ] + Current = '1' + } + Entry [ datadog.mongodb_analytics_sample_rate <ALL> ] + Current = '1' + } + Entry [ datadog.trace.mysqli_enabled <ALL> ] + Current = 'true' + } + Entry [ datadog.trace.mysqli_analytics_enabled <ALL> ] + Current = '0' + } + Entry [ datadog.mysqli_analytics_enabled <ALL> ] + Current = '0' + } + Entry [ datadog.trace.mysqli_analytics_sample_rate <ALL> ] + Current = '1' + } + Entry [ datadog.mysqli_analytics_sample_rate <ALL> ] + Current = '1' + } + Entry [ datadog.trace.nette_enabled <ALL> ] + Current = 'true' + } + Entry [ datadog.trace.nette_analytics_enabled <ALL> ] + Current = '0' + } + Entry [ datadog.nette_analytics_enabled <ALL> ] + Current = '0' + } + Entry [ datadog.trace.nette_analytics_sample_rate <ALL> ] + Current = '1' + } + Entry [ datadog.nette_analytics_sample_rate <ALL> ] + Current = '1' + } + Entry [ datadog.trace.pcntl_enabled <ALL> ] + Current = 'true' + } + Entry [ datadog.trace.pcntl_analytics_enabled <ALL> ] + Current = '0' + } + Entry [ datadog.pcntl_analytics_enabled <ALL> ] + Current = '0' + } + Entry [ datadog.trace.pcntl_analytics_sample_rate <ALL> ] + Current = '1' + } + Entry [ datadog.pcntl_analytics_sample_rate <ALL> ] + Current = '1' + } + Entry [ datadog.trace.pdo_enabled <ALL> ] + Current = 'true' + } + Entry [ datadog.trace.pdo_analytics_enabled <ALL> ] + Current = '0' + } + Entry [ datadog.pdo_analytics_enabled <ALL> ] + Current = '0' + } + Entry [ datadog.trace.pdo_analytics_sample_rate <ALL> ] + Current = '1' + } + Entry [ datadog.pdo_analytics_sample_rate <ALL> ] + Current = '1' + } + Entry [ datadog.trace.phpredis_enabled <ALL> ] + Current = 'true' + } + Entry [ datadog.trace.phpredis_analytics_enabled <ALL> ] + Current = '0' + } + Entry [ datadog.phpredis_analytics_enabled <ALL> ] + Current = '0' + } + Entry [ datadog.trace.phpredis_analytics_sample_rate <ALL> ] + Current = '1' + } + Entry [ datadog.phpredis_analytics_sample_rate <ALL> ] + Current = '1' + } + Entry [ datadog.trace.predis_enabled <ALL> ] + Current = 'true' + } + Entry [ datadog.trace.predis_analytics_enabled <ALL> ] + Current = '0' + } + Entry [ datadog.predis_analytics_enabled <ALL> ] + Current = '0' + } + Entry [ datadog.trace.predis_analytics_sample_rate <ALL> ] + Current = '1' + } + Entry [ datadog.predis_analytics_sample_rate <ALL> ] + Current = '1' + } + Entry [ datadog.trace.psr18_enabled <ALL> ] + Current = 'true' + } + Entry [ datadog.trace.psr18_analytics_enabled <ALL> ] + Current = '0' + } + Entry [ datadog.psr18_analytics_enabled <ALL> ] + Current = '0' + } + Entry [ datadog.trace.psr18_analytics_sample_rate <ALL> ] + Current = '1' + } + Entry [ datadog.psr18_analytics_sample_rate <ALL> ] + Current = '1' + } + Entry [ datadog.trace.roadrunner_enabled <ALL> ] + Current = 'true' + } + Entry [ datadog.trace.roadrunner_analytics_enabled <ALL> ] + Current = '0' + } + Entry [ datadog.roadrunner_analytics_enabled <ALL> ] + Current = '0' + } + Entry [ datadog.trace.roadrunner_analytics_sample_rate <ALL> ] + Current = '1' + } + Entry [ datadog.roadrunner_analytics_sample_rate <ALL> ] + Current = '1' + } + Entry [ datadog.trace.sqlsrv_enabled <ALL> ] + Current = 'true' + } + Entry [ datadog.trace.sqlsrv_analytics_enabled <ALL> ] + Current = '0' + } + Entry [ datadog.sqlsrv_analytics_enabled <ALL> ] + Current = '0' + } + Entry [ datadog.trace.sqlsrv_analytics_sample_rate <ALL> ] + Current = '1' + } + Entry [ datadog.sqlsrv_analytics_sample_rate <ALL> ] + Current = '1' + } + Entry [ datadog.trace.slim_enabled <ALL> ] + Current = 'true' + } + Entry [ datadog.trace.slim_analytics_enabled <ALL> ] + Current = '0' + } + Entry [ datadog.slim_analytics_enabled <ALL> ] + Current = '0' + } + Entry [ datadog.trace.slim_analytics_sample_rate <ALL> ] + Current = '1' + } + Entry [ datadog.slim_analytics_sample_rate <ALL> ] + Current = '1' + } + Entry [ datadog.trace.swoole_enabled <ALL> ] + Current = 'true' + } + Entry [ datadog.trace.swoole_analytics_enabled <ALL> ] + Current = '0' + } + Entry [ datadog.swoole_analytics_enabled <ALL> ] + Current = '0' + } + Entry [ datadog.trace.swoole_analytics_sample_rate <ALL> ] + Current = '1' + } + Entry [ datadog.swoole_analytics_sample_rate <ALL> ] + Current = '1' + } + Entry [ datadog.trace.symfony_enabled <ALL> ] + Current = 'true' + } + Entry [ datadog.trace.symfony_analytics_enabled <ALL> ] + Current = '0' + } + Entry [ datadog.symfony_analytics_enabled <ALL> ] + Current = '0' + } + Entry [ datadog.trace.symfony_analytics_sample_rate <ALL> ] + Current = '1' + } + Entry [ datadog.symfony_analytics_sample_rate <ALL> ] + Current = '1' + } + Entry [ datadog.trace.web_enabled <ALL> ] + Current = 'true' + } + Entry [ datadog.trace.web_analytics_enabled <ALL> ] + Current = '0' + } + Entry [ datadog.web_analytics_enabled <ALL> ] + Current = '0' + } + Entry [ datadog.trace.web_analytics_sample_rate <ALL> ] + Current = '1' + } + Entry [ datadog.web_analytics_sample_rate <ALL> ] + Current = '1' + } + Entry [ datadog.trace.wordpress_enabled <ALL> ] + Current = 'true' + } + Entry [ datadog.trace.wordpress_analytics_enabled <ALL> ] + Current = '0' + } + Entry [ datadog.wordpress_analytics_enabled <ALL> ] + Current = '0' + } + Entry [ datadog.trace.wordpress_analytics_sample_rate <ALL> ] + Current = '1' + } + Entry [ datadog.wordpress_analytics_sample_rate <ALL> ] + Current = '1' + } + Entry [ datadog.trace.yii_enabled <ALL> ] + Current = 'true' + } + Entry [ datadog.trace.yii_analytics_enabled <ALL> ] + Current = '0' + } + Entry [ datadog.yii_analytics_enabled <ALL> ] + Current = '0' + } + Entry [ datadog.trace.yii_analytics_sample_rate <ALL> ] + Current = '1' + } + Entry [ datadog.yii_analytics_sample_rate <ALL> ] + Current = '1' + } + Entry [ datadog.trace.zendframework_enabled <ALL> ] + Current = 'true' + } + Entry [ datadog.trace.zendframework_analytics_enabled <ALL> ] + Current = '0' + } + Entry [ datadog.zendframework_analytics_enabled <ALL> ] + Current = '0' + } + Entry [ datadog.trace.zendframework_analytics_sample_rate <ALL> ] + Current = '1' + } + Entry [ datadog.zendframework_analytics_sample_rate <ALL> ] + Current = '1' + } } - - Constants [1] { - Constant [ string DD_TRACE_VERSION ] { 0.47.0 } + - Constants [14] { + Constant [ string DDTrace\HOOK_ALL_FILES ] { } + Constant [ int DDTrace\HOOK_INSTANCE ] { 1 } + Constant [ int DDTrace\DBM_PROPAGATION_DISABLED ] { 0 } + Constant [ int DDTrace\DBM_PROPAGATION_SERVICE ] { 1 } + Constant [ int DDTrace\DBM_PROPAGATION_FULL ] { 2 } + Constant [ int DDTrace\Internal\SPAN_FLAG_OPENTELEMETRY ] { 1 } + Constant [ int DDTrace\Internal\SPAN_FLAG_OPENTRACING ] { 2 } + Constant [ string DD_TRACE_VERSION ] { 1.0.0beta1 } + Constant [ int DD_TRACE_PRIORITY_SAMPLING_AUTO_KEEP ] { 1 } + Constant [ int DD_TRACE_PRIORITY_SAMPLING_AUTO_REJECT ] { 0 } + Constant [ int DD_TRACE_PRIORITY_SAMPLING_USER_KEEP ] { 2 } + Constant [ int DD_TRACE_PRIORITY_SAMPLING_USER_REJECT ] { -1 } + Constant [ int DD_TRACE_PRIORITY_SAMPLING_UNKNOWN ] { 1073741824 } + Constant [ int DD_TRACE_PRIORITY_SAMPLING_UNSET ] { 1073741825 } } - Functions { - Function [ <internal:ddtrace> function dd_trace ] { + Function [ <internal:ddtrace> function DDTrace\trace_method ] { + + - Parameters [3] { + Parameter #0 [ <required> string $className ] + Parameter #1 [ <required> string $methodName ] + Parameter #2 [ <required> Closure|array|null $tracingClosureOrConfigArray ] + } + - Return [ bool ] } - Function [ <internal:ddtrace> function dd_trace_buffer_span ] { + Function [ <internal:ddtrace> function DDTrace\trace_function ] { + + - Parameters [2] { + Parameter #0 [ <required> string $functionName ] + Parameter #1 [ <required> Closure|array|null $tracingClosureOrConfigArray ] + } + - Return [ bool ] + } + Function [ <internal:ddtrace> function DDTrace\hook_function ] { + + - Parameters [3] { + Parameter #0 [ <required> string $functionName ] + Parameter #1 [ <optional> Closure|array|null $prehookOrConfigArray = null ] + Parameter #2 [ <optional> ?Closure $posthook = null ] + } + - Return [ bool ] + } + Function [ <internal:ddtrace> function DDTrace\hook_method ] { + + - Parameters [4] { + Parameter #0 [ <required> string $className ] + Parameter #1 [ <required> string $methodName ] + Parameter #2 [ <optional> Closure|array|null $prehookOrConfigArray = null ] + Parameter #3 [ <optional> ?Closure $posthook = null ] + } + - Return [ bool ] + } + Function [ <internal:ddtrace> function DDTrace\add_global_tag ] { + + - Parameters [2] { + Parameter #0 [ <required> string $key ] + Parameter #1 [ <required> string $value ] + } + - Return [ void ] + } + Function [ <internal:ddtrace> function DDTrace\add_distributed_tag ] { + + - Parameters [2] { + Parameter #0 [ <required> string $key ] + Parameter #1 [ <required> string $value ] + } + - Return [ void ] + } + Function [ <internal:ddtrace> function DDTrace\set_user ] { + + - Parameters [3] { + Parameter #0 [ <required> string $userId ] + Parameter #1 [ <optional> array $metadata = [] ] + Parameter #2 [ <optional> ?bool $propagate = null ] + } + - Return [ void ] + } + Function [ <internal:ddtrace> function DDTrace\close_spans_until ] { - Parameters [1] { - Parameter #0 [ <required> $trace_array ] + Parameter #0 [ <required> ?DDTrace\SpanData $span ] } + - Return [ int|false ] } - Function [ <internal:ddtrace> function dd_trace_check_memory_under_limit ] { + Function [ <internal:ddtrace> function DDTrace\active_span ] { + + - Parameters [0] { + } + - Return [ ?DDTrace\SpanData ] } - Function [ <internal:ddtrace> function dd_trace_closed_spans_count ] { + Function [ <internal:ddtrace> function DDTrace\root_span ] { + + - Parameters [0] { + } + - Return [ ?DDTrace\RootSpanData ] } - Function [ <internal:ddtrace> function dd_trace_coms_trigger_writer_flush ] { + Function [ <internal:ddtrace> function DDTrace\start_span ] { + + - Parameters [1] { + Parameter #0 [ <optional> float $startTime = 0 ] + } + - Return [ DDTrace\SpanData|false ] } - Function [ <internal:ddtrace> function dd_trace_dd_get_memory_limit ] { + Function [ <internal:ddtrace> function DDTrace\close_span ] { + + - Parameters [1] { + Parameter #0 [ <optional> float $finishTime = 0 ] + } + - Return [ ?false ] } - Function [ <internal:ddtrace> function dd_trace_disable_in_request ] { + Function [ <internal:ddtrace> function DDTrace\update_span_duration ] { + + - Parameters [2] { + Parameter #0 [ <required> DDTrace\SpanData $span ] + Parameter #1 [ <optional> float $finishTime = 0 ] + } + - Return [ ?false ] } - Function [ <internal:ddtrace> function dd_trace_env_config ] { + Function [ <internal:ddtrace> function DDTrace\start_trace_span ] { + + - Parameters [1] { + Parameter #0 [ <optional> float $startTime = 0 ] + } + - Return [ DDTrace\SpanData ] + } + Function [ <internal:ddtrace> function DDTrace\active_stack ] { + + - Parameters [0] { + } + - Return [ ?DDTrace\SpanStack ] + } + Function [ <internal:ddtrace> function DDTrace\create_stack ] { + + - Parameters [0] { + } + - Return [ DDTrace\SpanStack ] + } + Function [ <internal:ddtrace> function DDTrace\switch_stack ] { - Parameters [1] { - Parameter #0 [ <required> $env_name ] + Parameter #0 [ <optional> DDTrace\SpanData|DDTrace\SpanStack|null $newStack = null ] } + - Return [ DDTrace\SpanStack|false|null ] } - Function [ <internal:ddtrace> function dd_trace_forward_call ] { + Function [ <internal:ddtrace> function DDTrace\set_priority_sampling ] { + + - Parameters [2] { + Parameter #0 [ <required> int $priority ] + Parameter #1 [ <optional> bool $global = false ] + } + - Return [ void ] } - Function [ <internal:ddtrace> function dd_trace_generate_id ] { + Function [ <internal:ddtrace> function DDTrace\get_priority_sampling ] { + + - Parameters [1] { + Parameter #0 [ <optional> bool $global = false ] + } + - Return [ ?int ] } - Function [ <internal:ddtrace> function dd_trace_internal_fn ] { + Function [ <internal:ddtrace> function DDTrace\get_sanitized_exception_trace ] { + + - Parameters [2] { + Parameter #0 [ <required> Exception|Throwable $exception ] + Parameter #1 [ <optional> int $skipFrames = 0 ] + } + - Return [ string ] } - Function [ <internal:ddtrace> function dd_trace_noop ] { + Function [ <internal:ddtrace> function DDTrace\consume_distributed_tracing_headers ] { + + - Parameters [1] { + Parameter #0 [ <required> callable|array|null $headersOrCallback ] + } + - Return [ void ] } - Function [ <internal:ddtrace> function dd_trace_peek_span_id ] { + Function [ <internal:ddtrace> function DDTrace\generate_distributed_tracing_headers ] { + + - Parameters [1] { + Parameter #0 [ <optional> ?array $inject = null ] + } + - Return [ array ] } - Function [ <internal:ddtrace> function dd_trace_pop_span_id ] { + Function [ <internal:ddtrace> function DDTrace\find_active_exception ] { + + - Parameters [0] { + } + - Return [ ?Throwable ] } - Function [ <internal:ddtrace> function dd_trace_push_span_id ] { + Function [ <internal:ddtrace> function DDTrace\extract_ip_from_headers ] { - Parameters [1] { - Parameter #0 [ <optional> $existing_id ] + Parameter #0 [ <required> array $headers ] } + - Return [ array ] } - Function [ <internal:ddtrace> function dd_trace_reset ] { + Function [ <internal:ddtrace> function DDTrace\startup_logs ] { + + - Parameters [0] { + } + - Return [ string ] } - Function [ <internal:ddtrace> function dd_trace_send_traces_via_thread ] { + Function [ <internal:ddtrace> function DDTrace\trace_id ] { - - Parameters [3] { - Parameter #0 [ <required> $url ] - Parameter #1 [ <required> $http_headers ] - Parameter #2 [ <required> $body ] + - Parameters [0] { } + - Return [ string ] } - Function [ <internal:ddtrace> function dd_trace_serialize_closed_spans ] { + Function [ <internal:ddtrace> function DDTrace\logs_correlation_trace_id ] { - Parameters [0] { } + - Return [ string ] } - Function [ <internal:ddtrace> function dd_trace_serialize_msgpack ] { + Function [ <internal:ddtrace> function DDTrace\current_context ] { + + - Parameters [0] { + } + - Return [ array ] + } + Function [ <internal:ddtrace> function DDTrace\set_distributed_tracing_context ] { + + - Parameters [4] { + Parameter #0 [ <required> string $traceId ] + Parameter #1 [ <required> string $parentId ] + Parameter #2 [ <optional> ?string $origin = null ] + Parameter #3 [ <optional> array|string|null $propagated_tags = null ] + } + - Return [ bool ] + } + Function [ <internal:ddtrace> function DDTrace\flush ] { + + - Parameters [0] { + } + - Return [ void ] + } + Function [ <internal:ddtrace> function DDTrace\curl_multi_exec_get_request_spans ] { - Parameters [1] { - Parameter #0 [ <required> $trace_array ] + Parameter #0 [ <required> &$array ] } + - Return [ void ] } - Function [ <internal:ddtrace> function dd_trace_set_trace_id ] { + Function [ <internal:ddtrace> function DDTrace\System\container_id ] { + + - Parameters [0] { + } + - Return [ ?string ] + } + Function [ <internal:ddtrace> function DDTrace\Config\integration_analytics_enabled ] { - Parameters [1] { - Parameter #0 [ <required> $trace_id ] + Parameter #0 [ <required> string $integrationName ] } + - Return [ bool ] } - Function [ <internal:ddtrace> function dd_trace_tracer_is_limited ] { + Function [ <internal:ddtrace> function DDTrace\Config\integration_analytics_sample_rate ] { + + - Parameters [1] { + Parameter #0 [ <required> string $integrationName ] + } + - Return [ float ] } - Function [ <internal:ddtrace> function dd_tracer_circuit_breaker_can_try ] { + Function [ <internal:ddtrace> function DDTrace\UserRequest\has_listeners ] { + + - Parameters [0] { + } + - Return [ bool ] } - Function [ <internal:ddtrace> function dd_tracer_circuit_breaker_info ] { + Function [ <internal:ddtrace> function DDTrace\UserRequest\notify_start ] { + + - Parameters [3] { + Parameter #0 [ <required> DDTrace\RootSpanData $span ] + Parameter #1 [ <required> array $data ] + Parameter #2 [ <optional> mixed $body = null ] + } + - Return [ ?array ] } - Function [ <internal:ddtrace> function dd_tracer_circuit_breaker_register_error ] { + Function [ <internal:ddtrace> function DDTrace\UserRequest\notify_commit ] { + + - Parameters [4] { + Parameter #0 [ <required> DDTrace\RootSpanData $span ] + Parameter #1 [ <required> int $status ] + Parameter #2 [ <required> array $headers ] + Parameter #3 [ <optional> mixed $body = null ] + } + - Return [ ?array ] } - Function [ <internal:ddtrace> function dd_tracer_circuit_breaker_register_success ] { + Function [ <internal:ddtrace> function DDTrace\UserRequest\set_blocking_function ] { + + - Parameters [2] { + Parameter #0 [ <required> DDTrace\RootSpanData $span ] + Parameter #1 [ <required> callable $blockingFunction ] + } + - Return [ void ] } - Function [ <internal:ddtrace> function dd_untrace ] { + Function [ <internal:ddtrace> function DDTrace\Testing\trigger_error ] { + + - Parameters [2] { + Parameter #0 [ <required> string $message ] + Parameter #1 [ <required> int $errorType ] + } + - Return [ void ] } - Function [ <internal:ddtrace> function dd_trace_compile_time_microseconds ] { + Function [ <internal:ddtrace> function DDTrace\Internal\add_span_flag ] { + + - Parameters [2] { + Parameter #0 [ <required> DDTrace\SpanData $span ] + Parameter #1 [ <required> int $flag ] + } + - Return [ void ] + } + Function [ <internal:ddtrace> function dd_trace_env_config ] { + + - Parameters [1] { + Parameter #0 [ <required> string $envName ] + } + - Return [ mixed ] + } + Function [ <internal:ddtrace> function dd_trace_disable_in_request ] { + + - Parameters [0] { + } + - Return [ bool ] + } + Function [ <internal:ddtrace> function dd_trace_reset ] { - Parameters [0] { } + - Return [ bool ] + } + Function [ <internal:ddtrace> function dd_trace_serialize_msgpack ] { + + - Parameters [1] { + Parameter #0 [ <required> array $traceArray ] + } + - Return [ string|bool ] + } + Function [ <internal:ddtrace> function dd_trace_noop ] { + + - Parameters [1] { + Parameter #0 [ <optional> mixed ...$args ] + } + - Return [ bool ] + } + Function [ <internal:ddtrace> function dd_trace_dd_get_memory_limit ] { + + - Parameters [0] { + } + - Return [ int ] + } + Function [ <internal:ddtrace> function dd_trace_check_memory_under_limit ] { + + - Parameters [0] { + } + - Return [ bool ] } Function [ <internal:ddtrace> function ddtrace_config_app_name ] { - Parameters [1] { - Parameter #0 [ <optional> $default_name ] + Parameter #0 [ <optional> ?string $fallbackName = null ] } + - Return [ ?string ] } Function [ <internal:ddtrace> function ddtrace_config_distributed_tracing_enabled ] { - Parameters [0] { } + - Return [ bool ] + } + Function [ <internal:ddtrace> function ddtrace_config_trace_enabled ] { + + - Parameters [0] { + } + - Return [ bool ] } Function [ <internal:ddtrace> function ddtrace_config_integration_enabled ] { - Parameters [1] { - Parameter #0 [ <required> $integration_name ] + Parameter #0 [ <required> string $integrationName ] } + - Return [ bool ] } - Function [ <internal:ddtrace> function ddtrace_config_trace_enabled ] { + Function [ <internal:ddtrace> function dd_trace_send_traces_via_thread ] { - - Parameters [0] { + - Parameters [3] { + Parameter #0 [ <required> int $numTraces ] + Parameter #1 [ <required> array $curlHeaders ] + Parameter #2 [ <required> string $payload ] } + - Return [ bool ] } - Function [ <internal:ddtrace> function ddtrace_init ] { + Function [ <internal:ddtrace> function dd_trace_buffer_span ] { - Parameters [1] { - Parameter #0 [ <required> $dir ] + Parameter #0 [ <required> array $traceArray ] } + - Return [ bool ] } - Function [ <internal:ddtrace> function DDTrace\trace_function ] { + Function [ <internal:ddtrace> function dd_trace_coms_trigger_writer_flush ] { + + - Parameters [0] { + } + - Return [ int ] + } + Function [ <internal:ddtrace> function dd_trace_internal_fn ] { - Parameters [2] { - Parameter #0 [ <required> $function_name ] - Parameter #1 [ <required> $tracing_closure ] + Parameter #0 [ <required> string $functionName ] + Parameter #1 [ <optional> mixed ...$args ] + } + } + Function [ <internal:ddtrace> function dd_trace_set_trace_id ] { + + - Parameters [1] { + Parameter #0 [ <optional> ?string $traceId = null ] + } + - Return [ bool ] + } + Function [ <internal:ddtrace> function dd_trace_closed_spans_count ] { + + - Parameters [0] { + } + - Return [ int ] + } + Function [ <internal:ddtrace> function dd_trace_tracer_is_limited ] { + + - Parameters [0] { + } + - Return [ bool ] + } + Function [ <internal:ddtrace> function dd_trace_compile_time_microseconds ] { + + - Parameters [0] { + } + - Return [ int ] + } + Function [ <internal:ddtrace> function dd_trace_serialize_closed_spans ] { + + - Parameters [0] { + } + - Return [ array ] + } + Function [ <internal:ddtrace> function dd_trace_peek_span_id ] { + + - Parameters [0] { + } + - Return [ string ] + } + Function [ <internal:ddtrace> function dd_trace_close_all_spans_and_flush ] { + + - Parameters [0] { } + - Return [ void ] } Function [ <internal:ddtrace> function dd_trace_function ] { - Parameters [2] { - Parameter #0 [ <required> $function_name ] - Parameter #1 [ <required> $tracing_closure ] + Parameter #0 [ <required> string $functionName ] + Parameter #1 [ <required> Closure|array|null $tracingClosureOrConfigArray ] } + - Return [ bool ] } - Function [ <internal:ddtrace> function DDTrace\trace_method ] { + Function [ <internal:ddtrace> function dd_trace_method ] { - Parameters [3] { - Parameter #0 [ <required> $class_name ] - Parameter #1 [ <required> $method_name ] - Parameter #2 [ <required> $tracing_closure ] + Parameter #0 [ <required> string $className ] + Parameter #1 [ <required> string $methodName ] + Parameter #2 [ <required> Closure|array|null $tracingClosureOrConfigArray ] } + - Return [ bool ] } - Function [ <internal:ddtrace> function dd_trace_method ] { + Function [ <internal:ddtrace> function dd_untrace ] { - - Parameters [3] { - Parameter #0 [ <required> $class_name ] - Parameter #1 [ <required> $method_name ] - Parameter #2 [ <required> $tracing_closure ] + - Parameters [2] { + Parameter #0 [ <required> string $functionName ] + Parameter #1 [ <optional> string $className = null ] } + - Return [ bool ] } - Function [ <internal:ddtrace> function DDTrace\startup_logs ] { + Function [ <internal:ddtrace> function dd_trace_synchronous_flush ] { - - Parameters [0] { + - Parameters [1] { + Parameter #0 [ <required> int $timeout ] + } + - Return [ void ] + } + Function [ <internal:ddtrace> function DDTrace\install_hook ] { + + - Parameters [4] { + Parameter #0 [ <required> Closure|Generator|callable|string $target ] + Parameter #1 [ <optional> ?Closure $begin = null ] + Parameter #2 [ <optional> ?Closure $end = null ] + Parameter #3 [ <optional> int $flags = 0 ] + } + - Return [ int ] + } + Function [ <internal:ddtrace> function DDTrace\remove_hook ] { + + - Parameters [2] { + Parameter #0 [ <required> int $id ] + Parameter #1 [ <optional> string $location = "" ] } } } - - Classes [1] { + - Classes [8] { + Class [ <internal:ddtrace> class DDTrace\HookData ] { + + - Constants [0] { + } + + - Static properties [0] { + } + + - Static methods [0] { + } + + - Properties [5] { + Property [ public mixed $data ] + Property [ public int $id ] + Property [ public array $args ] + Property [ public mixed $returned ] + Property [ public ?Throwable $exception ] + } + + - Methods [9] { + Method [ <internal:ddtrace> public method span ] { + + - Parameters [1] { + Parameter #0 [ <optional> DDTrace\SpanStack|DDTrace\SpanData|null $parent = null ] + } + - Return [ DDTrace\SpanData ] + } + + Method [ <internal:ddtrace> public method unlimitedSpan ] { + + - Parameters [1] { + Parameter #0 [ <optional> DDTrace\SpanStack|DDTrace\SpanData|null $parent = null ] + } + - Return [ DDTrace\SpanData ] + } + + Method [ <internal:ddtrace> public method overrideArguments ] { + + - Parameters [1] { + Parameter #0 [ <required> array $arguments ] + } + - Return [ bool ] + } + + Method [ <internal:ddtrace> public method overrideReturnValue ] { + + - Parameters [1] { + Parameter #0 [ <required> mixed &$value ] + } + - Return [ bool ] + } + + Method [ <internal:ddtrace> public method overrideException ] { + + - Parameters [1] { + Parameter #0 [ <required> ?Throwable $exception ] + } + - Return [ bool ] + } + + Method [ <internal:ddtrace> public method disableJitInlining ] { + + - Parameters [0] { + } + - Return [ bool ] + } + + Method [ <internal:ddtrace> public method suppressCall ] { + + - Parameters [0] { + } + - Return [ bool ] + } + + Method [ <internal:ddtrace> public method allowNestedHook ] { + + - Parameters [0] { + } + - Return [ bool ] + } + + Method [ <internal:ddtrace> public method getSourceFile ] { + + - Parameters [0] { + } + - Return [ string ] + } + } + } + + Class [ <internal:ddtrace> final class DDTrace\Trace ] { + + - Constants [0] { + } + + - Static properties [0] { + } + + - Static methods [0] { + } + + - Properties [0] { + } + + - Methods [1] { + Method [ <internal:ddtrace, ctor> public method __construct ] { + + - Parameters [7] { + Parameter #0 [ <optional> string $name = "" ] + Parameter #1 [ <optional> string $resource = "" ] + Parameter #2 [ <optional> string $type = "" ] + Parameter #3 [ <optional> string $service = "" ] + Parameter #4 [ <optional> array $tags = [] ] + Parameter #5 [ <optional> bool $recurse = true ] + Parameter #6 [ <optional> bool $run_if_limited = false ] + } + } + } + } + Class [ <internal:ddtrace> class DDTrace\SpanData ] { - Constants [0] { @@ -180,18 +1487,291 @@ Extension [ <persistent> extension #116 ddtrace version 0.47.0 ] { - Static methods [0] { } - - Properties [6] { - Property [ <default> public $name ] - Property [ <default> public $resource ] - Property [ <default> public $service ] - Property [ <default> public $type ] - Property [ <default> public $meta ] - Property [ <default> public $metrics ] + - Properties [12] { + Property [ public ?string $name = '' ] + Property [ public ?string $resource = '' ] + Property [ public ?string $service = '' ] + Property [ public ?string $type = '' ] + Property [ public array $meta = [] ] + Property [ public array $metrics = [] ] + Property [ public ?Throwable $exception = NULL ] + Property [ public readonly string $id ] + Property [ public array $links = [] ] + Property [ public array $peerServiceSources = [] ] + Property [ public readonly ?DDTrace\SpanData $parent ] + Property [ public readonly DDTrace\SpanStack $stack ] + } + + - Methods [4] { + Method [ <internal:ddtrace> public method getDuration ] { + + - Parameters [0] { + } + - Return [ int ] + } + + Method [ <internal:ddtrace> public method getStartTime ] { + + - Parameters [0] { + } + - Return [ int ] + } + + Method [ <internal:ddtrace> public method getLink ] { + + - Parameters [0] { + } + - Return [ DDTrace\SpanLink ] + } + + Method [ <internal:ddtrace> public method hexId ] { + + - Parameters [0] { + } + - Return [ string ] + } + } + } + + Class [ <internal:ddtrace> class DDTrace\RootSpanData extends DDTrace\SpanData ] { + + - Constants [0] { + } + + - Static properties [0] { + } + + - Static methods [0] { + } + + - Properties [20] { + Property [ public ?string $name = '' ] + Property [ public ?string $resource = '' ] + Property [ public ?string $service = '' ] + Property [ public ?string $type = '' ] + Property [ public array $meta = [] ] + Property [ public array $metrics = [] ] + Property [ public ?Throwable $exception = NULL ] + Property [ public readonly string $id ] + Property [ public array $links = [] ] + Property [ public array $peerServiceSources = [] ] + Property [ public readonly ?DDTrace\SpanData $parent ] + Property [ public readonly DDTrace\SpanStack $stack ] + Property [ public string $origin ] + Property [ public array $propagatedTags = [] ] + Property [ public int $samplingPriority = 1073741824 ] + Property [ public int $propagatedSamplingPriority ] + Property [ public string $tracestate ] + Property [ public array $tracestateTags = [] ] + Property [ public string $parentId ] + Property [ public string $traceId = '' ] + } + + - Methods [4] { + Method [ <internal:ddtrace, inherits DDTrace\SpanData> public method getDuration ] { + + - Parameters [0] { + } + - Return [ int ] + } + + Method [ <internal:ddtrace, inherits DDTrace\SpanData> public method getStartTime ] { + + - Parameters [0] { + } + - Return [ int ] + } + + Method [ <internal:ddtrace, inherits DDTrace\SpanData> public method getLink ] { + + - Parameters [0] { + } + - Return [ DDTrace\SpanLink ] + } + + Method [ <internal:ddtrace, inherits DDTrace\SpanData> public method hexId ] { + + - Parameters [0] { + } + - Return [ string ] + } + } + } + + Class [ <internal:ddtrace> class DDTrace\SpanStack ] { + + - Constants [0] { + } + + - Static properties [0] { + } + + - Static methods [0] { + } + + - Properties [2] { + Property [ public readonly ?DDTrace\SpanStack $parent ] + Property [ public ?DDTrace\SpanData $active = NULL ] } - Methods [0] { } } + + Class [ <internal:ddtrace> class DDTrace\FatalError extends Exception implements Throwable, Stringable ] { + + - Constants [0] { + } + + - Static properties [0] { + } + + - Static methods [0] { + } + + - Properties [4] { + Property [ protected $message = '' ] + Property [ protected $code = 0 ] + Property [ protected string $file = '' ] + Property [ protected int $line = 0 ] + } + + - Methods [10] { + Method [ <internal:Core, inherits Exception, ctor> public method __construct ] { + + - Parameters [3] { + Parameter #0 [ <optional> string $message = "" ] + Parameter #1 [ <optional> int $code = 0 ] + Parameter #2 [ <optional> ?Throwable $previous = null ] + } + } + + Method [ <internal:Core, inherits Exception> public method __wakeup ] { + + - Parameters [0] { + } + - Tentative return [ void ] + } + + Method [ <internal:Core, inherits Exception, prototype Throwable> final public method getMessage ] { + + - Parameters [0] { + } + - Return [ string ] + } + + Method [ <internal:Core, inherits Exception, prototype Throwable> final public method getCode ] { + + - Parameters [0] { + } + } + + Method [ <internal:Core, inherits Exception, prototype Throwable> final public method getFile ] { + + - Parameters [0] { + } + - Return [ string ] + } + + Method [ <internal:Core, inherits Exception, prototype Throwable> final public method getLine ] { + + - Parameters [0] { + } + - Return [ int ] + } + + Method [ <internal:Core, inherits Exception, prototype Throwable> final public method getTrace ] { + + - Parameters [0] { + } + - Return [ array ] + } + + Method [ <internal:Core, inherits Exception, prototype Throwable> final public method getPrevious ] { + + - Parameters [0] { + } + - Return [ ?Throwable ] + } + + Method [ <internal:Core, inherits Exception, prototype Throwable> final public method getTraceAsString ] { + + - Parameters [0] { + } + - Return [ string ] + } + + Method [ <internal:Core, inherits Exception, prototype Stringable> public method __toString ] { + + - Parameters [0] { + } + - Return [ string ] + } + } + } + + Interface [ <internal:ddtrace> interface DDTrace\Integration ] { + + - Constants [3] { + Constant [ public int NOT_LOADED ] { 0 } + Constant [ public int LOADED ] { 1 } + Constant [ public int NOT_AVAILABLE ] { 2 } + } + + - Static properties [0] { + } + + - Static methods [0] { + } + + - Properties [0] { + } + + - Methods [1] { + Method [ <internal:ddtrace> abstract public method init ] { + + - Parameters [0] { + } + - Return [ int ] + } + } + } + + Class [ <internal:ddtrace> class DDTrace\SpanLink implements JsonSerializable ] { + + - Constants [0] { + } + + - Static properties [0] { + } + + - Static methods [1] { + Method [ <internal:ddtrace> static public method fromHeaders ] { + + - Parameters [1] { + Parameter #0 [ <required> callable|array $headersOrCallback ] + } + - Return [ DDTrace\SpanLink ] + } + } + + - Properties [5] { + Property [ public string $traceId ] + Property [ public string $spanId ] + Property [ public string $traceState ] + Property [ public array $attributes ] + Property [ public int $droppedAttributesCount ] + } + + - Methods [1] { + Method [ <internal:ddtrace, prototype JsonSerializable> public method jsonSerialize ] { + + - Parameters [0] { + } + - Return [ mixed ] + } + } + } } } diff --git a/engine_api.c b/engine_api.c deleted file mode 100644 index 05cfe15..0000000 --- a/engine_api.c +++ /dev/null @@ -1,39 +0,0 @@ -#include "engine_api.h" - -#include "engine_hooks.h" // for ddtrace_backup_error_handling - -int ddtrace_call_sandboxed_function(const char *name, size_t name_len, zval **retval, int argc, - zval **argv[] TSRMLS_DC) { - zval *fname; - MAKE_STD_ZVAL(fname); - ZVAL_STRINGL(fname, name, name_len, 1); - zend_fcall_info fci; - zend_fcall_info_cache fcc; - - // Play it safe if an exception has not been handled yet - if (EG(exception)) { - return FAILURE; - } - - ddtrace_error_handling eh; - ddtrace_backup_error_handling(&eh, EH_SUPPRESS TSRMLS_CC); - - int result = zend_fcall_info_init(fname, IS_CALLABLE_CHECK_SILENT, &fci, &fcc, NULL, NULL TSRMLS_CC); - if (result == SUCCESS) { - fci.retval_ptr_ptr = retval; - fci.params = argv; - fci.no_separation = 0; // allow for by-ref args - fci.param_count = argc; - result = zend_call_function(&fci, &fcc TSRMLS_CC); - } - - ddtrace_restore_error_handling(&eh TSRMLS_CC); - - if (EG(exception)) { - zend_clear_exception(TSRMLS_C); - } - - zval_dtor(fname); - efree(fname); - return result; -} diff --git a/engine_api.h b/engine_api.h deleted file mode 100644 index e0948ac..0000000 --- a/engine_api.h +++ /dev/null @@ -1,17 +0,0 @@ -#ifndef DDTRACE_PHP_5_ENGINE_API_H -#define DDTRACE_PHP_5_ENGINE_API_H - -/* This file is for things that make working with the engine easier. Good - * candidates include: - * - Wrappers for functions which change signature/semantics over time. - * - Wrappers that reduce verbosity when working with zend_* functions. - * - Functions that perform high-level language tasks, such as reading and - * writing object properties, calling functions, calling methods, etc. - */ - -#include <php.h> - -int ddtrace_call_sandboxed_function(const char *name, size_t name_len, zval **retval, int argc, - zval **argv[] TSRMLS_DC); - -#endif // DDTRACE_PHP_5_ENGINE_API_H diff --git a/handlers_curl.c b/handlers_curl.c deleted file mode 100644 index 54a4ea1..0000000 --- a/handlers_curl.c +++ /dev/null @@ -1,269 +0,0 @@ -#include <inttypes.h> -#include <php.h> -#include <stdbool.h> - -#include <ext/standard/php_array.h> - -#include "configuration.h" -#include "ddtrace.h" -#include "distributed_tracing.h" -#include "engine_api.h" -#include "handlers_internal.h" -#include "random.h" - -// True global - only modify during MINIT/MSHUTDOWN -long _dd_const_curlopt_httpheader = 0; - -static void (*_dd_curl_close_handler)(INTERNAL_FUNCTION_PARAMETERS) = NULL; -static void (*_dd_curl_copy_handle_handler)(INTERNAL_FUNCTION_PARAMETERS) = NULL; -static void (*_dd_curl_exec_handler)(INTERNAL_FUNCTION_PARAMETERS) = NULL; -static void (*_dd_curl_init_handler)(INTERNAL_FUNCTION_PARAMETERS) = NULL; -static void (*_dd_curl_setopt_array_handler)(INTERNAL_FUNCTION_PARAMETERS) = NULL; -static void (*_dd_curl_setopt_handler)(INTERNAL_FUNCTION_PARAMETERS) = NULL; - -ZEND_EXTERN_MODULE_GLOBALS(ddtrace); - -static bool _dd_load_curl_integration(TSRMLS_D) { - if (!get_dd_trace_sandbox_enabled() || DDTRACE_G(disable_in_current_request)) { - return false; - } - return ddtrace_config_distributed_tracing_enabled(TSRMLS_C) && DDTRACE_G(le_curl); -} - -static void _dd_saved_headers_dtor(void *headers) { - HashTable *ht = *((HashTable **)headers); - zend_hash_destroy(ht); - FREE_HASHTABLE(ht); -} - -static void _dd_store_resource_header_cache(zval *resource, HashTable *headers TSRMLS_DC) { - if (!DDTRACE_G(dt_http_saved_curl_headers)) { - ALLOC_HASHTABLE(DDTRACE_G(dt_http_saved_curl_headers)); - zend_hash_init(DDTRACE_G(dt_http_saved_curl_headers), 8, NULL, (dtor_func_t)_dd_saved_headers_dtor, 0); - } - - HashTable *new_headers; - ALLOC_HASHTABLE(new_headers); - zend_hash_init(new_headers, zend_hash_num_elements(headers), NULL, ZVAL_PTR_DTOR, 0); - zend_hash_copy(new_headers, headers, (copy_ctor_func_t)zval_add_ref, NULL, sizeof(zval *)); - - zend_hash_index_update(DDTRACE_G(dt_http_saved_curl_headers), Z_RESVAL_P(resource), &new_headers, - sizeof(HashTable *), NULL); -} - -static void _dd_delete_resource_header_cache(zval *resource TSRMLS_DC) { - if (DDTRACE_G(dt_http_saved_curl_headers)) { - zend_hash_index_del(DDTRACE_G(dt_http_saved_curl_headers), Z_RESVAL_P(resource)); - } -} - -static bool _dd_is_valid_curl_resource(zval *ch TSRMLS_DC) { - void *resource = zend_fetch_resource(&ch TSRMLS_CC, -1, "cURL handle", NULL, 1, DDTRACE_G(le_curl)); - return resource != NULL; -} - -ZEND_FUNCTION(ddtrace_curl_close) { - zval *ch; - - if (_dd_load_curl_integration(TSRMLS_C) && - zend_parse_parameters_ex(ZEND_PARSE_PARAMS_QUIET, ZEND_NUM_ARGS() TSRMLS_CC, "r", &ch) == SUCCESS) { - if (_dd_is_valid_curl_resource(ch TSRMLS_CC)) { - _dd_delete_resource_header_cache(ch TSRMLS_CC); - } - } - - _dd_curl_close_handler(INTERNAL_FUNCTION_PARAM_PASSTHRU); -} - -static void _dd_copy_dt_http_headers(zval *ch_orig, zval *ch_new TSRMLS_DC) { - HashTable *headers_store = DDTRACE_G(dt_http_saved_curl_headers); - HashTable **users_headers = NULL; - if (headers_store && zend_hash_index_find(headers_store, Z_RESVAL_P(ch_orig), (void **)&users_headers) == SUCCESS) { - _dd_store_resource_header_cache(ch_new, *users_headers TSRMLS_CC); - } -} - -ZEND_FUNCTION(ddtrace_curl_copy_handle) { - zval *ch1; - - if (!_dd_load_curl_integration(TSRMLS_C) || - zend_parse_parameters_ex(ZEND_PARSE_PARAMS_QUIET, ZEND_NUM_ARGS() TSRMLS_CC, "r", &ch1) == FAILURE) { - _dd_curl_copy_handle_handler(INTERNAL_FUNCTION_PARAM_PASSTHRU); - return; - } - - _dd_curl_copy_handle_handler(INTERNAL_FUNCTION_PARAM_PASSTHRU); - - if (Z_TYPE_P(return_value) == IS_RESOURCE) { - _dd_copy_dt_http_headers(ch1, return_value TSRMLS_CC); - } -} - -// Returns the user's headers for this resource -// Caller must free the HashTable -static HashTable *_dd_get_existing_headers(zval *resource TSRMLS_DC) { - HashTable *retval; - ALLOC_HASHTABLE(retval); - - HashTable *headers_store = DDTRACE_G(dt_http_saved_curl_headers); - HashTable **users_headers = NULL; - if (headers_store && - zend_hash_index_find(headers_store, Z_RESVAL_P(resource), (void **)&users_headers) == SUCCESS) { - size_t headers_count = zend_hash_num_elements(*users_headers); - zend_hash_init(retval, headers_count, NULL, ZVAL_PTR_DTOR, 0); - zend_hash_copy(retval, *users_headers, (copy_ctor_func_t)zval_add_ref, NULL, sizeof(zval *)); - } else { - zend_hash_init(retval, 0, NULL, ZVAL_PTR_DTOR, 0); - } - return retval; -} - -ZEND_FUNCTION(ddtrace_curl_exec) { - zval *ch; - - if (_dd_load_curl_integration(TSRMLS_C) && ddtrace_peek_span_id(TSRMLS_C) != 0 && - zend_parse_parameters_ex(ZEND_PARSE_PARAMS_QUIET, ZEND_NUM_ARGS() TSRMLS_CC, "r", &ch) == SUCCESS) { - if (_dd_is_valid_curl_resource(ch TSRMLS_CC) && - zend_hash_exists(EG(function_table), "ddtrace\\bridge\\curl_inject_distributed_headers", - sizeof("ddtrace\\bridge\\curl_inject_distributed_headers") /* no - 1 */)) { - // Inject distributed tracing headers before the curl_exec() call - zval **setopt_args[2]; - - // Arg 0: resource $ch - setopt_args[0] = &ch; - - // Arg 1: mixed $value (array of headers) - HashTable *headers = _dd_get_existing_headers(ch TSRMLS_CC); - zval *headers_zv; - MAKE_STD_ZVAL(headers_zv); - headers_zv->type = IS_ARRAY; - headers_zv->value.ht = headers; - zval_copy_ctor(headers_zv); - setopt_args[1] = &headers_zv; - - zval *retval = NULL; - DDTRACE_G(back_up_http_headers) = 0; // Don't save our own HTTP headers - if (ddtrace_call_sandboxed_function(ZEND_STRL("ddtrace\\bridge\\curl_inject_distributed_headers"), &retval, - 2, setopt_args TSRMLS_CC) == SUCCESS && - retval) { - zval_ptr_dtor(&retval); - } - DDTRACE_G(back_up_http_headers) = 1; - - zval_ptr_dtor(&headers_zv); - zend_hash_destroy(headers); - FREE_HASHTABLE(headers); - } - } - - _dd_curl_exec_handler(INTERNAL_FUNCTION_PARAM_PASSTHRU); -} - -ZEND_FUNCTION(ddtrace_curl_init) { - _dd_curl_init_handler(INTERNAL_FUNCTION_PARAM_PASSTHRU); - - if (Z_TYPE_P(return_value) == IS_RESOURCE) { - if (!DDTRACE_G(le_curl)) { - zend_list_find(Z_LVAL_P(return_value), &DDTRACE_G(le_curl)); - DDTRACE_G(back_up_http_headers) = 1; - } - if (_dd_load_curl_integration(TSRMLS_C)) { - _dd_delete_resource_header_cache(return_value TSRMLS_CC); - } - } -} - -ZEND_FUNCTION(ddtrace_curl_setopt) { - zval *zid, **zvalue; - long option; - - if (!_dd_load_curl_integration(TSRMLS_C) || - zend_parse_parameters_ex(ZEND_PARSE_PARAMS_QUIET, ZEND_NUM_ARGS() TSRMLS_CC, "rlZ", &zid, &option, &zvalue) == - FAILURE) { - _dd_curl_setopt_handler(INTERNAL_FUNCTION_PARAM_PASSTHRU); - return; - } - - _dd_curl_setopt_handler(INTERNAL_FUNCTION_PARAM_PASSTHRU); - - if (DDTRACE_G(back_up_http_headers) && Z_BVAL_P(return_value) && _dd_const_curlopt_httpheader == option) { - _dd_store_resource_header_cache(zid, Z_ARRVAL_PP(zvalue) TSRMLS_CC); - } -} - -ZEND_FUNCTION(ddtrace_curl_setopt_array) { - zval *zid, *arr; - - if (!_dd_load_curl_integration(TSRMLS_C) || - zend_parse_parameters_ex(ZEND_PARSE_PARAMS_QUIET, ZEND_NUM_ARGS() TSRMLS_CC, "ra", &zid, &arr) == FAILURE) { - _dd_curl_setopt_array_handler(INTERNAL_FUNCTION_PARAM_PASSTHRU); - return; - } - - _dd_curl_setopt_array_handler(INTERNAL_FUNCTION_PARAM_PASSTHRU); - - if (Z_BVAL_P(return_value)) { - zval **value; - if (zend_hash_index_find(Z_ARRVAL_P(arr), _dd_const_curlopt_httpheader, (void **)&value) == SUCCESS) { - _dd_store_resource_header_cache(zid, Z_ARRVAL_PP(value) TSRMLS_CC); - } - } -} - -struct _dd_curl_handler { - const char *name; - size_t name_len; - void (**old_handler)(INTERNAL_FUNCTION_PARAMETERS); - void (*new_handler)(INTERNAL_FUNCTION_PARAMETERS); -}; -typedef struct _dd_curl_handler _dd_curl_handler; - -static void _dd_install_handler(_dd_curl_handler handler TSRMLS_DC) { - zend_function *old_handler; - if (zend_hash_find(CG(function_table), handler.name, handler.name_len, (void **)&old_handler) == SUCCESS && - old_handler != NULL) { - *handler.old_handler = old_handler->internal_function.handler; - old_handler->internal_function.handler = handler.new_handler; - } -} - -void ddtrace_curl_handlers_startup(void) { - TSRMLS_FETCH(); - // If we cannot find ext/curl then do not hook the functions - if (!zend_hash_exists(&module_registry, "curl", sizeof("curl") /* no - 1 */)) { - return; - } - - zval *tmp; - MAKE_STD_ZVAL(tmp); - int res = zend_get_constant_ex(ZEND_STRL("CURLOPT_HTTPHEADER"), tmp, NULL, ZEND_FETCH_CLASS_SILENT TSRMLS_CC); - if (res) { - _dd_const_curlopt_httpheader = Z_LVAL_P(tmp); - } - zval_dtor(tmp); - efree(tmp); - if (!res) { - return; - } - - // These are not 'sizeof() - 1' on PHP 5 - _dd_curl_handler handlers[] = { - {"curl_close", sizeof("curl_close"), &_dd_curl_close_handler, ZEND_FN(ddtrace_curl_close)}, - {"curl_copy_handle", sizeof("curl_copy_handle"), &_dd_curl_copy_handle_handler, - ZEND_FN(ddtrace_curl_copy_handle)}, - {"curl_exec", sizeof("curl_exec"), &_dd_curl_exec_handler, ZEND_FN(ddtrace_curl_exec)}, - {"curl_init", sizeof("curl_init"), &_dd_curl_init_handler, ZEND_FN(ddtrace_curl_init)}, - {"curl_setopt", sizeof("curl_setopt"), &_dd_curl_setopt_handler, ZEND_FN(ddtrace_curl_setopt)}, - {"curl_setopt_array", sizeof("curl_setopt_array"), &_dd_curl_setopt_array_handler, - ZEND_FN(ddtrace_curl_setopt_array)}, - }; - size_t handlers_len = sizeof handlers / sizeof handlers[0]; - for (size_t i = 0; i < handlers_len; ++i) { - _dd_install_handler(handlers[i] TSRMLS_CC); - } -} - -void ddtrace_curl_handlers_rshutdown(void) { - TSRMLS_FETCH(); - DDTRACE_G(le_curl) = 0; -} diff --git a/makedeps.sh b/makedeps.sh new file mode 100755 index 0000000..a11cb39 --- /dev/null +++ b/makedeps.sh @@ -0,0 +1,21 @@ +#!/bin/sh +EXT=datadog_trace + +if [ $# -lt 1 ]; then + echo usage $0 version + exit 0 +fi +if [ -f $EXT-$1.tgz ]; then + echo "+ Unpack" + tar xf $EXT-$1.tgz $EXT-$1 + + pushd $EXT-$1 + echo "+ Fetch" + cargo vendor mycargo + + echo "+ Pack" + tar czf ../$EXT-deps-$1.tgz mycargo + popd +else + echo $EXT-$version.tgz missing +fi diff --git a/php-pecl-datadog-trace.spec b/php-pecl-datadog-trace.spec index 2554b3e..5edaae2 100644 --- a/php-pecl-datadog-trace.spec +++ b/php-pecl-datadog-trace.spec @@ -1,67 +1,73 @@ # remirepo spec file for php-pecl-datadog-trace # -# Copyright (c) 2019-2020 Remi Collet -# License: CC-BY-SA +# Copyright (c) 2019-2024 Remi Collet +# License: CC-BY-SA-4.0 # http://creativecommons.org/licenses/by-sa/4.0/ # # Please, preserve the changelog entries # %if 0%{?scl:1} -%global sub_prefix %{scl_prefix} %scl_package php-pecl-datadog-trace %else %global _root_libdir %{_libdir} +%global _root_bindir %{_bindir} %endif +# to much issues with test suite and parallel builds +%bcond_with tests + +# TODO: build for EL-8 and EL-9 +# see https://rpms.remirepo.net/rpmphp/zoom.php?rpm=rust +# if needed, build using --enablerepo=stream +# and delete root_cache after the build + # pecl name -%global proj_name datadog_trace +%global proj_name datadog_trace # no underscore for package name -%global safe_name datadog-trace +%global safe_name datadog-trace # extension name -%global pecl_name ddtrace +%global pecl_name ddtrace -%if "%{php_version}" > "5.6" -%global with_zts 0%{!?_without_zts:%{?__ztsphp:1}} -%else -%global with_zts 0 -%endif -%global with_tests 0%{!?_without_tests:1} -%if "%{php_version}" < "5.6" -%global ini_name %{pecl_name}.ini -%else -%global ini_name 40-%{pecl_name}.ini -%endif +%global upstream_version 1.0.0 +%global upstream_prever beta1 +%global with_zts 0%{!?_without_zts:%{?__ztsphp:1}} +%global ini_name 40-%{pecl_name}.ini +%global sources %{proj_name}-%{upstream_version}%{?upstream_prever} +%global _configure ../%{sources}/configure Summary: APM and distributed tracing for PHP -Name: %{?sub_prefix}php-pecl-datadog-trace -Version: 0.47.0 +Name: %{?scl_prefix}php-pecl-datadog-trace +Version: %{upstream_version}%{?upstream_prever:~%{upstream_prever}} Release: 1%{?dist}%{!?scl:%{!?nophptag:%(%{__php} -r 'echo ".".PHP_MAJOR_VERSION.".".PHP_MINOR_VERSION;')}} # extension is dual-licensed under Apache 2.0 or BSD3. -# mpack is MIT -License: (ASL 2.0 or BSD) and MIT +# bundled rust ext are MIT AND Apache-2.0 +License: (Apache-2.0 OR BSD-3-Clause) AND MIT AND Apache-2.0 URL: https://pecl.php.net/package/%{proj_name} -Source0: https://pecl.php.net/get/%{proj_name}-%{version}.tgz - -Source1: https://raw.githubusercontent.com/DataDog/dd-trace-php/0.47.0/src/ext/php5/engine_api.c -Source2: https://raw.githubusercontent.com/DataDog/dd-trace-php/0.47.0/src/ext/php5/engine_api.h -Source3: https://raw.githubusercontent.com/DataDog/dd-trace-php/0.47.0/src/ext/php5/handlers_curl.c - -Patch0: https://patch-diff.githubusercontent.com/raw/DataDog/dd-trace-php/pull/952.patch +Source0: https://pecl.php.net/get/%{sources}.tgz +# awfull hack, use a bundled rust registry +Source1: makedeps.sh +Source2: %{proj_name}-deps-%{upstream_version}%{?upstream_prever}.tgz # ddtrace only supports 64-bit platforms ExcludeArch: %{ix86} %{arm} -%if 0%{?rhel} == 6 +%if 0%{?rhel} == 7 && 0%{?dtsversion} == 0 BuildRequires: devtoolset-6-toolchain -%else -BuildRequires: %{?dtsprefix}gcc +%global dtsversion 6 +%global dtsenable source /opt/rh/devtoolset-6/enable +%global dtsprefix devtoolset-6- %endif -BuildRequires: %{?scl_prefix}php-devel +BuildRequires: make +BuildRequires: cargo >= 1.70 +BuildRequires: rust >= 1.70 +BuildRequires: %{?dtsprefix}gcc +BuildRequires: %{?scl_prefix}php-devel >= 7.0 +BuildRequires: %{?scl_prefix}php-devel < 8.4 BuildRequires: %{?scl_prefix}php-pear BuildRequires: curl-devel -# For tests -BuildRequires: %{?scl_prefix}php-curl BuildRequires: %{?scl_prefix}php-json +BuildRequires: %{?scl_prefix}php-curl +# For tests BuildRequires: %{?scl_prefix}php-posix #BuildRequires: gdb #BuildRequires: %%{?scl_prefix}php-debuginfo @@ -69,70 +75,76 @@ BuildRequires: %{?scl_prefix}php-posix Requires: %{?scl_prefix}php(zend-abi) = %{php_zend_api} Requires: %{?scl_prefix}php(api) = %{php_core_api} -%{?_sclreq:Requires: %{?scl_prefix}runtime%{?_sclreq}%{?_isa}} +Requires: %{?scl_prefix}php-json%{?_isa} +%if "%{php_version}" > "8.0" +Requires: %{?scl_prefix}php-curl%{?_isa} +%endif Provides: %{?scl_prefix}php-%{pecl_name} = %{version} Provides: %{?scl_prefix}php-%{pecl_name}%{?_isa} = %{version} Provides: %{?scl_prefix}php-pecl(%{proj_name}) = %{version} Provides: %{?scl_prefix}php-pecl(%{proj_name})%{?_isa} = %{version} -%if "%{?scl_prefix}" != "%{?sub_prefix}" -Provides: %{?scl_prefix}php-pecl-%{safe_name} = %{version}-%{release} -Provides: %{?scl_prefix}php-pecl-%{safe_name}%{?_isa} = %{version}-%{release} -%endif - -%if "%{?vendor}" == "Remi Collet" && 0%{!?scl:1} && 0%{?rhel} -# Other third party repo stuff -%if "%{php_version}" > "7.2" -Obsoletes: php72u-pecl-%{safe_name} <= %{version} -Obsoletes: php72w-pecl-%{safe_name} <= %{version} -%endif -%if "%{php_version}" > "7.3" -Obsoletes: php73-pecl-%{safe_name} <= %{version} -Obsoletes: php73w-pecl-%{safe_name} <= %{version} -%endif -%if "%{php_version}" > "7.4" -Obsoletes: php74-pecl-%{safe_name} <= %{version} -Obsoletes: php74w-pecl-%{safe_name} <= %{version} -%endif -%endif - -%if 0%{?fedora} < 20 && 0%{?rhel} < 7 -# Filter shared private -%{?filter_provides_in: %filter_provides_in %{_libdir}/.*\.so$} -%{?filter_setup} -%endif %description The Datadog PHP Tracer brings APM and distributed tracing to PHP. +Documentation: https://docs.datadoghq.com/tracing/languages/php/ + Package built for PHP %(%{__php} -r 'echo PHP_MAJOR_VERSION.".".PHP_MINOR_VERSION;')%{?scl: as Software Collection (%{scl} by %{?scl_vendor}%{!?scl_vendor:rh})}. %prep -%setup -q -c -mv %{proj_name}-%{version} NTS +%setup -q -c -a2 # Don't install tests sed -e 's/role="test"/role="src"/' \ %{?_licensedir:-e '/LICENSE/s/role="doc"/role="src"/' } \ -i package.xml -cd NTS -%patch0 -p1 -cp %{SOURCE1} %{SOURCE2} %{SOURCE3} src/ext/php5/ -cp src/ext/mpack/LICENSE LICENSE.mpack +cd %{sources} +: PEAR installer stuff +sed -e 's:@php_dir@:%{pear_phpdir}:' \ + -e 's:_BUILD_FROM_PECL_:1:' \ + -i ext/ddtrace.c \ + ext/configuration.h + : Sanity check, really often broken -extver=$(sed -n '/#define PHP_DDTRACE_VERSION /{s/.* "//;s/".*$//;p}' src/ext/version.h) -if test "x${extver}" != "x%{version}"; then - : Error: Upstream extension version is ${extver}, expecting %{version}. +extver=$(cat VERSION) +if test "x${extver}" != "x%{upstream_version}%{?upstream_prever}"; then + : Error: Upstream extension version is ${extver}, expecting %{upstream_version}%{?upstream_prever}. exit 1 fi cd .. +: Create cargo configuration to use vendor directory +mkdir .cargo +cat << EOF | tee .cargo/config.toml +[build] +jobs = %(echo %{?_smp_mflags} | sed 's/\-j//') +rustc = "%{_root_bindir}/rustc" + +[env] +CFLAGS = "%{build_cflags}" +CXXFLAGS = "%{build_cxxflags}" +LDFLAGS = "%{build_ldflags}" + +[term] +verbose = true + +[source.crates-io] +replace-with = "vendored-sources" + +[source.vendored-sources] +directory = "$PWD/mycargo" +EOF + +: Required rust version +grep -h rust-version mycargo/*/Cargo.toml | sort -u | tail -n 8 + +mkdir NTS %if %{with_zts} -# Duplicate source tree for NTS / ZTS build -cp -pr NTS ZTS +mkdir ZTS %endif # Create configuration file @@ -142,38 +154,35 @@ extension=%{pecl_name}.so ; Configuration ;ddtrace.disable = Off -;ddtrace.request_init_hook = '' -;ddtrace.strict_mode = Off +;ddtrace.cgroup_file = '/proc/self/cgroup' EOF %build -%if 0%{?rhel} == 6 -source /opt/rh/devtoolset-6/enable -%endif %{?dtsenable} +%if 0%{?scl:1} +source /opt/%{scl_vendor}/%{scl}/enable +%endif -cd NTS -%{_bindir}/phpize +cd %{sources} +%{__phpize} + +cd ../NTS %configure \ --enable-ddtrace \ - --with-php-config=%{_bindir}/php-config + --with-php-config=%{__phpconfig} make %{?_smp_mflags} %if %{with_zts} cd ../ZTS -%{_bindir}/zts-phpize %configure \ --enable-ddtrace \ - --with-php-config=%{_bindir}/zts-php-config + --with-php-config=%{__ztsphpconfig} make %{?_smp_mflags} %endif %install -%if 0%{?rhel} == 6 -source /opt/rh/devtoolset-6/enable -%endif %{?dtsenable} make -C NTS install INSTALL_ROOT=%{buildroot} @@ -190,46 +199,66 @@ make -C ZTS install INSTALL_ROOT=%{buildroot} install -D -m 644 %{ini_name} %{buildroot}%{php_ztsinidir}/%{ini_name} %endif +# PEAR stuff +mkdir -p %{buildroot}%{pear_phpdir}/datadog_trace/ +cp -pr %{sources}/src %{buildroot}%{pear_phpdir}/datadog_trace/src + # Documentation for i in $(grep 'role="doc"' package.xml | sed -e 's/^.*name="//;s/".*$//') -do install -Dpm 644 NTS/$i %{buildroot}%{pecl_docdir}/%{pecl_name}/$i +do install -Dpm 644 %{sources}/$i %{buildroot}%{pecl_docdir}/%{pecl_name}/$i done %check -# Erratic results -rm ?TS/tests/ext/segfault_backtrace_*.phpt -rm ?TS/tests/ext/sandbox/memory_limit_graceful_bailout.phpt +cd %{sources} +export DD_TRACE_CLI_ENABLED=1 +export DD_INSTRUMENTATION_TELEMETRY_ENABLED=0 -MOD="-n" +# Erratic results +rm tests/ext/segfault_backtrace_*.phpt +rm tests/ext/sandbox/memory_limit_graceful_bailout.phpt +%if "%{php_version}" > "8.0" +rm tests/ext/sandbox/fatal_errors_are_tracked_005.phpt +%endif +# XFAIL +find tests/ -type f -exec grep -q -- '--XFAIL--' {} \; -delete -print +# https://github.com/DataDog/dd-trace-php/issues/2115 +rm -r tests/ext/telemetry +# https://github.com/DataDog/dd-trace-php/issues/2248 +rm tests/ext/force_flush_traces.phpt +rm tests/ext/sandbox/fatal_errors_ignored_in_tracing_closure.phpt + +# DEP for ext dependencies, MOD for ext used in tests +DEP="" +MOD="-n -d ddtrace.request_init_hook=" +OPT="-q --show-diff" +%if "%{php_version}" > "8.0" +OPT="$OPT %{?_smp_mflags}" +[ -f %{php_extdir}/curl.so ] && DEP="$DEP -d extension=curl.so" +%else [ -f %{php_extdir}/curl.so ] && MOD="$MOD -d extension=curl.so" -[ -f %{php_extdir}/json.so ] && MOD="$MOD -d extension=json.so" +%endif +[ -f %{php_extdir}/json.so ] && DEP="$DEP -d extension=json.so" [ -f %{php_extdir}/posix.so ] && MOD="$MOD -d extension=posix.so" -cd NTS : Minimal load test for NTS extension -%{__php} --no-php-ini \ +%{__php} --no-php-ini $DEP \ --define extension=%{buildroot}%{php_extdir}/%{pecl_name}.so \ - --modules | grep -i %{pecl_name} + --modules | grep -i '^%{pecl_name}$' +%if %{with tests} : Upstream test suite for NTS extension TEST_PHP_EXECUTABLE=%{_bindir}/php \ -TEST_PHP_ARGS="$MOD -d extension=$PWD/modules/%{pecl_name}.so" \ +TEST_PHP_ARGS="$DEP $MOD -d extension=$PWD/../NTS/modules/%{pecl_name}.so" \ REPORT_EXIT_STATUS=1 \ -%{_bindir}/php -n run-tests.php -q --show-diff +%{_bindir}/php -n run-tests.php $OPT +%endif %if %{with_zts} -cd ../ZTS : Minimal load test for ZTS extension -%{__ztsphp} --no-php-ini \ +%{__ztsphp} --no-php-ini $DEP \ --define extension=%{buildroot}%{php_ztsextdir}/%{pecl_name}.so \ - --modules | grep -i %{pecl_name} - -: Upstream test suite for ZTS extension -TEST_PHP_EXECUTABLE=%{__ztsphp} \ -TEST_PHP_ARGS="$MOD -d extension=$PWD/modules/%{pecl_name}.so" \ -REPORT_EXIT_STATUS=1 \ -%{__ztsphp} -n run-tests.php -q --show-diff + --modules | grep -i '^%{pecl_name}$' %endif @@ -255,7 +284,9 @@ fi %files %doc %{pecl_docdir}/%{pecl_name} -%{?_licensedir:%license NTS/LICENSE*} +%{?_licensedir:%license %{sources}/LICENSE*} +%dir %{pear_phpdir}/datadog_trace + %{pear_phpdir}/datadog_trace/src %{pecl_xmldir}/%{name}.xml %config(noreplace) %{php_inidir}/%{ini_name} @@ -268,6 +299,275 @@ fi %changelog +* Wed Apr 17 2024 Remi Collet <remi@remirepo.net> - 1.0.0~beta1-1 +- update to 1.0.0beta1 + +* Fri Apr 5 2024 Remi Collet <remi@remirepo.net> - 0.99.1-1 +- update to 0.99.1 + +* Wed Apr 3 2024 Remi Collet <remi@remirepo.net> - 0.99.0-1 +- update to 0.99.0 + +* Tue Mar 5 2024 Remi Collet <remi@remirepo.net> - 0.98.1-1 +- update to 0.98.1 +- install the src directory added in the archive + +* Tue Feb 20 2024 Remi Collet <remi@remirepo.net> - 0.98.0-1 +- update to 0.98.0 + +* Thu Jan 18 2024 Remi Collet <remi@remirepo.net> - 0.97.0-1 +- update to 0.97.0 + +* Wed Dec 20 2023 Remi Collet <remi@remirepo.net> - 0.96.0-1 +- update to 0.96.0 + +* Thu Dec 7 2023 Remi Collet <remi@remirepo.net> - 0.95.0-1 +- update to 0.95.0 + +* Wed Nov 29 2023 Remi Collet <remi@remirepo.net> - 0.94.1-1 +- update to 0.94.1 + +* Thu Nov 23 2023 Remi Collet <remi@remirepo.net> - 0.94.0-2 +- test build for https://github.com/DataDog/dd-trace-php/pull/2383 + +* Tue Nov 21 2023 Remi Collet <remi@remirepo.net> - 0.94.0-1 +- update to 0.94.0 +- open https://github.com/DataDog/dd-trace-php/issues/2376 LTO build failure + +* Mon Nov 13 2023 Remi Collet <remi@remirepo.net> - 0.93.2-1 +- update to 0.93.2 + +* Wed Nov 1 2023 Remi Collet <remi@remirepo.net> - 0.93.1-1 +- update to 0.93.1 + +* Mon Oct 30 2023 Remi Collet <remi@remirepo.net> - 0.93.0-1 +- update to 0.93.0 + +* Tue Oct 10 2023 Remi Collet <remi@remirepo.net> - 0.92.2-1 +- update to 0.92.2 + +* Mon Oct 2 2023 Remi Collet <remi@remirepo.net> - 0.92.1-1 +- update to 0.92.1 +- disable test suite which raises too much issues + +* Wed Sep 27 2023 Remi Collet <remi@remirepo.net> - 0.92.0-1 +- update to 0.92.0 +- open https://github.com/DataDog/dd-trace-php/issues/2285 + [Bug]: Failed connecting to the sidecar: Connection refused (os error 111) +- open https://github.com/DataDog/dd-trace-php/issues/2286 + [Bug]: Error in `datadog-ipc-helper': double free or corruption +- open https://github.com/DataDog/dd-trace-php/issues/2287 + [Bug]: test suite hangs + +* Fri Sep 15 2023 Remi Collet <remi@remirepo.net> - 0.91.2-1 +- update to 0.91.2 + +* Sat Sep 9 2023 Remi Collet <remi@remirepo.net> - 0.91.1-1 +- update to 0.91.1 + +* Thu Sep 7 2023 Remi Collet <remi@remirepo.net> - 0.91.0-1 +- update to 0.91.0 +- raise build dependency on rust 1.70 + +* Mon Jul 17 2023 Remi Collet <remi@remirepo.net> - 0.90.0-1 +- update to 0.90.0 +- build out of sources tree + +* Tue Jul 4 2023 Remi Collet <remi@remirepo.net> - 0.89.0-1 +- update to 0.89.0 + +* Mon Jun 19 2023 Remi Collet <remi@remirepo.net> - 0.88.1-1 +- update to 0.88.1 +- open https://github.com/DataDog/dd-trace-php/issues/2115 + test failures + +* Thu Jun 15 2023 Remi Collet <remi@remirepo.net> - 0.88.0-1 +- update to 0.88.0 +- use vendored rust dependencies +- open https://github.com/DataDog/dd-trace-php/issues/2103 + Cannot build OFFLINE + +* Fri May 19 2023 Remi Collet <remi@remirepo.net> - 0.87.2-1 +- update to 0.87.2 + +* Tue May 16 2023 Remi Collet <remi@remirepo.net> - 0.87.1-1 +- update to 0.87.1 + +* Sat May 13 2023 Remi Collet <remi@remirepo.net> - 0.87.0-1 +- update to 0.87.0 + +* Thu Apr 6 2023 Remi Collet <remi@remirepo.net> - 0.86.3-1 +- update to 0.86.3 + +* Wed Apr 5 2023 Remi Collet <remi@remirepo.net> - 0.86.2-1 +- update to 0.86.2 + +* Fri Mar 31 2023 Remi Collet <remi@remirepo.net> - 0.86.1-1 +- update to 0.86.1 + +* Thu Mar 23 2023 Remi Collet <remi@remirepo.net> - 0.86.0-1 +- update to 0.86.0 + +* Fri Feb 3 2023 Remi Collet <remi@remirepo.net> - 0.84.0-1 +- update to 0.84.0 + +* Thu Jan 19 2023 Remi Collet <remi@remirepo.net> - 0.83.1-1 +- update to 0.83.1 + +* Sat Jan 14 2023 Remi Collet <remi@remirepo.net> - 0.83.0-1 +- update to 0.83.0 + +* Wed Dec 7 2022 Remi Collet <remi@remirepo.net> - 0.82.0-1 +- update to 0.82.0 + +* Thu Nov 3 2022 Remi Collet <remi@remirepo.net> - 0.81.1-1 +- update to 0.81.1 + +* Wed Nov 2 2022 Remi Collet <remi@remirepo.net> - 0.81.0-1 +- update to 0.81.0 + +* Thu Sep 29 2022 Remi Collet <remi@remirepo.net> - 0.80.0-1 +- update to 0.80.0 + +* Fri Sep 9 2022 Remi Collet <remi@remirepo.net> - 0.79.0-1 +- update to 0.79.0 + +* Mon Aug 29 2022 Remi Collet <remi@remirepo.net> - 0.78.0-1 +- update to 0.78.0 + +* Wed Aug 3 2022 Remi Collet <remi@remirepo.net> - 0.77.0-1 +- update to 0.77.0 + +* Fri Jul 29 2022 Remi Collet <remi@remirepo.net> - 0.76.2-1 +- update to 0.76.2 + +* Mon Jul 18 2022 Remi Collet <remi@remirepo.net> - 0.76.1-1 +- update to 0.76.1 + +* Mon Jul 11 2022 Remi Collet <remi@remirepo.net> - 0.76.0-1 +- update to 0.76.0 +- drop PHP 5 support + +* Mon Jun 13 2022 Remi Collet <remi@remirepo.net> - 0.75.0-1 +- update to 0.75.0 + +* Thu May 12 2022 Remi Collet <remi@remirepo.net> - 0.74.0-1 +- update to 0.74.0 + +* Thu Apr 28 2022 Remi Collet <remi@remirepo.net> - 0.73.0-1 +- update to 0.73.0 + +* Thu Apr 7 2022 Remi Collet <remi@remirepo.net> - 0.72.0-1 +- update to 0.72.0 + +* Fri Apr 1 2022 Remi Collet <remi@remirepo.net> - 0.71.1-1 +- update to 0.71.1 + +* Tue Mar 15 2022 Remi Collet <remi@remirepo.net> - 0.71.0-1 +- update to 0.71.0 + +* Thu Mar 3 2022 Remi Collet <remi@remirepo.net> - 0.70.1-1 +- update to 0.70.1 + +* Mon Feb 7 2022 Remi Collet <remi@remirepo.net> - 0.70.0-1 +- update to 0.70.0 + +* Tue Jan 25 2022 Remi Collet <remi@remirepo.net> - 0.69.0-1 +- update to 0.69.0 + +* Mon Jan 10 2022 Remi Collet <remi@remirepo.net> - 0.68.2-1 +- update to 0.68.2 + +* Fri Dec 31 2021 Remi Collet <remi@remirepo.net> - 0.68.1-1 +- update to 0.68.1 + +* Thu Dec 23 2021 Remi Collet <remi@remirepo.net> - 0.68.0-1 +- update to 0.68.0 + +* Tue Nov 2 2021 Remi Collet <remi@remirepo.net> - 0.67.0-1 +- update to 0.67.0 + +* Tue Oct 12 2021 Remi Collet <remi@remirepo.net> - 0.66.0-1 +- update to 0.66.0 + +* Wed Sep 22 2021 Remi Collet <remi@remirepo.net> - 0.65.1-1 +- update to 0.65.1 + +* Tue Sep 21 2021 Remi Collet <remi@remirepo.net> - 0.65.0-1 +- update to 0.65.0 + +* Wed Sep 8 2021 Remi Collet <remi@remirepo.net> - 0.64.1-1 +- update to 0.64.1 + +* Fri Sep 3 2021 Remi Collet <remi@remirepo.net> - 0.64.0-1 +- update to 0.64.0 + +* Mon Aug 23 2021 Remi Collet <remi@remirepo.net> - 0.63.0-1 +- update to 0.63.0 + +* Thu Jul 29 2021 Remi Collet <remi@remirepo.net> - 0.62.1-1 +- update to 0.62.1 + +* Wed Jul 21 2021 Remi Collet <remi@remirepo.net> - 0.62.0-1 +- update to 0.62.0 + +* Tue Jul 13 2021 Remi Collet <remi@remirepo.net> - 0.61.0-1 +- update to 0.61.0 + +* Sat May 29 2021 Remi Collet <remi@remirepo.net> - 0.60.0-1 +- update to 0.60.0 + +* Fri May 7 2021 Remi Collet <remi@remirepo.net> - 0.59.0-1 +- update to 0.59.0 + +* Thu Apr 22 2021 Remi Collet <remi@remirepo.net> - 0.58.0-1 +- update to 0.58.0 + +* Fri Mar 5 2021 Remi Collet <remi@remirepo.net> - 0.56.0-1 +- update to 0.56.0 + +* Fri Feb 5 2021 Remi Collet <remi@remirepo.net> - 0.55.0-1 +- update to 0.55.0 +- open https://github.com/DataDog/dd-trace-php/pull/1144 + add missing dependency on curl extension for PHP 8 + +* Thu Jan 21 2021 Remi Collet <remi@remirepo.net> - 0.54.0-1 +- update to 0.54.0 + +* Thu Dec 31 2020 Remi Collet <remi@remirepo.net> - 0.53.0-1 +- update to 0.53.0 + +* Tue Dec 1 2020 Remi Collet <remi@remirepo.net> - 0.52.0-1 +- update to 0.52.0 + +* Wed Nov 18 2020 Remi Collet <remi@remirepo.net> - 0.51.0-1 +- update to 0.51.0 + +* Fri Nov 6 2020 Remi Collet <remi@remirepo.net> - 0.50.0-1 +- update to 0.50.0 + +* Thu Oct 15 2020 Remi Collet <remi@remirepo.net> - 0.49.0-1 +- update to 0.49.0 +- allow PHP 5.4 and 5.5 + +* Tue Sep 22 2020 Remi Collet <remi@remirepo.net> - 0.48.3-1 +- update to 0.48.3 + +* Fri Sep 11 2020 Remi Collet <remi@remirepo.net> - 0.48.2-1 +- update to 0.48.2 + +* Tue Sep 1 2020 Remi Collet <remi@remirepo.net> - 0.48.1-1 +- update to 0.48.1 + +* Wed Aug 26 2020 Remi Collet <remi@remirepo.net> - 0.48.0-1 +- update to 0.48.0 +- drop patch merged upstream +- install PHP library +- raise dependency on PHP 5.6 + +* Sat Aug 1 2020 Remi Collet <remi@remirepo.net> - 0.47.1-1 +- update to 0.47.1 + * Thu Jul 9 2020 Remi Collet <remi@remirepo.net> - 0.47.0-1 - update to 0.47.0 - open https://github.com/DataDog/dd-trace-php/pull/952 |