caddyserver/caddy · error
unable to get relative path for %s: %w
Error message
unable to get relative path for %s: %w
What it means
Error "unable to get relative path for %s: %w" thrown in caddyserver/caddy.
Source
Thrown at modules/caddytls/folderloader.go:83
for _, dir := range fl {
root, err := os.OpenRoot(dir)
if err != nil {
return nil, fmt.Errorf("unable to open root directory %s: %w", dir, err)
}
err = filepath.WalkDir(dir, func(fpath string, d fs.DirEntry, err error) error {
if err != nil {
return fmt.Errorf("unable to traverse into path: %s", fpath)
}
if d.IsDir() {
return nil
}
if !strings.HasSuffix(strings.ToLower(d.Name()), ".pem") {
return nil
}
rel, err := filepath.Rel(dir, fpath)
if err != nil {
return fmt.Errorf("unable to get relative path for %s: %w", fpath, err)
}
bundle, err := root.ReadFile(rel)
if err != nil {
return err
}
cert, err := tlsCertFromCertAndKeyPEMBundle(bundle)
if err != nil {
return fmt.Errorf("%s: %w", fpath, err)
}
certs = append(certs, Certificate{Certificate: cert})
return nil
})
_ = root.Close()
if err != nil {
return nil, fmt.Errorf("walking certificates directory %s: %w", dir, err)
}View on GitHub (pinned to 50e54ee279)
Solutions
- Ensure the certificate files are inside the configured root directory; paths outside the root cannot be made relative.
When it happens
Trigger: Thrown at modules/caddytls/folderloader.go:83 when the library encounters an invalid state.
Common situations: See trigger scenarios.
AI-assisted analysis of caddyserver/caddy@50e54ee279 (2026-08-15).
Data as JSON: /api/errors/3c839baeb916d3b7.
Report an issue: GitHub.