lexik/cron-file-generator-bundle
Lexik CronFileGeneratorBundle generates cron files from your Symfony console commands, letting you define scheduled tasks in configuration and export them to a crontab-ready file.
Architecture fit
DependencyInjection extension, service definitions, and bundle registration that assume a Symfony kernel. It will not autoload meaningfully into a Laravel app without a port. Release 1.4.0 does not change this — it touches only the bundle's config surface.Schedule::*, schedule:run, schedule:list), so the bundle's core value proposition is largely redundant.Integration feasibility
composer why-not against our target runtime.Technical risk
env option from job config and ships it as a minor version bump. Two consequences: (a) any consumer setting per-job environment variables gets a silently ignored config key — depending on the bundle's validation behavior, either a hard config error or, worse, a job generated without its expected environment and failing at 3am; (b) the project treats removal of a documented option as non-breaking, so we should expect further silent surface changes and pin to an exact version.env option was one of the few levers against cron's minimal-environment problem. 1.4.0 removes it, so per-job PATH/env injection (if we need it) must now be handled by us — either in the command string or the host's cron wrapper. This directly raises the environment-divergence failure mode below.% handling in cron, timezone/DST semantics, MAILTO, PATH, user field, /etc/cron.d vs. user crontab format differences) that a zero-dependent package has not been hardened against by a broad user base. Note that a rendering/escaping bug and a config-schema removal can look identical in the output file — always diff generated artifacts across the upgrade.Key questions
env, so "we need env control" is now an argument for the framework, not the bundle.env config)? If yes, 1.4.0 is effectively breaking for us and we must own env injection ourselves. Confirm whether the option was removed outright or deprecated/no-op'd, and whether unknown keys now fail loudly or are ignored./etc/cron.d drop-in, and does it handle user field, MAILTO, PATH, and flock-style overlap protection?crontab -e?Stack fit
env keys and move environment setup into the command (env VAR=... cmd) or a wrapper script.Migration path
env: keys — these are the 1.4.0 exposure./etc/cron.d/<app>-<env> (preferred for audibility) or the deploy user's crontab; snapshot the previous crontab for one-command rollback.Compatibility
env. Validate on a throwaway app — confirm whether the removed key errors, warns, or is silently ignored. Silent ignoring is the dangerous case and should be assumed until proven otherwise.cronie and vixie-cron differ on /etc/cron.d semantics and environment — more relevant now that per-job env injection is gone.%, $, newlines, secrets) on the version we intend to pin, not on main.Sequencing
env. Cheap, and settles the one genuinely new question this release raises.Maintenance
1.3.3 or 1.4.0, not ^1.x) and vendor the artifact. 1.4.0 is the evidence for this rule.Support
Scaling
flock / Redis) — none of which this bundle provides.Failure modes
env key that was honored in 1.3.3 is no longer rendered; the job runs in the bare cron environment and fails at runtime with no generation-time error. Mitigate by schema validation that rejects unknown keys and by diffing artifacts across upgrades.PATH, env vars, or working directory causes failures that don't reproduce interactively. Severity increased by 1.4.0 — the per-job env lever is gone, so this must be handled in the command string or a host-level wrapper./etc/cron.d files must be root-owned and non-world-writable or cron ignores them silently.%, or $ in command arguments produce truncated or mangled commands — and become more likely once env prefixes are hand-written into command strings.MAILTO or redirection, exit codes and stderr vanish.env prefixes — leak.Ramp-up
How can I help you explore Laravel packages today?