-
-
Notifications
You must be signed in to change notification settings - Fork 9.6k
[Process] Deprecate not inheriting env vars + compat related settings #21470
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Conversation
5480557
to
df14451
Compare
Thank you @nicolas-grekas. |
…elated settings (nicolas-grekas) This PR was merged into the 3.3-dev branch. Discussion ---------- [Process] Deprecate not inheriting env vars + compat related settings | Q | A | ------------- | --- | Branch? | master | Bug fix? | no | New feature? | no | BC breaks? | no | Deprecations? | yes | Tests pass? | no | Fixed tickets | - | License | MIT | Doc PR | - Turning compat on/off is not a feature in itself. About env vars: if one has unwanted env vars, one will still be able to remove them explicitly for the command. From my experience, not having eg PATH or HTTP_PROXY, etc. is more problematic. I'd prefer people to care about setting/unsetting the environment vars **they know about**, rather than allowing them to start with no ENV and discover later that they missed setting some var. Commits ------- df14451 [Process] Deprecate not inheriting env vars + compat related settings
@@ -1099,15 +1103,7 @@ public function getEnv() | |||
*/ | |||
public function setEnv(array $env) | |||
{ | |||
// Process can not handle env values that are arrays |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
We need to trigger a deprecation warning when passing array values (this was added because some people were passing $_SERVER
directly at some point, when inheriting was not a native feature).
…es() (ogizanagi) This PR was merged into the 4.4 branch. Discussion ---------- [Process] Deprecate Process::inheritEnvironmentVariables() | Q | A | ------------- | --- | Branch? | 4.4 <!-- see below --> | Bug fix? | no | New feature? | no <!-- please update src/**/CHANGELOG.md files --> | BC breaks? | no <!-- see https://symfony.com/bc --> | Deprecations? | yes <!-- please update UPGRADE-*.md and src/**/CHANGELOG.md files --> | Tests pass? | yes <!-- please add some, will be required by reviewers --> | Fixed tickets | N/A <!-- #-prefixed issue number(s), if any --> | License | MIT | Doc PR | N/A IIUC, this method was kept as a BC layer from 3.4 to 4.0 to switch to the "inherit env vars" behavior, inciting developers to opt-in in 3.4. Since 4.0, env vars are always inherited, and this method doesn't allow to opt-out. So, time to remove it? --- refs: - symfony/symfony#21470 - symfony/symfony#22836 Commits ------- af9bad31c6 [Process] Deprecate Process::inheritEnvironmentVariables()
…es() (ogizanagi) This PR was merged into the 4.4 branch. Discussion ---------- [Process] Deprecate Process::inheritEnvironmentVariables() | Q | A | ------------- | --- | Branch? | 4.4 <!-- see below --> | Bug fix? | no | New feature? | no <!-- please update src/**/CHANGELOG.md files --> | BC breaks? | no <!-- see https://symfony.com/bc --> | Deprecations? | yes <!-- please update UPGRADE-*.md and src/**/CHANGELOG.md files --> | Tests pass? | yes <!-- please add some, will be required by reviewers --> | Fixed tickets | N/A <!-- #-prefixed issue number(s), if any --> | License | MIT | Doc PR | N/A IIUC, this method was kept as a BC layer from 3.4 to 4.0 to switch to the "inherit env vars" behavior, inciting developers to opt-in in 3.4. Since 4.0, env vars are always inherited, and this method doesn't allow to opt-out. So, time to remove it? --- refs: - #21470 - #22836 Commits ------- af9bad3 [Process] Deprecate Process::inheritEnvironmentVariables()
…es() (ogizanagi) This PR was merged into the 4.4 branch. Discussion ---------- [Process] Deprecate Process::inheritEnvironmentVariables() | Q | A | ------------- | --- | Branch? | 4.4 <!-- see below --> | Bug fix? | no | New feature? | no <!-- please update src/**/CHANGELOG.md files --> | BC breaks? | no <!-- see https://symfony.com/bc --> | Deprecations? | yes <!-- please update UPGRADE-*.md and src/**/CHANGELOG.md files --> | Tests pass? | yes <!-- please add some, will be required by reviewers --> | Fixed tickets | N/A <!-- #-prefixed issue number(s), if any --> | License | MIT | Doc PR | N/A IIUC, this method was kept as a BC layer from 3.4 to 4.0 to switch to the "inherit env vars" behavior, inciting developers to opt-in in 3.4. Since 4.0, env vars are always inherited, and this method doesn't allow to opt-out. So, time to remove it? --- refs: - symfony/symfony#21470 - symfony/symfony#22836 Commits ------- af9bad31c6 [Process] Deprecate Process::inheritEnvironmentVariables()
…es() (ogizanagi) This PR was merged into the 4.4 branch. Discussion ---------- [Process] Deprecate Process::inheritEnvironmentVariables() | Q | A | ------------- | --- | Branch? | 4.4 <!-- see below --> | Bug fix? | no | New feature? | no <!-- please update src/**/CHANGELOG.md files --> | BC breaks? | no <!-- see https://symfony.com/bc --> | Deprecations? | yes <!-- please update UPGRADE-*.md and src/**/CHANGELOG.md files --> | Tests pass? | yes <!-- please add some, will be required by reviewers --> | Fixed tickets | N/A <!-- #-prefixed issue number(s), if any --> | License | MIT | Doc PR | N/A IIUC, this method was kept as a BC layer from 3.4 to 4.0 to switch to the "inherit env vars" behavior, inciting developers to opt-in in 3.4. Since 4.0, env vars are always inherited, and this method doesn't allow to opt-out. So, time to remove it? --- refs: - symfony/symfony#21470 - symfony/symfony#22836 Commits ------- af9bad31c6 [Process] Deprecate Process::inheritEnvironmentVariables()
How to override environment variables in processes ? It is useful in multi-tenant applications where we want to run the same set of commands with different settings (env vars), due to this change now I'd have to switch back to native php functions :( |
By using the$env argument that most methods provide. |
Turning compat on/off is not a feature in itself.
About env vars: if one has unwanted env vars, one will still be able to remove them explicitly for the command. From my experience, not having eg PATH or HTTP_PROXY, etc. is more problematic. I'd prefer people to care about setting/unsetting the environment vars they know about, rather than allowing them to start with no ENV and discover later that they missed setting some var.