aboutsummaryrefslogtreecommitdiffhomepage
path: root/crates/shirabe-external-packages/src/symfony/process
diff options
context:
space:
mode:
authornsfisis <nsfisis@gmail.com>2026-06-25 03:20:08 +0900
committernsfisis <nsfisis@gmail.com>2026-06-25 03:33:09 +0900
commitc65cab710bb3d79db20862c9361d4dbbac8ac5d7 (patch)
treeb4d192237bbb8dbaa80166f1ffa24703e57243f4 /crates/shirabe-external-packages/src/symfony/process
parentf73e9ab05f8d94937d2437919199d9d9681c8cde (diff)
downloadphp-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.rs25
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);
}