我将 Joomla 从 3.10.11 升级到 4.2。从那时起我收到错误:
Uncaught TYPO3\PharStreamWrapper\Exception Unexpected file extension in "Phar://httpful.phar/....../Response.php"
我已经尝试过各种论坛来找到解决我面临的类似问题的方法,但我没有成功。由于phar反序列化漏洞在PHP8+中已经修复,我想完全绕过Typo3的Phar流包装器,而是使用PHP8.1的内置流处理程序。
如何从 Joomla4.2 中完全删除或绕过 typo3-phar-stream-wrapper?在 PharExtensionInterceptor.php 中,我修改了函数
baseFileContainsPharExtension
,即使文件扩展名是 PHP 也返回 true。
private function baseFileContainsPharExtension(string $path): bool
{
$invocation = Manager::instance()->resolve($path);
if ($invocation === null) {
return false;
}
$fileExtension = pathinfo($invocation->getBaseName(), PATHINFO_EXTENSION);
return strtolower($fileExtension) === 'phar';
}
}
我修改为:
private function baseFileContainsPharExtension(string $path): bool
{
$invocation = Manager::instance()->resolve($path);
if ($invocation === null) {
return false;
}
$fileExtension = pathinfo($invocation->getBaseName(), PATHINFO_EXTENSION);
return (strtolower($fileExtension) === 'phar'||strtolower($fileExtension) === 'php');
}
}
这也没有帮助.... Phar 流处理程序已经加载,我签入了
phpinfo()