mirror of
https://github.com/phpbb/phpbb.git
synced 2025-06-27 21:58:52 +00:00
[feature/compiled-dic] Use an absolute path for core.root_path parameter
PHPBB3-11152
This commit is contained in:
parent
e6a6e85d7e
commit
2de8827b1e
1 changed files with 19 additions and 21 deletions
|
@ -5484,35 +5484,34 @@ function phpbb_create_compiled_container(array $extensions, array $passes, $phpb
|
||||||
return new phpbb_cache_container();
|
return new phpbb_cache_container();
|
||||||
}
|
}
|
||||||
|
|
||||||
// When the board is first installed, the container is initiall created on
|
// When the board is first installed, the container is initially created
|
||||||
// the send_statistics step in the ACP. In that case, the phpbb_root_path
|
// during the send_statistics step in the ACP. At that point, the path
|
||||||
// is "./../". This becomes forever stored in the cached container as the
|
// relative to the board root is "./../". This becomes forever stored in
|
||||||
// core.root_path property, until the container is deleted and recached
|
// the cached container as the core.root_path property, until the
|
||||||
// We need to ensure that this does not happen.
|
// container is deleted and recached. We need to ensure that this does
|
||||||
//
|
// not happen.
|
||||||
// However, if we change the root path here, it will try to create a
|
|
||||||
// ./adm/cache/container.php later on because the root path is wrong
|
|
||||||
// We need to store the current $phpbb_root_path for use later and then we
|
|
||||||
// can change it for the controller
|
|
||||||
$real_root_path = $phpbb_root_path;
|
|
||||||
if (defined('ADMIN_START'))
|
if (defined('ADMIN_START'))
|
||||||
{
|
{
|
||||||
// Remove the first instance of ../ in the root path
|
// Remove the first instance of ../ in the root path
|
||||||
$phpbb_root_path = preg_replace('/..\//', '', $phpbb_root_path, 1);
|
$phpbb_root_path = preg_replace('/\.\.\//', '', $phpbb_root_path, 1);
|
||||||
}
|
}
|
||||||
|
|
||||||
// If we don't have the cached container class, we make it now
|
// We must use an absolute path in the container because we cannot
|
||||||
// First, we create the temporary container so we can access the
|
// change the value at runtime when accessing it in different
|
||||||
// extension_manager
|
// directory levels.
|
||||||
$tmp_container = phpbb_create_container($extensions, $phpbb_root_path, $phpEx);
|
$phpbb_absolute_path = phpbb_realpath($phpbb_root_path);
|
||||||
|
|
||||||
|
// Create a temporary container for access to the ext.manager service
|
||||||
|
$tmp_container = phpbb_create_container($extensions, $phpbb_absolute_path, $phpEx);
|
||||||
$tmp_container->compile();
|
$tmp_container->compile();
|
||||||
|
|
||||||
// Now we pass the enabled extension paths into the ext compiler extension
|
// Now pass the enabled extension paths into the ext compiler extension
|
||||||
$extensions[] = new phpbb_di_extension_ext($tmp_container->get('ext.manager')->all_enabled());
|
$extensions[] = new phpbb_di_extension_ext($tmp_container->get('ext.manager')->all_enabled());
|
||||||
|
|
||||||
// And create our final container
|
// Create the final container to be compiled and cached
|
||||||
$container = phpbb_create_container($extensions, $phpbb_root_path, $phpEx);
|
$container = phpbb_create_container($extensions, $phpbb_absolute_path, $phpEx);
|
||||||
|
|
||||||
|
// Compile the container
|
||||||
foreach ($passes as $pass)
|
foreach ($passes as $pass)
|
||||||
{
|
{
|
||||||
$container->addCompilerPass($pass);
|
$container->addCompilerPass($pass);
|
||||||
|
@ -5526,8 +5525,7 @@ function phpbb_create_compiled_container(array $extensions, array $passes, $phpb
|
||||||
'base_class' => 'Symfony\\Component\\DependencyInjection\\ContainerBuilder',
|
'base_class' => 'Symfony\\Component\\DependencyInjection\\ContainerBuilder',
|
||||||
));
|
));
|
||||||
|
|
||||||
// Use the $real_root_path in case $phpbb_root_path was changed above
|
$file = file_put_contents("{$phpbb_absolute_path}cache/container.{$phpEx}", $cached_container_dump);
|
||||||
$file = file_put_contents("{$real_root_path}cache/container.$phpEx", $cached_container_dump);
|
|
||||||
|
|
||||||
return $container;
|
return $container;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Reference in a new issue