<?php
// overly simplified example
function test1()
{
$a = 3;
test2();
}
function test2()
{
echo $a;
}
// the actual idea is to do something like this
// main.php
$vars = [];
function load_file($path)
{
if(is_file($path))
{
$GLOBALS['path'] = $path;
load_isolated();
}
}
function load_isolated()
{
extract($GLOBALS['vars']);
require($GLOBALS['path']);
$GLOBALS['vars'] = get_defined_vars();
}
load_file('a.php');
// a.php
$a = 3;
load_file('b.php');
//b.php
echo $a; // warning or error that var $a doesn't exist because get_defined_vars() was never called yata yata
Warning: is_file(): open_basedir restriction in effect. File(a.php) is not within the allowed path(s): (/tmp:/in:/etc) in /in/YHebC on line 20
Warning: is_file(): open_basedir restriction in effect. File(b.php) is not within the allowed path(s): (/tmp:/in:/etc) in /in/YHebC on line 20
3
Output for 8.3.5
Warning: PHP Startup: Unable to load dynamic library 'sodium.so' (tried: /usr/lib/php/8.3.5/modules/sodium.so (libsodium.so.23: cannot open shared object file: No such file or directory), /usr/lib/php/8.3.5/modules/sodium.so.so (/usr/lib/php/8.3.5/modules/sodium.so.so: cannot open shared object file: No such file or directory)) in Unknown on line 0
Warning: is_file(): open_basedir restriction in effect. File(a.php) is not within the allowed path(s): (/tmp:/in:/etc) in /in/YHebC on line 20
Warning: is_file(): open_basedir restriction in effect. File(b.php) is not within the allowed path(s): (/tmp:/in:/etc) in /in/YHebC on line 20
3
Warning: is_file(): open_basedir restriction in effect. File(a.php) is not within the allowed path(s): (/tmp:/in) in /in/YHebC on line 20
Warning: is_file(): open_basedir restriction in effect. File(b.php) is not within the allowed path(s): (/tmp:/in) in /in/YHebC on line 20
3