mirror of
https://github.com/phpbb/phpbb.git
synced 2025-06-01 03:54:56 +02:00
[ticket/14306] Automatically enable a safe mode when container building fails
PHPBB3-14306
This commit is contained in:
parent
f6524f4902
commit
78349ed80f
@ -49,7 +49,7 @@ function marklist(id, name, state)
|
||||
}
|
||||
|
||||
var rb = parent.getElementsByTagName('input');
|
||||
|
||||
|
||||
for (var r = 0; r < rb.length; r++)
|
||||
{
|
||||
if (rb[r].name.substr(0, name.length) == name)
|
||||
@ -103,7 +103,7 @@ function popup(url, width, height, name)
|
||||
<p><a href="{U_ADM_INDEX}">{L_ADMIN_INDEX}</a> • <a href="{U_INDEX}">{L_FORUM_INDEX}</a></p>
|
||||
<p id="skip"><a href="#acp">{L_SKIP}</a></p>
|
||||
</div>
|
||||
|
||||
|
||||
<div id="page-body">
|
||||
<div id="tabs">
|
||||
<ul>
|
||||
@ -120,7 +120,7 @@ function popup(url, width, height, name)
|
||||
<!-- DEFINE $LI_USED = 0 -->
|
||||
<!-- BEGIN l_block1 -->
|
||||
<!-- IF l_block1.S_SELECTED -->
|
||||
|
||||
|
||||
<!-- BEGIN l_block2 -->
|
||||
<!-- IF .l_block1.l_block2.l_block3 -->
|
||||
<!-- IF $LI_USED --></ul></div><!-- ENDIF -->
|
||||
@ -129,13 +129,13 @@ function popup(url, width, height, name)
|
||||
<ul>
|
||||
<!-- DEFINE $LI_USED = 1 -->
|
||||
<!-- ENDIF -->
|
||||
|
||||
|
||||
<!-- BEGIN l_block3 -->
|
||||
<li<!-- IF l_block1.l_block2.l_block3.S_SELECTED --> id="activemenu"<!-- ENDIF -->><a href="{l_block1.l_block2.l_block3.U_TITLE}"><span>{l_block1.l_block2.l_block3.L_TITLE}</span></a></li>
|
||||
<!-- DEFINE $LI_USED = 1 -->
|
||||
<!-- END l_block3 -->
|
||||
<!-- END l_block2 -->
|
||||
|
||||
|
||||
<!-- ENDIF -->
|
||||
<!-- END l_block1 -->
|
||||
<!-- IF $LI_USED -->
|
||||
@ -143,6 +143,14 @@ function popup(url, width, height, name)
|
||||
</div>
|
||||
<!-- ENDIF -->
|
||||
</div>
|
||||
|
||||
|
||||
<div id="main">
|
||||
<div class="main">
|
||||
<!-- IF CONTAINER_EXCEPTION !== false -->
|
||||
<div class="errorbox">
|
||||
<p>{L_CONTAINER_EXCEPTION}</p>
|
||||
<p>{L_CONTAINER_EXCEPTION_DETAIL}</p>
|
||||
<p>Exception message: {{ CONTAINER_EXCEPTION.getMessage() }}</p>
|
||||
<pre>{{ CONTAINER_EXCEPTION.getTraceAsString() }}</pre>
|
||||
</div>
|
||||
<!-- ENDIF -->
|
||||
|
@ -26,7 +26,7 @@ function adm_page_header($page_title)
|
||||
{
|
||||
global $config, $db, $user, $template;
|
||||
global $phpbb_root_path, $phpbb_admin_path, $phpEx, $SID, $_SID;
|
||||
global $phpbb_dispatcher;
|
||||
global $phpbb_dispatcher, $phpbb_container;
|
||||
|
||||
if (defined('HEADER_INC'))
|
||||
{
|
||||
@ -105,6 +105,8 @@ function adm_page_header($page_title)
|
||||
'S_CONTENT_ENCODING' => 'UTF-8',
|
||||
'S_CONTENT_FLOW_BEGIN' => ($user->lang['DIRECTION'] == 'ltr') ? 'left' : 'right',
|
||||
'S_CONTENT_FLOW_END' => ($user->lang['DIRECTION'] == 'ltr') ? 'right' : 'left',
|
||||
|
||||
'CONTAINER_EXCEPTION' => $phpbb_container->hasParameter('container_exception') ? $phpbb_container->getParameter('container_exception') : false,
|
||||
));
|
||||
|
||||
// An array of http headers that phpbb will set. The following event may override these.
|
||||
|
@ -90,7 +90,7 @@ class container_builder
|
||||
*
|
||||
* @var array
|
||||
*/
|
||||
protected $custom_parameters = null;
|
||||
protected $custom_parameters = [];
|
||||
|
||||
/**
|
||||
* @var \phpbb\config_php_file
|
||||
@ -126,67 +126,80 @@ class container_builder
|
||||
*/
|
||||
public function get_container()
|
||||
{
|
||||
$container_filename = $this->get_container_filename();
|
||||
$config_cache = new ConfigCache($container_filename, defined('DEBUG'));
|
||||
if ($this->use_cache && $config_cache->isFresh())
|
||||
{
|
||||
require($config_cache->getPath());
|
||||
$this->container = new \phpbb_cache_container();
|
||||
}
|
||||
else
|
||||
{
|
||||
$this->container_extensions = array(new extension\core($this->get_config_path()));
|
||||
|
||||
if ($this->use_extensions)
|
||||
try {
|
||||
$container_filename = $this->get_container_filename();
|
||||
$config_cache = new ConfigCache($container_filename, defined('DEBUG'));
|
||||
if ($this->use_cache && $config_cache->isFresh())
|
||||
{
|
||||
$this->load_extensions();
|
||||
require($config_cache->getPath());
|
||||
$this->container = new \phpbb_cache_container();
|
||||
}
|
||||
|
||||
// Inject the config
|
||||
if ($this->config_php_file)
|
||||
else
|
||||
{
|
||||
$this->container_extensions[] = new extension\config($this->config_php_file);
|
||||
}
|
||||
$this->container_extensions = array(new extension\core($this->get_config_path()));
|
||||
|
||||
$this->container = $this->create_container($this->container_extensions);
|
||||
|
||||
// Easy collections through tags
|
||||
$this->container->addCompilerPass(new pass\collection_pass());
|
||||
|
||||
// Event listeners "phpBB style"
|
||||
$this->container->addCompilerPass(new RegisterListenersPass('dispatcher', 'event.listener_listener', 'event.listener'));
|
||||
|
||||
// Event listeners "Symfony style"
|
||||
$this->container->addCompilerPass(new RegisterListenersPass('dispatcher'));
|
||||
|
||||
if ($this->use_extensions)
|
||||
{
|
||||
$this->register_ext_compiler_pass();
|
||||
}
|
||||
|
||||
$filesystem = new filesystem();
|
||||
$loader = new YamlFileLoader($this->container, new FileLocator($filesystem->realpath($this->get_config_path())));
|
||||
$loader->load($this->container->getParameter('core.environment') . '/config.yml');
|
||||
|
||||
$this->inject_custom_parameters();
|
||||
|
||||
if ($this->compile_container)
|
||||
{
|
||||
$this->container->compile();
|
||||
|
||||
if ($this->use_cache)
|
||||
if ($this->use_extensions)
|
||||
{
|
||||
$this->dump_container($config_cache);
|
||||
$this->load_extensions();
|
||||
}
|
||||
|
||||
// Inject the config
|
||||
if ($this->config_php_file)
|
||||
{
|
||||
$this->container_extensions[] = new extension\config($this->config_php_file);
|
||||
}
|
||||
|
||||
$this->container = $this->create_container($this->container_extensions);
|
||||
|
||||
// Easy collections through tags
|
||||
$this->container->addCompilerPass(new pass\collection_pass());
|
||||
|
||||
// Event listeners "phpBB style"
|
||||
$this->container->addCompilerPass(new RegisterListenersPass('dispatcher', 'event.listener_listener', 'event.listener'));
|
||||
|
||||
// Event listeners "Symfony style"
|
||||
$this->container->addCompilerPass(new RegisterListenersPass('dispatcher'));
|
||||
|
||||
if ($this->use_extensions)
|
||||
{
|
||||
$this->register_ext_compiler_pass();
|
||||
}
|
||||
|
||||
$filesystem = new filesystem();
|
||||
$loader = new YamlFileLoader($this->container, new FileLocator($filesystem->realpath($this->get_config_path())));
|
||||
$loader->load($this->container->getParameter('core.environment') . '/config.yml');
|
||||
|
||||
$this->inject_custom_parameters();
|
||||
|
||||
if ($this->compile_container)
|
||||
{
|
||||
$this->container->compile();
|
||||
|
||||
if ($this->use_cache)
|
||||
{
|
||||
$this->dump_container($config_cache);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if ($this->compile_container && $this->config_php_file)
|
||||
if ($this->compile_container && $this->config_php_file)
|
||||
{
|
||||
$this->container->set('config.php', $this->config_php_file);
|
||||
}
|
||||
|
||||
return $this->container;
|
||||
}
|
||||
catch (\Exception $e)
|
||||
{
|
||||
$this->container->set('config.php', $this->config_php_file);
|
||||
return $this
|
||||
->without_extensions()
|
||||
->without_cache()
|
||||
->with_custom_parameters(array_merge($this->custom_parameters, [
|
||||
'container_exception' => $e,
|
||||
]))
|
||||
->get_container()
|
||||
;
|
||||
}
|
||||
|
||||
return $this->container;
|
||||
}
|
||||
|
||||
/**
|
||||
@ -451,13 +464,11 @@ class container_builder
|
||||
*/
|
||||
protected function inject_custom_parameters()
|
||||
{
|
||||
if ($this->custom_parameters !== null)
|
||||
foreach ($this->custom_parameters as $key => $value)
|
||||
{
|
||||
foreach ($this->custom_parameters as $key => $value)
|
||||
{
|
||||
$this->container->setParameter($key, $value);
|
||||
}
|
||||
$this->container->setParameter($key, $value);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
|
Loading…
x
Reference in New Issue
Block a user