| ( ! ) Warning: mkdir(): File exists in /usr/local/vufind/config/application.config.php on line 66 | ||||
|---|---|---|---|---|
| Call Stack | ||||
| # | Time | Memory | Function | Location |
| 1 | 0.0003 | 499624 | {main}( ) | .../index.php:0 |
| 2 | 0.0004 | 501784 | include( '/usr/local/vufind/config/application.php ) | .../index.php:11 |
| 3 | 0.0171 | 2445952 | require( '/usr/local/vufind/config/application.config.php ) | .../application.php:14 |
| 4 | 0.0172 | 2447800 | mkdir( $directory = '/usr/local/vufind/local/cache/configs' ) | .../application.config.php:66 |
| ( ! ) Warning: Cannot modify header information - headers already sent by (output started at /usr/local/vufind/config/application.config.php:66) in /usr/local/vufind/module/VuFind/src/VuFind/Cookie/CookieManager.php on line 226 | ||||
|---|---|---|---|---|
| Call Stack | ||||
| # | Time | Memory | Function | Location |
| 1 | 0.0003 | 499624 | {main}( ) | .../index.php:0 |
| 2 | 0.0004 | 501784 | include( '/usr/local/vufind/config/application.php ) | .../index.php:11 |
| 3 | 0.0190 | 2440640 | Laminas\Mvc\Application::init( $configuration = ['modules' => [0 => 'Laminas\\Cache', 1 => 'Laminas\\Cache\\Storage\\Adapter\\BlackHole', 2 => 'Laminas\\Cache\\Storage\\Adapter\\Filesystem', 3 => 'Laminas\\Cache\\Storage\\Adapter\\Memcached', 4 => 'Laminas\\Cache\\Storage\\Adapter\\Memory', 5 => 'Laminas\\Form', 6 => 'Laminas\\Router', 7 => 'LmcRbacMvc', 8 => 'Laminas\\I18n', 9 => 'Laminas\\Mvc\\I18n', 10 => 'SlmLocale', 11 => 'VuFindTheme', 12 => 'VuFindSearch', 13 => 'VuFind', 14 => 'VuFindAdmin', 15 => 'VuFindApi', 16 => 'WhoopsErrorHandler', 17 => 'VuFindDevTools', 19 => 'OpenRS2'], 'module_listener_options' => ['config_glob_paths' => [...], 'config_cache_enabled' => FALSE, 'module_map_cache_enabled' => FALSE, 'check_dependencies' => TRUE, 'cache_dir' => '/usr/local/vufind/local/cache/configs/447fb313db45e4f3dbaec9561494490f', 'module_paths' => [...]], 'service_manager' => ['use_defaults' => TRUE, 'factories' => [...]]] ) | .../application.php:14 |
| 4 | 0.1123 | 6201696 | Laminas\Mvc\Application->bootstrap( $listeners = [] ) | .../Application.php:260 |
| 5 | 0.1399 | 7703672 | Laminas\EventManager\EventManager->triggerEvent( $event = class Laminas\Mvc\MvcEvent { protected $name = 'bootstrap'; protected $target = class Laminas\Mvc\Application { protected $defaultListeners = [...]; protected $event = ...; protected $events = class Laminas\EventManager\EventManager { ... }; protected $request = class VuFind\Http\PhpEnvironment\Request { ... }; protected $response = class Laminas\Http\PhpEnvironment\Response { ... }; protected Laminas\ServiceManager\ServiceManager $serviceManager = class Laminas\ServiceManager\ServiceManager { ... } }; protected $params = ['application' => class Laminas\Mvc\Application { ... }, 'request' => class VuFind\Http\PhpEnvironment\Request { ... }, 'response' => class Laminas\Http\PhpEnvironment\Response { ... }, 'router' => class Laminas\Router\Http\TreeRouteStack { ... }]; protected $stopPropagation = FALSE; protected $application = class Laminas\Mvc\Application { protected $defaultListeners = [...]; protected $event = ...; protected $events = class Laminas\EventManager\EventManager { ... }; protected $request = class VuFind\Http\PhpEnvironment\Request { ... }; protected $response = class Laminas\Http\PhpEnvironment\Response { ... }; protected Laminas\ServiceManager\ServiceManager $serviceManager = class Laminas\ServiceManager\ServiceManager { ... } }; protected $request = class VuFind\Http\PhpEnvironment\Request { protected $metadata = [...]; protected $content = ''; protected $version = '1.1'; protected $headers = class Laminas\Http\Headers { ... }; protected $method = 'GET'; protected $allowCustomMethods = TRUE; protected $uri = class Laminas\Uri\Http { ... }; protected $queryParams = class Laminas\Stdlib\Parameters { ... }; protected $postParams = class Laminas\Stdlib\Parameters { ... }; protected $fileParams = NULL; protected $baseUrl = NULL; protected $basePath = NULL; protected $requestUri = '/vufind/OpenRS2/Advanced?edit=236242&lng=ca'; protected $serverParams = class Laminas\Stdlib\Parameters { ... }; protected $envParams = class Laminas\Stdlib\Parameters { ... } }; protected $response = class Laminas\Http\PhpEnvironment\Response { protected $metadata = [...]; protected $content = ''; protected $version = NULL; protected $headers = NULL; protected $recommendedReasonPhrases = [...]; protected $statusCode = 200; protected $reasonPhrase = NULL; public $headersSent = NULL; protected $contentSent = FALSE; private $headersSentHandler = NULL }; protected $result = NULL; protected $router = class Laminas\Router\Http\TreeRouteStack { protected $routes = class Laminas\Router\PriorityList { ... }; protected $routePluginManager = class Laminas\Router\RoutePluginManager { ... }; protected $defaultParams = [...]; protected $baseUrl = NULL; protected $requestUri = NULL; protected $prototypes = class ArrayObject { ... }; public $priority = NULL }; protected $routeMatch = NULL; protected $viewModel = class Laminas\View\Model\ViewModel { protected $captureTo = 'content'; protected $children = [...]; protected $options = [...]; protected $template = 'layout/layout'; protected $terminate = FALSE; protected $variables = class Laminas\View\Variables { ... }; protected $append = FALSE } } ) | .../Application.php:148 |
| 6 | 0.1399 | 7703672 | Laminas\EventManager\EventManager->triggerListeners( $event = class Laminas\Mvc\MvcEvent { protected $name = 'bootstrap'; protected $target = class Laminas\Mvc\Application { protected $defaultListeners = [...]; protected $event = ...; protected $events = class Laminas\EventManager\EventManager { ... }; protected $request = class VuFind\Http\PhpEnvironment\Request { ... }; protected $response = class Laminas\Http\PhpEnvironment\Response { ... }; protected Laminas\ServiceManager\ServiceManager $serviceManager = class Laminas\ServiceManager\ServiceManager { ... } }; protected $params = ['application' => class Laminas\Mvc\Application { ... }, 'request' => class VuFind\Http\PhpEnvironment\Request { ... }, 'response' => class Laminas\Http\PhpEnvironment\Response { ... }, 'router' => class Laminas\Router\Http\TreeRouteStack { ... }]; protected $stopPropagation = FALSE; protected $application = class Laminas\Mvc\Application { protected $defaultListeners = [...]; protected $event = ...; protected $events = class Laminas\EventManager\EventManager { ... }; protected $request = class VuFind\Http\PhpEnvironment\Request { ... }; protected $response = class Laminas\Http\PhpEnvironment\Response { ... }; protected Laminas\ServiceManager\ServiceManager $serviceManager = class Laminas\ServiceManager\ServiceManager { ... } }; protected $request = class VuFind\Http\PhpEnvironment\Request { protected $metadata = [...]; protected $content = ''; protected $version = '1.1'; protected $headers = class Laminas\Http\Headers { ... }; protected $method = 'GET'; protected $allowCustomMethods = TRUE; protected $uri = class Laminas\Uri\Http { ... }; protected $queryParams = class Laminas\Stdlib\Parameters { ... }; protected $postParams = class Laminas\Stdlib\Parameters { ... }; protected $fileParams = NULL; protected $baseUrl = NULL; protected $basePath = NULL; protected $requestUri = '/vufind/OpenRS2/Advanced?edit=236242&lng=ca'; protected $serverParams = class Laminas\Stdlib\Parameters { ... }; protected $envParams = class Laminas\Stdlib\Parameters { ... } }; protected $response = class Laminas\Http\PhpEnvironment\Response { protected $metadata = [...]; protected $content = ''; protected $version = NULL; protected $headers = NULL; protected $recommendedReasonPhrases = [...]; protected $statusCode = 200; protected $reasonPhrase = NULL; public $headersSent = NULL; protected $contentSent = FALSE; private $headersSentHandler = NULL }; protected $result = NULL; protected $router = class Laminas\Router\Http\TreeRouteStack { protected $routes = class Laminas\Router\PriorityList { ... }; protected $routePluginManager = class Laminas\Router\RoutePluginManager { ... }; protected $defaultParams = [...]; protected $baseUrl = NULL; protected $requestUri = NULL; protected $prototypes = class ArrayObject { ... }; public $priority = NULL }; protected $routeMatch = NULL; protected $viewModel = class Laminas\View\Model\ViewModel { protected $captureTo = 'content'; protected $children = [...]; protected $options = [...]; protected $template = 'layout/layout'; protected $terminate = FALSE; protected $variables = class Laminas\View\Variables { ... }; protected $append = FALSE } }, $callback = ??? ) | .../EventManager.php:168 |
| 7 | 0.2024 | 8319208 | SlmLocale\Module->onBootstrap( $e = class Laminas\Mvc\MvcEvent { protected $name = 'bootstrap'; protected $target = class Laminas\Mvc\Application { protected $defaultListeners = [...]; protected $event = ...; protected $events = class Laminas\EventManager\EventManager { ... }; protected $request = class VuFind\Http\PhpEnvironment\Request { ... }; protected $response = class Laminas\Http\PhpEnvironment\Response { ... }; protected Laminas\ServiceManager\ServiceManager $serviceManager = class Laminas\ServiceManager\ServiceManager { ... } }; protected $params = ['application' => class Laminas\Mvc\Application { ... }, 'request' => class VuFind\Http\PhpEnvironment\Request { ... }, 'response' => class Laminas\Http\PhpEnvironment\Response { ... }, 'router' => class Laminas\Router\Http\TreeRouteStack { ... }]; protected $stopPropagation = FALSE; protected $application = class Laminas\Mvc\Application { protected $defaultListeners = [...]; protected $event = ...; protected $events = class Laminas\EventManager\EventManager { ... }; protected $request = class VuFind\Http\PhpEnvironment\Request { ... }; protected $response = class Laminas\Http\PhpEnvironment\Response { ... }; protected Laminas\ServiceManager\ServiceManager $serviceManager = class Laminas\ServiceManager\ServiceManager { ... } }; protected $request = class VuFind\Http\PhpEnvironment\Request { protected $metadata = [...]; protected $content = ''; protected $version = '1.1'; protected $headers = class Laminas\Http\Headers { ... }; protected $method = 'GET'; protected $allowCustomMethods = TRUE; protected $uri = class Laminas\Uri\Http { ... }; protected $queryParams = class Laminas\Stdlib\Parameters { ... }; protected $postParams = class Laminas\Stdlib\Parameters { ... }; protected $fileParams = NULL; protected $baseUrl = NULL; protected $basePath = NULL; protected $requestUri = '/vufind/OpenRS2/Advanced?edit=236242&lng=ca'; protected $serverParams = class Laminas\Stdlib\Parameters { ... }; protected $envParams = class Laminas\Stdlib\Parameters { ... } }; protected $response = class Laminas\Http\PhpEnvironment\Response { protected $metadata = [...]; protected $content = ''; protected $version = NULL; protected $headers = NULL; protected $recommendedReasonPhrases = [...]; protected $statusCode = 200; protected $reasonPhrase = NULL; public $headersSent = NULL; protected $contentSent = FALSE; private $headersSentHandler = NULL }; protected $result = NULL; protected $router = class Laminas\Router\Http\TreeRouteStack { protected $routes = class Laminas\Router\PriorityList { ... }; protected $routePluginManager = class Laminas\Router\RoutePluginManager { ... }; protected $defaultParams = [...]; protected $baseUrl = NULL; protected $requestUri = NULL; protected $prototypes = class ArrayObject { ... }; public $priority = NULL }; protected $routeMatch = NULL; protected $viewModel = class Laminas\View\Model\ViewModel { protected $captureTo = 'content'; protected $children = [...]; protected $options = [...]; protected $template = 'layout/layout'; protected $terminate = FALSE; protected $variables = class Laminas\View\Variables { ... }; protected $append = FALSE } } ) | .../EventManager.php:318 |
| 8 | 0.2114 | 8630616 | SlmLocale\Locale\Detector->detect( $request = class VuFind\Http\PhpEnvironment\Request { protected $metadata = []; protected $content = ''; protected $version = '1.1'; protected $headers = class Laminas\Http\Headers { protected $pluginClassLoader = class Laminas\Http\HeaderLoader { ... }; protected $headersKeys = [...]; protected $headers = [...] }; protected $method = 'GET'; protected $allowCustomMethods = TRUE; protected $uri = class Laminas\Uri\Http { protected $scheme = 'https'; protected $userInfo = NULL; protected $host = 'intcon-pika-dev.avk8s.k-int.com'; protected $port = NULL; protected $path = '/vufind/OpenRS2/Advanced'; protected $query = 'edit=236242&lng=ca'; protected $fragment = NULL; protected $validHostTypes = 27; protected $user = NULL; protected $password = NULL }; protected $queryParams = class Laminas\Stdlib\Parameters { private ${ArrayObject}storage = [...] }; protected $postParams = class Laminas\Stdlib\Parameters { private ${ArrayObject}storage = [...] }; protected $fileParams = NULL; protected $baseUrl = NULL; protected $basePath = NULL; protected $requestUri = '/vufind/OpenRS2/Advanced?edit=236242&lng=ca'; protected $serverParams = class Laminas\Stdlib\Parameters { private ${ArrayObject}storage = [...] }; protected $envParams = class Laminas\Stdlib\Parameters { private ${ArrayObject}storage = [...] } }, $response = class Laminas\Http\PhpEnvironment\Response { protected $metadata = []; protected $content = ''; protected $version = NULL; protected $headers = NULL; protected $recommendedReasonPhrases = [100 => 'Continue', 101 => 'Switching Protocols', 102 => 'Processing', 200 => 'OK', 201 => 'Created', 202 => 'Accepted', 203 => 'Non-Authoritative Information', 204 => 'No Content', 205 => 'Reset Content', 206 => 'Partial Content', 207 => 'Multi-status', 208 => 'Already Reported', 226 => 'IM Used', 300 => 'Multiple Choices', 301 => 'Moved Permanently', 302 => 'Found', 303 => 'See Other', 304 => 'Not Modified', 305 => 'Use Proxy', 306 => 'Switch Proxy', 307 => 'Temporary Redirect', 308 => 'Permanent Redirect', 400 => 'Bad Request', 401 => 'Unauthorized', 402 => 'Payment Required', 403 => 'Forbidden', 404 => 'Not Found', 405 => 'Method Not Allowed', 406 => 'Not Acceptable', 407 => 'Proxy Authentication Required', 408 => 'Request Time-out', 409 => 'Conflict', 410 => 'Gone', 411 => 'Length Required', 412 => 'Precondition Failed', 413 => 'Content Too Large', 414 => 'URI Too Long', 415 => 'Unsupported Media Type', 416 => 'Range Not Satisfiable', 417 => 'Expectation Failed', 418 => 'I\'m a teapot', 422 => 'Unprocessable Content', 423 => 'Locked', 424 => 'Failed Dependency', 425 => 'Too Early', 426 => 'Upgrade Required', 428 => 'Precondition Required', 429 => 'Too Many Requests', 431 => 'Request Header Fields Too Large', 444 => 'Connection Closed Without Response', 451 => 'Unavailable For Legal Reasons', 499 => 'Client Closed Request', 500 => 'Internal Server Error', 501 => 'Not Implemented', 502 => 'Bad Gateway', 503 => 'Service Unavailable', 504 => 'Gateway Timeout', 505 => 'HTTP Version not supported', 506 => 'Variant Also Negotiates', 507 => 'Insufficient Storage', 508 => 'Loop Detected', 510 => 'Not Extended', 511 => 'Network Authentication Required', 599 => 'Network Connect Timeout Error']; protected $statusCode = 200; protected $reasonPhrase = NULL; public $headersSent = NULL; protected $contentSent = FALSE; private $headersSentHandler = NULL } ) | .../Module.php:66 |
| 9 | 0.2116 | 8632408 | Laminas\EventManager\EventManager->triggerEventUntil( $callback = class Closure { public $static = ['return' => FALSE]; public $this = class SlmLocale\Locale\Detector { protected $events = class Laminas\EventManager\EventManager { ... }; protected $default = 'en'; protected $supported = [...]; protected $mappings = NULL }; public $parameter = ['$r' => '<required>'] }, $event = class SlmLocale\LocaleEvent { protected $name = 'found'; protected $target = class SlmLocale\Locale\Detector { protected $events = class Laminas\EventManager\EventManager { ... }; protected $default = 'en'; protected $supported = [...]; protected $mappings = NULL }; protected $params = ['request' => class VuFind\Http\PhpEnvironment\Request { ... }, 'response' => class Laminas\Http\PhpEnvironment\Response { ... }, 'supported' => [...], 'locale' => 'ca']; protected $stopPropagation = FALSE; protected $request = class VuFind\Http\PhpEnvironment\Request { protected $metadata = [...]; protected $content = ''; protected $version = '1.1'; protected $headers = class Laminas\Http\Headers { ... }; protected $method = 'GET'; protected $allowCustomMethods = TRUE; protected $uri = class Laminas\Uri\Http { ... }; protected $queryParams = class Laminas\Stdlib\Parameters { ... }; protected $postParams = class Laminas\Stdlib\Parameters { ... }; protected $fileParams = NULL; protected $baseUrl = NULL; protected $basePath = NULL; protected $requestUri = '/vufind/OpenRS2/Advanced?edit=236242&lng=ca'; protected $serverParams = class Laminas\Stdlib\Parameters { ... }; protected $envParams = class Laminas\Stdlib\Parameters { ... } }; protected $response = class Laminas\Http\PhpEnvironment\Response { protected $metadata = [...]; protected $content = ''; protected $version = NULL; protected $headers = NULL; protected $recommendedReasonPhrases = [...]; protected $statusCode = 200; protected $reasonPhrase = NULL; public $headersSent = NULL; protected $contentSent = FALSE; private $headersSentHandler = NULL }; protected $supported = [0 => 'en', 1 => 'de', 2 => 'es', 3 => 'fr', 4 => 'it', 5 => 'ja', 6 => 'nl', 7 => 'pt', 8 => 'pt-br', 9 => 'zh-cn', 10 => 'zh', 11 => 'tr', 12 => 'he', 13 => 'ga', 14 => 'cy', 15 => 'el', 16 => 'ca', 17 => 'eu', 18 => 'ru', 19 => 'cs', 20 => 'fi', 21 => 'sv', 22 => 'pl', 23 => 'da', 24 => 'sl', 25 => 'ar', 26 => 'bn', 27 => 'gl', 28 => 'vi', 29 => 'hr', 30 => 'hi', 31 => 'hy', 32 => 'uk', 33 => 'se', 34 => 'mn', 35 => 'mi']; protected $locale = 'ca'; protected $uri = NULL } ) | .../Detector.php:191 |
| 10 | 0.2116 | 8632408 | Laminas\EventManager\EventManager->triggerListeners( $event = class SlmLocale\LocaleEvent { protected $name = 'found'; protected $target = class SlmLocale\Locale\Detector { protected $events = class Laminas\EventManager\EventManager { ... }; protected $default = 'en'; protected $supported = [...]; protected $mappings = NULL }; protected $params = ['request' => class VuFind\Http\PhpEnvironment\Request { ... }, 'response' => class Laminas\Http\PhpEnvironment\Response { ... }, 'supported' => [...], 'locale' => 'ca']; protected $stopPropagation = FALSE; protected $request = class VuFind\Http\PhpEnvironment\Request { protected $metadata = [...]; protected $content = ''; protected $version = '1.1'; protected $headers = class Laminas\Http\Headers { ... }; protected $method = 'GET'; protected $allowCustomMethods = TRUE; protected $uri = class Laminas\Uri\Http { ... }; protected $queryParams = class Laminas\Stdlib\Parameters { ... }; protected $postParams = class Laminas\Stdlib\Parameters { ... }; protected $fileParams = NULL; protected $baseUrl = NULL; protected $basePath = NULL; protected $requestUri = '/vufind/OpenRS2/Advanced?edit=236242&lng=ca'; protected $serverParams = class Laminas\Stdlib\Parameters { ... }; protected $envParams = class Laminas\Stdlib\Parameters { ... } }; protected $response = class Laminas\Http\PhpEnvironment\Response { protected $metadata = [...]; protected $content = ''; protected $version = NULL; protected $headers = NULL; protected $recommendedReasonPhrases = [...]; protected $statusCode = 200; protected $reasonPhrase = NULL; public $headersSent = NULL; protected $contentSent = FALSE; private $headersSentHandler = NULL }; protected $supported = [0 => 'en', 1 => 'de', 2 => 'es', 3 => 'fr', 4 => 'it', 5 => 'ja', 6 => 'nl', 7 => 'pt', 8 => 'pt-br', 9 => 'zh-cn', 10 => 'zh', 11 => 'tr', 12 => 'he', 13 => 'ga', 14 => 'cy', 15 => 'el', 16 => 'ca', 17 => 'eu', 18 => 'ru', 19 => 'cs', 20 => 'fi', 21 => 'sv', 22 => 'pl', 23 => 'da', 24 => 'sl', 25 => 'ar', 26 => 'bn', 27 => 'gl', 28 => 'vi', 29 => 'hr', 30 => 'hi', 31 => 'hy', 32 => 'uk', 33 => 'se', 34 => 'mn', 35 => 'mi']; protected $locale = 'ca'; protected $uri = NULL }, $callback = class Closure { public $static = ['return' => FALSE]; public $this = class SlmLocale\Locale\Detector { protected $events = class Laminas\EventManager\EventManager { ... }; protected $default = 'en'; protected $supported = [...]; protected $mappings = NULL }; public $parameter = ['$r' => '<required>'] } ) | .../EventManager.php:176 |
| 11 | 0.2116 | 8632968 | VuFind\I18n\Locale\LocaleDetectorFactory->VuFind\I18n\Locale\{closure:/usr/local/vufind/module/VuFind/src/VuFind/I18n/Locale/LocaleDetectorFactory.php:92-97}( $event = class SlmLocale\LocaleEvent { protected $name = 'found'; protected $target = class SlmLocale\Locale\Detector { protected $events = class Laminas\EventManager\EventManager { ... }; protected $default = 'en'; protected $supported = [...]; protected $mappings = NULL }; protected $params = ['request' => class VuFind\Http\PhpEnvironment\Request { ... }, 'response' => class Laminas\Http\PhpEnvironment\Response { ... }, 'supported' => [...], 'locale' => 'ca']; protected $stopPropagation = FALSE; protected $request = class VuFind\Http\PhpEnvironment\Request { protected $metadata = [...]; protected $content = ''; protected $version = '1.1'; protected $headers = class Laminas\Http\Headers { ... }; protected $method = 'GET'; protected $allowCustomMethods = TRUE; protected $uri = class Laminas\Uri\Http { ... }; protected $queryParams = class Laminas\Stdlib\Parameters { ... }; protected $postParams = class Laminas\Stdlib\Parameters { ... }; protected $fileParams = NULL; protected $baseUrl = NULL; protected $basePath = NULL; protected $requestUri = '/vufind/OpenRS2/Advanced?edit=236242&lng=ca'; protected $serverParams = class Laminas\Stdlib\Parameters { ... }; protected $envParams = class Laminas\Stdlib\Parameters { ... } }; protected $response = class Laminas\Http\PhpEnvironment\Response { protected $metadata = [...]; protected $content = ''; protected $version = NULL; protected $headers = NULL; protected $recommendedReasonPhrases = [...]; protected $statusCode = 200; protected $reasonPhrase = NULL; public $headersSent = NULL; protected $contentSent = FALSE; private $headersSentHandler = NULL }; protected $supported = [0 => 'en', 1 => 'de', 2 => 'es', 3 => 'fr', 4 => 'it', 5 => 'ja', 6 => 'nl', 7 => 'pt', 8 => 'pt-br', 9 => 'zh-cn', 10 => 'zh', 11 => 'tr', 12 => 'he', 13 => 'ga', 14 => 'cy', 15 => 'el', 16 => 'ca', 17 => 'eu', 18 => 'ru', 19 => 'cs', 20 => 'fi', 21 => 'sv', 22 => 'pl', 23 => 'da', 24 => 'sl', 25 => 'ar', 26 => 'bn', 27 => 'gl', 28 => 'vi', 29 => 'hr', 30 => 'hi', 31 => 'hy', 32 => 'uk', 33 => 'se', 34 => 'mn', 35 => 'mi']; protected $locale = 'ca'; protected $uri = NULL } ) | .../EventManager.php:318 |
| 12 | 0.2116 | 8633128 | VuFind\Cookie\CookieManager->set( $key = 'language', $value = 'ca', $expire = ???, $httpOnly = ???, $sameSite = ??? ) | .../LocaleDetectorFactory.php:95 |
| 13 | 0.2116 | 8633128 | VuFind\Cookie\CookieManager->setGlobalCookie( $key = 'language', $value = 'ca', $expire = 0, $httpOnly = NULL, $sameSite = NULL ) | .../CookieManager.php:317 |
| 14 | 0.2116 | 8633128 | VuFind\Cookie\CookieManager->proxySetCookie( $key = 'language', $value = 'ca', $expire = 0, $path = '/', $domain = NULL, $secure = FALSE, $httpOnly = TRUE, $sameSite = 'Lax' ) | .../CookieManager.php:266 |
| 15 | 0.2116 | 8633504 | setcookie( $name = 'language', $value = 'ca', $expires_or_options = ['expires' => 0, 'path' => '/', 'domain' => NULL, 'samesite' => 'Lax', 'secure' => FALSE, 'httponly' => TRUE] ) | .../CookieManager.php:226 |
*
* @return object
* @throws ServiceNotFoundException If unable to resolve the service.
* @throws ServiceNotCreatedException If an exception is raised when creating a service.
* @throws ContainerExceptionInterface If any other error occurs.
*/
private function doCreate(string $resolvedName, ?array $options = null)
{
try {
if (! isset($this->delegators[$resolvedName])) {
// Let's create the service by fetching the factory
$factory = $this->getFactory($resolvedName);
$object = $factory($this->creationContext, $resolvedName, $options);
} else {
$object = $this->createDelegatorFromName($resolvedName, $options);
}
} catch (ContainerExceptionInterface $exception) {
throw $exception;
} catch (Exception $exception) {
throw new ServiceNotCreatedException(sprintf(
'Service with name "%s" could not be created. Reason: %s',
$resolvedName,
$exception->getMessage()
), (int) $exception->getCode(), $exception);
}
foreach ($this->initializers as $initializer) {
$initializer($this->creationContext, $object);
}
return $object;
}
/**
* Create the lazy services delegator factory.
*
* Creates the lazy services delegator factory based on the lazy_services
* configuration present.
*
* @throws ServiceNotCreatedException When the lazy service class_map configuration is missing.
"Service with name "Laminas\Session\SessionManager" could not be created. Reason: ini_set(): Session ini settings cannot be changed after headers have already been sent"
// introduced in PHP 7.2. Do not alter running INI setting.
return $this;
default:
$key = 'session.' . $storageName;
break;
}
$iniGet = ini_get($key);
$storageValue = (string) $storageValue;
if (false !== $iniGet && (string) $iniGet === $storageValue) {
return $this;
}
$sessionRequiresRestart = false;
if (session_status() === PHP_SESSION_ACTIVE) {
session_write_close();
$sessionRequiresRestart = true;
}
$result = ini_set($key, $storageValue);
if ($sessionRequiresRestart) {
session_start();
}
if (false === $result) {
throw new Exception\InvalidArgumentException(
"'{$key}' is not a valid sessions-related ini setting."
);
}
return $this;
}
/**
* Retrieve a storage option from a backend configuration store
*
* Used to retrieve default values from a backend configuration store.
*
* @param string $storageOption
* @return mixed
"ini_set(): Session ini settings cannot be changed after headers have already been sent"
// introduced in PHP 7.2. Do not alter running INI setting.
return $this;
default:
$key = 'session.' . $storageName;
break;
}
$iniGet = ini_get($key);
$storageValue = (string) $storageValue;
if (false !== $iniGet && (string) $iniGet === $storageValue) {
return $this;
}
$sessionRequiresRestart = false;
if (session_status() === PHP_SESSION_ACTIVE) {
session_write_close();
$sessionRequiresRestart = true;
}
$result = ini_set($key, $storageValue);
if ($sessionRequiresRestart) {
session_start();
}
if (false === $result) {
throw new Exception\InvalidArgumentException(
"'{$key}' is not a valid sessions-related ini setting."
);
}
return $this;
}
/**
* Retrieve a storage option from a backend configuration store
*
* Used to retrieve default values from a backend configuration store.
*
* @param string $storageOption
* @return mixed
"session.cookie_httponly"
"1"
{
if (null === $this->cookieSecure) {
$this->cookieSecure = $this->getStorageOption('cookie_secure');
}
return $this->cookieSecure;
}
/**
* Set session.cookie_httponly
*
* case sensitive method lookups in setOptions means this method has an
* unusual casing
*
* @param bool $cookieHttpOnly
* @return StandardConfig
*/
public function setCookieHttpOnly($cookieHttpOnly)
{
$this->cookieHttpOnly = (bool) $cookieHttpOnly;
$this->setStorageOption('cookie_httponly', $this->cookieHttpOnly);
return $this;
}
/**
* Get session.cookie_httponly
*
* @return bool|string
*/
public function getCookieHttpOnly()
{
if (null === $this->cookieHttpOnly) {
$this->cookieHttpOnly = $this->getStorageOption('cookie_httponly');
}
return $this->cookieHttpOnly;
}
/**
* Set session.use_cookies
*
* @param bool $useCookies
"cookie_httponly"
"1"
* otherwise, a standard option will be set with the value provided via
* {@link setOption()}.
*
* @param array|Traversable $options
* @return StandardConfig
* @throws Exception\InvalidArgumentException
*/
public function setOptions($options)
{
if (! is_array($options) && ! $options instanceof Traversable) {
throw new Exception\InvalidArgumentException(sprintf(
'Parameter provided to %s must be an array or Traversable',
__METHOD__
));
}
foreach ($options as $key => $value) {
$setter = 'set' . str_replace(' ', '', ucwords(str_replace('_', ' ', $key)));
if (method_exists($this, $setter)) {
$this->{$setter}($value);
} else {
$this->setOption($key, $value);
}
}
return $this;
}
/**
* Get all options set
*
* @return array
*/
public function getOptions()
{
return $this->options;
}
/**
* Set an individual option
*
true
*
* @return object
*
* @throws ServiceNotFoundException if unable to resolve the service.
* @throws ServiceNotCreatedException if an exception is raised when
* creating a service.
* @throws ContainerException&\Throwable if any other error occurs
*/
public function __invoke(
ContainerInterface $container,
$requestedName,
array $options = null
) {
if (!empty($options)) {
throw new \Exception('Unexpected options passed to factory.');
}
// Build configuration:
$sessionConfig = new \Laminas\Session\Config\SessionConfig();
$sessionConfig->setOptions($this->getOptions($container));
// Build session manager and attach handler:
$sessionManager = new $requestedName($sessionConfig);
$sessionManager->setSaveHandler($this->getHandler($container));
// Start up the session:
$sessionManager->start();
// Verify that any existing session has the correct path to avoid using
// a cookie from a service higher up in the path hierarchy.
$storage = new \Laminas\Session\Container('SessionState', $sessionManager);
if (null !== $storage->cookiePath) {
if ($storage->cookiePath != $sessionConfig->getCookiePath()) {
// Disable writes temporarily to keep the existing session intact
$sessionManager->getSaveHandler()->disableWrites();
// Regenerate session ID and reset the session data
$sessionManager->regenerateId(false);
session_unset();
$sessionManager->getSaveHandler()->enableWrites();
$storage->cookiePath = $sessionConfig->getCookiePath();
array:5 [ "cookie_httponly" => true "cookie_path" => "/" "cookie_secure" => false "cookie_samesite" => "Lax" "name" => "VUFIND_SESSION" ]
return $creationCallback();
}
/**
* Create a new instance with an already resolved name
*
* This is a highly performance sensitive method, do not modify if you have not benchmarked it carefully
*
* @return object
* @throws ServiceNotFoundException If unable to resolve the service.
* @throws ServiceNotCreatedException If an exception is raised when creating a service.
* @throws ContainerExceptionInterface If any other error occurs.
*/
private function doCreate(string $resolvedName, ?array $options = null)
{
try {
if (! isset($this->delegators[$resolvedName])) {
// Let's create the service by fetching the factory
$factory = $this->getFactory($resolvedName);
$object = $factory($this->creationContext, $resolvedName, $options);
} else {
$object = $this->createDelegatorFromName($resolvedName, $options);
}
} catch (ContainerExceptionInterface $exception) {
throw $exception;
} catch (Exception $exception) {
throw new ServiceNotCreatedException(sprintf(
'Service with name "%s" could not be created. Reason: %s',
$resolvedName,
$exception->getMessage()
), (int) $exception->getCode(), $exception);
}
foreach ($this->initializers as $initializer) {
$initializer($this->creationContext, $object);
}
return $object;
}
Laminas\ServiceManager\ServiceManager {#7}
"Laminas\Session\SessionManager"
null
// We now deal with requests which may be aliases.
$resolvedName = $this->aliases[$name] ?? $name;
// Update shared service information as we checked if the alias was shared before.
if ($resolvedName !== $name) {
$sharedService = $this->shared[$resolvedName] ?? $sharedService;
}
// The following is only true if the requested service is a shared alias.
$sharedAlias = $sharedService && isset($this->services[$resolvedName]);
// If the alias is configured as a shared service, we are done.
if ($sharedAlias) {
$this->services[$name] = $this->services[$resolvedName];
return $this->services[$resolvedName];
}
// At this point, we have to create the object.
// We use the resolved name for that.
$object = $this->doCreate($resolvedName);
// Cache the object for later, if it is supposed to be shared.
if ($sharedService) {
$this->services[$resolvedName] = $object;
}
// Also cache under the alias name; this allows sharing based on the
// service name used.
if ($sharedAlias) {
$this->services[$name] = $object;
}
return $object;
}
/** {@inheritDoc} */
public function build($name, ?array $options = null)
{
// We never cache when using "build".
$name = $this->aliases[$name] ?? $name;
"Laminas\Session\SessionManager"
* @param ContainerInterface $container Service manager
* @param string $requestedName Service being created
* @param null|array $options Extra options (optional)
*
* @return object
*
* @throws ServiceNotFoundException if unable to resolve the service.
* @throws ServiceNotCreatedException if an exception is raised when
* creating a service.
* @throws ContainerException&\Throwable if any other error occurs
*/
public function __invoke(
ContainerInterface $container,
$requestedName,
array $options = null
) {
if (!empty($options)) {
throw new \Exception('Unexpected options sent to factory!');
}
$sessionManager = $container->get(\Laminas\Session\SessionManager::class);
$session = new \Laminas\Session\Container('Account', $sessionManager);
return parent::__invoke($container, $requestedName, [$session]);
}
}
"Laminas\Session\SessionManager"
return $creationCallback();
}
/**
* Create a new instance with an already resolved name
*
* This is a highly performance sensitive method, do not modify if you have not benchmarked it carefully
*
* @return object
* @throws ServiceNotFoundException If unable to resolve the service.
* @throws ServiceNotCreatedException If an exception is raised when creating a service.
* @throws ContainerExceptionInterface If any other error occurs.
*/
private function doCreate(string $resolvedName, ?array $options = null)
{
try {
if (! isset($this->delegators[$resolvedName])) {
// Let's create the service by fetching the factory
$factory = $this->getFactory($resolvedName);
$object = $factory($this->creationContext, $resolvedName, $options);
} else {
$object = $this->createDelegatorFromName($resolvedName, $options);
}
} catch (ContainerExceptionInterface $exception) {
throw $exception;
} catch (Exception $exception) {
throw new ServiceNotCreatedException(sprintf(
'Service with name "%s" could not be created. Reason: %s',
$resolvedName,
$exception->getMessage()
), (int) $exception->getCode(), $exception);
}
foreach ($this->initializers as $initializer) {
$initializer($this->creationContext, $object);
}
return $object;
}
Laminas\ServiceManager\ServiceManager {#7}
"VuFind\Db\Service\UserService"
null
// We now deal with requests which may be aliases.
$resolvedName = $this->aliases[$name] ?? $name;
// Update shared service information as we checked if the alias was shared before.
if ($resolvedName !== $name) {
$sharedService = $this->shared[$resolvedName] ?? $sharedService;
}
// The following is only true if the requested service is a shared alias.
$sharedAlias = $sharedService && isset($this->services[$resolvedName]);
// If the alias is configured as a shared service, we are done.
if ($sharedAlias) {
$this->services[$name] = $this->services[$resolvedName];
return $this->services[$resolvedName];
}
// At this point, we have to create the object.
// We use the resolved name for that.
$object = $this->doCreate($resolvedName);
// Cache the object for later, if it is supposed to be shared.
if ($sharedService) {
$this->services[$resolvedName] = $object;
}
// Also cache under the alias name; this allows sharing based on the
// service name used.
if ($sharedAlias) {
$this->services[$name] = $object;
}
return $object;
}
/** {@inheritDoc} */
public function build($name, ?array $options = null)
{
// We never cache when using "build".
$name = $this->aliases[$name] ?? $name;
"VuFind\Db\Service\UserService"
* a service definition for the instance, and the service is not
* auto-invokable.
* @throws InvalidServiceException If the plugin created is invalid for the
* plugin context.
*/
public function get($name, ?array $options = null)
{
if (! $this->has($name)) {
if (! $this->autoAddInvokableClass || ! class_exists($name)) {
throw new Exception\ServiceNotFoundException(sprintf(
'A plugin by the name "%s" was not found in the plugin manager %s',
$name,
static::class
));
}
$this->setFactory($name, Factory\InvokableFactory::class);
}
$instance = ! $options ? parent::get($name) : $this->build($name, $options);
$this->validate($instance);
return $instance;
}
/**
* {@inheritDoc}
*
* @psalm-assert InstanceType $instance
*/
public function validate(mixed $instance)
{
if (method_exists($this, 'validatePlugin')) {
trigger_error(sprintf(
'%s::validatePlugin() has been deprecated as of 3.0; please define validate() instead',
static::class
), E_USER_DEPRECATED);
$this->validatePlugin($instance);
return;
}
"VuFind\Db\Service\UserServiceInterface"
*
* @category VuFind
* @package ServiceManager
* @author Demian Katz <demian.katz@villanova.edu>
* @license http://opensource.org/licenses/gpl-2.0.php GNU General Public License
* @link https://vufind.org/wiki/development Wiki
*/
trait LowerCaseServiceNameTrait
{
/**
* Retrieve a plugin
*
* @param string $name Name of plugin
* @param null|array $options Options to use when creating the instance.
*
* @return mixed
*/
public function get($name, array $options = null)
{
return parent::get($this->getNormalizedServiceName($name), $options);
}
/**
* Returns true if the container can return an entry for the given identifier.
* Returns false otherwise.
*
* @param string $id Identifier of the entry to look for.
*
* @return bool
*/
public function has($id)
{
return parent::has($this->getNormalizedServiceName($id));
}
/**
* Hack for backward compatibility with services defined under
* ServiceManager v2, when service names were case-insensitive.
* TODO: set up aliases and/or normalize code to eliminate the need for this.
*
"VuFind\Db\Service\UserServiceInterface"
null
*
* @return object
*
* @throws ServiceNotFoundException if unable to resolve the service.
* @throws ServiceNotCreatedException if an exception is raised when
* creating a service.
* @throws ContainerException&\Throwable if any other error occurs
*/
public function __invoke(
ContainerInterface $container,
$requestedName,
array $options = null
) {
if (!empty($options)) {
throw new \Exception('Unexpected options sent to factory.');
}
// Load dependencies:
$config = $container->get(\VuFind\Config\PluginManager::class)->get('config');
$userService = $container->get(\VuFind\Db\Service\PluginManager::class)
->get(\VuFind\Db\Service\UserServiceInterface::class);
$sessionManager = $container->get(\Laminas\Session\SessionManager::class);
$pm = $container->get(\VuFind\Auth\PluginManager::class);
$cookies = $container->get(\VuFind\Cookie\CookieManager::class);
$csrf = $container->get(\VuFind\Validator\CsrfInterface::class);
$loginTokenManager = $container->get(\VuFind\Auth\LoginTokenManager::class);
$ils = $container->get(\VuFind\ILS\Connection::class);
// Build the object and make sure account credentials haven't expired:
$manager = new $requestedName(
$config,
$userService, // for UserServiceInterface
$userService, // for UserSessionPersistenceInterface
$sessionManager,
$pm,
$cookies,
$csrf,
$loginTokenManager,
$ils
);
$manager->setIlsAuthenticator($container->get(\VuFind\Auth\ILSAuthenticator::class));
"VuFind\Db\Service\UserServiceInterface"
return $creationCallback();
}
/**
* Create a new instance with an already resolved name
*
* This is a highly performance sensitive method, do not modify if you have not benchmarked it carefully
*
* @return object
* @throws ServiceNotFoundException If unable to resolve the service.
* @throws ServiceNotCreatedException If an exception is raised when creating a service.
* @throws ContainerExceptionInterface If any other error occurs.
*/
private function doCreate(string $resolvedName, ?array $options = null)
{
try {
if (! isset($this->delegators[$resolvedName])) {
// Let's create the service by fetching the factory
$factory = $this->getFactory($resolvedName);
$object = $factory($this->creationContext, $resolvedName, $options);
} else {
$object = $this->createDelegatorFromName($resolvedName, $options);
}
} catch (ContainerExceptionInterface $exception) {
throw $exception;
} catch (Exception $exception) {
throw new ServiceNotCreatedException(sprintf(
'Service with name "%s" could not be created. Reason: %s',
$resolvedName,
$exception->getMessage()
), (int) $exception->getCode(), $exception);
}
foreach ($this->initializers as $initializer) {
$initializer($this->creationContext, $object);
}
return $object;
}
Laminas\ServiceManager\ServiceManager {#7}
"VuFind\Auth\Manager"
null
// We now deal with requests which may be aliases.
$resolvedName = $this->aliases[$name] ?? $name;
// Update shared service information as we checked if the alias was shared before.
if ($resolvedName !== $name) {
$sharedService = $this->shared[$resolvedName] ?? $sharedService;
}
// The following is only true if the requested service is a shared alias.
$sharedAlias = $sharedService && isset($this->services[$resolvedName]);
// If the alias is configured as a shared service, we are done.
if ($sharedAlias) {
$this->services[$name] = $this->services[$resolvedName];
return $this->services[$resolvedName];
}
// At this point, we have to create the object.
// We use the resolved name for that.
$object = $this->doCreate($resolvedName);
// Cache the object for later, if it is supposed to be shared.
if ($sharedService) {
$this->services[$resolvedName] = $object;
}
// Also cache under the alias name; this allows sharing based on the
// service name used.
if ($sharedAlias) {
$this->services[$name] = $object;
}
return $object;
}
/** {@inheritDoc} */
public function build($name, ?array $options = null)
{
// We never cache when using "build".
$name = $this->aliases[$name] ?? $name;
"VuFind\Auth\Manager"
* @throws ServiceNotFoundException if unable to resolve the service.
* @throws ServiceNotCreatedException if an exception is raised when
* creating a service.
* @throws ContainerException&\Throwable if any other error occurs
*/
public function __invoke(
ContainerInterface $container,
$requestedName,
array $options = null
) {
if (!empty($options)) {
throw new \Exception('Unexpected options sent to factory.');
}
$this->serviceLocator = $container;
$yamlReader = $container->get(\VuFind\Config\YamlReader::class);
$config = $yamlReader->get('RateLimiter.yaml');
$authManager = $container->get(\VuFind\Auth\Manager::class);
$request = $container->get('Request');
return new $requestedName(
$config,
$request->getServer('REMOTE_ADDR'),
$authManager->getUserObject()?->getId(),
Closure::fromCallable([$this, 'getRateLimiter']),
$container->get(\VuFind\Net\IpAddressUtils::class)
);
}
/**
* Get rate limiter
*
* @param array $config Rate limiter configuration
* @param string $policyId Policy ID
* @param string $clientIp Client's IP address
* @param ?string $userId User ID or null if not logged in
*
* @return LimiterInterface
"VuFind\Auth\Manager"
return $creationCallback();
}
/**
* Create a new instance with an already resolved name
*
* This is a highly performance sensitive method, do not modify if you have not benchmarked it carefully
*
* @return object
* @throws ServiceNotFoundException If unable to resolve the service.
* @throws ServiceNotCreatedException If an exception is raised when creating a service.
* @throws ContainerExceptionInterface If any other error occurs.
*/
private function doCreate(string $resolvedName, ?array $options = null)
{
try {
if (! isset($this->delegators[$resolvedName])) {
// Let's create the service by fetching the factory
$factory = $this->getFactory($resolvedName);
$object = $factory($this->creationContext, $resolvedName, $options);
} else {
$object = $this->createDelegatorFromName($resolvedName, $options);
}
} catch (ContainerExceptionInterface $exception) {
throw $exception;
} catch (Exception $exception) {
throw new ServiceNotCreatedException(sprintf(
'Service with name "%s" could not be created. Reason: %s',
$resolvedName,
$exception->getMessage()
), (int) $exception->getCode(), $exception);
}
foreach ($this->initializers as $initializer) {
$initializer($this->creationContext, $object);
}
return $object;
}
Laminas\ServiceManager\ServiceManager {#7}
"VuFind\RateLimiter\RateLimiterManager"
null
// We now deal with requests which may be aliases.
$resolvedName = $this->aliases[$name] ?? $name;
// Update shared service information as we checked if the alias was shared before.
if ($resolvedName !== $name) {
$sharedService = $this->shared[$resolvedName] ?? $sharedService;
}
// The following is only true if the requested service is a shared alias.
$sharedAlias = $sharedService && isset($this->services[$resolvedName]);
// If the alias is configured as a shared service, we are done.
if ($sharedAlias) {
$this->services[$name] = $this->services[$resolvedName];
return $this->services[$resolvedName];
}
// At this point, we have to create the object.
// We use the resolved name for that.
$object = $this->doCreate($resolvedName);
// Cache the object for later, if it is supposed to be shared.
if ($sharedService) {
$this->services[$resolvedName] = $object;
}
// Also cache under the alias name; this allows sharing based on the
// service name used.
if ($sharedAlias) {
$this->services[$name] = $object;
}
return $object;
}
/** {@inheritDoc} */
public function build($name, ?array $options = null)
{
// We never cache when using "build".
$name = $this->aliases[$name] ?? $name;
"VuFind\RateLimiter\RateLimiterManager"
$cspHeaderGenerator = $this->container
->get(\VuFind\Security\CspHeaderGenerator::class);
foreach ($cspHeaderGenerator->getHeaders() as $cspHeader) {
$headers->addHeader($cspHeader);
}
}
/**
* Set up rate limiter
*
* @return void
*/
protected function initRateLimiter(): void
{
if (PHP_SAPI === 'cli') {
return;
}
$callback = function ($event) {
// Create rate limiter manager here so that we don't e.g. initialize the session too early:
$rateLimiterManager = $this->container->get(\VuFind\RateLimiter\RateLimiterManager::class);
if (!$rateLimiterManager->isEnabled()) {
return;
}
$result = $rateLimiterManager->check($event);
if (!$result['allow']) {
$response = $event->getResponse();
$response->setStatusCode(429);
$response->setContent($result['message']);
$event->stopPropagation(true);
return $response;
}
};
$this->events->attach('dispatch', $callback, 11000);
}
}
"VuFind\RateLimiter\RateLimiterManager"
}
if ($this->sharedManager) {
foreach ($this->sharedManager->getListeners($this->identifiers, $name) as $priority => $listeners) {
$listOfListenersByPriority[$priority][] = $listeners;
}
}
// Sort by priority in reverse order
krsort($listOfListenersByPriority);
// Initial value of stop propagation flag should be false
$event->stopPropagation(false);
// Execute listeners
$responses = new ResponseCollection();
foreach ($listOfListenersByPriority as $listOfListeners) {
foreach ($listOfListeners as $listeners) {
foreach ($listeners as $listener) {
$response = $listener($event);
$responses->push($response);
// If the event was asked to stop propagating, do so
if ($event->propagationIsStopped()) {
$responses->setStopped(true);
return $responses;
}
// If the result causes our validation callback to return true,
// stop propagation
if (is_callable($callback) && $callback($response)) {
$responses->setStopped(true);
return $responses;
}
}
}
}
return $responses;
}
Laminas\Mvc\MvcEvent {#105}
$event->setParams($argv);
}
return $this->triggerListeners($event, $callback);
}
/**
* @inheritDoc
*/
public function triggerEvent(EventInterface $event)
{
return $this->triggerListeners($event);
}
/**
* @inheritDoc
*/
public function triggerEventUntil(callable $callback, EventInterface $event)
{
return $this->triggerListeners($event, $callback);
}
/**
* @inheritDoc
*/
public function attach($eventName, callable $listener, $priority = 1)
{
if (! is_string($eventName)) {
throw new Exception\InvalidArgumentException(sprintf(
'%s expects a string for the event; received %s',
__METHOD__,
get_debug_type($eventName),
));
}
$this->events[$eventName][(int) $priority][0][] = $listener;
return $listener;
}
/**
$response = $result->last();
if ($response instanceof ResponseInterface) {
$event->setName(MvcEvent::EVENT_FINISH);
$event->setTarget($this);
$event->setResponse($response);
$event->stopPropagation(false); // Clear before triggering
$events->triggerEvent($event);
$this->response = $response;
return $this;
}
}
if ($event->getError()) {
return $this->completeRequest($event);
}
// Trigger dispatch event
$event->setName(MvcEvent::EVENT_DISPATCH);
$event->stopPropagation(false); // Clear before triggering
$result = $events->triggerEventUntil($shortCircuit, $event);
// Complete response
$response = $result->last();
if ($response instanceof ResponseInterface) {
$event->setName(MvcEvent::EVENT_FINISH);
$event->setTarget($this);
$event->setResponse($response);
$event->stopPropagation(false); // Clear before triggering
$events->triggerEvent($event);
$this->response = $response;
return $this;
}
$response = $this->response;
$event->setResponse($response);
return $this->completeRequest($event);
}
/**
* Complete the request
$vufindProfiler = getenv('VUFIND_PROFILER_XHPROF');
if (!empty($vufindProfiler)) {
include __DIR__ . '/../module/VuFind/functions/profiler.php';
enableVuFindProfiling($vufindProfiler);
}
// Run the application!
$app = include __DIR__ . '/../config/application.php';
if (PHP_SAPI === 'cli') {
return $app->getServiceManager()
->get(\VuFindConsole\ConsoleRunner::class)->run();
} else {
// Setup remote code coverage if enabled:
if (getenv('VUFIND_CODE_COVERAGE')) {
$modules = $app->getServiceManager()
->get(\Laminas\ModuleManager\ModuleManager::class)->getModules();
include __DIR__ . '/../module/VuFind/functions/codecoverage.php';
setupVuFindRemoteCodeCoverage($modules);
}
$app->run();
}
| Key | Value |
| edit | "236242"
|
| lng | "ca"
|
| Key | Value |
| REDIRECT_VUFIND_LOCAL_DIR | "/usr/local/vufind/local"
|
| REDIRECT_STATUS | "200"
|
| VUFIND_LOCAL_DIR | "/usr/local/vufind/local"
|
| HTTP_HOST | "intcon-pika-dev.avk8s.k-int.com"
|
| HTTP_USER_AGENT | "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; ClaudeBot/1.0; +claudebot@anthropic.com)"
|
| HTTP_ACCEPT | "*/*"
|
| HTTP_ACCEPT_ENCODING | "gzip, br, zstd, deflate"
|
| HTTP_X_FORWARDED_FOR | "10.42.1.0"
|
| HTTP_X_FORWARDED_HOST | "intcon-pika-dev.avk8s.k-int.com"
|
| HTTP_X_FORWARDED_PORT | "443"
|
| HTTP_X_FORWARDED_PROTO | "https"
|
| HTTP_X_FORWARDED_SERVER | "traefik-7c76484647-2t2hj"
|
| HTTP_X_REAL_IP | "10.42.1.0"
|
| PATH | "/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"
|
| SERVER_SIGNATURE | "<address>Apache/2.4.62 (Debian) Server at intcon-pika-dev.avk8s.k-int.com Port 80</address>\n"
|
| SERVER_SOFTWARE | "Apache/2.4.62 (Debian)"
|
| SERVER_NAME | "intcon-pika-dev.avk8s.k-int.com"
|
| SERVER_ADDR | "10.42.4.126"
|
| SERVER_PORT | "80"
|
| REMOTE_ADDR | "10.42.4.92"
|
| DOCUMENT_ROOT | "/var/www/html"
|
| REQUEST_SCHEME | "http"
|
| CONTEXT_PREFIX | "/vufind"
|
| CONTEXT_DOCUMENT_ROOT | "/usr/local/vufind/public"
|
| SERVER_ADMIN | "webmaster@localhost"
|
| SCRIPT_FILENAME | "/usr/local/vufind/public/index.php"
|
| REMOTE_PORT | "47834"
|
| REDIRECT_URL | "/vufind/OpenRS2/Advanced"
|
| REDIRECT_QUERY_STRING | "edit=236242&lng=ca"
|
| GATEWAY_INTERFACE | "CGI/1.1"
|
| SERVER_PROTOCOL | "HTTP/1.1"
|
| REQUEST_METHOD | "GET"
|
| QUERY_STRING | "edit=236242&lng=ca"
|
| REQUEST_URI | "/vufind/OpenRS2/Advanced?edit=236242&lng=ca"
|
| SCRIPT_NAME | "/vufind/index.php"
|
| PHP_SELF | "/vufind/index.php"
|
| REQUEST_TIME_FLOAT | 1780604937.9521
|
| REQUEST_TIME | 1780604937
|
| argv | array:1 [ 0 => "edit=236242&lng=ca" ] |
| argc | 1
|
| Key | Value |
| DCB_PORT_5701_TCP_PORT | "5701"
|
| KUBERNETES_SERVICE_PORT_HTTPS | "443"
|
| REDIS_SERVICE_PORT_6379_TCP_PROTO | "tcp"
|
| RESHARE_DCB_ES_ES_HTTP_PORT_9200_TCP_PORT | "9200"
|
| POSTGRES_DCB_RW_PORT_5432_TCP_PROTO | "tcp"
|
| KUBERNETES_SERVICE_PORT | "443"
|
| RESHARE_DCB_ES_ES_HTTP_PORT_9200_TCP_ADDR | "10.43.229.238"
|
| DCB_PORT | "tcp://10.43.60.160:8080"
|
| RESHARE_DCB_ES_ES_HTTP_SERVICE_HOST | "10.43.229.238"
|
| DCB_PORT_8080_TCP_PROTO | "tcp"
|
| HOSTNAME | "ors2-pika-ng-7fd68fd6d7-cjw8x"
|
| PHP_VERSION | "8.2.28"
|
| APACHE_CONFDIR | "/etc/apache2"
|
| PHP_INI_DIR | "/usr/local/etc/php"
|
| DCB_PORT_8080_TCP_ADDR | "10.43.60.160"
|
| GPG_KEYS | "39B641343D8C104B2B146DC3F9C39DC0B9698544 E60913E4DF209907D8E30D96659A97C9CF2A795A 1198C0117593497A5EC5C199286AF1F9897469DC"
|
| POD_NAME | "ors2-pika-ng-7fd68fd6d7-cjw8x"
|
| POSTGRES_DCB_R_SERVICE_PORT | "5432"
|
| RESHARE_DCB_ES_ES_HTTP_PORT | "tcp://10.43.229.238:9200"
|
| PHP_LDFLAGS | "-Wl,-O1 -pie"
|
| REDIS_SERVICE_SERVICE_PORT | "6379"
|
| POSTGRES_DCB_RO_SERVICE_PORT | "5432"
|
| REDIS_SERVICE_PORT_6379_TCP_ADDR | "10.43.77.33"
|
| VUFIND_LOCAL_DIR | "/usr/local/vufind/local"
|
| RESHARE_DCB_ES_ES_INTERNAL_HTTP_PORT_9200_TCP | "tcp://10.43.143.44:9200"
|
| DCB_SERVICE_PORT | "8080"
|
| OPENRS2_DISCOVERY_API | "http://dcb-locate:8080"
|
| DCB_SERVICE_PORT_HTTP | "8080"
|
| PWD | "/usr/local/vufind"
|
| POSTGRES_DCB_R_PORT_5432_TCP_PORT | "5432"
|
| DCB_LOCATE_SERVICE_PORT | "8080"
|
| DCB_OAUTH_PROXY_PORT | "tcp://10.43.120.51:8080"
|
| POSTGRES_DCB_R_SERVICE_PORT_POSTGRES | "5432"
|
| DCB_SERVICE_PORT_HAZELCAST | "5701"
|
| RESHARE_DCB_ES_ES_HTTP_PORT_9200_TCP | "tcp://10.43.229.238:9200"
|
| DCB_OAUTH_PROXY_SERVICE_HOST | "10.43.120.51"
|
| REDIS_SERVICE_PORT_6379_TCP_PORT | "6379"
|
| POSTGRES_DCB_RW_PORT | "tcp://10.43.53.93:5432"
|
| POSTGRES_DCB_R_SERVICE_HOST | "10.43.71.168"
|
| APACHE_LOG_DIR | "/var/log/apache2"
|
| REDIS_SERVICE_PORT | "tcp://10.43.77.33:6379"
|
| LANG | "C"
|
| DCB_PORT_5701_TCP_ADDR | "10.43.60.160"
|
| KUBERNETES_PORT_443_TCP | "tcp://10.43.0.1:443"
|
| DCB_OAUTH_PROXY_SERVICE_PORT | "8080"
|
| POSTGRES_DCB_R_PORT_5432_TCP | "tcp://10.43.71.168:5432"
|
| DCB_OAUTH_PROXY_PORT_8080_TCP_PROTO | "tcp"
|
| RESHARE_DCB_ES_ES_INTERNAL_HTTP_PORT_9200_TCP_PORT | "9200"
|
| POSTGRES_DCB_RW_PORT_5432_TCP_ADDR | "10.43.53.93"
|
| PHP_SHA256 | "af8c9153153a7f489153b7a74f2f29a5ee36f5cb2c6c6929c98411a577e89c91"
|
| DCB_OAUTH_PROXY_PORT_8080_TCP_ADDR | "10.43.120.51"
|
| DCB_PORT_8080_TCP_PORT | "8080"
|
| REDIS_SERVICE_PORT_6379_TCP | "tcp://10.43.77.33:6379"
|
| REDIS_SERVICE_SERVICE_HOST | "10.43.77.33"
|
| DCB_PORT_5701_TCP_PROTO | "tcp"
|
| DCB_PORT_8080_TCP | "tcp://10.43.60.160:8080"
|
| OPENRS2_DCB_API | "http://dcb:8080"
|
| APACHE_PID_FILE | "/var/run/apache2/apache2.pid"
|
| ORS2_PIKA_NG_PORT_80_TCP | "tcp://10.43.117.35:80"
|
| PHPIZE_DEPS | "autoconf \t\tdpkg-dev \t\tfile \t\tg++ \t\tgcc \t\tlibc-dev \t\tmake \t\tpkg-config \t\tre2c"
|
| ORS2_PIKA_NG_PORT_80_TCP_PROTO | "tcp"
|
| POSTGRES_DCB_RO_PORT_5432_TCP_ADDR | "10.43.79.213"
|
| RESHARE_DCB_ES_ES_HTTP_SERVICE_PORT_HTTP | "9200"
|
| POSTGRES_DCB_RO_PORT_5432_TCP_PROTO | "tcp"
|
| ORS2_PIKA_NG_SERVICE_HOST | "10.43.117.35"
|
| ORS2_PIKA_NG_PORT | "tcp://10.43.117.35:80"
|
| DCB_LOCATE_PORT_8080_TCP_ADDR | "10.43.83.35"
|
| PHP_URL | "https://www.php.net/distributions/php-8.2.28.tar.xz"
|
| POSTGRES_DCB_RW_PORT_5432_TCP | "tcp://10.43.53.93:5432"
|
| POSTGRES_DCB_RW_SERVICE_PORT_POSTGRES | "5432"
|
| POSTGRES_DCB_RO_PORT_5432_TCP | "tcp://10.43.79.213:5432"
|
| APACHE_RUN_GROUP | "www-data"
|
| ORS2_PIKA_NG_PORT_80_TCP_ADDR | "10.43.117.35"
|
| DCB_LOCATE_PORT_8080_TCP_PROTO | "tcp"
|
| APACHE_LOCK_DIR | "/var/lock/apache2"
|
| VUFIND_LOCAL_MODULES | "OpenRS2"
|
| POSTGRES_DCB_RO_SERVICE_HOST | "10.43.79.213"
|
| SHLVL | "0"
|
| RESHARE_DCB_ES_ES_INTERNAL_HTTP_SERVICE_PORT_HTTP | "9200"
|
| DCB_SERVICE_HOST | "10.43.60.160"
|
| KUBERNETES_PORT_443_TCP_PROTO | "tcp"
|
| PHP_CFLAGS | "-fstack-protector-strong -fpic -fpie -O2 -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64"
|
| RESHARE_DCB_ES_ES_INTERNAL_HTTP_PORT_9200_TCP_PROTO | "tcp"
|
| POSTGRES_DCB_RW_SERVICE_PORT | "5432"
|
| KUBERNETES_PORT_443_TCP_ADDR | "10.43.0.1"
|
| DCB_OAUTH_PROXY_PORT_8080_TCP_PORT | "8080"
|
| POSTGRES_DCB_RW_SERVICE_HOST | "10.43.53.93"
|
| ORS2_PIKA_NG_SERVICE_PORT | "80"
|
| RESHARE_DCB_ES_ES_INTERNAL_HTTP_SERVICE_PORT | "9200"
|
| ORS2_PIKA_NG_PORT_80_TCP_PORT | "80"
|
| RESHARE_DCB_ES_ES_INTERNAL_HTTP_SERVICE_HOST | "10.43.143.44"
|
| DCB_LOCATE_SERVICE_HOST | "10.43.83.35"
|
| VUFIND_HOME | "/usr/local/vufind"
|
| APACHE_RUN_DIR | "/var/run/apache2"
|
| APACHE_ENVVARS | "/etc/apache2/envvars"
|
| DCB_LOCATE_PORT | "tcp://10.43.83.35:8080"
|
| KUBERNETES_SERVICE_HOST | "10.43.0.1"
|
| RESHARE_DCB_ES_ES_INTERNAL_HTTP_PORT_9200_TCP_ADDR | "10.43.143.44"
|
| KUBERNETES_PORT | "tcp://10.43.0.1:443"
|
| KUBERNETES_PORT_443_TCP_PORT | "443"
|
| RESHARE_DCB_ES_ES_HTTP_SERVICE_PORT | "9200"
|
| POSTGRES_DCB_RW_PORT_5432_TCP_PORT | "5432"
|
| APACHE_RUN_USER | "www-data"
|
| RESHARE_DCB_ES_ES_HTTP_PORT_9200_TCP_PROTO | "tcp"
|
| DCB_PORT_5701_TCP | "tcp://10.43.60.160:5701"
|
| PATH | "/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"
|
| VUFIND_ENV | "development"
|
| DCB_LOCATE_PORT_8080_TCP | "tcp://10.43.83.35:8080"
|
| DCB_OAUTH_PROXY_PORT_8080_TCP | "tcp://10.43.120.51:8080"
|
| POSTGRES_DCB_RO_SERVICE_PORT_POSTGRES | "5432"
|
| POSTGRES_DCB_RO_PORT_5432_TCP_PORT | "5432"
|
| POSTGRES_DCB_R_PORT_5432_TCP_PROTO | "tcp"
|
| POSTGRES_DCB_R_PORT | "tcp://10.43.71.168:5432"
|
| POSTGRES_DCB_RO_PORT | "tcp://10.43.79.213:5432"
|
| PHP_ASC_URL | "https://www.php.net/distributions/php-8.2.28.tar.xz.asc"
|
| DCB_LOCATE_PORT_8080_TCP_PORT | "8080"
|
| RESHARE_DCB_ES_ES_INTERNAL_HTTP_PORT | "tcp://10.43.143.44:9200"
|
| PHP_CPPFLAGS | "-fstack-protector-strong -fpic -fpie -O2 -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64"
|
| POSTGRES_DCB_R_PORT_5432_TCP_ADDR | "10.43.71.168"
|