Datadog Tracing PHP Client

Last update: May 24, 2022

DD Trace PHP

CircleCI OpenTracing Badge Minimum PHP Version License Packagist Version Total Downloads

PHP Tracer

Getting Started

The Datadog PHP Tracer (ddtrace) brings APM and distributed tracing to PHP.

Installing the extension

Visit the PHP tracer documentation for complete installation instructions.

Advanced configuration

For more information about configuring and instrumenting ddtrace, view the configuration documentation.

OpenTracing

The ddtrace package provides an OpenTracing-compatible tracer.

Contributing

Before contributing to this open source project, read our CONTRIBUTING.md.

Security Vulnerabilities

If you have found a security issue, please contact the security team directly at [email protected].

GitHub

https://github.com/DataDog/dd-trace-php
Comments
  • 1. [BUG] Constant HTTP 500 with preloading enabled on version 0.48.3

    Bug description

    We're seeing obscure but constant HTTP 500 with PHP preloading enabled and Datadog extension loaded. Once the extension is removed (rm /etc/php/7.4/fpm/conf.d/98-ddtrace.ini /etc/php/7.4/fpm/conf.d/99-ddtrace-custom.ini) everything works fine.

    PHP version

    7.4.11 NTS

    Installed extensions

    [PHP Modules]
    amqp
    bcmath
    blackfire
    calendar
    Core
    ctype
    curl
    date
    ddtrace
    dom
    exif
    FFI
    fileinfo
    filter
    ftp
    gettext
    hash
    iconv
    igbinary
    imap
    intl
    json
    libxml
    mbstring
    mysqli
    mysqlnd
    openssl
    pcntl
    pcre
    PDO
    pdo_mysql
    Phar
    posix
    readline
    redis
    Reflection
    session
    shmop
    SimpleXML
    sockets
    sodium
    SPL
    standard
    sysvmsg
    sysvsem
    sysvshm
    tokenizer
    xml
    xmlreader
    xmlwriter
    xsl
    Zend OPcache
    zlib
    
    [Zend Modules]
    Zend OPcache
    blackfire
    ddtrace
    

    OS info

    Debian slim (Docker)

    Diagnostics and configuration

    Output of phpinfo() (ddtrace >= 0.47.0)

    Output from php -i (same configuration as FPM):

    ddtrace
    
    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.48.3
    DATADOG TRACER CONFIGURATION => {"date":"2020-10-08T21:11:35Z","os_name":"Linux 1fccd4138f01 5.9.0-rc6-amd64 #1 SMP Debian 5.9~rc6-1~exp1 (2020-09-21) x86_64","os_version":"5.9.0-rc6-amd64","version":"0.48.3","lang":"php","lang_version":"7.4.2","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":n
    ull,"architecture":"x86_64","sapi":"cli","ddtrace.request_init_hook":"/opt/datadog-php/dd-trace-sources/bridge/dd_wrap_autoloader.php","open_basedir_configured":false,"uri_fragment_regex":null,"uri_mapping_incoming":null,"uri_mapping_outgoing":null,"auto_flush_enabled":fa
    lse,"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_cach
    e":"/app/tracking/var/opcache","agent_error":"Failed to connect to localhost port 8126: Connection refused","opcache_file_cache_set":"The opcache.file_cache INI setting is set. This setting can cause unexpected behavior with the PHP tracer due to a bug in OPcache: https:/
    /bugs.php.net/bug.php?id=79825"}
    
                                   Diagnostics                               
    agent_error => Failed to connect to localhost port 8126: Connection refused
    opcache_file_cache_set => The opcache.file_cache INI setting is set. This setting can cause unexpected behavior with the PHP tracer due to a bug in OPcache: https://bugs.php.net/bug.php?id=79825
    Diagnostic checks => failed
    
    Directive => Local Value => Master Value
    ddtrace.disable => Off => Off
    ddtrace.request_init_hook => /opt/datadog-php/dd-trace-sources/bridge/dd_wrap_autoloader.php => /opt/datadog-php/dd-trace-sources/bridge/dd_wrap_autoloader.php
    
    Reviewed by Majkl578 at 2020-10-08 21:15
  • 2. [BUG] Error: Call to undefined function () in /opt/datadog-php/dd-trace-sources/bridge/functions.php:138

    Describe the bug When running this plugin on PHP 7.4.5 we often get the following error. Out setup runs on AWS Fargate:

    PHP message: PHP Fatal error:  Uncaught Error: Call to undefined function () in /opt/datadog-php/dd-trace-sources/bridge/functions.php:138
    thrown in /opt/datadog-php/dd-trace-sources/bridge/functions.php on line 138
    #0 /app/vendor/composer/autoload_real.php(25): ComposerAutoloaderInit26ebf97ffdb7575dcfd32f97a9330f1b::dd_trace_callback(Array, true, true)
    #1 /app/vendor/autoload.php(7): ComposerAutoloaderInit26ebf97ffdb7575dcfd32f97a9330f1b::getLoader()
    #2 /app/public_html/index.php(2): require('/app/vendor/aut...')
    

    This causes the docker container to crash and restart.

    We are not seeing this behavior on 7.4.4.

    PHP Info

    • Output of php -v

    PHP 7.4.5 (cli) (built: Apr 24 2020 17:44:59) ( NTS ) Copyright (c) The PHP Group Zend Engine v3.4.0, Copyright (c) Zend Technologies with Zend OPcache v7.4.5, Copyright (c), by Zend Technologies

    • Output of php -m

    [PHP Modules] apcu bcmath bz2 calendar Core ctype curl date ddtrace dom exif fileinfo filter ftp gd geoip gmp hash iconv intl json libxml mbstring memcached mysqlnd openssl pcntl pcre PDO pdo_mysql pdo_sqlite Phar posix readline Reflection session SimpleXML soap sodium SPL sqlite3 standard sysvmsg sysvsem sysvshm tokenizer xml xmlreader xmlwriter Zend OPcache zip zlib

    [Zend Modules] Zend OPcache

    OS Info

    • Output of cat /etc/os-release | grep -E "(NAME)|(VERSION)"

    NAME="Alpine Linux" VERSION_ID=3.11.6 PRETTY_NAME="Alpine Linux v3.11"

    Output of dd-doctor

    DataDog trace extension verification

    • PHP version and SAPI [7.4.5 - fpm-fcgi]
    • ddtrace extension installed [OK]
    • ddtrace version (installed) [0.41.1]
    • ddtrace version (const) [0.41.1]
    • ddtrace version (userland) [0.41.1]
    • ddtrace versions in sync [OK]
    • dd_trace() function available [OK]
    • dd_trace_env_config() function available [OK]
    • ddtrace.request_init_hook set [OK]
    • ddtrace.request_init_hook reachable [OK]
    • ddtrace.request_init_hook has run [OK]
    • 'open_basedir' allows access to '/proc/self/' [OK]
    • IntegrationsLoader exists [OK]
    • Integrations not loaded yet [OK]
    • Registering an autoloader...
    • Integrations loaded [OK]
    • DDTrace\Tracer class exists [OK]
    • Background sender is enabled? [NO]

      You can enable the background sender via DD_TRACE_BETA_SEND_TRACES_VIA_THREAD=true

    • Configured Agent host [localhost]
    • Configured Agent port [8126]
    • Agent can receive traces [FAIL] Curl verbose output:
    • Trying 127.0.0.1:8126...
    • TCP_NODELAY set
    • connect to 127.0.0.1 port 8126 failed: Connection refused
    • Trying ::1:8126...
    • TCP_NODELAY set
    • Immediate connect fail for ::1: Address not available
    • Trying ::1:8126...
    • TCP_NODELAY set
    • Immediate connect fail for ::1: Address not available
    • Failed to connect to localhost port 8126: Connection refused
    • Closing connection 0
    Reviewed by ThomasVdBerge at 2020-05-01 17:51
  • 3. PHP-FPM SIGSEGV(s) with installed package datadog-php-tracer-0.34.0-1.x86_64

    We started testing this on a centos7 machine running php7.0.33 php-fpm and nginx. We're getting intermittent (20%) SIGSEGV(s) at random time intervals (request based, not time based) on certain requests.

    Uninstalling this package causes the application to run fine. Please let me know if I can provide more info or the problem is fixed.

    Reviewed by recarv at 2019-11-08 12:58
  • 4. CURL headers are overwritten in v0.15.1

    Hola. Wanted to report this bug which blocks us actually. Using php 7.1

    When I make curl request, datadog seems to intercept headers and rewrite them to its own In our case its host that is important

    Screen Shot 2019-03-15 at 15 32 41
    Reviewed by tot-ra at 2019-03-15 15:24
  • 5. [BUG] SIGSEGV after upgrading to v0.49.0 from v0.44.1

    Bug description

    I've started seeing this issue after the upgrade to 0.49.0. It occurs rarely and only in production.

    I'd be happy to provide core dump but, there's something wrong with my php-fpm config (probably), because it doesn't generate core dump when this issue occurs. BTW, if you know reliable steps to get php to segfault, please let me know :)

    At this point I'm looking for some guidance on what I can check to narrow down the potential causes.

    Thanks!

    PHP version

    PHP 7.4.11 (cli) (built: Oct 18 2020 19:44:48) ( NTS )
    Copyright (c) The PHP Group
    Zend Engine v3.4.0, Copyright (c) Zend Technologies
        with Zend OPcache v7.4.11, Copyright (c), by Zend Technologies
        with ddtrace v0.49.0, Copyright Datadog, by Datadog
    

    Installed extensions

    extensions

    [PHP Modules]                                                                                                                                                                                                                                  
    bcmath                                                                                                                                                                                                                                         
    calendar                                                                                                                                                                                                                                       
    Core                                                                                                                   
    ctype                                          
    curl                                                                                                                   
    date                                                                                                                                                                                                                                           
    ddtrace                                                    
    dom                                                                                                                                                                                                                                            
    exif                                                                                                                                                                                                                                           
    FFI                                                                                                                    
    fileinfo                                    
    filter                                                                                                                 
    ftp                                                                                                                    
    gd                                                   
    gettext                                                    
    gmp                                                                                                                    
    hash                                                                                                                                                                                                                                           
    iconv                                                                                                                                                                                                                                          
    igbinary                                                                                                               
    intl                                                                                                                                                                                                                                           
    json                                                                                                                   
    libxml                               
    mbstring                                                                                                               
    mysqli                                                     
    mysqlnd                                                  
    openssl                                                    
    pcntl                                                      
    pcre                                                                                                                   
    PDO                                                                                                                    
    pdo_mysql                                                                                                                                                                                                                                      
    Phar                                                                                                                                                                                                                                           
    posix                                                                                                                  
    rdkafka                                                                                                                
    readline                                                                                                               
    redis                                                                                                                  
    Reflection                                           
    session                                                                                                                
    shmop                                                                                                                  
    SimpleXML                                                                                                                                                                                                                                      
    sockets                                                    
    sodium                                                 
    SPL                                                                                                                                                                                                                                            
    ssh2                                                                                                                   
    standard
    sysvmsg
    sysvsem
    sysvshm
    tokenizer
    xdebug
    xml
    xmlreader
    xmlwriter
    xsl
    Zend OPcache
    zip
    zlib
    
    [Zend Modules]
    Zend OPcache
    ddtrace
    

    OS info

    PRETTY_NAME="Debian GNU/Linux 10 (buster)"
    NAME="Debian GNU/Linux"
    VERSION_ID="10"
    VERSION="10 (buster)"
    VERSION_CODENAME=buster
    

    Diagnostics and configuration

    Output of phpinfo() (ddtrace >= 0.47.0)

    image

    Upgrading info

    Previous version 0.44.1

    Reviewed by gornostal at 2020-10-29 16:57
  • 6. [BUG] Segmentation Fault occurs in many requests for apache + mod_php/prefork

    Bug description

    It happens occasionally (once a day or so) in a production environment where many requests are being served.

    $ sudo gdb /usr/sbin/httpd core.httpd.9971 --command download/gdbinit-7.3
    GNU gdb (GDB) Red Hat Enterprise Linux 7.6.1-119.el7
    Copyright (C) 2013 Free Software Foundation, Inc.
    License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
    This is free software: you are free to change and redistribute it.
    There is NO WARRANTY, to the extent permitted by law.  Type "show copying"
    and "show warranty" for details.
    This GDB was configured as "x86_64-redhat-linux-gnu".
    For bug reporting instructions, please see:
    <http://www.gnu.org/software/gdb/bugs/>...
    Reading symbols from /usr/sbin/httpd...Reading symbols from /usr/lib/debug/usr/sbin/httpd.debug...done.
    done.
    [New LWP 9975]
    [New LWP 9972]
    [New LWP 9971]
    [New LWP 9973]
    [New LWP 9974]
    [Thread debugging using libthread_db enabled]
    Using host libthread_db library "/lib64/libthread_db.so.1".
    Core was generated by `/usr/sbin/httpd -DFOREGROUND'.
    Program terminated with signal 11, Segmentation fault.
    #0  __GI_getenv (name=0x7fb42bd34b26 "l_proxy", [email protected]=0x7fb42bd34b24 "all_proxy") at getenv.c:88
    88                if (name_start == ep_start && !strncmp (*ep + 2, name, len)
    (gdb) backtrace
    #0  __GI_getenv (name=0x7fb42bd34b26 "l_proxy", [email protected]=0x7fb42bd34b24 "all_proxy") at getenv.c:88
    #1  0x00007fb42bd059f9 in GetEnv ([email protected]=0x7fb42bd34b24 "all_proxy") at getenv.c:44
    #2  curl_getenv ([email protected]=0x7fb42bd34b24 "all_proxy") at getenv.c:52
    #3  0x00007fb42bd03c17 in detect_proxy (conn=<optimized out>, conn=<optimized out>) at url.c:4147
    #4  create_conn (async=0x7fb3cbffeb8c, in_connect=0x7fb3cbffeba4, data=0x7fb3c0020900) at url.c:5163
    #5  Curl_connect ([email protected]=0x7fb3c0020900, [email protected]=0x7fb3c002c6b8, [email protected]=0x7fb3cbffeb8c, [email protected]=0x7fb3cbffeb8d) at url.c:5531
    #6  0x00007fb42bd14780 in multi_runsingle ([email protected]=0x7fb3c002c880, now=..., [email protected]=0x7fb3c002c6a0) at multi.c:1045
    #7  0x00007fb42bd15641 in curl_multi_perform ([email protected]=0x7fb3c002c880, [email protected]=0x7fb3cbffec80) at multi.c:1763
    #8  0x00007fb42bd0c853 in curl_easy_perform (easy=0x7fb3c0020900) at easy.c:480
    #9  0x00007fb41da460b4 in _dd_writer_loop () from /opt/datadog-php/extensions/ddtrace-20180731.so
    #10 0x00007fb435c6bea5 in start_thread (arg=0x7fb3cbfff700) at pthread_create.c:307
    #11 0x00007fb4357908dd in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:111
    

    PHP version

    PHP 7.3.22 (cli) (built: Sep  1 2020 09:44:58) ( NTS )
    Copyright (c) 1997-2018 The PHP Group
    Zend Engine v3.3.22, Copyright (c) 1998-2018 Zend Technologies
        with Zend OPcache v7.3.22, Copyright (c) 1999-2018, by Zend Technologies
        with ddtrace v0.49.0, Copyright Datadog, by Datadog
    

    Installed extensions

    [PHP Modules]
    apcu
    bcmath
    bz2
    calendar
    Core
    ctype
    curl
    date
    ddtrace
    dom
    exif
    fileinfo
    filter
    ftp
    gd
    gettext
    grpc
    hash
    iconv
    igbinary
    intl
    json
    libxml
    mbstring
    memcached
    msgpack
    mysqli
    mysqlnd
    openssl
    pcntl
    pcre
    PDO
    pdo_mysql
    pdo_sqlite
    Phar
    posix
    readline
    Reflection
    session
    shmop
    SimpleXML
    sockets
    SPL
    sqlite3
    ssh2
    standard
    sysvmsg
    sysvsem
    sysvshm
    tokenizer
    wddx
    xml
    xmlreader
    xmlwriter
    xsl
    Zend OPcache
    zip
    zlib
    
    [Zend Modules]
    Zend OPcache
    ddtrace
    

    OS info

    CentOS Linux 7 (Core)

    Diagnostics and configuration

    Output of phpinfo() (ddtrace >= 0.47.0)

    $ php --ri=ddtrace
    
    ddtrace
    
    
    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.49.0
    DATADOG TRACER CONFIGURATION => {"date":"2020-10-20T09:30:26Z","os_name":"Linux host 3.10.0-1127.19.1.el7.x86_64 #1 SMP Tue Aug 25 17:23:54 UTC 2020 x86_64","os_version":"3.10.0-1127.19.1.el7.x86_64","version":"0.49.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":"/opt/datadog-php/dd-trace-sources/bridge/dd_wrap_autoloader.php","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}
    
                                   Diagnostics
    Diagnostic checks => passed
    
    Directive => Local Value => Master Value
    ddtrace.disable => Off => Off
    ddtrace.request_init_hook => /opt/datadog-php/dd-trace-sources/bridge/dd_wrap_autoloader.php => /opt/datadog-php/dd-trace-sources/bridge/dd_wrap_autoloader.php
    

    Output of dd-doctor (ddtrace < 0.47.0)

    Upgrading info

    Reviewed by catatsuy at 2020-10-20 09:51
  • 7. [BUG] Install via Source code (tar.gz) failed

    We had been installed ddtrace via [1] before, in the recent version I got an error here, image

    So now I have been tried to use [2] for the installation, but there is no composer.json file in [2] which we need for composer installation in php application side.

    If pecl's and PHP application's ddtrace version needn't be a same version, use pecl for installation will be an easy way. Otherwise, we need some workaround to make it works.

    For a temporary workaround, I added make generate when build extension using [1].

    [1]. Source code (tar.gz) [2]. datadog-php-tracer-0.50.0.x86_64.tar.gz

    Reviewed by axot at 2020-12-09 05:37
  • 8. [info] RPM package

    For your information

    RPM packages for Fedora / RHEL / CentOS are already available, among some other extensions, in my repository

    https://blog.remirepo.net/pages/PECL-extensions-RPM-status

    On Fedora (and RHEL-8-beta)

    dnf install php-pecl-datadog-trace

    On RHEL / CentOS 6 and 7

    yum install php-pecl-datadog-trace

    Notice: yum install php-ddtrace also works (using extension name)

    Available for PHP 5.6, 7.0, 7.1 and 7.2.

    Spec file tracked on https://git.remirepo.net/cgit/rpms/php/pecl/php-pecl-datadog-trace.git/

    Reviewed by remicollet at 2019-01-04 16:48
  • 9. High CPU usage

    We're using Magento 1 and I decided to just throw this code into our index.php file as a first stab at seeing some data:

    require_once('lib/vendor/autoload.php');
    $tracer = new \DDTrace\Tracer(new \DDTrace\Transport\Http(new \DDTrace\Encoders\Json()));
    \OpenTracing\GlobalTracer::set($tracer);
    $scope = $tracer->startActiveSpan('ourorg.www.request');
    $span = $scope->getSpan();
    $span->setTag(\DDTrace\Tags\SERVICE_NAME, 'www');
    $span->setTag(\DDTrace\Tags\SPAN_TYPE, \DDTrace\Types\WEB_SERVLET);
    \DDTrace\Integrations\PDO::load();
    register_shutdown_function(function () use ($scope) {
        $scope->close();
        \OpenTracing\GlobalTracer::get()->flush();
    });
    

    we got data in the datadog APM UI ... but the webserver slammed to 100% cpu and stopped responding. any suggestions?

    Reviewed by joeldodge79 at 2018-11-14 01:36
  • 10. Add support for PHP 5.5 on Ubuntu 14.04

    Since we're running some legacy systems on Ubuntu 14.04 which ships with PHP 5.5, we want to get support for PHP 5.5.

    I know PHP 5.5 is officially End Of Life, but since we're running Ubuntu 14.04 with Ubuntu Extended Security Maintenance, we're still getting security updates for PHP 5.5.

    I know when we will upgrade to PHP 5.6 the extension will work, but upgrading to PHP 5.6 has no effort for us. Because when we do, we're losing our security patches since PHP 5.6 is End Of Life too.

    My issue is related to #616.

    PS: We're upgrading to PHP 7.x, but this is a steep road up.

    Reviewed by TomKeur at 2019-10-24 13:13
  • 11. [BUG] Fixing malformed trace after upgrade from 0.54.0 to 0.63.0

    Bug description

    After upgrade datadog-php-tracer from 0.54.0 to 0.63.0 version we are experiencing some problems. A lot of Fixing malformed trace messages in the log file. And sometimes a segfault appears

    PHP version

    PHP 8.0.10 (cli) (built: Aug 26 2021 15:50:07) ( NTS )
    Copyright (c) The PHP Group
    Zend Engine v4.0.10, Copyright (c) Zend Technologies
        with Zend OPcache v8.0.10, Copyright (c), by Zend Technologies
        with ddtrace v0.63.0, Copyright Datadog, by Datadog
    

    Installed extensions

    PHP extensions
    [PHP Modules]
    amqp
    bcmath
    calendar
    Core
    ctype
    curl
    date
    ddtrace
    dom
    exif
    FFI
    fileinfo
    filter
    ftp
    gd
    gettext
    grpc
    hash
    iconv
    igbinary
    imagick
    intl
    json
    libxml
    maxminddb
    mbstring
    memcached
    msgpack
    mysqli
    mysqlnd
    openssl
    pcntl
    pcre
    PDO
    pdo_mysql
    Phar
    posix
    readline
    redis
    Reflection
    session
    shmop
    SimpleXML
    soap
    sockets
    sodium
    SPL
    standard
    sysvmsg
    sysvsem
    sysvshm
    tokenizer
    xml
    xmlreader
    xmlwriter
    xsl
    Zend OPcache
    zip
    zlib
    
    [Zend Modules]
    Zend OPcache
    ddtrace
    

    OS info

    NAME="Ubuntu"
    VERSION="20.04.3 LTS (Focal Fossa)"
    PRETTY_NAME="Ubuntu 20.04.3 LTS"
    VERSION_ID="20.04"
    VERSION_CODENAME=focal
    UBUNTU_CODENAME=focal
    

    Diagnostics and configuration

    The trace-agent.log file looks like:

    Click to expand
    2021-09-09 09:43:45 UTC | TRACE | DEBUG | (pkg/trace/agent/normalizer.go:84 in normalize) | Fixing malformed trace. Resource is empty (reason:resource_empty), setting span.resource=unnamed_operation: service:"unnamed-php-service" name:"unnamed_operation" traceID:11494819935572506223 spanID:11494819935572506223 start:1631180623192299686 duration:19437 meta:<key:"env" value:"prod" > 
    2021-09-09 09:43:48 UTC | TRACE | DEBUG | (pkg/trace/agent/normalizer.go:48 in normalize) | Fixing malformed trace. Service is empty (reason:service_empty), setting span.service=: traceID:9847748800527124456 spanID:9847748800527124456 start:1631180623513181802 duration:16520 meta:<key:"env" value:"prod" > 
    2021-09-09 09:43:48 UTC | TRACE | DEBUG | (pkg/trace/agent/normalizer.go:73 in normalize) | Fixing malformed trace. Name is empty (reason:span_name_empty), setting span.name=unnamed_operation: service:"unnamed-php-service" name:"unnamed_operation" traceID:9847748800527124456 spanID:9847748800527124456 start:1631180623513181802 duration:16520 meta:<key:"env" value:"prod" > 
    2021-09-09 09:43:48 UTC | TRACE | DEBUG | (pkg/trace/agent/normalizer.go:84 in normalize) | Fixing malformed trace. Resource is empty (reason:resource_empty), setting span.resource=unnamed_operation: service:"unnamed-php-service" name:"unnamed_operation" traceID:9847748800527124456 spanID:9847748800527124456 start:1631180623513181802 duration:16520 meta:<key:"env" value:"prod" > 
    2021-09-09 09:43:49 UTC | TRACE | DEBUG | (pkg/trace/stats/concentrator.go:180 in flushNow) | flushing bucket 1631180600000000000
    2021-09-09 09:43:49 UTC | TRACE | DEBUG | (pkg/trace/writer/trace.go:230 in flush) | Serializing 55 traces and 0 APM events.
    2021-09-09 09:43:49 UTC | TRACE | DEBUG | (pkg/trace/stats/concentrator.go:190 in flushNow) | update oldestTs to 1631180610000000000
    2021-09-09 09:43:49 UTC | TRACE | DEBUG | (pkg/trace/writer/stats.go:188 in func1) | Flushing 124 entries (buckets=1 client_payloads=1)
    2021-09-09 09:43:49 UTC | TRACE | DEBUG | (pkg/trace/writer/stats.go:339 in recordEvent) | Flushed stats to the API; time: 21.98646ms, bytes: 13303
    2021-09-09 09:43:49 UTC | TRACE | DEBUG | (pkg/trace/writer/trace.go:299 in recordEvent) | Flushed traces to the API; time: 92.876578ms, bytes: 130305
    2021-09-09 09:43:54 UTC | TRACE | DEBUG | (pkg/trace/writer/trace.go:230 in flush) | Serializing 22 traces and 0 APM events.
    2021-09-09 09:43:54 UTC | TRACE | DEBUG | (pkg/trace/writer/trace.go:299 in recordEvent) | Flushed traces to the API; time: 47.798317ms, bytes: 149602
    2021-09-09 09:43:59 UTC | TRACE | DEBUG | (pkg/trace/stats/concentrator.go:180 in flushNow) | flushing bucket 1631180610000000000
    2021-09-09 09:43:59 UTC | TRACE | INFO | (pkg/trace/info/stats.go:108 in LogStats) | [lang:php lang_version:8.0.8 interpreter:fpm-fcgi tracer_version:0.63.0 endpoint_version:v0.4] -> traces received: 388, traces filtered: 0, traces amount: 8271184 bytes, events extracted: 0, events sampled: 0
    2021-09-09 09:43:59 UTC | TRACE | WARN | (pkg/trace/info/stats.go:111 in LogStats) | [lang:php lang_version:8.0.8 interpreter:fpm-fcgi tracer_version:0.63.0 endpoint_version:v0.4] -> spans_malformed(resource_empty:6, service_empty:6, span_name_empty:6). Enable debug logging for more details.
    2021-09-09 09:43:59 UTC | TRACE | INFO | (pkg/trace/info/stats.go:108 in LogStats) | [lang:php lang_version:8.0.8 interpreter:cli tracer_version:0.63.0 endpoint_version:v0.4] -> traces received: 6, traces filtered: 0, traces amount: 898 bytes, events extracted: 0, events sampled: 0
    2021-09-09 09:43:59 UTC | TRACE | WARN | (pkg/trace/info/stats.go:111 in LogStats) | [lang:php lang_version:8.0.8 interpreter:cli tracer_version:0.63.0 endpoint_version:v0.4] -> spans_malformed(resource_empty:6, service_empty:6, span_name_empty:6). Enable debug logging for more details.
    2021-09-09 09:43:59 UTC | TRACE | DEBUG | (pkg/trace/writer/trace.go:230 in flush) | Serializing 24 traces and 0 APM events.
    2021-09-09 09:43:59 UTC | TRACE | DEBUG | (pkg/trace/stats/concentrator.go:190 in flushNow) | update oldestTs to 1631180620000000000
    2021-09-09 09:43:59 UTC | TRACE | DEBUG | (pkg/trace/writer/stats.go:188 in func1) | Flushing 137 entries (buckets=1 client_payloads=1)
    2021-09-09 09:43:59 UTC | TRACE | DEBUG | (pkg/trace/writer/stats.go:339 in recordEvent) | Flushed stats to the API; time: 21.457163ms, bytes: 16459
    2021-09-09 09:43:59 UTC | TRACE | DEBUG | (pkg/trace/writer/trace.go:299 in recordEvent) | Flushed traces to the API; time: 43.963921ms, bytes: 53062
    2021-09-09 09:44:03 UTC | TRACE | DEBUG | (pkg/trace/agent/normalizer.go:48 in normalize) | Fixing malformed trace. Service is empty (reason:service_empty), setting span.service=: traceID:722036051060467482 spanID:722036051060467482 start:1631180641140202013 duration:2012137013 meta:<key:"env" value:"prod" > meta:<key:"system.pid" value:"1278330" > metrics:<key:"php.compilation.total_time_ms" value:923.218 > 
    2021-09-09 09:44:03 UTC | TRACE | DEBUG | (pkg/trace/agent/normalizer.go:73 in normalize) | Fixing malformed trace. Name is empty (reason:span_name_empty), setting span.name=unnamed_operation: service:"unnamed-php-service" name:"unnamed_operation" traceID:722036051060467482 spanID:722036051060467482 start:1631180641140202013 duration:2012137013 meta:<key:"env" value:"prod" > meta:<key:"system.pid" value:"1278330" > metrics:<key:"php.compilation.total_time_ms" value:923.218 > 
    2021-09-09 09:44:03 UTC | TRACE | DEBUG | (pkg/trace/agent/normalizer.go:84 in normalize) | Fixing malformed trace. Resource is empty (reason:resource_empty), setting span.resource=unnamed_operation: service:"unnamed-php-service" name:"unnamed_operation" traceID:722036051060467482 spanID:722036051060467482 start:1631180641140202013 duration:2012137013 meta:<key:"env" value:"prod" > meta:<key:"system.pid" value:"1278330" > metrics:<key:"php.compilation.total_time_ms" value:923.218 > 
    2021-09-09 09:44:03 UTC | TRACE | DEBUG | (pkg/trace/agent/normalizer.go:48 in normalize) | Fixing malformed trace. Service is empty (reason:service_empty), setting span.service=: traceID:11741641463875513728 spanID:11741641463875513728 start:1631180641178814550 duration:1999030713 meta:<key:"env" value:"prod" > meta:<key:"system.pid" value:"1278334" > metrics:<key:"php.compilation.total_time_ms" value:720.835 > 
    2021-09-09 09:44:03 UTC | TRACE | DEBUG | (pkg/trace/agent/normalizer.go:73 in normalize) | Fixing malformed trace. Name is empty (reason:span_name_empty), setting span.name=unnamed_operation: service:"unnamed-php-service" name:"unnamed_operation" traceID:11741641463875513728 spanID:11741641463875513728 start:1631180641178814550 duration:1999030713 meta:<key:"env" value:"prod" > meta:<key:"system.pid" value:"1278334" > metrics:<key:"php.compilation.total_time_ms" value:720.835 > 
    2021-09-09 09:44:03 UTC | TRACE | DEBUG | (pkg/trace/agent/normalizer.go:84 in normalize) | Fixing malformed trace. Resource is empty (reason:resource_empty), setting span.resource=unnamed_operation: service:"unnamed-php-service" name:"unnamed_operation" traceID:11741641463875513728 spanID:11741641463875513728 start:1631180641178814550 duration:1999030713 meta:<key:"env" value:"prod" > meta:<key:"system.pid" value:"1278334" > metrics:<key:"php.compilation.total_time_ms" value:720.835 > 
    2021-09-09 09:44:03 UTC | TRACE | DEBUG | (pkg/trace/agent/normalizer.go:48 in normalize) | Fixing malformed trace. Service is empty (reason:service_empty), setting span.service=: traceID:3117779799319506901 spanID:3117779799319506901 start:1631180641149948670 duration:2246744394 meta:<key:"env" value:"prod" > meta:<key:"system.pid" value:"1278333" > metrics:<key:"php.compilation.total_time_ms" value:988.979 > 
    2021-09-09 09:44:03 UTC | TRACE | DEBUG | (pkg/trace/agent/normalizer.go:73 in normalize) | Fixing malformed trace. Name is empty (reason:span_name_empty), setting span.name=unnamed_operation: service:"unnamed-php-service" name:"unnamed_operation" traceID:3117779799319506901 spanID:3117779799319506901 start:1631180641149948670 duration:2246744394 meta:<key:"env" value:"prod" > meta:<key:"system.pid" value:"1278333" > metrics:<key:"php.compilation.total_time_ms" value:988.979 > 
    2021-09-09 09:44:03 UTC | TRACE | DEBUG | (pkg/trace/agent/normalizer.go:84 in normalize) | Fixing malformed trace. Resource is empty (reason:resource_empty), setting span.resource=unnamed_operation: service:"unnamed-php-service" name:"unnamed_operation" traceID:3117779799319506901 spanID:3117779799319506901 start:1631180641149948670 duration:2246744394 meta:<key:"env" value:"prod" > meta:<key:"system.pid" value:"1278333" > metrics:<key:"php.compilation.total_time_ms" value:988.979 > 
    2021-09-09 09:44:03 UTC | TRACE | DEBUG | (pkg/trace/agent/normalizer.go:48 in normalize) | Fixing malformed trace. Service is empty (reason:service_empty), setting span.service=: traceID:17559344363884548530 spanID:17559344363884548530 start:1631180641171278148 duration:2274211461 meta:<key:"env" value:"prod" > meta:<key:"system.pid" value:"1278337" > metrics:<key:"php.compilation.total_time_ms" value:1023.219 > 
    2021-09-09 09:44:03 UTC | TRACE | DEBUG | (pkg/trace/agent/normalizer.go:73 in normalize) | Fixing malformed trace. Name is empty (reason:span_name_empty), setting span.name=unnamed_operation: service:"unnamed-php-service" name:"unnamed_operation" traceID:17559344363884548530 spanID:17559344363884548530 start:1631180641171278148 duration:2274211461 meta:<key:"env" value:"prod" > meta:<key:"system.pid" value:"1278337" > metrics:<key:"php.compilation.total_time_ms" value:1023.219 > 
    2021-09-09 09:44:03 UTC | TRACE | DEBUG | (pkg/trace/agent/normalizer.go:84 in normalize) | Fixing malformed trace. Resource is empty (reason:resource_empty), setting span.resource=unnamed_operation: service:"unnamed-php-service" name:"unnamed_operation" traceID:17559344363884548530 spanID:17559344363884548530 start:1631180641171278148 duration:2274211461 meta:<key:"env" value:"prod" > meta:<key:"system.pid" value:"1278337" > metrics:<key:"php.compilation.total_time_ms" value:1023.219 > 
    2021-09-09 09:44:03 UTC | TRACE | DEBUG | (pkg/trace/agent/normalizer.go:48 in normalize) | Fixing malformed trace. Service is empty (reason:service_empty), setting span.service=: traceID:2570830624781944721 spanID:2570830624781944721 start:1631180641158642065 duration:2301651730 meta:<key:"env" value:"prod" > meta:<key:"system.pid" value:"1278331" > metrics:<key:"php.compilation.total_time_ms" value:1050.122 > 
    2021-09-09 09:44:03 UTC | TRACE | DEBUG | (pkg/trace/agent/normalizer.go:73 in normalize) | Fixing malformed trace. Name is empty (reason:span_name_empty), setting span.name=unnamed_operation: service:"unnamed-php-service" name:"unnamed_operation" traceID:2570830624781944721 spanID:2570830624781944721 start:1631180641158642065 duration:2301651730 meta:<key:"env" value:"prod" > meta:<key:"system.pid" value:"1278331" > metrics:<key:"php.compilation.total_time_ms" value:1050.122 > 
    2021-09-09 09:44:03 UTC | TRACE | DEBUG | (pkg/trace/agent/normalizer.go:84 in normalize) | Fixing malformed trace. Resource is empty (reason:resource_empty), setting span.resource=unnamed_operation: service:"unnamed-php-service" name:"unnamed_operation" traceID:2570830624781944721 spanID:2570830624781944721 start:1631180641158642065 duration:2301651730 meta:<key:"env" value:"prod" > meta:<key:"system.pid" value:"1278331" > metrics:<key:"php.compilation.total_time_ms" value:1050.122 > 
    2021-09-09 09:44:04 UTC | TRACE | DEBUG | (pkg/trace/writer/trace.go:230 in flush) | Serializing 42 traces and 0 APM events.
    2021-09-09 09:44:04 UTC | TRACE | DEBUG | (pkg/trace/writer/trace.go:299 in recordEvent) | Flushed traces to the API; time: 85.588855ms, bytes: 117034
    

    Output of phpinfo()

    ddtrace PHP info
    ddtrace
    
    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.63.0
    DATADOG TRACER CONFIGURATION => {"date":"2021-09-09T09:40:12Z","os_name":"Linux instance-vm 5.11.0-1017-gcp #19~20.04.1-Ubuntu SMP Thu Aug 12 05:25:25 UTC 2021 x86_64","os_version":"5.11.0-1017-gcp","version":"0.63.0","lang":"php","lang_version":"8.0.8","env":"prod","enabled":true,"service":"core","enabled_cli":false,"agent_url":"http://localhost:8126","debug":false,"analytics_enabled":false,"sample_rate":1.000000,"sampling_rules":null,"tags":{},"service_mapping":{},"distributed_tracing_enabled":true,"priority_sampling_enabled":true,"dd_version":null,"architecture":"x86_64","sapi":"cli","datadog.trace.request_init_hook":"/opt/datadog-php/dd-trace-sources/bridge/dd_wrap_autoloader.php","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":"default","enabled_from_env":true,"opcache.file_cache":null,"DDTRACE_REQUEST_INIT_HOOK":"'DDTRACE_REQUEST_INIT_HOOK=/opt/datadog-php/dd-trace-sources/bridge/dd_wrap_autoloader.php' is deprecated, use DD_TRACE_REQUEST_INIT_HOOK instead."}
    
                                   Diagnostics                               
    DDTRACE_REQUEST_INIT_HOOK => 'DDTRACE_REQUEST_INIT_HOOK=/opt/datadog-php/dd-trace-sources/bridge/dd_wrap_autoloader.php' is deprecated, use DD_TRACE_REQUEST_INIT_HOOK instead.
    Diagnostic checks => failed
    
    Directive => Local Value => Master Value
    datadog.agent_host => localhost => localhost
    datadog.autofinish_spans => Off => Off
    datadog.cakephp_analytics_enabled => Off => Off
    datadog.cakephp_analytics_sample_rate => 1 => 1
    datadog.codeigniter_analytics_enabled => Off => Off
    datadog.codeigniter_analytics_sample_rate => 1 => 1
    datadog.curl_analytics_enabled => Off => Off
    datadog.curl_analytics_sample_rate => 1 => 1
    datadog.distributed_tracing => On => On
    datadog.dogstatsd_port => 8125 => 8125
    datadog.elasticsearch_analytics_enabled => Off => Off
    datadog.elasticsearch_analytics_sample_rate => 1 => 1
    datadog.eloquent_analytics_enabled => Off => Off
    datadog.eloquent_analytics_sample_rate => 1 => 1
    datadog.env => prod => prod
    datadog.guzzle_analytics_enabled => Off => Off
    datadog.guzzle_analytics_sample_rate => 1 => 1
    datadog.integrations_disabled => default => default
    datadog.laravel_analytics_enabled => Off => Off
    datadog.laravel_analytics_sample_rate => 1 => 1
    datadog.log_backtrace => On => On
    datadog.lumen_analytics_enabled => Off => Off
    datadog.lumen_analytics_sample_rate => 1 => 1
    datadog.memcached_analytics_enabled => Off => Off
    datadog.memcached_analytics_sample_rate => 1 => 1
    datadog.mongo_analytics_enabled => Off => Off
    datadog.mongo_analytics_sample_rate => 1 => 1
    datadog.mysqli_analytics_enabled => Off => Off
    datadog.mysqli_analytics_sample_rate => 1 => 1
    datadog.nette_analytics_enabled => Off => Off
    datadog.nette_analytics_sample_rate => 1 => 1
    datadog.pdo_analytics_enabled => Off => Off
    datadog.pdo_analytics_sample_rate => 1 => 1
    datadog.phpredis_analytics_enabled => Off => Off
    datadog.phpredis_analytics_sample_rate => 1 => 1
    datadog.predis_analytics_enabled => Off => Off
    datadog.predis_analytics_sample_rate => 1 => 1
    datadog.priority_sampling => On => On
    datadog.sampling_rate => 1 => 1
    datadog.service => core => core
    datadog.service_mapping => no value => no value
    datadog.service_name => core => core
    datadog.slim_analytics_enabled => Off => Off
    datadog.slim_analytics_sample_rate => 1 => 1
    datadog.symfony_analytics_enabled => Off => Off
    datadog.symfony_analytics_sample_rate => 1 => 1
    datadog.tags => no value => no value
    datadog.trace.agent_attempt_retry_time_msec => 5000 => 5000
    datadog.trace.agent_connect_timeout => 100 => 100
    datadog.trace.agent_debug_verbose_curl => Off => Off
    datadog.trace.agent_flush_after_n_requests => 10 => 10
    datadog.trace.agent_flush_interval => 5000 => 5000
    datadog.trace.agent_max_consecutive_failures => 3 => 3
    datadog.trace.agent_port => 8126 => 8126
    datadog.trace.agent_timeout => 500 => 500
    datadog.trace.agent_url => no value => no value
    datadog.trace.analytics_enabled => Off => Off
    datadog.trace.auto_flush_enabled => Off => Off
    datadog.trace.beta_high_memory_pressure_percent => 80 => 80
    datadog.trace.bgs_connect_timeout => 2000 => 2000
    datadog.trace.bgs_timeout => 5000 => 5000
    datadog.trace.cakephp_analytics_enabled => Off => Off
    datadog.trace.cakephp_analytics_sample_rate => 1 => 1
    datadog.trace.cakephp_enabled => On => On
    datadog.trace.cli_enabled => Off => Off
    datadog.trace.codeigniter_analytics_enabled => Off => Off
    datadog.trace.codeigniter_analytics_sample_rate => 1 => 1
    datadog.trace.codeigniter_enabled => On => On
    datadog.trace.curl_analytics_enabled => Off => Off
    datadog.trace.curl_analytics_sample_rate => 1 => 1
    datadog.trace.curl_enabled => On => On
    datadog.trace.debug => Off => Off
    datadog.trace.debug_curl_output => Off => Off
    datadog.trace.debug_prng_seed => -1 => -1
    datadog.trace.elasticsearch_analytics_enabled => Off => Off
    datadog.trace.elasticsearch_analytics_sample_rate => 1 => 1
    datadog.trace.elasticsearch_enabled => On => On
    datadog.trace.eloquent_analytics_enabled => Off => Off
    datadog.trace.eloquent_analytics_sample_rate => 1 => 1
    datadog.trace.eloquent_enabled => On => On
    datadog.trace.enabled => On => On
    datadog.trace.generate_root_span => On => On
    datadog.trace.global_tags => no value => no value
    datadog.trace.guzzle_analytics_enabled => Off => Off
    datadog.trace.guzzle_analytics_sample_rate => 1 => 1
    datadog.trace.guzzle_enabled => On => On
    datadog.trace.health_metrics_enabled => Off => Off
    datadog.trace.health_metrics_heartbeat_sample_rate => 0.001 => 0.001
    datadog.trace.http_client_split_by_domain => Off => Off
    datadog.trace.laravel_analytics_enabled => Off => Off
    datadog.trace.laravel_analytics_sample_rate => 1 => 1
    datadog.trace.laravel_enabled => On => On
    datadog.trace.lumen_analytics_enabled => Off => Off
    datadog.trace.lumen_analytics_sample_rate => 1 => 1
    datadog.trace.lumen_enabled => On => On
    datadog.trace.measure_compile_time => On => On
    datadog.trace.memcached_analytics_enabled => Off => Off
    datadog.trace.memcached_analytics_sample_rate => 1 => 1
    datadog.trace.memcached_enabled => On => On
    datadog.trace.memory_limit => no value => no value
    datadog.trace.mongo_analytics_enabled => Off => Off
    datadog.trace.mongo_analytics_sample_rate => 1 => 1
    datadog.trace.mongo_enabled => On => On
    datadog.trace.mysqli_analytics_enabled => Off => Off
    datadog.trace.mysqli_analytics_sample_rate => 1 => 1
    datadog.trace.mysqli_enabled => On => On
    datadog.trace.nette_analytics_enabled => Off => Off
    datadog.trace.nette_analytics_sample_rate => 1 => 1
    datadog.trace.nette_enabled => On => On
    datadog.trace.pdo_analytics_enabled => Off => Off
    datadog.trace.pdo_analytics_sample_rate => 1 => 1
    datadog.trace.pdo_enabled => On => On
    datadog.trace.phpredis_analytics_enabled => Off => Off
    datadog.trace.phpredis_analytics_sample_rate => 1 => 1
    datadog.trace.phpredis_enabled => On => On
    datadog.trace.predis_analytics_enabled => Off => Off
    datadog.trace.predis_analytics_sample_rate => 1 => 1
    datadog.trace.predis_enabled => On => On
    datadog.trace.report_hostname => Off => Off
    datadog.trace.request_init_hook => /opt/datadog-php/dd-trace-sources/bridge/dd_wrap_autoloader.php => /opt/datadog-php/dd-trace-sources/bridge/dd_wrap_autoloader.php
    datadog.trace.resource_uri_fragment_regex => no value => no value
    datadog.trace.resource_uri_mapping => 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.retain_thread_capabilities => Off => Off
    datadog.trace.sample_rate => 1 => 1
    datadog.trace.sampling_rules => no value => no value
    datadog.trace.shutdown_timeout => 5000 => 5000
    datadog.trace.slim_analytics_enabled => Off => Off
    datadog.trace.slim_analytics_sample_rate => 1 => 1
    datadog.trace.slim_enabled => On => On
    datadog.trace.spans_limit => 1000 => 1000
    datadog.trace.startup_logs => On => On
    datadog.trace.symfony_analytics_enabled => Off => Off
    datadog.trace.symfony_analytics_sample_rate => 1 => 1
    datadog.trace.symfony_enabled => On => On
    datadog.trace.traced_internal_functions => no value => no value
    datadog.trace.url_as_resource_names_enabled => On => On
    datadog.trace.warn_legacy_dd_trace => On => On
    datadog.trace.web_analytics_enabled => Off => Off
    datadog.trace.web_analytics_sample_rate => 1 => 1
    datadog.trace.web_enabled => On => On
    datadog.trace.wordpress_analytics_enabled => Off => Off
    datadog.trace.wordpress_analytics_sample_rate => 1 => 1
    datadog.trace.wordpress_enabled => On => On
    datadog.trace.yii_analytics_enabled => Off => Off
    datadog.trace.yii_analytics_sample_rate => 1 => 1
    datadog.trace.yii_enabled => On => On
    datadog.trace.zendframework_analytics_enabled => Off => Off
    datadog.trace.zendframework_analytics_sample_rate => 1 => 1
    datadog.trace.zendframework_enabled => On => On
    datadog.version => no value => no value
    datadog.web_analytics_enabled => Off => Off
    datadog.web_analytics_sample_rate => 1 => 1
    datadog.wordpress_analytics_enabled => Off => Off
    datadog.wordpress_analytics_sample_rate => 1 => 1
    datadog.yii_analytics_enabled => Off => Off
    datadog.yii_analytics_sample_rate => 1 => 1
    datadog.zendframework_analytics_enabled => Off => Off
    datadog.zendframework_analytics_sample_rate => 1 => 1
    ddtrace.cgroup_file => /proc/self/cgroup => /proc/self/cgroup
    ddtrace.disable => Off => Off
    ddtrace.request_init_hook => /opt/datadog-php/dd-trace-sources/bridge/dd_wrap_autoloader.php => /opt/datadog-php/dd-trace-sources/bridge/dd_wrap_autoloader.php
    

    Upgrading info

    0.54.0 --> 0.63.0

    Reviewed by godunko-v at 2021-09-09 10:12
  • 12. [Feature] Add tag to trace.lumen.request.hits

    Is your feature request related to a problem? Please describe. Currently, in our Datadog metrics, we can see trace.lumen.request.hits. We are using it on several dashboards. Because we are using a modular monolith we have a dashboard per component and we used to exclude resources based on the resource name but it became complicated with a high number of routes. We would like to add the application level tag to a metric so we can exclude routes based on that tag. Is that possible?

    Describe the solution you'd like We want to have a custom tag set from application-level added to trace.lumen.request.hits metric

    Describe alternatives you've considered Duplicating a metric and sending it on our own with a proper tag

    Additional context I've tried using \DDTrace\add_global_tag() but unfortunately it didn't work

    Reviewed by simivar at 2022-05-20 12:20
  • 13. [BUG] Unable to load PHPRedis integration on PHP 8.0

    Bug description

    Setting DD_TRACE_PHPREDIS_ENABLED does not seem to enable the phpredis extension on PHP 8.

    The debug logs show:

    PHP message: [2022-05-04T19:21:35+00:00] [ddtrace] [debug] - Attempting integrations load
    PHP message: [2022-05-04T19:21:35+00:00] [ddtrace] [debug] - Loaded integration web
    PHP message: [2022-05-04T19:21:35+00:00] [ddtrace] [debug] - Loaded integration codeigniter
    PHP message: [2022-05-04T19:21:35+00:00] [ddtrace] [debug] - Loaded integration curl
    PHP message: [2022-05-04T19:21:35+00:00] [ddtrace] [debug] - Loaded integration eloquent
    PHP message: [2022-05-04T19:21:35+00:00] [ddtrace] [debug] - Loaded integration guzzle
    PHP message: [2022-05-04T19:21:35+00:00] [ddtrace] [debug] - Loaded integration laravel
    PHP message: [2022-05-04T19:21:35+00:00] [ddtrace] [debug] - Loaded integration mysqli
    PHP message: [2022-05-04T19:21:35+00:00] [ddtrace] [debug] - Loaded integration symfony
    PHP message: Successfully triggered flush with trace of size 3
    

    This appears to line up with: https://github.com/DataDog/dd-trace-php/blob/23fd62a4727fe2cfa996891696d8ebf8a8fa3523/src/Integrations/Integrations/IntegrationsLoader.php#L63-L80

    PHP version

    php -v
    PHP 8.0.18 (cli) (built: Apr 13 2022 02:45:05) ( NTS gcc x86_64 )
    Copyright (c) The PHP Group
    Zend Engine v4.0.18, Copyright (c) Zend Technologies
        with Zend OPcache v8.0.18, Copyright (c), by Zend Technologies
        with ddtrace v0.72.0, Copyright Datadog, by Datadog
    

    Tracer version

    0.72.0

    Installed extensions

    php -m | grep redis
    redis
    

    OS info

    CentOS Linux release 7.9.2009 (Core)

    Reviewed by elliotfehr at 2022-05-04 19:45
  • 14. [BUG] trace_id, span_id and parent_id decoding error

    Bug description

    After updating Datadog tracer from 0.59.0 to 0.72.0 we do not see new traces recorded for our services

    PHP version

    PHP 8.0.14 (cli) (built: Dec 21 2021 20:43:00) ( NTS )
    Copyright (c) The PHP Group
    Zend Engine v4.0.14, Copyright (c) Zend Technologies
        with Zend OPcache v8.0.14, Copyright (c), by Zend Technologies
        with Xdebug v3.1.4, Copyright (c) 2002-2022, by Derick Rethans
        with ddtrace v0.72.0, Copyright Datadog, by Datadog
    

    Tracer version

    0.72.0
    

    Installed extensions

    [PHP Modules]
    bcmath
    Core
    ctype
    curl
    date
    ddtrace
    dom
    fileinfo
    filter
    ftp
    gd
    gmp
    gnupg
    grpc
    hash
    iconv
    imagick
    intl
    json
    libxml
    mbstring
    mysqlnd
    openssl
    pcntl
    pcre
    PDO
    pdo_mysql
    pdo_sqlite
    Phar
    posix
    protobuf
    rdkafka
    readline
    redis
    Reflection
    session
    SimpleXML
    soap
    sockets
    sodium
    SPL
    sqlite3
    standard
    tokenizer
    xdebug
    xml
    xmlreader
    xmlwriter
    Zend OPcache
    zip
    zlib
    
    [Zend Modules]
    Xdebug
    Zend OPcache
    ddtrace
    

    OS info

    PRETTY_NAME="Debian GNU/Linux 11 (bullseye)"
    NAME="Debian GNU/Linux"
    VERSION_ID="11"
    VERSION="11 (bullseye)"
    VERSION_CODENAME=bullseye
    

    Diagnostics and configuration

    Output of phpinfo() (ddtrace >= 0.47.0)

    {
      "os_version": "5.10.104-linuxkit",
      "version": "0.72.0",
      "lang": "php",
      "lang_version": "8.0.8",
      "env": "local",
      "enabled": true,
      "service": "...x...",
      "enabled_cli": true,
      "agent_url": "http:\/\/host.docker.internal:8126",
      "debug": true,
      "analytics_enabled": false,
      "sample_rate": 1,
      "sampling_rules": [],
      "tags": [],
      "service_mapping": [],
      "distributed_tracing_enabled": true,
      "priority_sampling_enabled": true,
      "dd_version": null,
      "architecture": "x86_64",
      "sapi": "cli",
      "datadog.trace.request_init_hook": "\/opt\/datadog-php\/dd-trace-sources\/bridge\/dd_wrap_autoloader.php",
      "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": "default",
      "enabled_from_env": true,
      "opcache.file_cache": null
    }
    
                                   Diagnostics
    Diagnostic checks => passed
    
    Directive => Local Value => Master Value
    datadog.agent_host => host.docker.internal => host.docker.internal
    datadog.autofinish_spans => Off => Off
    datadog.cakephp_analytics_enabled => Off => Off
    datadog.cakephp_analytics_sample_rate => 1 => 1
    datadog.codeigniter_analytics_enabled => Off => Off
    datadog.codeigniter_analytics_sample_rate => 1 => 1
    datadog.curl_analytics_enabled => Off => Off
    datadog.curl_analytics_sample_rate => 1 => 1
    datadog.distributed_tracing => On => On
    datadog.dogstatsd_port => 8125 => 8125
    datadog.elasticsearch_analytics_enabled => Off => Off
    datadog.elasticsearch_analytics_sample_rate => 1 => 1
    datadog.eloquent_analytics_enabled => Off => Off
    datadog.eloquent_analytics_sample_rate => 1 => 1
    datadog.env => local => local
    datadog.guzzle_analytics_enabled => Off => Off
    datadog.guzzle_analytics_sample_rate => 1 => 1
    datadog.integrations_disabled => default => default
    datadog.laravel_analytics_enabled => Off => Off
    datadog.laravel_analytics_sample_rate => 1 => 1
    datadog.log_backtrace => Off => Off
    datadog.lumen_analytics_enabled => Off => Off
    datadog.lumen_analytics_sample_rate => 1 => 1
    datadog.memcached_analytics_enabled => Off => Off
    datadog.memcached_analytics_sample_rate => 1 => 1
    datadog.mongo_analytics_enabled => Off => Off
    datadog.mongo_analytics_sample_rate => 1 => 1
    datadog.mongodb_analytics_enabled => Off => Off
    datadog.mongodb_analytics_sample_rate => 1 => 1
    datadog.mysqli_analytics_enabled => Off => Off
    datadog.mysqli_analytics_sample_rate => 1 => 1
    datadog.nette_analytics_enabled => Off => Off
    datadog.nette_analytics_sample_rate => 1 => 1
    datadog.pdo_analytics_enabled => Off => Off
    datadog.pdo_analytics_sample_rate => 1 => 1
    datadog.phpredis_analytics_enabled => Off => Off
    datadog.phpredis_analytics_sample_rate => 1 => 1
    datadog.predis_analytics_enabled => Off => Off
    datadog.predis_analytics_sample_rate => 1 => 1
    datadog.priority_sampling => On => On
    datadog.sampling_rate => 1 => 1
    datadog.service_mapping => no value => no value
    datadog.slim_analytics_enabled => Off => Off
    datadog.slim_analytics_sample_rate => 1 => 1
    datadog.symfony_analytics_enabled => Off => Off
    datadog.symfony_analytics_sample_rate => 1 => 1
    datadog.tags => no value => no value
    datadog.trace.agent_attempt_retry_time_msec => 5000 => 5000
    datadog.trace.agent_connect_timeout => 100 => 100
    datadog.trace.agent_debug_verbose_curl => Off => Off
    datadog.trace.agent_flush_after_n_requests => 10 => 10
    datadog.trace.agent_flush_interval => 5000 => 5000
    datadog.trace.agent_max_consecutive_failures => 3 => 3
    datadog.trace.agent_port => 8126 => 8126
    datadog.trace.agent_timeout => 500 => 500
    datadog.trace.agent_url => no value => no value
    datadog.trace.analytics_enabled => Off => Off
    datadog.trace.auto_flush_enabled => Off => Off
    datadog.trace.beta_high_memory_pressure_percent => 80 => 80
    datadog.trace.bgs_connect_timeout => 2000 => 2000
    datadog.trace.bgs_timeout => 5000 => 5000
    datadog.trace.cakephp_analytics_enabled => Off => Off
    datadog.trace.cakephp_analytics_sample_rate => 1 => 1
    datadog.trace.cakephp_enabled => On => On
    datadog.trace.cli_enabled => On => On
    datadog.trace.codeigniter_analytics_enabled => Off => Off
    datadog.trace.codeigniter_analytics_sample_rate => 1 => 1
    datadog.trace.codeigniter_enabled => On => On
    datadog.trace.curl_analytics_enabled => Off => Off
    datadog.trace.curl_analytics_sample_rate => 1 => 1
    datadog.trace.curl_enabled => On => On
    datadog.trace.db_client_split_by_instance => Off => Off
    datadog.trace.debug => On => On
    datadog.trace.debug_curl_output => Off => Off
    datadog.trace.debug_prng_seed => -1 => -1
    datadog.trace.elasticsearch_analytics_enabled => Off => Off
    datadog.trace.elasticsearch_analytics_sample_rate => 1 => 1
    datadog.trace.elasticsearch_enabled => On => On
    datadog.trace.eloquent_analytics_enabled => Off => Off
    datadog.trace.eloquent_analytics_sample_rate => 1 => 1
    datadog.trace.eloquent_enabled => On => On
    datadog.trace.enabled => On => On
    datadog.trace.generate_root_span => On => On
    datadog.trace.global_tags => no value => no value
    datadog.trace.guzzle_analytics_enabled => Off => Off
    datadog.trace.guzzle_analytics_sample_rate => 1 => 1
    datadog.trace.guzzle_enabled => On => On
    datadog.trace.header_tags => no value => no value
    datadog.trace.health_metrics_enabled => Off => Off
    datadog.trace.health_metrics_heartbeat_sample_rate => 0.001 => 0.001
    datadog.trace.http_client_split_by_domain => Off => Off
    datadog.trace.laravel_analytics_enabled => Off => Off
    datadog.trace.laravel_analytics_sample_rate => 1 => 1
    datadog.trace.laravel_enabled => On => On
    datadog.trace.lumen_analytics_enabled => Off => Off
    datadog.trace.lumen_analytics_sample_rate => 1 => 1
    datadog.trace.lumen_enabled => On => On
    datadog.trace.measure_compile_time => On => On
    datadog.trace.memcached_analytics_enabled => Off => Off
    datadog.trace.memcached_analytics_sample_rate => 1 => 1
    datadog.trace.memcached_enabled => On => On
    datadog.trace.memory_limit => no value => no value
    datadog.trace.mongo_analytics_enabled => Off => Off
    datadog.trace.mongo_analytics_sample_rate => 1 => 1
    datadog.trace.mongo_enabled => On => On
    datadog.trace.mongodb_analytics_enabled => Off => Off
    datadog.trace.mongodb_analytics_sample_rate => 1 => 1
    datadog.trace.mongodb_enabled => On => On
    datadog.trace.mysqli_analytics_enabled => Off => Off
    datadog.trace.mysqli_analytics_sample_rate => 1 => 1
    datadog.trace.mysqli_enabled => On => On
    datadog.trace.nette_analytics_enabled => Off => Off
    datadog.trace.nette_analytics_sample_rate => 1 => 1
    datadog.trace.nette_enabled => On => On
    datadog.trace.pdo_analytics_enabled => Off => Off
    datadog.trace.pdo_analytics_sample_rate => 1 => 1
    datadog.trace.pdo_enabled => On => On
    datadog.trace.phpredis_analytics_enabled => Off => Off
    datadog.trace.phpredis_analytics_sample_rate => 1 => 1
    datadog.trace.phpredis_enabled => On => On
    datadog.trace.predis_analytics_enabled => Off => Off
    datadog.trace.predis_analytics_sample_rate => 1 => 1
    datadog.trace.predis_enabled => On => On
    datadog.trace.redis_client_split_by_host => On => On
    datadog.trace.report_hostname => Off => Off
    datadog.trace.request_init_hook => /opt/datadog-php/dd-trace-sources/bridge/dd_wrap_autoloader.php => /opt/datadog-php/dd-trace-sources/bridge/dd_wrap_autoloader.php
    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.retain_thread_capabilities => Off => Off
    datadog.trace.sample_rate => 1 => 1
    datadog.trace.sampling_rules => [] => []
    datadog.trace.shutdown_timeout => 5000 => 5000
    datadog.trace.slim_analytics_enabled => Off => Off
    datadog.trace.slim_analytics_sample_rate => 1 => 1
    datadog.trace.slim_enabled => On => On
    datadog.trace.spans_limit => 5000 => 5000
    datadog.trace.startup_logs => On => On
    datadog.trace.symfony_analytics_enabled => Off => Off
    datadog.trace.symfony_analytics_sample_rate => 1 => 1
    datadog.trace.symfony_enabled => On => On
    datadog.trace.tags_propagation_max_length => 512 => 512
    datadog.trace.traced_internal_functions => no value => no value
    datadog.trace.url_as_resource_names_enabled => On => On
    datadog.trace.warn_legacy_dd_trace => On => On
    datadog.trace.web_analytics_enabled => Off => Off
    datadog.trace.web_analytics_sample_rate => 1 => 1
    datadog.trace.web_enabled => On => On
    datadog.trace.wordpress_analytics_enabled => Off => Off
    datadog.trace.wordpress_analytics_sample_rate => 1 => 1
    datadog.trace.wordpress_enabled => On => On
    datadog.trace.yii_analytics_enabled => Off => Off
    datadog.trace.yii_analytics_sample_rate => 1 => 1
    datadog.trace.yii_enabled => On => On
    datadog.trace.zendframework_analytics_enabled => Off => Off
    datadog.trace.zendframework_analytics_sample_rate => 1 => 1
    datadog.trace.zendframework_enabled => On => On
    datadog.version => no value => no value
    datadog.web_analytics_enabled => Off => Off
    datadog.web_analytics_sample_rate => 1 => 1
    datadog.wordpress_analytics_enabled => Off => Off
    datadog.wordpress_analytics_sample_rate => 1 => 1
    datadog.yii_analytics_enabled => Off => Off
    datadog.yii_analytics_sample_rate => 1 => 1
    datadog.zendframework_analytics_enabled => Off => Off
    datadog.zendframework_analytics_sample_rate => 1 => 1
    ddtrace.cgroup_file => /proc/self/cgroup => /proc/self/cgroup
    ddtrace.disable => Off => Off
    ddtrace.request_init_hook => /opt/datadog-php/dd-trace-sources/bridge/dd_wrap_autoloader.php => /opt/datadog-php/dd-trace-sources/bridge/dd_wrap_autoloader.php
    

    Upgrading info

    I've just changed the Datadog tracer version and it stopped producing the traces. After enabling debug mode in the Agent I could see this errors message:

    datadog_1  | 2022-04-28 20:31:38 UTC | TRACE | ERROR | (pkg/trace/api/api.go:601 in handleTraces) | Cannot decode v0.4 traces payload: msgp: attempted to decode type "uint" with method for "str" at 0/0/Meta/trace_id
    
    Reviewed by simivar at 2022-04-28 22:10
  • 15. [Feature] Add phpStan stub file so

    Is your feature request related to a problem? Please describe. phpstan will statically analyse source code to find potential issues. Currently as ddtrace defines functions like trace_method and classes like SpanData that phpstan doesn't know about, it will complain loudly about any custom tracing code.

    Describe the solution you'd like An official stub file to give phpStan the information it needs would be fantastic.

    An initial file I've been using is: ddtrace.stub

    <?php
    
    namespace DDTrace;
    
    /**
     * @param array<mixed> $args
     */
    function trace_method(\DDTrace\SpanData $span, array $args, mixed $retval, ?\Exception $exception): void
    {
    }
    
    namespace DDTrace;
    class SpanData
    {
        public string $name;
        public string $resource;
        public string $service;
        public string $type;
        /** @var string[] $meta */
        public $meta;
        /** @var float[] $metrics */
        public $metrics;
    }
    
    Reviewed by NickStallman at 2022-04-21 23:43
  • 16. [Feature] Add Laravel Queue Job support

    Is your feature request related to a problem? Please describe. The Laravel integration for DD Trace is good, however it completely omits Queue support. Any jobs that run are not traced at all.

    Describe the solution you'd like Queue tracing can be accomplished with something along these lines:

    \DDTrace\trace_method(
        'Illuminate\Queue\Worker',
        'process',
        function (\DDTrace\SpanData $span, array $args) {
            list($connectionName, $job, $options) = $args;
    
            if (!($job instanceof \Illuminate\Contracts\Queue\Job)) {
                    return;
            }
    
            $payload = $job->payload();
            $span->resource = JobName::resolve($job->getName(), $payload);
            $span->name = 'laravel.queue.worker';
            $span->type = Type::MESSAGE_CONSUMER;
            $span->meta = [
                    'waitTime' => !empty($payload['pushedAt']) ? (microtime(true) - $payload['pushedAt']) : false,
                    'pushedAt' => !empty($payload['pushedAt']) ? date('c', $payload['pushedAt']) : false,
            ];
    });
    

    Additional context The aboove code has had some very basic tests and seems to work fine. Additional meta info might be handy but that's easy to add to.

    I ran the queue worker like this:

    DD_TRACE_CLI_ENABLED=true DD_TRACE_AUTO_FLUSH_ENABLED=true DD_TRACE_GENERATE_ROOT_SPAN=false ./artisan queue:work
    
    Reviewed by NickStallman at 2022-04-20 23:29
  • 17. [BUG] Potential incompatibility with ionCube Extension

    Bug description

    We are using the Unirgy Rapidflow module within a Magento 2 instance. This module is partially ionCube encoded. We've found that if the ddtrace extension is enabled, this module can cause segmentation faults in PHP when performing some operations. Disabling the ddtrace extension or setting ddtrace.enable to Off in PHP INI resolves the issues with the Rapidflow module.

    The initiation of this modules functionality is done through a web request which is handled by Apache and passed via mod_proxy_fcgi to PHP-FPM. Testing was done using a Docker container running locally on my development machine. We run similar setups in our production environment which is experiencing the exact same issue.

    More than willing to do debugging on my end given a bit of direction on what would be the most helpful. Given this is a local environment with a custom container image, I can install whatever tools necessary without any constraints.

    Note that we were aware of existing incompatibility with ionCube prior to version 0.71.0. We used the SourceGuardian extension with a SourceGuardian encoded version of this module to work around that problem. This worked until a recent update to the module where we started seeing segmentation faults. At that time, we updated to ddtrace 0.71.0 and the ionCube encoded version of the module along with the latest ionCube loader 11.0.1. This seemed to be fully working, but we started to find these segmentation faults while running some profiles even though other similar profiles are working without issue.

    Also note that because this is a local instance, I do not have the agent setup. This does not impact the ability to reproduce this issue so I did not take the time to get that setup.

    PHP version

    PHP 7.4.28 (cli) (built: Mar 29 2022 03:39:25) ( NTS ) Copyright (c) The PHP Group Zend Engine v3.4.0, Copyright (c) Zend Technologies with the ionCube PHP Loader + ionCube24 v11.0.1, Copyright (c) 2002-2022, by ionCube Ltd. with Zend OPcache v7.4.28, Copyright (c), by Zend Technologies with Xdebug v3.1.4, Copyright (c) 2002-2022, by Derick Rethans with ddtrace v0.72.0, Copyright Datadog, by Datadog

    Tracer version

    0.71.0, 0.72.0

    Installed extensions

    [PHP Modules] amqp apcu bcmath bz2 calendar Core ctype curl date ddtrace dom exif fileinfo filter ftp gd geoip gettext hash iconv imagick imap intl ionCube Loader json ldap libxml mbstring memcached mongodb mysqli mysqlnd openssl pcntl pcre PDO pdo_mysql pdo_pgsql pdo_sqlite pgsql Phar posix readline redis Reflection session shmop SimpleXML soap sockets sodium SPL sqlite3 standard sysvmsg sysvsem sysvshm tokenizer vips xdebug xml xmlreader xmlrpc xmlwriter xsl Zend OPcache zip zlib

    [Zend Modules] Xdebug Zend OPcache ddtrace the ionCube PHP Loader + ionCube24

    OS info

    PRETTY_NAME="Debian GNU/Linux 10 (buster)" NAME="Debian GNU/Linux" VERSION_ID="10" VERSION="10 (buster)" VERSION_CODENAME=buster

    Diagnostics and configuration

    Output of phpinfo() (ddtrace >= 0.47.0)

    PHP-7-4-28-phpinfo-

    Reviewed by nhughart at 2022-04-15 15:39
PHP APM (Alternative PHP Monitor)

APM (Alternative PHP Monitor) APM (Alternative PHP Monitor) is a monitoring extension enabling native Application Performance Management (APM) for PHP

May 19, 2022
Zipkin PHP is the official PHP Tracer implementation for Zipkin

Zipkin PHP is the official PHP Tracer implementation for Zipkin, supported by the OpenZipkin community. Installation composer require openz

May 14, 2022
Debug bar for PHP
Debug bar for PHP

PHP Debug Bar Displays a debug bar in the browser with information from php. No more var_dump() in your code! Features: Generic debug bar Easy to inte

May 26, 2022
Xdebug — Step Debugger and Debugging Aid for PHP

Xdebug Xdebug is a debugging tool for PHP. It provides step-debugging and a whole range of development aids, such as stack traces, a code profiler, fe

May 25, 2022
Kint - a powerful and modern PHP debugging tool.
Kint - a powerful and modern PHP debugging tool.

Kint - debugging helper for PHP developers What am I looking at? At first glance Kint is just a pretty replacement for var_dump(), print_r() and debug

May 14, 2022
😎 Tracy: the addictive tool to ease debugging PHP code for cool developers. Friendly design, logging, profiler, advanced features like debugging AJAX calls or CLI support. You will love it.
😎 Tracy: the addictive tool to ease debugging PHP code for cool developers. Friendly design, logging, profiler, advanced features like debugging AJAX calls or CLI support. You will love it.

Tracy - PHP debugger Introduction Tracy library is a useful helper for everyday PHP programmers. It helps you to: quickly detect and correct errors lo

May 20, 2022
PHP Benchmarking framework
PHP Benchmarking framework

PHPBench is a benchmark runner for PHP analogous to PHPUnit but for performance rather than correctness. Features include: Revolutions: Repeat your co

May 22, 2022
The Interactive PHP Debugger

The interactive PHP debugger Implemented as a SAPI module, phpdbg can exert complete control over the environment without impacting the functionality

Apr 26, 2022
Dontbug is a reverse debugger for PHP
Dontbug is a reverse debugger for PHP

Dontbug Debugger Dontbug is a reverse debugger (aka time travel debugger) for PHP. It allows you to record the execution of PHP scripts (in command li

May 8, 2022
PHP Debug Console
PHP Debug Console

PHP Console A web console to try your PHP code into Creating a test file or using php's interactive mode can be a bit cumbersome to try random php sni

May 14, 2022
Php Debugger to run in terminal to debug your code easily.
Php Debugger to run in terminal to debug your code easily.

What is Dephpugger? Dephpugger (read depugger) is an open source lib to make a debug in php direct in terminal, without necessary configure an IDE. Th

Jan 12, 2022
PCOV - CodeCoverage compatible driver for PHP

PCOV A self contained CodeCoverage compatible driver for PHP Requirements and Installation See INSTALL.md API /** * Shall start recording coverage in

May 6, 2022
Low-overhead sampling profiler for PHP 7+
Low-overhead sampling profiler for PHP 7+

phpspy phpspy is a low-overhead sampling profiler for PHP. For now, it works with Linux 3.2+ x86_64 non-ZTS PHP 7.0+ with CLI, Apache, and FPM SAPIs.

May 25, 2022
The VarDumper component provides mechanisms for walking through any arbitrary PHP variable. It provides a better dump() function that you can use instead of var_dump().

VarDumper Component The VarDumper component provides mechanisms for walking through any arbitrary PHP variable. It provides a better dump() function t

May 18, 2022
PHP errors for cool kids
PHP errors for cool kids

whoops PHP errors for cool kids whoops is an error handler framework for PHP. Out-of-the-box, it provides a pretty error interface that helps you debu

May 18, 2022
Clockwork - php dev tools in your browser - server-side component
Clockwork - php dev tools in your browser - server-side component

Clockwork is a development tool for PHP available right in your browser. Clockwork gives you an insight into your application runtime - including requ

May 18, 2022
Laravel Debugbar (Integrates PHP Debug Bar)
Laravel Debugbar (Integrates PHP Debug Bar)

Laravel Debugbar This is a package to integrate PHP Debug Bar with Laravel. It includes a ServiceProvider to register the debugbar and attach it to th

May 24, 2022
This package connects a Laravel Octance application with Tideways for PHP Monitoring, Profiling and Exception Tracking.

Tideways Middleware for Laravel Octane This package connects a Laravel Octance application with Tideways for PHP Monitoring, Profiling and Exception T

Jan 6, 2022
A tool to profile mysql queries in php env.
A tool to profile mysql queries in php env.

MysqlQueryProfiler This tool helps you to quickly profile a mysql query in a PHP 7.4+ environnement. You can also compare 2 queries. This image shows

Jul 30, 2021