/mnt/users mount, * so OLS sends lsphp $_SERVER['DOCUMENT_ROOT'] / ['SCRIPT_FILENAME'] under * /mnt/users///... . The sidecar symlinks that back to the real * /home/ mount, so file operations resolve and PHP's own __FILE__/__DIR__/ * realpath()/getcwd() already report /home//public_html. But the RAW env * strings OLS set still read /mnt/users, which would leak to the (uncommon) apps * that build or compare paths from $_SERVER['DOCUMENT_ROOT']. * * Canonicalise those two via realpath() so cac-lsphp is byte-for-byte 1:1 with * cac-fpm/cac-litespeed (where DOCUMENT_ROOT is natively /home//public_html). * Cheap (two realpath calls, cached by realpath_cache) and side-effect-free. * * Customer sites have no auto_prepend by default, so this is the only prepend in * play. If a site sets its own auto_prepend_file via .user.ini it overrides this * (theirs wins) — acceptable: paths still resolve via the symlink, only the raw * string differs. */ foreach (array('DOCUMENT_ROOT', 'SCRIPT_FILENAME') as $__cl_key) { if (!empty($_SERVER[$__cl_key]) && strncmp($_SERVER[$__cl_key], '/mnt/users/', 11) === 0) { $__cl_real = realpath($_SERVER[$__cl_key]); if ($__cl_real !== false) { $_SERVER[$__cl_key] = $__cl_real; } } } unset($__cl_key, $__cl_real);