From 6fc420678deb4a96959e29119c96ce2678d14232 Mon Sep 17 00:00:00 2001 From: Alliballibaba Date: Sat, 8 Mar 2025 12:51:08 +0100 Subject: [PATCH 1/3] Adds warnings. --- caddy/caddy.go | 26 ++++++++++++++++++++++---- 1 file changed, 22 insertions(+), 4 deletions(-) diff --git a/caddy/caddy.go b/caddy/caddy.go index 7bafed52e1..37bb43767c 100644 --- a/caddy/caddy.go +++ b/caddy/caddy.go @@ -198,12 +198,21 @@ func (f *FrankenPHPApp) UnmarshalCaddyfile(d *caddyfile.Dispenser) error { } if d.NextArg() { - v, err := strconv.Atoi(d.Val()) - if err != nil { - return err + if d.Val() == "watch" { + wc.Watch = append(wc.Watch, "./**/*.{php,yaml,yml,twig,env}") + } else { + v, err := strconv.Atoi(d.Val()) + if err != nil { + return err + } + + wc.Num = v } + } - wc.Num = v + if d.NextArg() { + // TODO: this should error in a V2 + caddy.Log().Warn("Unknown worker argument: " + d.Val()) } for d.NextBlock(1) { @@ -241,6 +250,9 @@ func (f *FrankenPHPApp) UnmarshalCaddyfile(d *caddyfile.Dispenser) error { } else { wc.Watch = append(wc.Watch, d.Val()) } + default: + // TODO: this should error in a V2 + caddy.Log().Warn("FrankenPHP: Unknown worker configuration: " + d.Val()) } if wc.FileName == "" { @@ -253,6 +265,9 @@ func (f *FrankenPHPApp) UnmarshalCaddyfile(d *caddyfile.Dispenser) error { } f.Workers = append(f.Workers, wc) + default: + // TODO: this should error in a V2 + caddy.Log().Warn("FrankenPHP: Unknown 'frankenphp' configuration: " + d.Val()) } } } @@ -448,6 +463,9 @@ func (f *FrankenPHPModule) UnmarshalCaddyfile(d *caddyfile.Dispenser) error { } f.ResolveRootSymlink = &v + default: + // TODO: this should error in a V2 + caddy.Log().Warn("FrankenPHP: Unknown 'php_server' or 'php' configuration: " + d.Val()) } } } From 8f50c59cf290465281e27dde1deb8b6d478e36c2 Mon Sep 17 00:00:00 2001 From: Alliballibaba Date: Sat, 8 Mar 2025 13:12:20 +0100 Subject: [PATCH 2/3] trigger build From 7b0c0c80e6d2c82f7a5546eab81c5ab0b31c943a Mon Sep 17 00:00:00 2001 From: Alliballibaba Date: Sun, 9 Mar 2025 21:40:14 +0100 Subject: [PATCH 3/3] Errors on wrong configuration. --- caddy/caddy.go | 22 ++++++++++++++-------- 1 file changed, 14 insertions(+), 8 deletions(-) diff --git a/caddy/caddy.go b/caddy/caddy.go index 37bb43767c..1e5cc8da27 100644 --- a/caddy/caddy.go +++ b/caddy/caddy.go @@ -127,6 +127,7 @@ func (f *FrankenPHPApp) Stop() error { func (f *FrankenPHPApp) UnmarshalCaddyfile(d *caddyfile.Dispenser) error { for d.Next() { for d.NextBlock(0) { + // when adding a new directive, also update the allowedDirectives error message switch d.Val() { case "num_threads": if !d.NextArg() { @@ -211,8 +212,7 @@ func (f *FrankenPHPApp) UnmarshalCaddyfile(d *caddyfile.Dispenser) error { } if d.NextArg() { - // TODO: this should error in a V2 - caddy.Log().Warn("Unknown worker argument: " + d.Val()) + return errors.New("FrankenPHP: too many 'worker' arguments: " + d.Val()) } for d.NextBlock(1) { @@ -251,8 +251,8 @@ func (f *FrankenPHPApp) UnmarshalCaddyfile(d *caddyfile.Dispenser) error { wc.Watch = append(wc.Watch, d.Val()) } default: - // TODO: this should error in a V2 - caddy.Log().Warn("FrankenPHP: Unknown worker configuration: " + d.Val()) + allowedDirectives := "file, num, env, watch" + return wrongSubDirectiveError("worker", allowedDirectives, v) } if wc.FileName == "" { @@ -266,8 +266,8 @@ func (f *FrankenPHPApp) UnmarshalCaddyfile(d *caddyfile.Dispenser) error { f.Workers = append(f.Workers, wc) default: - // TODO: this should error in a V2 - caddy.Log().Warn("FrankenPHP: Unknown 'frankenphp' configuration: " + d.Val()) + allowedDirectives := "num_threads, max_threads, php_ini, worker" + return wrongSubDirectiveError("frankenphp", allowedDirectives, d.Val()) } } } @@ -422,6 +422,7 @@ func (f FrankenPHPModule) ServeHTTP(w http.ResponseWriter, r *http.Request, _ ca // UnmarshalCaddyfile implements caddyfile.Unmarshaler. func (f *FrankenPHPModule) UnmarshalCaddyfile(d *caddyfile.Dispenser) error { + // when adding a new directive, also update the allowedDirectives error message for d.Next() { for d.NextBlock(0) { switch d.Val() { @@ -464,8 +465,8 @@ func (f *FrankenPHPModule) UnmarshalCaddyfile(d *caddyfile.Dispenser) error { f.ResolveRootSymlink = &v default: - // TODO: this should error in a V2 - caddy.Log().Warn("FrankenPHP: Unknown 'php_server' or 'php' configuration: " + d.Val()) + allowedDirectives := "root, split, env, resolve_root_symlink" + return wrongSubDirectiveError("php or php_server", allowedDirectives, d.Val()) } } } @@ -763,6 +764,11 @@ func parsePhpServer(h httpcaddyfile.Helper) ([]httpcaddyfile.ConfigValue, error) }, nil } +// return a nice error message +func wrongSubDirectiveError(module string, allowedDriectives string, wrongValue string) error { + return fmt.Errorf("unknown '%s' subdirective: '%s' (allowed directives are: %s)", module, wrongValue, allowedDriectives) +} + // Interface guards var ( _ caddy.App = (*FrankenPHPApp)(nil)