Go version

1.23-1.25

Output of go env in your module/workspace:

Many different workspaces.

What did you do?

We're trying to compile FrankenPHP, either linking against libphp.a or libphp.so. We frequently encounter segmentation faults (and other weird behaviour with Go's gcc invocations), that only happen with FrankenPHP and other Go programs. Previous embed tests (embedding libphp.a/.so in a C/C++ application) work perfectly fine.

These issues range from failures to build, to startup relocation failures of standard libraries like libc, to startup relocation failures of libphp.so, to runtime startup failures. I have unfortunately never been successful in tracking them down, the only common denominator is that it only happens when Go programs link against C libraries. Sometimes the segmentation faults are reproducible (either by libc choice, or by optimisation options), other times they occur randomly and the next recompile produces a working binary.

What did you see happen?

https://github.com/php/frankenphp/issues/1829 https://github.com/php/frankenphp/issues/1755 and a whole bunch of other, intermittent failures that just randomly occurred and then went away.

What did you expect to see?

Compilation and run success, each time.

Comment From: linsite

more information will be great. can you provide the core dump?

3193.4 + dist/frankenphp-linux-x86_64 version
3195.1 ./build-static.sh: line 339: 524707 Segmentation fault      (core dumped) "dist/${bin}" version

Comment From: henderkes

Not from these particular failures as they happened in CI, but I can reproduce it locally tomorrow.

Comment From: ianlancetaylor

A failure to build the program seems very different from a crash while running the program.

Looking at http://github.com/static-php/spc-packages/actions/runs/16384852690/job/46304024267 it appears that the build failure is when running a program xcaddy. Does that program use any of the already built Go code in some way?

It would help if there is some way that people can locally reproduce the problem.

Comment From: henderkes

A failure to build the program seems very different from a crash while running the program.

The version check is part of the build and counts as failing to build the program, even though the binary was already linked. Xcaddy is a wrapper that downloads the modules, includes them for the build properly and then calls go build.

It would help if there is some way that people can locally reproduce the problem.

That's very simple, if you'd like! Clone the repository on the commit of the failed job and run bin/spp build --target=native-native-gnu.2.34 --phpv=8.3. It will build and fail the version check because it fails relocating libphp-zts-83.so. Just one example, I've had segmentation faults when trying to relocate libc too, or segmentation faults during initialization of the runtime.

I'll prepare a docker container to reproduce the particular one, if you'd like.

The other one is sadly not reproducible, while it segfaulted in the first CI run, it succeeded in the CI run right after (exactly the same environment, exactly the same code).

Comment From: cherrymui

I think the next step is to identify which binary segfaults. Is it one of the Go toolchain binaries? C toolchain binaries? Or some binaries that are built during the process? Thanks.

Comment From: henderkes

It's the binary built by go build (yes, it also happens when using go build, it's not related to xcaddy pulling in additional caddy modules).

Comment From: henderkes

Great, it no longer happens with FrankenPHP 1.9.0, that will complicate the reproduction a little bit.

Comment From: henderkes

https://github.com/static-php/spc-packages/releases/download/v0.1.0/frankenphp_libphp.zip

Found old binaries with the issue, though. You can create the core dump yourself or directly debug

LD_LIBRARY_PATH=./ ./frankenphp version

Works on any linux with glibc >= 2.34.

Comment From: seankhliao

is this #62130 ?

Comment From: henderkes

No, that's an issue that occurs during the runtime of the program, not at startup.

This is about all sorts of different segmentation faults that occur before our program ever gets to execute. The only common denominator I've found for these is Go, because I've never seen a C/C++ program run into the same issues. Both the embed test (look after compilation of shared extensions in the logs, that also links against libphp-zts-*.so or .a) and other compilations like nginx unit embedding php have never failed with segmentation faults before program start.

It also doesn't appear to be related to the specific libphp.a/libphp.so compiled. You can load the libphp-zts-83.so in the zip I've shared just fine with another program.

In this particular case, it fails relocating libphp-zts-83.so. It relocates libc and libm before, but I've also seen relocation failures happen on those.

[m@M-TH spc-packages]$ LD_LIBRARY_PATH=./ gdb ./frankenphp
GNU gdb (AlmaLinux) 14.2-4.1.el10_0
Copyright (C) 2023 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".
Type "show configuration" for configuration details.
For bug reporting instructions, please see:
<https://www.gnu.org/software/gdb/bugs/>.
Find the GDB manual and other documentation resources online at:
    <http://www.gnu.org/software/gdb/documentation/>.

For help, type "help".
Type "apropos word" to search for commands related to "word"...
Reading symbols from ./frankenphp...
(No debugging symbols found in ./frankenphp)
(gdb) run version
Starting program: /home/m/build/spc-packages/frankenphp version

Program received signal SIGSEGV, Segmentation fault.
0x0000000003babfc6 in ?? ()
(gdb) bt full
#0  0x0000000003babfc6 in ?? ()
No symbol table info available.
#1  0x00007ffff74af132 in ?? ()
No symbol table info available.
#2  0x00007fffffffd030 in ?? ()
No symbol table info available.
#3  0x00007ffff7fd96d1 in elf_machine_rela (map=<optimized out>, scope=<optimized out>, reloc=0x7ffff453fee0, sym=0x7ffff428d548, version=<optimized out>, reloc_addr_arg=0xffffffff, skip_ifunc=<optimized out>)
    at ../sysdeps/x86_64/dl-machine.h:308
        refsym = 0x7ffff428d548                                                                                                                                                                                                                       
        sym_map = <optimized out>
        value = <optimized out>
        reloc_addr = 0xffffffff                                                                                                                                                                                                                       
        r_type = 7
        reloc_addr = <optimized out>
        r_type = <optimized out>
        print_err = <optimized out>
        refsym = <optimized out>
        sym_map = <optimized out>
--Type <RET> for more, q to quit, c to continue without paging--
        value = <optimized out>
        strtab = <optimized out>
        fmt = <optimized out>
        td = <optimized out>
        strtab = <optimized out>
#4  elf_dynamic_do_Rela (map=0x7ffff7fc2080, scope=<optimized out>, reladdr=<optimized out>, relsize=<optimized out>, nrelative=<optimized out>, lazy=<optimized out>, skip_ifunc=<optimized out>)
    at /usr/src/debug/glibc-2.39-46.el10_0.alma.1.x86_64/elf/do-rel.h:147
        ndx = <optimized out>
        sym = 0x7ffff428d548                                                                                                                                                                                                                          
        r_addr_arg = 0xffffffff                                                                                                                                                                                                                       
        rversion = <optimized out>
        version = <optimized out>
        relative = <optimized out>
        end = <optimized out>
        l_addr = <optimized out>
        symtab = <optimized out>
        r2 = 0x7fffffffcec8                                                                                                                                                                                                                           
        r = 0x7ffff453fee0                                                                                                                                                                                                                            
--Type <RET> for more, q to quit, c to continue without paging--
        end2 = <optimized out>
        relative = <optimized out>
        r = <optimized out>
        end = <optimized out>
        l_addr = <optimized out>
        symtab = <optimized out>
        r2 = <optimized out>
        end2 = <optimized out>
        version = <optimized out>
        ndx = <optimized out>
        sym = <optimized out>
        r_addr_arg = <optimized out>
        rversion = <optimized out>
        sym_map = <optimized out>
        ndx = <optimized out>
        sym = <optimized out>
        r_addr_arg = <optimized out>
        sym_map = <optimized out>
--Type <RET> for more, q to quit, c to continue without paging--
#5  _dl_relocate_object (l=0x7ffff7fc2080, scope=<optimized out>, reloc_mode=<optimized out>, consider_profiling=<optimized out>) at dl-reloc.c:301
        ranges_index = <optimized out>
        ranges = {{start = 140737488342784, size = 140737288332212, nrelative = 0, lazy = 0}, {start = 140737488342736, size = 140737353908808, nrelative = 137438953472, lazy = -195821856}}
        edr_lazy = <optimized out>
        textrels = <optimized out>
        errstring = 0x0                                                                                                                                                                                                                               
        lazy = <optimized out>
        skip_ifunc = <optimized out>
        consider_symbind = <optimized out>
Backtrace stopped: frame did not save the PC
(gdb) info registers
rax            0x0                 0
rbx            0x7ffff453fee0      140737292533472
rcx            0xd                 13
rdx            0x7ffff428d548      140737289704776
rsi            0x1                 1
rdi            0x40000020          1073741856
rbp            0x7fffffffcf00      0x7fffffffcf00
rsp            0x7fffffffcef8      0x7fffffffcef8
r8             0x0                 0
r9             0x7ffff74af120      140737342271776
r10            0x7ffff7fc34a8      140737353888936
r11            0x7ffff7fc2080      140737353883776
r12            0x7ffff428d548      140737289704776
r13            0x7                 7
r14            0x22c900000007      38246683770887
r15            0x7ffff7fc2080      140737353883776
rip            0x3babfc6           0x3babfc6
eflags         0x10246             [ PF ZF IF RF ]
--Type <RET> for more, q to quit, c to continue without paging--q
Quit
(gdb) info sharedlibrary
From                To                  Syms Read   Shared Object Library
0x00007ffff7fcb000  0x00007ffff7ff051b  Yes         /lib64/ld-linux-x86-64.so.2                                                                                                                                                                       
0x00007ffff7182700  0x00007ffff7dffe83  No          ./libphp-zts-83.so                                                                                                                                                                                
0x00007ffff409f800  0x00007ffff41f4f6d  No          /lib64/libc.so.6                                                                                                                                                                                  
0x00007ffff3fdb1c0  0x00007ffff403fc0b  No          /lib64/libm.so.6

Comment From: seankhliao

If it no longer reproduces with the latest FrankenPHP, then it should no longer be an issue?

Comment From: henderkes

Like the title says, this is about a ton of similar issues. I've seen hundreds of builds with FrankenPHP segfault, sometimes randomly, sometimes reproducible, over the last months. I've seen a grand total of zero segmentation faults (before the program starts) in programs where CGo wasn't involved in the last two years.

And again, I don't see how this could possibly be directly related to FrankenPHP as the problems appear before it ever gets to run.

Comment From: linsite

And again, I don't see how this could possibly be directly related to FrankenPHP as the problems appear before it ever gets to run.

What I saw in the back trace doesn't support that. It seems that some code from libphp-zts tries to run right after (or in the middle of) the ELF relocation. I'm not familiar with PHP, but CGo and Go seem more innocent to me for now. As gdb shows that Go' runtime is not started yet. If the failure details including back trace in the building can be shared, that'll give us more information.

#0  0x0000000003babfc6 in ?? ()
#1  0x0000743ada456132 in php_base64_encode () from /data/g/lean/libphp-zts-83.so
#2  0x0000743adaf9733c in elf_machine_rela (skip_ifunc=<optimized out>, reloc_addr_arg=0x743adaf083a8 <php_base64_encode@got[plt]>, version=<optimized out>, sym=0x743ad7234548, reloc=0x743ad74e6ee0,
    scope=<optimized out>, map=<optimized out>) at ../sysdeps/x86_64/dl-machine.h:314
#3  elf_dynamic_do_Rela (skip_ifunc=<optimized out>, lazy=<optimized out>, nrelative=<optimized out>, relsize=<optimized out>, reladdr=<optimized out>, scope=<optimized out>, map=0x743adaf851d0)
    at ./elf/do-rel.h:147
#4  _dl_relocate_object (l=l@entry=0x743adaf851d0, scope=<optimized out>, reloc_mode=<optimized out>, consider_profiling=<optimized out>, consider_profiling@entry=0) at ./elf/dl-reloc.c:301
#5  0x0000743adafa9789 in dl_main (phdr=<optimized out>, phnum=<optimized out>, user_entry=<optimized out>, auxv=<optimized out>) at ./elf/rtld.c:2311
#6  0x0000743adafa5f46 in _dl_sysdep_start (start_argptr=start_argptr@entry=0x7ffeeca2ad40, dl_main=dl_main@entry=0x743adafa7af0 <dl_main>) at ../sysdeps/unix/sysv/linux/dl-sysdep.c:140
#7  0x0000743adafa775e in _dl_start_final (arg=0x7ffeeca2ad40) at ./elf/rtld.c:494
#8  _dl_start (arg=0x7ffeeca2ad40) at ./elf/rtld.c:581
#9  0x0000743adafa6548 in _start () from /lib64/ld-linux-x86-64.so.2
#10 0x0000000000000001 in ?? ()
#11 0x00007ffeeca2c809 in ?? ()
#12 0x0000000000000000 in ?? ()

Dump of assembler code for function php_base64_encode:
   0x0000743ada456120 <+0>:     endbr64
   0x0000743ada456124 <+4>:     push   %rbp
   0x0000743ada456125 <+5>:     mov    %rsp,%rbp
   0x0000743ada456128 <+8>:     mov    $0x40000020,%edi
   0x0000743ada45612d <+13>:    call   0x743adadabfc0 <zend_cpu_supports@plt>
=> 0x0000743ada456132 <+18>:    test   %eax,%eax
   0x0000743ada456134 <+20>:    je     0x743ada45613f <php_base64_encode+31>
   0x0000743ada456136 <+22>:    mov    0xaaf18b(%rip),%rax        # 0x743adaf052c8
   0x0000743ada45613d <+29>:    pop    %rbp
   0x0000743ada45613e <+30>:    ret
   0x0000743ada45613f <+31>:    mov    $0x200,%edi
   0x0000743ada456144 <+36>:    call   0x743adadabfc0 <zend_cpu_supports@plt>
   0x0000743ada456149 <+41>:    test   %eax,%eax
   0x0000743ada45614b <+43>:    je     0x743ada456156 <php_base64_encode+54>
   0x0000743ada45614d <+45>:    mov    0xaaf17c(%rip),%rax        # 0x743adaf052d0
   0x0000743ada456154 <+52>:    pop    %rbp
   0x0000743ada456155 <+53>:    ret
   0x0000743ada456156 <+54>:    lea    -0x58d(%rip),%rax        # 0x743ada455bd0
   0x0000743ada45615d <+61>:    pop    %rbp
   0x0000743ada45615e <+62>:    ret

Comment From: henderkes

Interesting, I wasn't aware that code can run during relocation. That would be code within libphp-zts.so, which I can't make much sense of, because if FrankenPHP hasn't started and it's automatically called by relocation, shouldn't the same code also run in a different program linking against the same libphp-zts.so? It still only happens when it's built by Go, not when built in a C/C++ program - before building FrankenPHP we ran this test with gcc, which successfully ran and prints hello.

Other users are also experiencing this build failure, like here in a static build (linking in libphp.a): https://github.com/php/frankenphp/issues/1829#issuecomment-3228996953. Once again only happening with FrankenPHP, not with the embed test.

Comment From: linsite

I've found a little detail about the issue. It turns out some functions can run in the middle of relocation in ELF.

readelf show that php_base64_encode is an IFUNC symbol:

8905: 0000000003256120    63 IFUNC   GLOBAL DEFAULT   13 php_base64_encode

According to the GCC document, the resolver of an IFUNC will be called during ELF loading.

ifunc ("resolver")

    The ifunc attribute is used to mark a function as an indirect function using the STT_GNU_IFUNC symbol type extension to the ELF 
standard. This allows the resolution of the symbol value to be determined dynamically at load time, and an optimized version of the 
routine to be selected for the particular processor or other system characteristics determined then. To use this attribute, first define the 
implementation functions available, and a resolver function that returns a pointer to the selected implementation function. The 
implementation functions’ declarations must match the API of the function being implemented. The resolver should be declared to be 
a function taking no arguments and returning a pointer to a function of the same type as the implementation.

Here is the definition of php_base64_encode_ex which is inlined into by php_base64_encode:

./ext/standard/base64.c:410:PHPAPI zend_string *php_base64_encode_ex(const unsigned char *str, size_t length, zend_long flags) __attribute__((ifunc("resolve_base64_encode")));

I guess this could be a wrong symbol resolving order. The real zend_cpu_supports, which is a PLT item, isn't resolved yet when resolve_base64_encode is running. I don't know if this can be related to CGO in any way.

A libphp-zts-83.so with symbols will be helpful. @henderkes

Comment From: henderkes

Hmm, I don't have any CI runs with debug symbols and therefore no segfaulting binaries with them. All the segfaulting runs from static binary creation (links against libphp.a) are created with -Os -g. Would that help already? It would be a frankenphp binary in that case, not linking against libphp.so.

I guess this could be a wrong symbol resolving order. The real zend_cpu_supports, which is a GOT item, isn't resolved yet when resolve_base64_encode is running. I don't know if this can be related to CGO in any way.

That would absolutely sound like a bug with php instead of CGo, but I can link a simple C program to that very same libphp-zts-83.so and it works: https://github.com/crazywhalecc/static-php-cli/blob/main/src/globals/common-tests/embed.c

Do ifunc symbols only run during relocation when they are indirectly referenced? Frankenphp uses more functions of libphp than the embed script.

Comment From: linsite

Yes, a static binary will be helpful, too.

Comment From: ianlancetaylor

It might be interesting to use go build -ldflags=-v to see exactly how the C linker is being invoked when producing the crashing binary. Perhaps the libraries are not being ordered in the same way as when building a C program.

Comment From: henderkes

Static linking:

[06:59:17] [I] [EXEC] go list -m github.com/dunglas/frankenphp@latest
[06:59:19] [D] Running command (no output) : pkg-config --static --cflags-only-other libbrotlicommon libbrotlidec libbrotlienc
[06:59:19] [D] Running command (no output) : pkg-config --static --libs-only-l libbrotlicommon libbrotlidec libbrotlienc
[06:59:19] [D] Running command (no output) : pkg-config --static --libs-only-other libbrotlicommon libbrotlidec libbrotlienc
[06:59:37] [D] Entering dir: /home/m/static-php-cli/buildroot/bin
[06:59:37] [I] [EXEC] xcaddy build --output frankenphp --with github.com/dunglas/frankenphp/caddy --with github.com/dunglas/mercure/caddy --with github.com/dunglas/vulcain/caddy --with github.com/dunglas/caddy-cbrotli
2025/09/11 13:59:37 [INFO] absolute output file path: /home/m/static-php-cli/buildroot/bin/frankenphp
2025/09/11 13:59:37 [INFO] Temporary folder: /tmp/buildenv_2025-09-11-1359.1645137240
2025/09/11 13:59:37 [INFO] Writing main module: /tmp/buildenv_2025-09-11-1359.1645137240/main.go
package main

import (
        caddycmd "github.com/caddyserver/caddy/v2/cmd"

        // plug in Caddy modules here
        _ "github.com/caddyserver/caddy/v2/modules/standard"
        _ "github.com/dunglas/frankenphp/caddy"
        _ "github.com/dunglas/mercure/caddy"
        _ "github.com/dunglas/vulcain/caddy"
        _ "github.com/dunglas/caddy-cbrotli"
)

func main() {
        caddycmd.Main()
}
2025/09/11 13:59:37 [INFO] Initializing Go module
2025/09/11 13:59:37 [INFO] exec (timeout=0s): /home/m/static-php-cli/pkgroot/x86_64-linux/go-xcaddy/bin/go mod init caddy
go: creating new go.mod: module caddy
go: to add module requirements and sums:
        go mod tidy
2025/09/11 13:59:37 [INFO] Pinning versions
2025/09/11 13:59:37 [INFO] exec (timeout=0s): /home/m/static-php-cli/pkgroot/x86_64-linux/go-xcaddy/bin/go get -buildmode=pie -ldflags -v -linkmode=external -extldflags '-pie -Wl,
--dynamic-list=/home/m/static-php-cli/buildroot/lib/libphp.a.dynsym' -X 'github.com/caddyserver/caddy/v2.CustomVersion=FrankenPHP v1.9.1 PHP 8.4.12 Caddy' -tags=nobadger,nomysql,nopgx -v github.com/caddyserver/caddy/v2
go: downloading github.com/caddyserver/caddy v1.0.5
go: downloading github.com/caddyserver/caddy/v2 v2.10.2
go: downloading github.com/caddyserver/certmagic v0.24.0
go: downloading github.com/cespare/xxhash/v2 v2.3.0
go: downloading github.com/google/uuid v1.6.0
go: downloading github.com/prometheus/client_golang v1.23.0
go: downloading github.com/quic-go/quic-go v0.54.0
go: downloading go.uber.org/zap v1.27.0
go: downloading go.uber.org/zap/exp v0.3.0
go: downloading golang.org/x/sys v0.34.0
go: downloading golang.org/x/term v0.33.0
go: downloading golang.org/x/time v0.12.0
go: downloading github.com/cespare/xxhash v1.1.0
go: downloading github.com/caddyserver/zerossl v0.1.3
go: downloading github.com/klauspost/cpuid/v2 v2.3.0
go: downloading github.com/libdns/libdns v1.1.0
go: downloading github.com/mholt/acmez/v3 v3.1.2
go: downloading github.com/miekg/dns v1.1.63
go: downloading github.com/zeebo/blake3 v0.2.4
go: downloading golang.org/x/crypto v0.40.0
go: downloading golang.org/x/net v0.42.0
go: downloading github.com/beorn7/perks v1.0.1
go: downloading github.com/prometheus/client_model v0.6.2
go: downloading github.com/prometheus/common v0.65.0
go: downloading github.com/prometheus/procfs v0.16.1
go: downloading google.golang.org/protobuf v1.36.6
go: downloading go.uber.org/multierr v1.11.0
go: downloading github.com/quic-go/qpack v0.5.1
go: downloading github.com/francoispqt/gojay v1.2.13
go: downloading go.uber.org/mock v0.5.2
go: downloading golang.org/x/tools v0.34.0
go: downloading golang.org/x/text v0.27.0
go: downloading github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822
go: downloading golang.org/x/mod v0.25.0
go: downloading golang.org/x/sync v0.16.0
go: added github.com/beorn7/perks v1.0.1
go: added github.com/caddyserver/caddy/v2 v2.10.2
go: added github.com/caddyserver/certmagic v0.24.0
go: added github.com/caddyserver/zerossl v0.1.3
go: added github.com/cespare/xxhash/v2 v2.3.0
go: added github.com/francoispqt/gojay v1.2.13
go: added github.com/google/uuid v1.6.0
go: added github.com/klauspost/cpuid/v2 v2.3.0
go: added github.com/libdns/libdns v1.1.0
go: added github.com/mholt/acmez/v3 v3.1.2
go: added github.com/miekg/dns v1.1.63
go: added github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822
go: added github.com/prometheus/client_golang v1.23.0
go: added github.com/prometheus/client_model v0.6.2
go: added github.com/prometheus/common v0.65.0
go: added github.com/prometheus/procfs v0.16.1
go: added github.com/quic-go/qpack v0.5.1
go: added github.com/quic-go/quic-go v0.54.0
go: added github.com/zeebo/blake3 v0.2.4
go: added go.uber.org/mock v0.5.2
go: added go.uber.org/multierr v1.11.0
go: added go.uber.org/zap v1.27.0
go: added go.uber.org/zap/exp v0.3.0
go: added golang.org/x/crypto v0.40.0
go: added golang.org/x/mod v0.25.0
go: added golang.org/x/net v0.42.0
go: added golang.org/x/sync v0.16.0
go: added golang.org/x/sys v0.34.0
go: added golang.org/x/term v0.33.0
go: added golang.org/x/text v0.27.0
go: added golang.org/x/time v0.12.0
go: added golang.org/x/tools v0.34.0
go: added google.golang.org/protobuf v1.36.6
2025/09/11 14:00:00 [INFO] exec (timeout=0s): /home/m/static-php-cli/pkgroot/x86_64-linux/go-xcaddy/bin/go get -buildmode=pie -ldflags -v -linkmode=external -extldflags '-pie -Wl,
--dynamic-list=/home/m/static-php-cli/buildroot/lib/libphp.a.dynsym' -X 'github.com/caddyserver/caddy/v2.CustomVersion=FrankenPHP v1.9.1 PHP 8.4.12 Caddy' -tags=nobadger,nomysql,nopgx -v github.com/dunglas/frankenphp/caddy github.com/caddyserver/caddy/v2
go: downloading github.com/dunglas/frankenphp v1.9.1
go: downloading github.com/dunglas/frankenphp/caddy v1.9.1
go: accepting indirect upgrade from github.com/miekg/dns@v1.1.63 to v1.1.68
go: accepting indirect upgrade from github.com/prometheus/procfs@v0.16.1 to v0.17.0
go: accepting indirect upgrade from go.uber.org/mock@v0.5.2 to v0.6.0
go: accepting indirect upgrade from golang.org/x/crypto@v0.40.0 to v0.41.0
go: accepting indirect upgrade from golang.org/x/mod@v0.25.0 to v0.27.0
go: accepting indirect upgrade from golang.org/x/net@v0.42.0 to v0.43.0
go: accepting indirect upgrade from golang.org/x/sys@v0.34.0 to v0.35.0
go: accepting indirect upgrade from golang.org/x/term@v0.33.0 to v0.34.0
go: accepting indirect upgrade from golang.org/x/text@v0.27.0 to v0.28.0
go: accepting indirect upgrade from golang.org/x/tools@v0.34.0 to v0.36.0
go: accepting indirect upgrade from google.golang.org/protobuf@v1.36.6 to v1.36.8
go: downloading github.com/dunglas/mercure/caddy v0.20.2
go: downloading github.com/dustin/go-humanize v1.0.1
go: downloading github.com/Masterminds/sprig/v3 v3.3.0
go: downloading github.com/google/cel-go v0.26.1
go: downloading github.com/KimMachineGun/automemlimit v0.7.4
go: downloading github.com/aryann/difflib v0.0.0-20210328193216-ff5ff6dc229b
go: downloading github.com/miekg/dns v1.1.68
go: downloading github.com/spf13/pflag v1.0.7
go: downloading go.uber.org/automaxprocs v1.6.0
go: downloading golang.org/x/crypto v0.41.0
go: downloading golang.org/x/net v0.43.0
go: downloading golang.org/x/crypto/x509roots/fallback v0.0.0-20250826074233-8f580defa01d
go: downloading github.com/dunglas/mercure v0.20.2
go: downloading golang.org/x/sys v0.35.0
go: downloading golang.org/x/term v0.34.0
go: downloading github.com/BurntSushi/toml v1.5.0
go: downloading github.com/smallstep/certificates v0.28.4
go: downloading github.com/yuin/goldmark v1.7.13
go: downloading github.com/smallstep/truststore v0.13.0
go: downloading github.com/yuin/goldmark-highlighting/v2 v2.0.0-20230729083705-37449abec8cc
go: downloading github.com/alecthomas/chroma/v2 v2.20.0
go: downloading github.com/cloudflare/circl v1.6.1
go: downloading go.step.sm/crypto v0.70.0
go: downloading github.com/tailscale/tscert v0.0.0-20240608151842-d3f834017e53
go: downloading github.com/maypok86/otter v1.2.4
go: downloading gopkg.in/yaml.v3 v3.0.1
go: downloading github.com/prometheus/procfs v0.17.0
go: downloading google.golang.org/protobuf v1.36.8
go: downloading github.com/cpuguy83/go-md2man/v2 v2.0.7
go: downloading github.com/inconshreveable/mousetrap v1.1.0
go: downloading golang.org/x/tools v0.36.0
go: downloading golang.org/x/text v0.28.0
go: downloading dario.cat/mergo v1.0.2
go: downloading github.com/Masterminds/goutils v1.1.1
go: downloading github.com/huandu/xstrings v1.5.0
go: downloading github.com/mitchellh/copystructure v1.2.0
go: downloading github.com/shopspring/decimal v1.4.0
go: downloading github.com/spf13/cast v1.9.2
go: downloading go.uber.org/mock v0.6.0
go: downloading cel.dev/expr v0.24.0
go: downloading google.golang.org/genproto/googleapis/api v0.0.0-20250826171959-ef028d996bc1
go: downloading github.com/stoewer/go-strcase v1.3.1
go: downloading github.com/antlr4-go/antlr/v4 v4.13.1
go: downloading github.com/pbnjay/memory v0.0.0-20210728143218-7b4eea64cf58
go: downloading github.com/MicahParks/keyfunc/v3 v3.6.1
go: downloading howett.net/plist v1.0.1
go: downloading github.com/smallstep/nosql v0.7.0
go: downloading github.com/pkg/errors v0.9.1
go: downloading github.com/smallstep/cli-utils v0.12.1
go: downloading google.golang.org/genproto v0.0.0-20190306203927-b5d61aea6440
go: downloading github.com/smallstep/linkedca v0.23.0
go: downloading google.golang.org/grpc v1.75.0
go: downloading github.com/slackhq/nebula v1.9.6
go: downloading github.com/russross/blackfriday/v2 v2.1.0
go: downloading golang.org/x/mod v0.27.0
go: downloading github.com/dlclark/regexp2 v1.11.5
go: downloading github.com/ccoveille/go-safecast v1.6.1
go: downloading github.com/smallstep/pkcs7 v0.2.1
go: downloading github.com/gofrs/uuid/v5 v5.3.2
go: downloading github.com/smallstep/scep v0.0.0-20250318231241-a25cabb69492
go: downloading github.com/gorilla/handlers v1.5.2
go: downloading github.com/golang-jwt/jwt/v5 v5.3.0
go: downloading github.com/gorilla/mux v1.8.1
go: downloading github.com/hashicorp/golang-lru v1.0.2
go: downloading github.com/kevburnsjr/skipfilter v0.0.1
go: downloading github.com/russross/blackfriday v1.5.2
go: downloading github.com/spf13/viper v1.20.1
go: downloading github.com/unrolled/secure v1.17.0
go: downloading github.com/yosida95/uritemplate/v3 v3.0.2
go: downloading go.etcd.io/bbolt v1.4.3
go: downloading github.com/gofrs/uuid v4.4.0+incompatible
go: downloading github.com/mitchellh/reflectwalk v1.0.2
go: downloading github.com/go-jose/go-jose/v3 v3.0.4
go: downloading golang.org/x/exp v0.0.0-20250819193227-8b4c13bb791b
go: downloading google.golang.org/api v0.248.0
go: downloading github.com/coreos/go-oidc/v3 v3.15.0
go: downloading github.com/rs/xid v1.6.0
go: downloading filippo.io/edwards25519 v1.1.0
go: downloading github.com/Microsoft/go-winio v0.6.2
go: downloading github.com/mitchellh/go-ps v1.0.0
go: downloading github.com/MicahParks/jwkset v0.9.6
go: downloading github.com/urfave/cli v1.22.17
go: downloading github.com/chzyer/readline v1.5.1
go: downloading github.com/manifoldco/promptui v0.9.0
go: downloading google.golang.org/grpc/cmd/protoc-gen-go-grpc v1.5.1
go: downloading github.com/felixge/httpsnoop v1.0.4
go: downloading github.com/RoaringBitmap/roaring v1.9.4
go: downloading github.com/MauriceGit/skiplist v0.0.0-20211105230623-77f5c8d3e145
go: downloading github.com/dolthub/maphash v0.1.0
go: downloading github.com/gammazero/deque v1.1.0
go: downloading github.com/fsnotify/fsnotify v1.9.0
go: downloading github.com/go-viper/mapstructure/v2 v2.4.0
go: downloading github.com/sagikazarmark/locafero v0.10.0
go: downloading github.com/spf13/afero v1.14.0
go: downloading github.com/dgraph-io/badger v1.6.2
go: downloading github.com/dgraph-io/badger/v2 v2.2007.4
go: downloading github.com/go-sql-driver/mysql v1.9.3
go: downloading github.com/jackc/pgx/v5 v5.7.5
go: downloading google.golang.org/genproto/googleapis/rpc v0.0.0-20250826171959-ef028d996bc1
go: downloading github.com/go-jose/go-jose/v4 v4.1.2
go: downloading golang.org/x/oauth2 v0.30.0
go: downloading github.com/subosito/gotenv v1.6.0
go: downloading github.com/pelletier/go-toml/v2 v2.2.4
go: downloading github.com/mgutz/ansi v0.0.0-20200706080929-d51e80ef957d
go: downloading github.com/sourcegraph/conc v0.3.1-0.20240121214520-5f936abd7ae8
go: downloading github.com/shurcooL/sanitized_anchor_name v1.0.0
go: downloading github.com/dgraph-io/ristretto v0.2.0
go: downloading github.com/golang/protobuf v1.5.4
go: downloading github.com/AndreasBriese/bbloom v0.0.0-20190825152654-46b345b51c96
go: downloading github.com/dgryski/go-farm v0.0.0-20240924180020-3414d57e47da
go: downloading github.com/golang/snappy v1.0.0
go: downloading github.com/klauspost/compress v1.18.0
go: downloading github.com/jackc/pgpassfile v1.0.0
go: downloading github.com/jackc/pgservicefile v0.0.0-20240606120523-5a60cdf6a761
go: downloading github.com/jackc/puddle/v2 v2.2.2
go: downloading github.com/mattn/go-colorable v0.1.14
go: downloading github.com/mattn/go-isatty v0.0.20
go: downloading github.com/googleapis/gax-go/v2 v2.15.0
go: downloading cloud.google.com/go/auth v0.16.5
go: downloading cloud.google.com/go/auth/oauth2adapt v0.2.8
go: downloading cloud.google.com/go/compute/metadata v0.8.0
go: downloading github.com/googleapis/enterprise-certificate-proxy v0.3.6
go: downloading go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.62.0
go: downloading github.com/google/s2a-go v0.1.9
go: downloading cloud.google.com/go v0.37.0
go: downloading github.com/googleapis/gax-go v2.0.0+incompatible
go: downloading go.opentelemetry.io/otel/trace v1.37.0
go: downloading go.opentelemetry.io/otel v1.37.0
go: downloading go.opentelemetry.io/otel/metric v1.37.0
go: downloading github.com/go-logr/logr v1.4.3
go: downloading go.opentelemetry.io/auto/sdk v1.1.0
go: downloading github.com/go-logr/stdr v1.2.2
go: downloading github.com/mschoch/smat v0.2.0
go: downloading github.com/bits-and-blooms/bitset v1.24.0
go: downloading google.golang.org/genproto v0.0.0-20250603155806-513f23925822
go: downloading cloud.google.com/go v0.120.0
go: upgraded cloud.google.com/go/auth v0.16.2 => v0.16.5
go: upgraded cloud.google.com/go/compute/metadata v0.7.0 => v0.8.0
go: upgraded dario.cat/mergo v1.0.1 => v1.0.2
go: upgraded github.com/Masterminds/semver/v3 v3.3.0 => v3.4.0
go: added github.com/MauriceGit/skiplist v0.0.0-20211105230623-77f5c8d3e145
go: added github.com/MicahParks/jwkset v0.9.6
go: added github.com/MicahParks/keyfunc/v3 v3.6.1
go: upgraded github.com/Microsoft/go-winio v0.6.0 => v0.6.2
go: added github.com/RoaringBitmap/roaring v1.9.4
go: upgraded github.com/antlr4-go/antlr/v4 v4.13.0 => v4.13.1
go: added github.com/bits-and-blooms/bitset v1.24.0
go: upgraded github.com/coreos/go-oidc/v3 v3.14.1 => v3.15.0
go: upgraded github.com/dgryski/go-farm v0.0.0-20200201041132-a6ae2369ad13 => v0.0.0-20240924180020-3414d57e47da
go: added github.com/dolthub/maphash v0.1.0
go: added github.com/dunglas/frankenphp v1.9.1
go: added github.com/dunglas/frankenphp/caddy v1.9.1
go: added github.com/dunglas/mercure v0.20.2
go: added github.com/dunglas/mercure/caddy v0.20.2
go: upgraded github.com/fsnotify/fsnotify v1.4.7 => v1.9.0
go: added github.com/gammazero/deque v1.1.0
go: upgraded github.com/go-jose/go-jose/v4 v4.0.5 => v4.1.2
go: upgraded github.com/go-sql-driver/mysql v1.8.1 => v1.9.3
go: added github.com/go-viper/mapstructure/v2 v2.4.0
go: added github.com/gofrs/uuid/v5 v5.3.2
go: added github.com/golang-jwt/jwt/v5 v5.3.0
go: upgraded github.com/golang/snappy v0.0.4 => v1.0.0
go: upgraded github.com/google/cel-go v0.26.0 => v0.26.1
go: upgraded github.com/googleapis/gax-go/v2 v2.14.2 => v2.15.0
go: added github.com/gorilla/handlers v1.5.2
go: added github.com/gorilla/mux v1.8.1
go: added github.com/hashicorp/golang-lru v1.0.2
go: upgraded github.com/jackc/pgservicefile v0.0.0-20221227161230-091c0ba34f0a => v0.0.0-20240606120523-5a60cdf6a761
go: upgraded github.com/jackc/pgx/v5 v5.6.0 => v5.7.5
go: upgraded github.com/jackc/puddle/v2 v2.2.1 => v2.2.2
go: added github.com/kevburnsjr/skipfilter v0.0.1
go: upgraded github.com/mattn/go-colorable v0.1.13 => v0.1.14
go: added github.com/maypok86/otter v1.2.4
go: upgraded github.com/miekg/dns v1.1.63 => v1.1.68
go: added github.com/mschoch/smat v0.2.0
go: added github.com/pelletier/go-toml/v2 v2.2.4
go: upgraded github.com/prometheus/procfs v0.16.1 => v0.17.0
go: added github.com/sagikazarmark/locafero v0.10.0
go: upgraded github.com/slackhq/nebula v1.9.5 => v1.9.6
go: upgraded github.com/smallstep/scep v0.0.0-20240926084937-8cf1ca453101 => v0.0.0-20250318231241-a25cabb69492
go: added github.com/sourcegraph/conc v0.3.1-0.20240121214520-5f936abd7ae8
go: added github.com/spf13/afero v1.14.0
go: upgraded github.com/spf13/cast v1.7.0 => v1.9.2
go: added github.com/spf13/viper v1.20.1
go: upgraded github.com/stoewer/go-strcase v1.2.0 => v1.3.1
go: added github.com/subosito/gotenv v1.6.0
go: added github.com/unrolled/secure v1.17.0
go: added github.com/yosida95/uritemplate/v3 v3.0.2
go: upgraded go.etcd.io/bbolt v1.3.10 => v1.4.3
go: upgraded go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.61.0 => v0.62.0
go: upgraded go.step.sm/crypto v0.67.0 => v0.70.0
go: upgraded go.uber.org/mock v0.5.2 => v0.6.0
go: upgraded golang.org/x/crypto v0.40.0 => v0.41.0
go: upgraded golang.org/x/crypto/x509roots/fallback v0.0.0-20250305170421-49bf5b80c810 => v0.0.0-20250826074233-8f580defa01d
go: upgraded golang.org/x/exp v0.0.0-20250408133849-7e4ce0ab07d0 => v0.0.0-20250819193227-8b4c13bb791b
go: upgraded golang.org/x/mod v0.25.0 => v0.27.0
go: upgraded golang.org/x/net v0.42.0 => v0.43.0
go: upgraded golang.org/x/sys v0.34.0 => v0.35.0
go: upgraded golang.org/x/term v0.33.0 => v0.34.0
go: upgraded golang.org/x/text v0.27.0 => v0.28.0
go: upgraded golang.org/x/tools v0.34.0 => v0.36.0
go: upgraded google.golang.org/api v0.240.0 => v0.248.0
go: upgraded google.golang.org/genproto/googleapis/api v0.0.0-20250603155806-513f23925822 => v0.0.0-20250826171959-ef028d996bc1
go: upgraded google.golang.org/genproto/googleapis/rpc v0.0.0-20250603155806-513f23925822 => v0.0.0-20250826171959-ef028d996bc1
go: upgraded google.golang.org/grpc v1.73.0 => v1.75.0
go: upgraded google.golang.org/protobuf v1.36.6 => v1.36.8
go: upgraded howett.net/plist v1.0.0 => v1.0.1
2025/09/11 14:01:05 [INFO] exec (timeout=0s): /home/m/static-php-cli/pkgroot/x86_64-linux/go-xcaddy/bin/go get -buildmode=pie -ldflags -v -linkmode=external -extldflags '-pie -Wl,
--dynamic-list=/home/m/static-php-cli/buildroot/lib/libphp.a.dynsym' -X 'github.com/caddyserver/caddy/v2.CustomVersion=FrankenPHP v1.9.1 PHP 8.4.12 Caddy' -tags=nobadger,nomysql,nopgx -v github.com/dunglas/mercure/caddy github.com/caddyserver/caddy/v2
2025/09/11 14:01:09 [INFO] exec (timeout=0s): /home/m/static-php-cli/pkgroot/x86_64-linux/go-xcaddy/bin/go get -buildmode=pie -ldflags -v -linkmode=external -extldflags '-pie -Wl,
--dynamic-list=/home/m/static-php-cli/buildroot/lib/libphp.a.dynsym' -X 'github.com/caddyserver/caddy/v2.CustomVersion=FrankenPHP v1.9.1 PHP 8.4.12 Caddy' -tags=nobadger,nomysql,nopgx -v github.com/dunglas/vulcain/caddy github.com/caddyserver/caddy/v2
go: downloading github.com/dunglas/vulcain/caddy v1.2.1
go: downloading github.com/dunglas/vulcain v1.2.1
go: downloading github.com/getkin/kin-openapi v0.133.0
go: downloading github.com/tidwall/gjson v1.18.0
go: downloading github.com/dunglas/httpsfv v1.1.0
go: downloading github.com/tidwall/sjson v1.2.5
go: downloading github.com/tidwall/pretty v1.2.1
go: downloading github.com/tidwall/match v1.1.1
go: downloading github.com/woodsbury/decimal128 v1.4.0
go: downloading github.com/mohae/deepcopy v0.0.0-20170929034955-c48cc78d4826
go: downloading github.com/oasdiff/yaml v0.0.0-20250309154309-f31be36b4037
go: downloading github.com/go-openapi/jsonpointer v0.21.2
go: downloading github.com/perimeterx/marshmallow v1.1.5
go: downloading github.com/go-openapi/swag v0.23.1
go: downloading github.com/oasdiff/yaml3 v0.0.0-20250309153720-d2182401db90
go: downloading github.com/mailru/easyjson v0.9.0
go: downloading github.com/josharian/intern v1.0.0
2025/09/11 14:01:26 [INFO] exec (timeout=0s): /home/m/static-php-cli/pkgroot/x86_64-linux/go-xcaddy/bin/go get -buildmode=pie -ldflags -v -linkmode=external -extldflags '-pie -Wl,
--dynamic-list=/home/m/static-php-cli/buildroot/lib/libphp.a.dynsym' -X 'github.com/caddyserver/caddy/v2.CustomVersion=FrankenPHP v1.9.1 PHP 8.4.12 Caddy' -tags=nobadger,nomysql,nopgx -v github.com/dunglas/caddy-cbrotli github.com/caddyserver/caddy/v2
go: downloading github.com/dunglas/caddy-cbrotli v1.0.1
go: downloading github.com/google/brotli/go/cbrotli v1.1.0
2025/09/11 14:01:35 [INFO] exec (timeout=0s): /home/m/static-php-cli/pkgroot/x86_64-linux/go-xcaddy/bin/go get -buildmode=pie -ldflags -v -linkmode=external -extldflags '-pie -Wl,
--dynamic-list=/home/m/static-php-cli/buildroot/lib/libphp.a.dynsym' -X 'github.com/caddyserver/caddy/v2.CustomVersion=FrankenPHP v1.9.1 PHP 8.4.12 Caddy' -tags=nobadger,nomysql,nopgx -v
go: downloading github.com/go-chi/chi/v5 v5.2.3
go: downloading gopkg.in/natefinch/lumberjack.v2 v2.2.1
go: downloading github.com/fxamacker/cbor/v2 v2.9.0
go: downloading github.com/google/go-tpm v0.9.5
go: downloading github.com/smallstep/go-attestation v0.4.4-0.20241119153605-2306d5b464ca
go: downloading github.com/pires/go-proxyproto v0.8.1
go: downloading go.opentelemetry.io/contrib/propagators/autoprop v0.62.0
go: downloading go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.37.0
go: downloading go.opentelemetry.io/otel/sdk v1.37.0
go: downloading github.com/sirupsen/logrus v1.9.3
go: downloading go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.37.0
go: downloading github.com/x448/float16 v0.8.4
go: downloading go.opentelemetry.io/contrib/propagators/ot v1.37.0
go: downloading go.opentelemetry.io/contrib/propagators/b3 v1.37.0
go: downloading go.opentelemetry.io/contrib/propagators/aws v1.37.0
go: downloading go.opentelemetry.io/contrib/propagators/jaeger v1.37.0
go: downloading go.opentelemetry.io/proto/otlp v1.7.1
go: downloading github.com/cenkalti/backoff/v5 v5.0.3
go: downloading github.com/google/go-tspi v0.3.0
go: downloading github.com/grpc-ecosystem/grpc-gateway/v2 v2.27.2
go: downloading github.com/google/certificate-transparency-go v1.3.2
go: downloading github.com/grpc-ecosystem/grpc-gateway v1.5.0
2025/09/11 14:01:50 [INFO] Build environment ready
2025/09/11 14:01:50 [INFO] Building Caddy
2025/09/11 14:01:50 [INFO] exec (timeout=0s): /home/m/static-php-cli/pkgroot/x86_64-linux/go-xcaddy/bin/go mod tidy -e
go: downloading github.com/stretchr/testify v1.11.1
go: downloading go.uber.org/goleak v1.3.0
go: downloading github.com/google/go-cmp v0.7.0
go: downloading github.com/kylelemons/godebug v1.1.0
go: downloading gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c
go: downloading github.com/go-test/deep v1.0.8
go: downloading github.com/ugorji/go/codec v1.2.7
go: downloading github.com/smallstep/assert v0.0.0-20200723003110-82e2b9b3b262
go: downloading github.com/zeebo/assert v1.1.0
go: downloading github.com/prashantv/gostub v1.1.0
go: downloading github.com/frankban/quicktest v1.14.6
go: downloading github.com/alecthomas/assert/v2 v2.11.0
go: downloading github.com/google/go-tpm-tools v0.4.5
go: downloading github.com/peterbourgon/diskv/v3 v3.0.1
go: downloading github.com/schollz/jsonstore v1.1.0
go: downloading go.opentelemetry.io/otel/sdk/metric v1.37.0
go: downloading github.com/chzyer/test v1.0.0
go: downloading github.com/aws/aws-sdk-go-v2/config v1.31.0
go: downloading github.com/aws/aws-sdk-go-v2/service/kms v1.44.0
go: downloading cloud.google.com/go/kms v1.22.0
go: downloading github.com/alecthomas/repr v0.5.1
go: downloading github.com/kr/pretty v0.3.1
go: downloading github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc
go: downloading github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2
go: downloading github.com/zeebo/pcg v1.0.1
go: downloading github.com/chzyer/logex v1.2.1
go: downloading github.com/hexops/gotextdiff v1.0.3
go: downloading github.com/google/btree v1.1.3
go: downloading gonum.org/v1/gonum v0.16.0
go: downloading github.com/aws/aws-sdk-go-v2 v1.38.0
go: downloading github.com/OneOfOne/xxhash v1.2.2
go: downloading github.com/spaolacci/murmur3 v1.1.0
go: downloading github.com/kr/text v0.2.0
go: downloading github.com/rogpeppe/go-internal v1.13.1
go: downloading cloud.google.com/go/longrunning v0.6.7
go: downloading cloud.google.com/go/iam v1.5.2
go: downloading go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.61.0
go: downloading github.com/aws/aws-sdk-go-v2/credentials v1.18.4
go: downloading github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.18.3
go: downloading github.com/aws/aws-sdk-go-v2/internal/ini v1.8.3
go: downloading github.com/aws/aws-sdk-go-v2/service/sso v1.28.0
go: downloading github.com/aws/aws-sdk-go-v2/service/ssooidc v1.33.0
go: downloading github.com/aws/aws-sdk-go-v2/service/sts v1.37.0
go: downloading github.com/aws/smithy-go v1.22.5
go: downloading github.com/aws/aws-sdk-go-v2/internal/configsources v1.4.3
go: downloading github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.7.3
go: downloading github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.13.0
go: downloading github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.13.3
2025/09/11 14:02:01 [INFO] exec (timeout=0s): /home/m/static-php-cli/pkgroot/x86_64-linux/go-xcaddy/bin/go build -buildmode=pie -ldflags -v -linkmode=external -extldflags '-pie -W
l,--dynamic-list=/home/m/static-php-cli/buildroot/lib/libphp.a.dynsym' -X 'github.com/caddyserver/caddy/v2.CustomVersion=FrankenPHP v1.9.1 PHP 8.4.12 Caddy' -tags=nobadger,nomysql,nopgx -o /home/m/static-php-cli/buildroot/bin/frankenphp
# caddy
build mode: pie, symbol table: on, DWARF: on
HEADER = -H5 -T0x401000 -R0x1000
host obj copy: $WORK/b167/_pkg_.a(_x001.o) from pkg net -> /tmp/go-link-2048763165/000000.o
host obj copy: $WORK/b167/_pkg_.a(_x002.o) from pkg net -> /tmp/go-link-2048763165/000001.o
host obj copy: $WORK/b167/_pkg_.a(_x003.o) from pkg net -> /tmp/go-link-2048763165/000002.o
host obj copy: $WORK/b167/_pkg_.a(_x004.o) from pkg net -> /tmp/go-link-2048763165/000003.o
host obj copy: $WORK/b167/_pkg_.a(_x005.o) from pkg net -> /tmp/go-link-2048763165/000004.o
host obj copy: $WORK/b167/_pkg_.a(_x006.o) from pkg net -> /tmp/go-link-2048763165/000005.o
host obj copy: $WORK/b843/_pkg_.a(_x001.o) from pkg github.com/dunglas/frankenphp -> /tmp/go-link-2048763165/000006.o
host obj copy: $WORK/b843/_pkg_.a(_x002.o) from pkg github.com/dunglas/frankenphp -> /tmp/go-link-2048763165/000007.o
host obj copy: $WORK/b843/_pkg_.a(_x003.o) from pkg github.com/dunglas/frankenphp -> /tmp/go-link-2048763165/000008.o
host obj copy: $WORK/b843/_pkg_.a(_x004.o) from pkg github.com/dunglas/frankenphp -> /tmp/go-link-2048763165/000009.o
host obj copy: $WORK/b843/_pkg_.a(_x005.o) from pkg github.com/dunglas/frankenphp -> /tmp/go-link-2048763165/000010.o
host obj copy: $WORK/b843/_pkg_.a(_x006.o) from pkg github.com/dunglas/frankenphp -> /tmp/go-link-2048763165/000011.o
host obj copy: $WORK/b843/_pkg_.a(_x007.o) from pkg github.com/dunglas/frankenphp -> /tmp/go-link-2048763165/000012.o
host obj copy: $WORK/b843/_pkg_.a(_x008.o) from pkg github.com/dunglas/frankenphp -> /tmp/go-link-2048763165/000013.o
host obj copy: $WORK/b843/_pkg_.a(_x009.o) from pkg github.com/dunglas/frankenphp -> /tmp/go-link-2048763165/000014.o
host obj copy: $WORK/b843/_pkg_.a(_x010.o) from pkg github.com/dunglas/frankenphp -> /tmp/go-link-2048763165/000015.o
host obj copy: $WORK/b843/_pkg_.a(_x011.o) from pkg github.com/dunglas/frankenphp -> /tmp/go-link-2048763165/000016.o
host obj copy: $WORK/b843/_pkg_.a(_x012.o) from pkg github.com/dunglas/frankenphp -> /tmp/go-link-2048763165/000017.o
host obj copy: $WORK/b843/_pkg_.a(_x013.o) from pkg github.com/dunglas/frankenphp -> /tmp/go-link-2048763165/000018.o
host obj copy: $WORK/b843/_pkg_.a(_x014.o) from pkg github.com/dunglas/frankenphp -> /tmp/go-link-2048763165/000019.o
host obj copy: $WORK/b841/_pkg_.a(_x001.o) from pkg github.com/google/brotli/go/cbrotli -> /tmp/go-link-2048763165/000020.o
host obj copy: $WORK/b841/_pkg_.a(_x002.o) from pkg github.com/google/brotli/go/cbrotli -> /tmp/go-link-2048763165/000021.o
host obj copy: $WORK/b841/_pkg_.a(_x003.o) from pkg github.com/google/brotli/go/cbrotli -> /tmp/go-link-2048763165/000022.o
host obj copy: $WORK/b841/_pkg_.a(_x004.o) from pkg github.com/google/brotli/go/cbrotli -> /tmp/go-link-2048763165/000023.o
host obj copy: $WORK/b068/_pkg_.a(_x001.o) from pkg runtime/cgo -> /tmp/go-link-2048763165/000024.o
host obj copy: $WORK/b068/_pkg_.a(_x002.o) from pkg runtime/cgo -> /tmp/go-link-2048763165/000025.o
host obj copy: $WORK/b068/_pkg_.a(_x003.o) from pkg runtime/cgo -> /tmp/go-link-2048763165/000026.o
host obj copy: $WORK/b068/_pkg_.a(_x004.o) from pkg runtime/cgo -> /tmp/go-link-2048763165/000027.o
host obj copy: $WORK/b068/_pkg_.a(_x005.o) from pkg runtime/cgo -> /tmp/go-link-2048763165/000028.o
host obj copy: $WORK/b068/_pkg_.a(_x006.o) from pkg runtime/cgo -> /tmp/go-link-2048763165/000029.o
host obj copy: $WORK/b068/_pkg_.a(_x007.o) from pkg runtime/cgo -> /tmp/go-link-2048763165/000030.o
host obj copy: $WORK/b068/_pkg_.a(_x008.o) from pkg runtime/cgo -> /tmp/go-link-2048763165/000031.o
host obj copy: $WORK/b068/_pkg_.a(_x009.o) from pkg runtime/cgo -> /tmp/go-link-2048763165/000032.o
host obj copy: $WORK/b068/_pkg_.a(_x010.o) from pkg runtime/cgo -> /tmp/go-link-2048763165/000033.o
host obj copy: $WORK/b068/_pkg_.a(_x011.o) from pkg runtime/cgo -> /tmp/go-link-2048763165/000034.o
host obj copy: $WORK/b068/_pkg_.a(_x012.o) from pkg runtime/cgo -> /tmp/go-link-2048763165/000035.o
host obj copy: $WORK/b068/_pkg_.a(_x013.o) from pkg runtime/cgo -> /tmp/go-link-2048763165/000036.o
host obj copy: $WORK/b068/_pkg_.a(_x014.o) from pkg runtime/cgo -> /tmp/go-link-2048763165/000037.o
host obj copy: $WORK/b066/_pkg_.a(_x001.o) from pkg os/user -> /tmp/go-link-2048763165/000038.o
host obj copy: $WORK/b066/_pkg_.a(_x002.o) from pkg os/user -> /tmp/go-link-2048763165/000039.o
host obj copy: $WORK/b066/_pkg_.a(_x003.o) from pkg os/user -> /tmp/go-link-2048763165/000040.o
host obj copy: $WORK/b844/_pkg_.a(_x001.o) from pkg github.com/dunglas/frankenphp/internal/cpu -> /tmp/go-link-2048763165/000041.o
host obj copy: $WORK/b844/_pkg_.a(_x002.o) from pkg github.com/dunglas/frankenphp/internal/cpu -> /tmp/go-link-2048763165/000042.o
host obj copy: $WORK/b862/_pkg_.a(_x001.o) from pkg github.com/dunglas/frankenphp/internal/watcher -> /tmp/go-link-2048763165/000043.o
host obj copy: $WORK/b862/_pkg_.a(_x002.o) from pkg github.com/dunglas/frankenphp/internal/watcher -> /tmp/go-link-2048763165/000044.o
host obj copy: $WORK/b862/_pkg_.a(_x003.o) from pkg github.com/dunglas/frankenphp/internal/watcher -> /tmp/go-link-2048763165/000045.o
host obj copy: $WORK/b862/_pkg_.a(_x004.o) from pkg github.com/dunglas/frankenphp/internal/watcher -> /tmp/go-link-2048763165/000046.o
host link: "gcc" "-m64" "-Wl,-z,relro" "-pie" "-Wl,--build-id=0x3b30de631b9948313a6ea6fb8b6ece7c15a4c97f" "-o" "/tmp/go-build1085389167/b001/exe/a.out" "-Wl,--export-dynamic-symbo
l=_cgo_panic" "-Wl,--export-dynamic-symbol=_cgo_topofstack" "-Wl,--export-dynamic-symbol=crosscall2" "-Wl,--export-dynamic-symbol=go_apache_request_headers" "-Wl,--export-dynamic-
symbol=go_frankenphp_after_script_execution" "-Wl,--export-dynamic-symbol=go_frankenphp_before_script_execution" "-Wl,--export-dynamic-symbol=go_frankenphp_finish_php_request" "-W
l,--export-dynamic-symbol=go_frankenphp_finish_worker_request" "-Wl,--export-dynamic-symbol=go_frankenphp_main_thread_is_ready" "-Wl,--export-dynamic-symbol=go_frankenphp_on_threa
d_shutdown" "-Wl,--export-dynamic-symbol=go_frankenphp_shutdown_main_thread" "-Wl,--export-dynamic-symbol=go_frankenphp_worker_handle_request_start" "-Wl,--export-dynamic-symbol=g
o_get_custom_php_ini" "-Wl,--export-dynamic-symbol=go_getenv" "-Wl,--export-dynamic-symbol=go_getfullenv" "-Wl,--export-dynamic-symbol=go_handle_file_watcher_event" "-Wl,--export-
dynamic-symbol=go_is_context_done" "-Wl,--export-dynamic-symbol=go_log" "-Wl,--export-dynamic-symbol=go_putenv" "-Wl,--export-dynamic-symbol=go_read_cookies" "-Wl,--export-dynamic
-symbol=go_read_post" "-Wl,--export-dynamic-symbol=go_register_variables" "-Wl,--export-dynamic-symbol=go_sapi_flush" "-Wl,--export-dynamic-symbol=go_ub_write" "-Wl,--export-dynam
ic-symbol=go_update_request_info" "-Wl,--export-dynamic-symbol=go_write_headers" "-Wl,--compress-debug-sections=zlib" "/tmp/go-link-2048763165/go.o" "/tmp/go-link-2048763165/00000
0.o" "/tmp/go-link-2048763165/000001.o" "/tmp/go-link-2048763165/000002.o" "/tmp/go-link-2048763165/000003.o" "/tmp/go-link-2048763165/000004.o" "/tmp/go-link-2048763165/000005.o"
 "/tmp/go-link-2048763165/000006.o" "/tmp/go-link-2048763165/000007.o" "/tmp/go-link-2048763165/000008.o" "/tmp/go-link-2048763165/000009.o" "/tmp/go-link-2048763165/000010.o" "/t
mp/go-link-2048763165/000011.o" "/tmp/go-link-2048763165/000012.o" "/tmp/go-link-2048763165/000013.o" "/tmp/go-link-2048763165/000014.o" "/tmp/go-link-2048763165/000015.o" "/tmp/g
o-link-2048763165/000016.o" "/tmp/go-link-2048763165/000017.o" "/tmp/go-link-2048763165/000018.o" "/tmp/go-link-2048763165/000019.o" "/tmp/go-link-2048763165/000020.o" "/tmp/go-li
nk-2048763165/000021.o" "/tmp/go-link-2048763165/000022.o" "/tmp/go-link-2048763165/000023.o" "/tmp/go-link-2048763165/000024.o" "/tmp/go-link-2048763165/000025.o" "/tmp/go-link-2
048763165/000026.o" "/tmp/go-link-2048763165/000027.o" "/tmp/go-link-2048763165/000028.o" "/tmp/go-link-2048763165/000029.o" "/tmp/go-link-2048763165/000030.o" "/tmp/go-link-20487
63165/000031.o" "/tmp/go-link-2048763165/000032.o" "/tmp/go-link-2048763165/000033.o" "/tmp/go-link-2048763165/000034.o" "/tmp/go-link-2048763165/000035.o" "/tmp/go-link-204876316
5/000036.o" "/tmp/go-link-2048763165/000037.o" "/tmp/go-link-2048763165/000038.o" "/tmp/go-link-2048763165/000039.o" "/tmp/go-link-2048763165/000040.o" "/tmp/go-link-2048763165/00
0041.o" "/tmp/go-link-2048763165/000042.o" "/tmp/go-link-2048763165/000043.o" "/tmp/go-link-2048763165/000044.o" "/tmp/go-link-2048763165/000045.o" "/tmp/go-link-2048763165/000046
.o" "-L/home/m/static-php-cli/buildroot/lib" "-lphp" "-lwatcher-c" "-lbrotlidec" "-lbrotlienc" "-lbrotlicommon" "-lacl" "-lattr" "-ldl" "-lrt" "-lpthread" "-lm" "-lresolv" "-lutil
" "-lc" "-lrt" "-lresolv" "-L/home/m/static-php-cli/buildroot/lib" "-lphp" "-lwatcher-c" "-lbrotlidec" "-lbrotlienc" "-lbrotlicommon" "-lacl" "-lattr" "-ldl" "-lrt" "-lpthread" "-
lm" "-lresolv" "-lutil" "-lc" "-lrt" "-lphp" "-lm" "-lutil" "-ldl" "-lresolv" "-L/home/m/static-php-cli/buildroot/lib" "-lphp" "-lwatcher-c" "-lbrotlidec" "-lbrotlienc" "-lbrotlic
ommon" "-lacl" "-lattr" "-ldl" "-lrt" "-lpthread" "-lm" "-lresolv" "-lutil" "-lc" "-lrt" "-lbrotlicommon" "-lbrotlidec" "-lbrotlienc" "-L/home/m/static-php-cli/buildroot/lib" "-lp
hp" "-lwatcher-c" "-lbrotlidec" "-lbrotlienc" "-lbrotlicommon" "-lacl" "-lattr" "-ldl" "-lrt" "-lpthread" "-lm" "-lresolv" "-lutil" "-lc" "-lrt" "-lpthread" "-L/home/m/static-php-
cli/buildroot/lib" "-lphp" "-lwatcher-c" "-lbrotlidec" "-lbrotlienc" "-lbrotlicommon" "-lacl" "-lattr" "-ldl" "-lrt" "-lpthread" "-lm" "-lresolv" "-lutil" "-lc" "-lrt" "-L/home/m/
static-php-cli/buildroot/lib" "-lphp" "-lwatcher-c" "-lbrotlidec" "-lbrotlienc" "-lbrotlicommon" "-lacl" "-lattr" "-ldl" "-lrt" "-lpthread" "-lm" "-lresolv" "-lutil" "-lc" "-lrt" 
"-L/home/m/static-php-cli/buildroot/lib" "-lphp" "-lwatcher-c" "-lbrotlidec" "-lbrotlienc" "-lbrotlicommon" "-lacl" "-lattr" "-ldl" "-lrt" "-lpthread" "-lm" "-lresolv" "-lutil" "-lc" "-lrt" "-lwatcher-c" "-lstdc++" "-pie" "-Wl,--dynamic-list=/home/m/static-php-cli/buildroot/lib/libphp.a.dynsym"
1392692 symbols, 735097 reachable
        670766 package symbols, 439533 hashed symbols, 200442 non-package symbols, 81951 external symbols
2455265 liveness data
2025/09/11 14:02:22 [INFO] Build complete: frankenphp
2025/09/11 14:02:22 [INFO] Cleaning up temporary folder: /tmp/buildenv_2025-09-11-1359.1645137240

./frankenphp version
FrankenPHP v1.9.1 PHP 8.4.12 Caddy v2.10.2 h1:g/gTYjGMD0dec+UgMw8SnfmJ3I9+M2TdvoRL/Ovu6U8=

Comment From: henderkes

Shared:

[08:10:39] [I] [EXEC] go list -m github.com/dunglas/frankenphp@latest
[08:10:40] [D] Running command (no output) : pkg-config --static --cflags-only-other libbrotlicommon libbrotlidec libbrotlienc
[08:10:40] [D] Running command (no output) : pkg-config --static --libs-only-l libbrotlicommon libbrotlidec libbrotlienc
[08:10:40] [D] Running command (no output) : pkg-config --static --libs-only-other libbrotlicommon libbrotlidec libbrotlienc
[08:10:40] [D] Entering dir: /home/m/static-php-cli/buildroot/bin
[08:10:40] [I] [EXEC] xcaddy build --output frankenphp --with github.com/dunglas/frankenphp/caddy --with github.com/dunglas/mercure/caddy --with github.com/dunglas/vulcain/caddy --with github.com/dunglas/caddy-cbrotli
2025/09/11 15:10:40 [INFO] absolute output file path: /home/m/static-php-cli/buildroot/bin/frankenphp
2025/09/11 15:10:40 [INFO] Temporary folder: /tmp/buildenv_2025-09-11-1510.241716236
2025/09/11 15:10:40 [INFO] Writing main module: /tmp/buildenv_2025-09-11-1510.241716236/main.go
package main

import (
        caddycmd "github.com/caddyserver/caddy/v2/cmd"

        // plug in Caddy modules here
        _ "github.com/caddyserver/caddy/v2/modules/standard"
        _ "github.com/dunglas/frankenphp/caddy"
        _ "github.com/dunglas/mercure/caddy"
        _ "github.com/dunglas/vulcain/caddy"
        _ "github.com/dunglas/caddy-cbrotli"
)

func main() {
        caddycmd.Main()
}
2025/09/11 15:10:40 [INFO] Initializing Go module
2025/09/11 15:10:40 [INFO] exec (timeout=0s): /home/m/static-php-cli/pkgroot/x86_64-linux/go-xcaddy/bin/go mod init caddy
go: creating new go.mod: module caddy
go: to add module requirements and sums:
        go mod tidy
2025/09/11 15:10:40 [INFO] Pinning versions
2025/09/11 15:10:40 [INFO] exec (timeout=0s): /home/m/static-php-cli/pkgroot/x86_64-linux/go-xcaddy/bin/go get -buildmode=pie -ldflags -v -linkmode=external -extldflags '-pie' -X 'github.com/caddyserver/caddy/v2.CustomVersion=FrankenPHP v1.9.1 PHP 8.4 Caddy' -tags=nobadger,nomysql,nopgx -v github.com/caddyserver/caddy/v2
go: added github.com/beorn7/perks v1.0.1
go: added github.com/caddyserver/caddy/v2 v2.10.2
go: added github.com/caddyserver/certmagic v0.24.0
go: added github.com/caddyserver/zerossl v0.1.3
go: added github.com/cespare/xxhash/v2 v2.3.0
go: added github.com/francoispqt/gojay v1.2.13
go: added github.com/google/uuid v1.6.0
go: added github.com/klauspost/cpuid/v2 v2.3.0
go: added github.com/libdns/libdns v1.1.0
go: added github.com/mholt/acmez/v3 v3.1.2
go: added github.com/miekg/dns v1.1.63
go: added github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822
go: added github.com/prometheus/client_golang v1.23.0
go: added github.com/prometheus/client_model v0.6.2
go: added github.com/prometheus/common v0.65.0
go: added github.com/prometheus/procfs v0.16.1
go: added github.com/quic-go/qpack v0.5.1
go: added github.com/quic-go/quic-go v0.54.0
go: added github.com/zeebo/blake3 v0.2.4
go: added go.uber.org/mock v0.5.2
go: added go.uber.org/multierr v1.11.0
go: added go.uber.org/zap v1.27.0
go: added go.uber.org/zap/exp v0.3.0
go: added golang.org/x/crypto v0.40.0
go: added golang.org/x/mod v0.25.0
go: added golang.org/x/net v0.42.0
go: added golang.org/x/sync v0.16.0
go: added golang.org/x/sys v0.34.0
go: added golang.org/x/term v0.33.0
go: added golang.org/x/text v0.27.0
go: added golang.org/x/time v0.12.0
go: added golang.org/x/tools v0.34.0
go: added google.golang.org/protobuf v1.36.6
2025/09/11 15:10:43 [INFO] exec (timeout=0s): /home/m/static-php-cli/pkgroot/x86_64-linux/go-xcaddy/bin/go get -buildmode=pie -ldflags -v -linkmode=external -extldflags '-pie' -X 
'github.com/caddyserver/caddy/v2.CustomVersion=FrankenPHP v1.9.1 PHP 8.4 Caddy' -tags=nobadger,nomysql,nopgx -v github.com/dunglas/frankenphp/caddy github.com/caddyserver/caddy/v2

go: accepting indirect upgrade from github.com/miekg/dns@v1.1.63 to v1.1.68
go: accepting indirect upgrade from github.com/prometheus/procfs@v0.16.1 to v0.17.0
go: accepting indirect upgrade from go.uber.org/mock@v0.5.2 to v0.6.0
go: accepting indirect upgrade from golang.org/x/crypto@v0.40.0 to v0.41.0
go: accepting indirect upgrade from golang.org/x/mod@v0.25.0 to v0.27.0
go: accepting indirect upgrade from golang.org/x/net@v0.42.0 to v0.43.0
go: accepting indirect upgrade from golang.org/x/sys@v0.34.0 to v0.35.0
go: accepting indirect upgrade from golang.org/x/term@v0.33.0 to v0.34.0
go: accepting indirect upgrade from golang.org/x/text@v0.27.0 to v0.28.0
go: accepting indirect upgrade from golang.org/x/tools@v0.34.0 to v0.36.0
go: accepting indirect upgrade from google.golang.org/protobuf@v1.36.6 to v1.36.8
go: upgraded cloud.google.com/go/auth v0.16.2 => v0.16.5
go: upgraded cloud.google.com/go/compute/metadata v0.7.0 => v0.8.0
go: upgraded dario.cat/mergo v1.0.1 => v1.0.2
go: upgraded github.com/Masterminds/semver/v3 v3.3.0 => v3.4.0
go: added github.com/MauriceGit/skiplist v0.0.0-20211105230623-77f5c8d3e145
go: added github.com/MicahParks/jwkset v0.9.6
go: added github.com/MicahParks/keyfunc/v3 v3.6.1
go: upgraded github.com/Microsoft/go-winio v0.6.0 => v0.6.2
go: added github.com/RoaringBitmap/roaring v1.9.4
go: upgraded github.com/antlr4-go/antlr/v4 v4.13.0 => v4.13.1
go: added github.com/bits-and-blooms/bitset v1.24.0
go: upgraded github.com/coreos/go-oidc/v3 v3.14.1 => v3.15.0
go: upgraded github.com/dgryski/go-farm v0.0.0-20200201041132-a6ae2369ad13 => v0.0.0-20240924180020-3414d57e47da
go: added github.com/dolthub/maphash v0.1.0
go: added github.com/dunglas/frankenphp v1.9.1
go: added github.com/dunglas/frankenphp/caddy v1.9.1
go: added github.com/dunglas/mercure v0.20.2
go: added github.com/dunglas/mercure/caddy v0.20.2
go: upgraded github.com/fsnotify/fsnotify v1.4.7 => v1.9.0
go: added github.com/gammazero/deque v1.1.0
go: upgraded github.com/go-jose/go-jose/v4 v4.0.5 => v4.1.2
go: upgraded github.com/go-sql-driver/mysql v1.8.1 => v1.9.3
go: added github.com/go-viper/mapstructure/v2 v2.4.0
go: added github.com/gofrs/uuid/v5 v5.3.2
go: added github.com/golang-jwt/jwt/v5 v5.3.0
go: upgraded github.com/golang/snappy v0.0.4 => v1.0.0
go: upgraded github.com/google/cel-go v0.26.0 => v0.26.1
go: upgraded github.com/googleapis/gax-go/v2 v2.14.2 => v2.15.0
go: added github.com/gorilla/handlers v1.5.2
go: added github.com/gorilla/mux v1.8.1
go: added github.com/hashicorp/golang-lru v1.0.2
go: upgraded github.com/jackc/pgservicefile v0.0.0-20221227161230-091c0ba34f0a => v0.0.0-20240606120523-5a60cdf6a761
go: upgraded github.com/jackc/pgx/v5 v5.6.0 => v5.7.5
go: upgraded github.com/jackc/puddle/v2 v2.2.1 => v2.2.2
go: added github.com/kevburnsjr/skipfilter v0.0.1
go: upgraded github.com/mattn/go-colorable v0.1.13 => v0.1.14
go: added github.com/maypok86/otter v1.2.4
go: upgraded github.com/miekg/dns v1.1.63 => v1.1.68
go: added github.com/mschoch/smat v0.2.0
go: added github.com/pelletier/go-toml/v2 v2.2.4
go: upgraded github.com/prometheus/procfs v0.16.1 => v0.17.0
go: added github.com/sagikazarmark/locafero v0.10.0
go: upgraded github.com/slackhq/nebula v1.9.5 => v1.9.6
go: upgraded github.com/smallstep/scep v0.0.0-20240926084937-8cf1ca453101 => v0.0.0-20250318231241-a25cabb69492
go: added github.com/sourcegraph/conc v0.3.1-0.20240121214520-5f936abd7ae8
go: added github.com/spf13/afero v1.14.0
go: upgraded github.com/spf13/cast v1.7.0 => v1.9.2
go: added github.com/spf13/viper v1.20.1
go: upgraded github.com/stoewer/go-strcase v1.2.0 => v1.3.1
go: added github.com/subosito/gotenv v1.6.0
go: added github.com/unrolled/secure v1.17.0
go: added github.com/yosida95/uritemplate/v3 v3.0.2
go: upgraded go.etcd.io/bbolt v1.3.10 => v1.4.3
go: upgraded go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.61.0 => v0.62.0
go: upgraded go.step.sm/crypto v0.67.0 => v0.70.0
go: upgraded go.uber.org/mock v0.5.2 => v0.6.0
go: upgraded golang.org/x/crypto v0.40.0 => v0.41.0
go: upgraded golang.org/x/crypto/x509roots/fallback v0.0.0-20250305170421-49bf5b80c810 => v0.0.0-20250826074233-8f580defa01d
go: upgraded golang.org/x/exp v0.0.0-20250408133849-7e4ce0ab07d0 => v0.0.0-20250819193227-8b4c13bb791b
go: upgraded golang.org/x/mod v0.25.0 => v0.27.0
go: upgraded golang.org/x/net v0.42.0 => v0.43.0
go: upgraded golang.org/x/sys v0.34.0 => v0.35.0
go: upgraded golang.org/x/term v0.33.0 => v0.34.0
go: upgraded golang.org/x/text v0.27.0 => v0.28.0
go: upgraded golang.org/x/tools v0.34.0 => v0.36.0
go: upgraded google.golang.org/api v0.240.0 => v0.248.0
go: upgraded google.golang.org/genproto/googleapis/api v0.0.0-20250603155806-513f23925822 => v0.0.0-20250826171959-ef028d996bc1
go: upgraded google.golang.org/genproto/googleapis/rpc v0.0.0-20250603155806-513f23925822 => v0.0.0-20250826171959-ef028d996bc1
go: upgraded google.golang.org/grpc v1.73.0 => v1.75.0
go: upgraded google.golang.org/protobuf v1.36.6 => v1.36.8
go: upgraded howett.net/plist v1.0.0 => v1.0.1
2025/09/11 15:10:48 [INFO] exec (timeout=0s): /home/m/static-php-cli/pkgroot/x86_64-linux/go-xcaddy/bin/go get -buildmode=pie -ldflags -v -linkmode=external -extldflags '-pie' -X 'github.com/caddyserver/caddy/v2.CustomVersion=FrankenPHP v1.9.1 PHP 8.4 Caddy' -tags=nobadger,nomysql,nopgx -v github.com/dunglas/mercure/caddy github.com/caddyserver/caddy/v2   
2025/09/11 15:10:52 [INFO] exec (timeout=0s): /home/m/static-php-cli/pkgroot/x86_64-linux/go-xcaddy/bin/go get -buildmode=pie -ldflags -v -linkmode=external -extldflags '-pie' -X 'github.com/caddyserver/caddy/v2.CustomVersion=FrankenPHP v1.9.1 PHP 8.4 Caddy' -tags=nobadger,nomysql,nopgx -v github.com/dunglas/vulcain/caddy github.com/caddyserver/caddy/v2   
2025/09/11 15:10:57 [INFO] exec (timeout=0s): /home/m/static-php-cli/pkgroot/x86_64-linux/go-xcaddy/bin/go get -buildmode=pie -ldflags -v -linkmode=external -extldflags '-pie' -X 'github.com/caddyserver/caddy/v2.CustomVersion=FrankenPHP v1.9.1 PHP 8.4 Caddy' -tags=nobadger,nomysql,nopgx -v github.com/dunglas/caddy-cbrotli github.com/caddyserver/caddy/v2   
2025/09/11 15:11:01 [INFO] exec (timeout=0s): /home/m/static-php-cli/pkgroot/x86_64-linux/go-xcaddy/bin/go get -buildmode=pie -ldflags -v -linkmode=external -extldflags '-pie' -X 'github.com/caddyserver/caddy/v2.CustomVersion=FrankenPHP v1.9.1 PHP 8.4 Caddy' -tags=nobadger,nomysql,nopgx -v
2025/09/11 15:11:06 [INFO] Build environment ready
2025/09/11 15:11:06 [INFO] Building Caddy
2025/09/11 15:11:06 [INFO] exec (timeout=0s): /home/m/static-php-cli/pkgroot/x86_64-linux/go-xcaddy/bin/go mod tidy -e
2025/09/11 15:11:06 [INFO] exec (timeout=0s): /home/m/static-php-cli/pkgroot/x86_64-linux/go-xcaddy/bin/go build -buildmode=pie -ldflags -v -linkmode=external -extldflags '-pie' -X 'github.com/caddyserver/caddy/v2.CustomVersion=FrankenPHP v1.9.1 PHP 8.4 Caddy' -tags=nobadger,nomysql,nopgx -o /home/m/static-php-cli/buildroot/bin/frankenphp
# caddy
build mode: pie, symbol table: on, DWARF: on
HEADER = -H5 -T0x401000 -R0x1000
host obj copy: /home/m/.cache/go-build/7e/7eeb2063fcaad0544a59c8941dc21f694a08ebf3de2b1c1bc0065030dc5e2cf9-d(_x001.o) from pkg net -> /tmp/go-link-3427223427/000000.o
host obj copy: /home/m/.cache/go-build/7e/7eeb2063fcaad0544a59c8941dc21f694a08ebf3de2b1c1bc0065030dc5e2cf9-d(_x002.o) from pkg net -> /tmp/go-link-3427223427/000001.o
host obj copy: /home/m/.cache/go-build/7e/7eeb2063fcaad0544a59c8941dc21f694a08ebf3de2b1c1bc0065030dc5e2cf9-d(_x003.o) from pkg net -> /tmp/go-link-3427223427/000002.o
host obj copy: /home/m/.cache/go-build/7e/7eeb2063fcaad0544a59c8941dc21f694a08ebf3de2b1c1bc0065030dc5e2cf9-d(_x004.o) from pkg net -> /tmp/go-link-3427223427/000003.o
host obj copy: /home/m/.cache/go-build/7e/7eeb2063fcaad0544a59c8941dc21f694a08ebf3de2b1c1bc0065030dc5e2cf9-d(_x005.o) from pkg net -> /tmp/go-link-3427223427/000004.o
host obj copy: /home/m/.cache/go-build/7e/7eeb2063fcaad0544a59c8941dc21f694a08ebf3de2b1c1bc0065030dc5e2cf9-d(_x006.o) from pkg net -> /tmp/go-link-3427223427/000005.o
host obj copy: /home/m/.cache/go-build/a0/a01c93d2cd66b54de5cd3eb8389798ff0c1f374d0e038c31cd245703a3530f72-d(_x001.o) from pkg github.com/dunglas/frankenphp -> /tmp/go-link-3427223427/000006.o
host obj copy: /home/m/.cache/go-build/a0/a01c93d2cd66b54de5cd3eb8389798ff0c1f374d0e038c31cd245703a3530f72-d(_x002.o) from pkg github.com/dunglas/frankenphp -> /tmp/go-link-3427223427/000007.o
host obj copy: /home/m/.cache/go-build/a0/a01c93d2cd66b54de5cd3eb8389798ff0c1f374d0e038c31cd245703a3530f72-d(_x003.o) from pkg github.com/dunglas/frankenphp -> /tmp/go-link-3427223427/000008.o
host obj copy: /home/m/.cache/go-build/a0/a01c93d2cd66b54de5cd3eb8389798ff0c1f374d0e038c31cd245703a3530f72-d(_x004.o) from pkg github.com/dunglas/frankenphp -> /tmp/go-link-3427223427/000009.o
host obj copy: /home/m/.cache/go-build/a0/a01c93d2cd66b54de5cd3eb8389798ff0c1f374d0e038c31cd245703a3530f72-d(_x005.o) from pkg github.com/dunglas/frankenphp -> /tmp/go-link-3427223427/000010.o
host obj copy: /home/m/.cache/go-build/a0/a01c93d2cd66b54de5cd3eb8389798ff0c1f374d0e038c31cd245703a3530f72-d(_x006.o) from pkg github.com/dunglas/frankenphp -> /tmp/go-link-3427223427/000011.o
host obj copy: /home/m/.cache/go-build/a0/a01c93d2cd66b54de5cd3eb8389798ff0c1f374d0e038c31cd245703a3530f72-d(_x007.o) from pkg github.com/dunglas/frankenphp -> /tmp/go-link-3427223427/000012.o
host obj copy: /home/m/.cache/go-build/a0/a01c93d2cd66b54de5cd3eb8389798ff0c1f374d0e038c31cd245703a3530f72-d(_x008.o) from pkg github.com/dunglas/frankenphp -> /tmp/go-link-3427223427/000013.o
host obj copy: /home/m/.cache/go-build/a0/a01c93d2cd66b54de5cd3eb8389798ff0c1f374d0e038c31cd245703a3530f72-d(_x009.o) from pkg github.com/dunglas/frankenphp -> /tmp/go-link-3427223427/000014.o
host obj copy: /home/m/.cache/go-build/a0/a01c93d2cd66b54de5cd3eb8389798ff0c1f374d0e038c31cd245703a3530f72-d(_x010.o) from pkg github.com/dunglas/frankenphp -> /tmp/go-link-3427223427/000015.o
host obj copy: /home/m/.cache/go-build/a0/a01c93d2cd66b54de5cd3eb8389798ff0c1f374d0e038c31cd245703a3530f72-d(_x011.o) from pkg github.com/dunglas/frankenphp -> /tmp/go-link-3427223427/000016.o
host obj copy: /home/m/.cache/go-build/a0/a01c93d2cd66b54de5cd3eb8389798ff0c1f374d0e038c31cd245703a3530f72-d(_x012.o) from pkg github.com/dunglas/frankenphp -> /tmp/go-link-3427223427/000017.o
host obj copy: /home/m/.cache/go-build/a0/a01c93d2cd66b54de5cd3eb8389798ff0c1f374d0e038c31cd245703a3530f72-d(_x013.o) from pkg github.com/dunglas/frankenphp -> /tmp/go-link-3427223427/000018.o
host obj copy: /home/m/.cache/go-build/a0/a01c93d2cd66b54de5cd3eb8389798ff0c1f374d0e038c31cd245703a3530f72-d(_x014.o) from pkg github.com/dunglas/frankenphp -> /tmp/go-link-3427223427/000019.o
host obj copy: /home/m/.cache/go-build/4c/4c06edf1aa3b0f1bc733e974d390279f6d80700526d0c241277f4f4c4b1b8f2c-d(_x001.o) from pkg github.com/google/brotli/go/cbrotli -> /tmp/go-link-3427223427/000020.o
host obj copy: /home/m/.cache/go-build/4c/4c06edf1aa3b0f1bc733e974d390279f6d80700526d0c241277f4f4c4b1b8f2c-d(_x002.o) from pkg github.com/google/brotli/go/cbrotli -> /tmp/go-link-3427223427/000021.o
host obj copy: /home/m/.cache/go-build/4c/4c06edf1aa3b0f1bc733e974d390279f6d80700526d0c241277f4f4c4b1b8f2c-d(_x003.o) from pkg github.com/google/brotli/go/cbrotli -> /tmp/go-link-3427223427/000022.o
host obj copy: /home/m/.cache/go-build/4c/4c06edf1aa3b0f1bc733e974d390279f6d80700526d0c241277f4f4c4b1b8f2c-d(_x004.o) from pkg github.com/google/brotli/go/cbrotli -> /tmp/go-link-3427223427/000023.o
host obj copy: /home/m/.cache/go-build/0f/0f01d6c8bd6e6b14eaa48d537147b05e1c11d5f37bb325d77c9cb1b1a393c2d6-d(_x001.o) from pkg runtime/cgo -> /tmp/go-link-3427223427/000024.o     
host obj copy: /home/m/.cache/go-build/0f/0f01d6c8bd6e6b14eaa48d537147b05e1c11d5f37bb325d77c9cb1b1a393c2d6-d(_x002.o) from pkg runtime/cgo -> /tmp/go-link-3427223427/000025.o     
host obj copy: /home/m/.cache/go-build/0f/0f01d6c8bd6e6b14eaa48d537147b05e1c11d5f37bb325d77c9cb1b1a393c2d6-d(_x003.o) from pkg runtime/cgo -> /tmp/go-link-3427223427/000026.o     
host obj copy: /home/m/.cache/go-build/0f/0f01d6c8bd6e6b14eaa48d537147b05e1c11d5f37bb325d77c9cb1b1a393c2d6-d(_x004.o) from pkg runtime/cgo -> /tmp/go-link-3427223427/000027.o     
host obj copy: /home/m/.cache/go-build/0f/0f01d6c8bd6e6b14eaa48d537147b05e1c11d5f37bb325d77c9cb1b1a393c2d6-d(_x005.o) from pkg runtime/cgo -> /tmp/go-link-3427223427/000028.o     
host obj copy: /home/m/.cache/go-build/0f/0f01d6c8bd6e6b14eaa48d537147b05e1c11d5f37bb325d77c9cb1b1a393c2d6-d(_x006.o) from pkg runtime/cgo -> /tmp/go-link-3427223427/000029.o     
host obj copy: /home/m/.cache/go-build/0f/0f01d6c8bd6e6b14eaa48d537147b05e1c11d5f37bb325d77c9cb1b1a393c2d6-d(_x007.o) from pkg runtime/cgo -> /tmp/go-link-3427223427/000030.o     
host obj copy: /home/m/.cache/go-build/0f/0f01d6c8bd6e6b14eaa48d537147b05e1c11d5f37bb325d77c9cb1b1a393c2d6-d(_x008.o) from pkg runtime/cgo -> /tmp/go-link-3427223427/000031.o     
host obj copy: /home/m/.cache/go-build/0f/0f01d6c8bd6e6b14eaa48d537147b05e1c11d5f37bb325d77c9cb1b1a393c2d6-d(_x009.o) from pkg runtime/cgo -> /tmp/go-link-3427223427/000032.o     
host obj copy: /home/m/.cache/go-build/0f/0f01d6c8bd6e6b14eaa48d537147b05e1c11d5f37bb325d77c9cb1b1a393c2d6-d(_x010.o) from pkg runtime/cgo -> /tmp/go-link-3427223427/000033.o     
host obj copy: /home/m/.cache/go-build/0f/0f01d6c8bd6e6b14eaa48d537147b05e1c11d5f37bb325d77c9cb1b1a393c2d6-d(_x011.o) from pkg runtime/cgo -> /tmp/go-link-3427223427/000034.o     
host obj copy: /home/m/.cache/go-build/0f/0f01d6c8bd6e6b14eaa48d537147b05e1c11d5f37bb325d77c9cb1b1a393c2d6-d(_x012.o) from pkg runtime/cgo -> /tmp/go-link-3427223427/000035.o     
host obj copy: /home/m/.cache/go-build/0f/0f01d6c8bd6e6b14eaa48d537147b05e1c11d5f37bb325d77c9cb1b1a393c2d6-d(_x013.o) from pkg runtime/cgo -> /tmp/go-link-3427223427/000036.o     
host obj copy: /home/m/.cache/go-build/0f/0f01d6c8bd6e6b14eaa48d537147b05e1c11d5f37bb325d77c9cb1b1a393c2d6-d(_x014.o) from pkg runtime/cgo -> /tmp/go-link-3427223427/000037.o     
host obj copy: /home/m/.cache/go-build/45/45ac46fa14de49df155b46ef455d80ad14d08e02a27e73f819d43ee2864d5104-d(_x001.o) from pkg os/user -> /tmp/go-link-3427223427/000038.o
host obj copy: /home/m/.cache/go-build/45/45ac46fa14de49df155b46ef455d80ad14d08e02a27e73f819d43ee2864d5104-d(_x002.o) from pkg os/user -> /tmp/go-link-3427223427/000039.o
host obj copy: /home/m/.cache/go-build/45/45ac46fa14de49df155b46ef455d80ad14d08e02a27e73f819d43ee2864d5104-d(_x003.o) from pkg os/user -> /tmp/go-link-3427223427/000040.o
host obj copy: /home/m/.cache/go-build/ef/ef7606d5f963695316cac342802e29c4d083d1c25b7a794e20e454062f35b6cb-d(_x001.o) from pkg github.com/dunglas/frankenphp/internal/cpu -> /tmp/go-link-3427223427/000041.o
host obj copy: /home/m/.cache/go-build/ef/ef7606d5f963695316cac342802e29c4d083d1c25b7a794e20e454062f35b6cb-d(_x002.o) from pkg github.com/dunglas/frankenphp/internal/cpu -> /tmp/go-link-3427223427/000042.o
host obj copy: /home/m/.cache/go-build/75/75e66c2cd99dc31f7c4499f4dd7524bbd3b5a2be85c9e3c2f0d3b00b0b78b9a1-d(_x001.o) from pkg github.com/dunglas/frankenphp/internal/watcher -> /tmp/go-link-3427223427/000043.o
host obj copy: /home/m/.cache/go-build/75/75e66c2cd99dc31f7c4499f4dd7524bbd3b5a2be85c9e3c2f0d3b00b0b78b9a1-d(_x002.o) from pkg github.com/dunglas/frankenphp/internal/watcher -> /tmp/go-link-3427223427/000044.o
host obj copy: /home/m/.cache/go-build/75/75e66c2cd99dc31f7c4499f4dd7524bbd3b5a2be85c9e3c2f0d3b00b0b78b9a1-d(_x003.o) from pkg github.com/dunglas/frankenphp/internal/watcher -> /tmp/go-link-3427223427/000045.o
host obj copy: /home/m/.cache/go-build/75/75e66c2cd99dc31f7c4499f4dd7524bbd3b5a2be85c9e3c2f0d3b00b0b78b9a1-d(_x004.o) from pkg github.com/dunglas/frankenphp/internal/watcher -> /tmp/go-link-3427223427/000046.o
host link: "gcc" "-m64" "-Wl,-z,relro" "-pie" "-Wl,--build-id=0xa8bf6f4311909690c58def3289551704f4b5d898" "-o" "/tmp/go-build2649270233/b001/exe/a.out" "-Wl,--export-dynamic-symbo
l=_cgo_panic" "-Wl,--export-dynamic-symbol=_cgo_topofstack" "-Wl,--export-dynamic-symbol=crosscall2" "-Wl,--export-dynamic-symbol=go_apache_request_headers" "-Wl,--export-dynamic-
symbol=go_frankenphp_after_script_execution" "-Wl,--export-dynamic-symbol=go_frankenphp_before_script_execution" "-Wl,--export-dynamic-symbol=go_frankenphp_finish_php_request" "-W
l,--export-dynamic-symbol=go_frankenphp_finish_worker_request" "-Wl,--export-dynamic-symbol=go_frankenphp_main_thread_is_ready" "-Wl,--export-dynamic-symbol=go_frankenphp_on_threa
d_shutdown" "-Wl,--export-dynamic-symbol=go_frankenphp_shutdown_main_thread" "-Wl,--export-dynamic-symbol=go_frankenphp_worker_handle_request_start" "-Wl,--export-dynamic-symbol=g
o_get_custom_php_ini" "-Wl,--export-dynamic-symbol=go_getenv" "-Wl,--export-dynamic-symbol=go_getfullenv" "-Wl,--export-dynamic-symbol=go_handle_file_watcher_event" "-Wl,--export-
dynamic-symbol=go_is_context_done" "-Wl,--export-dynamic-symbol=go_log" "-Wl,--export-dynamic-symbol=go_putenv" "-Wl,--export-dynamic-symbol=go_read_cookies" "-Wl,--export-dynamic
-symbol=go_read_post" "-Wl,--export-dynamic-symbol=go_register_variables" "-Wl,--export-dynamic-symbol=go_sapi_flush" "-Wl,--export-dynamic-symbol=go_ub_write" "-Wl,--export-dynam
ic-symbol=go_update_request_info" "-Wl,--export-dynamic-symbol=go_write_headers" "-Wl,--compress-debug-sections=zlib" "/tmp/go-link-3427223427/go.o" "/tmp/go-link-3427223427/00000
0.o" "/tmp/go-link-3427223427/000001.o" "/tmp/go-link-3427223427/000002.o" "/tmp/go-link-3427223427/000003.o" "/tmp/go-link-3427223427/000004.o" "/tmp/go-link-3427223427/000005.o"
 "/tmp/go-link-3427223427/000006.o" "/tmp/go-link-3427223427/000007.o" "/tmp/go-link-3427223427/000008.o" "/tmp/go-link-3427223427/000009.o" "/tmp/go-link-3427223427/000010.o" "/t
mp/go-link-3427223427/000011.o" "/tmp/go-link-3427223427/000012.o" "/tmp/go-link-3427223427/000013.o" "/tmp/go-link-3427223427/000014.o" "/tmp/go-link-3427223427/000015.o" "/tmp/g
o-link-3427223427/000016.o" "/tmp/go-link-3427223427/000017.o" "/tmp/go-link-3427223427/000018.o" "/tmp/go-link-3427223427/000019.o" "/tmp/go-link-3427223427/000020.o" "/tmp/go-li
nk-3427223427/000021.o" "/tmp/go-link-3427223427/000022.o" "/tmp/go-link-3427223427/000023.o" "/tmp/go-link-3427223427/000024.o" "/tmp/go-link-3427223427/000025.o" "/tmp/go-link-3
427223427/000026.o" "/tmp/go-link-3427223427/000027.o" "/tmp/go-link-3427223427/000028.o" "/tmp/go-link-3427223427/000029.o" "/tmp/go-link-3427223427/000030.o" "/tmp/go-link-34272
23427/000031.o" "/tmp/go-link-3427223427/000032.o" "/tmp/go-link-3427223427/000033.o" "/tmp/go-link-3427223427/000034.o" "/tmp/go-link-3427223427/000035.o" "/tmp/go-link-342722342
7/000036.o" "/tmp/go-link-3427223427/000037.o" "/tmp/go-link-3427223427/000038.o" "/tmp/go-link-3427223427/000039.o" "/tmp/go-link-3427223427/000040.o" "/tmp/go-link-3427223427/00
0041.o" "/tmp/go-link-3427223427/000042.o" "/tmp/go-link-3427223427/000043.o" "/tmp/go-link-3427223427/000044.o" "/tmp/go-link-3427223427/000045.o" "/tmp/go-link-3427223427/000046
.o" "-L/home/m/static-php-cli/buildroot/lib" "-lphp" "-lwatcher-c" "-lbrotlidec" "-lbrotlienc" "-lbrotlicommon" "-lacl" "-lattr" "-ldl" "-lrt" "-lpthread" "-lm" "-lresolv" "-lutil
" "-lc" "-lrt" "-lresolv" "-L/home/m/static-php-cli/buildroot/lib" "-lphp" "-lwatcher-c" "-lbrotlidec" "-lbrotlienc" "-lbrotlicommon" "-lacl" "-lattr" "-ldl" "-lrt" "-lpthread" "-
lm" "-lresolv" "-lutil" "-lc" "-lrt" "-lphp" "-lm" "-lutil" "-ldl" "-lresolv" "-L/home/m/static-php-cli/buildroot/lib" "-lphp" "-lwatcher-c" "-lbrotlidec" "-lbrotlienc" "-lbrotlic
ommon" "-lacl" "-lattr" "-ldl" "-lrt" "-lpthread" "-lm" "-lresolv" "-lutil" "-lc" "-lrt" "-lbrotlicommon" "-lbrotlidec" "-lbrotlienc" "-L/home/m/static-php-cli/buildroot/lib" "-lp
hp" "-lwatcher-c" "-lbrotlidec" "-lbrotlienc" "-lbrotlicommon" "-lacl" "-lattr" "-ldl" "-lrt" "-lpthread" "-lm" "-lresolv" "-lutil" "-lc" "-lrt" "-lpthread" "-L/home/m/static-php-
cli/buildroot/lib" "-lphp" "-lwatcher-c" "-lbrotlidec" "-lbrotlienc" "-lbrotlicommon" "-lacl" "-lattr" "-ldl" "-lrt" "-lpthread" "-lm" "-lresolv" "-lutil" "-lc" "-lrt" "-L/home/m/
static-php-cli/buildroot/lib" "-lphp" "-lwatcher-c" "-lbrotlidec" "-lbrotlienc" "-lbrotlicommon" "-lacl" "-lattr" "-ldl" "-lrt" "-lpthread" "-lm" "-lresolv" "-lutil" "-lc" "-lrt" 
"-L/home/m/static-php-cli/buildroot/lib" "-lphp" "-lwatcher-c" "-lbrotlidec" "-lbrotlienc" "-lbrotlicommon" "-lacl" "-lattr" "-ldl" "-lrt" "-lpthread" "-lm" "-lresolv" "-lutil" "-lc" "-lrt" "-lwatcher-c" "-lstdc++" "-pie"
1392692 symbols, 735097 reachable
        670766 package symbols, 439533 hashed symbols, 200442 non-package symbols, 81951 external symbols
2455265 liveness data
2025/09/11 15:11:13 [INFO] Build complete: frankenphp
2025/09/11 15:11:13 [INFO] Cleaning up temporary folder: /tmp/buildenv_2025-09-11-1510.241716236

./frankenphp version
FrankenPHP v1.9.1 PHP 8.4 Caddy v2.10.2 h1:g/gTYjGMD0dec+UgMw8SnfmJ3I9+M2TdvoRL/Ovu6U8=

Comment From: linsite

Do ifunc symbols only run during relocation when they are indirectly referenced? Frankenphp uses more functions of libphp than the embed script.

I think so.

Comment From: henderkes

Do ifunc symbols only run during relocation when they are indirectly referenced? Frankenphp uses more functions of libphp than the embed script.

I think so.

Hmm, that would circle it back to being a bug in FrankenPHP specifically. But it would almost have to be undefined behaviour, because otherwise I can't think of a reason why it would fail one time and succeed the next by recompiling the same code a minute later. @dunglas any idea about the symbol crashing here: https://github.com/golang/go/issues/75176#issuecomment-3243495278?

Comment From: linsite

Other users are also experiencing this build failure, like here in a static build (linking in libphp.a): php/frankenphp#1829 (comment). Once again only happening with FrankenPHP, not with the embed test.

Well, it seems that the binary built by Go did run successfully at the first time and failed after packed by UPX. So, those two cases are quite different to me. Are there any static build failures before it was packed? @henderkes

 #21 1762.6 ./../dist/frankenphp-linux-x86_64 version
#21 1762.6 FrankenPHP 9b851bf53e1ef5edf2ab8a78a2850110946d6b54 PHP 8.4.11 Caddy v2.10.2 h1:g/ gTYjGMD0dec+UgMw8SnfmJ3I9+M2TdvoRL/Ovu6U8=
#21 1762.6 + cd ..
#21 1762.6 + '[' -d '' ']'
#21 1762.6 + type upx
#21 1762.6 + '[' -z '' ']'
#21 1762.6 + '[' -z '' ']'
#21 1762.6 + upx --best dist/frankenphp-linux-x86_64
#21 1762.6                        Ultimate Packer for eXecutables
#21 1762.6                           Copyright (C) 1996 - 2025
#21 2764.4 UPX 5.0.2       Markus Oberhumer, Laszlo Molnar & John Reiser   Jul 20th 2025
#21 2764.4 
#21 2764.4         File size         Ratio      Format      Name
#21 2764.4    --------------------   ------   -----------   -----------
#21 2764.4  158466696 ->  71621688   45.20%   linux/amd64   frankenphp-linux-x86_64
#21 2764.4 
#21 2764.4 Packed 1 file.
#21 2764.4 + dist/frankenphp-linux-x86_64 version
#21 2766.1 ./build-static.sh: line 339: 524970 Segmentation fault      (core dumped) "dist/${bin}" version

Comment From: henderkes

Oh, indeed, I didn't see they were using upx. I'm not using upx and I have also seen static builds segfault, although I believe that was on musl when using -static and static_pie.

Comment From: linsite

Oh, indeed, I didn't see they were using upx. I'm not using upx and I have also seen static builds segfault, although I believe that was on musl when using -static and static_pie.

Are there any those kinds of binaries available? I think there isn't anything can be done for now without more inputs.

https://github.com/static-php/spc-packages/releases/download/v0.1.0/frankenphp_libphp.zip

Found old binaries with the issue, though. You can create the core dump yourself or directly debug

LD_LIBRARY_PATH=./ ./frankenphp version

Works on any linux with glibc >= 2.34.

Or, can you provide a libphp-zts.so with debug symbol? I tried to build one but failed.

Comment From: henderkes

I can create one that doesn't segfault, of course. Builds that sehfault are mostly random and I haven't come across one since opening the issue.

Comment From: linsite

I can create one that doesn't segfault, of course. Builds that sehfault are mostly random and I haven't come across one since opening the issue.

A normal one can tell us the difference. It'll be helpful.

Comment From: henderkes

Edit: sorry, accidentally built php 8.4 instead of 8.3 like before. Got to rebuild.

Comment From: henderkes

-g3 -O3: https://files.henderkes.com/libphp-zts-83.tar.gz

Comment From: linsite

The shared fault indeed was an IFUNC relocation problem, not a Go or CGo's. Here is the difference between those two libphp-zts.so:

The fault one:

readelf -s libphp-zts-83.so |grep php_base64_encode
  8905: 0000000003256120    63 <OS specific>: 10 GLOBAL DEFAULT   13 php_base64_encode

FYI, <OS specific> has same meaning with IFUNC aforementioned.

The normal one from https://files.henderkes.com/libphp-zts-83.tar.gz:

readelf -s sym/libphp-zts-83.so |grep php_base64_encode
  2157: 00000000006d2ed0  1984 FUNC    GLOBAL DEFAULT   12 php_base64_encode
 49169: 00000000006d2ed0  1984 FUNC    GLOBAL DEFAULT   12 php_base64_encode

One can create a simple poc.c to trigger the fault.

#include "php.h"

void test()
{

        char * data = "hello";
        php_base64_encode(data, strlen(data)-1);
}

int main() {
}
$ LD_LIBRARY_PATH=`pwd`/sym  ./poc && echo 'ok'
ok

$ LD_LIBRARY_PATH=`pwd`  ./poc && echo 'ok'
[1]    2555008 segmentation fault (core dumped)  LD_LIBRARY_PATH=`pwd` ./poc

@henderkes Do you know how libphp-zts.so is built that way? As for the statically built ones, we need to wait for a reproduction to continue.

Comment From: henderkes

They were essentially built the same way, nothing special about it. Same compiler and linker flags, a few extensions less are linked in now (I switched apcu, bcmath and others from static to shared).

I'm still looking out for failures in the static CI, but haven't caught any since opening the thread. Very unusual to go this long without a CI failure.

Comment From: seankhliao

I'm going to close this as not a bug in Go.