caddyserver/caddy · error

dir_mode: %w

Error message

dir_mode: %w

What it means

Error "dir_mode: %w" thrown in caddyserver/caddy.

Source

Thrown at modules/logging/filewriter.go:215

	dirPath := filepath.Dir(fw.Filename)
	switch strings.ToLower(strings.TrimSpace(fw.DirMode)) {
	case "", "0":
		// Preserve current behavior: locked-down directories by default.
		if err := os.MkdirAll(dirPath, 0o700); err != nil {
			return nil, err
		}
	case "inherit":
		if err := mkdirAllInherit(dirPath); err != nil {
			return nil, err
		}
	case "from_file":
		if err := mkdirAllFromFile(dirPath, os.FileMode(fw.Mode)); err != nil {
			return nil, err
		}
	default:
		dm, err := parseFileMode(fw.DirMode)
		if err != nil {
			return nil, fmt.Errorf("dir_mode: %w", err)
		}
		if err := os.MkdirAll(dirPath, dm); err != nil {
			return nil, err
		}
	}

	// create/open the file
	file, err := os.OpenFile(fw.Filename, os.O_WRONLY|os.O_APPEND|os.O_CREATE, modeIfCreating)
	if err != nil {
		return nil, err
	}
	info, err := file.Stat()
	if roll {
		file.Close() // timberjack will reopen it on its own
	}

	// Ensure already existing files have the right mode, since OpenFile will not set the mode in such case.
	if configuredMode := os.FileMode(fw.Mode); configuredMode != 0 {

View on GitHub (pinned to 50e54ee279)

Solutions

  1. Use a valid octal permission mode for dir_mode, e.g. '0755'.

When it happens

Trigger: Thrown at modules/logging/filewriter.go:215 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/5186493e9ccb5d49. Report an issue: GitHub.