diff options
| author | nsfisis <nsfisis@gmail.com> | 2026-06-25 03:20:08 +0900 |
|---|---|---|
| committer | nsfisis <nsfisis@gmail.com> | 2026-06-25 03:33:09 +0900 |
| commit | c65cab710bb3d79db20862c9361d4dbbac8ac5d7 (patch) | |
| tree | b4d192237bbb8dbaa80166f1ffa24703e57243f4 /crates/shirabe-external-packages/src/symfony/process | |
| parent | f73e9ab05f8d94937d2437919199d9d9681c8cde (diff) | |
| download | php-shirabe-c65cab710bb3d79db20862c9361d4dbbac8ac5d7.tar.gz php-shirabe-c65cab710bb3d79db20862c9361d4dbbac8ac5d7.tar.zst php-shirabe-c65cab710bb3d79db20862c9361d4dbbac8ac5d7.zip | |
feat(php-shim): model $_ENV/$_SERVER as OsString snapshots
Rework the environment shim around getenv/putenv on the real environment
and $_ENV/$_SERVER as startup snapshots, all over OsString. Migrate every
caller off the old server()/server_argv() helpers and force the snapshots
in main() before any putenv() runs. Document the porting rules in
docs/dev/env-vars-porting.md.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Diffstat (limited to 'crates/shirabe-external-packages/src/symfony/process')
| -rw-r--r-- | crates/shirabe-external-packages/src/symfony/process/process.rs | 25 |
1 files changed, 21 insertions, 4 deletions
diff --git a/crates/shirabe-external-packages/src/symfony/process/process.rs b/crates/shirabe-external-packages/src/symfony/process/process.rs index caf8aa1..3550f09 100644 --- a/crates/shirabe-external-packages/src/symfony/process/process.rs +++ b/crates/shirabe-external-packages/src/symfony/process/process.rs @@ -1670,13 +1670,20 @@ impl Process { } fn get_default_env(&self) -> IndexMap<String, PhpMixed> { - let env = php::getenv_all(); - let server = php::php_server(); + let env: IndexMap<String, String> = php::getenv_all() + .map(|(k, v)| { + ( + k.to_string_lossy().into_owned(), + v.to_string_lossy().into_owned(), + ) + }) + .collect(); + let server = php::PHP_SERVER.lock().unwrap(); // non-Windows: array_intersect_key($env, $_SERVER) ?: $env let mut intersect: IndexMap<String, PhpMixed> = IndexMap::new(); for (k, v) in &env { - if server.contains_key(k) { + if server.get(k).is_some() { intersect.insert(k.clone(), PhpMixed::String(v.clone())); } } @@ -1689,7 +1696,17 @@ impl Process { }; // $_ENV + env_map - let mut result = php::php_env(); + let mut result: IndexMap<String, PhpMixed> = php::PHP_ENV + .lock() + .unwrap() + .get_all() + .map(|(k, v)| { + ( + k.to_string_lossy().into_owned(), + PhpMixed::String(v.to_string_lossy().into_owned()), + ) + }) + .collect(); for (k, v) in env_map { result.entry(k).or_insert(v); } |
