( ! ) Warning: mkdir(): File exists in /usr/local/vufind/config/application.config.php on line 66
Call Stack
#TimeMemoryFunctionLocation
10.0003499624{main}( ).../index.php:0
20.0004501784include( '/usr/local/vufind/config/application.php ).../index.php:11
30.01712445952require( '/usr/local/vufind/config/application.config.php ).../application.php:14
40.01722447800mkdir( $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
#TimeMemoryFunctionLocation
10.0003499624{main}( ).../index.php:0
20.0004501784include( '/usr/local/vufind/config/application.php ).../index.php:11
30.01902440640Laminas\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
40.11236201696Laminas\Mvc\Application->bootstrap( $listeners = [] ).../Application.php:260
50.13997703672Laminas\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
60.13997703672Laminas\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
70.20248319208SlmLocale\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
80.21148630616SlmLocale\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
90.21168632408Laminas\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
100.21168632408Laminas\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
110.21168632968VuFind\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
120.21168633128VuFind\Cookie\CookieManager->set( $key = 'language', $value = 'ca', $expire = ???, $httpOnly = ???, $sameSite = ??? ).../LocaleDetectorFactory.php:95
130.21168633128VuFind\Cookie\CookieManager->setGlobalCookie( $key = 'language', $value = 'ca', $expire = 0, $httpOnly = NULL, $sameSite = NULL ).../CookieManager.php:317
140.21168633128VuFind\Cookie\CookieManager->proxySetCookie( $key = 'language', $value = 'ca', $expire = 0, $path = '/', $domain = NULL, $secure = FALSE, $httpOnly = TRUE, $sameSite = 'Lax' ).../CookieManager.php:266
150.21168633504setcookie( $name = 'language', $value = 'ca', $expires_or_options = ['expires' => 0, 'path' => '/', 'domain' => NULL, 'samesite' => 'Lax', 'secure' => FALSE, 'httponly' => TRUE] ).../CookieManager.php:226
Whoops! There was an error.
Laminas \ ServiceManager \ Exception \ ServiceNotCreatedException (2)
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
Previous exceptions
  • ini_set(): Session ini settings cannot be changed after headers have already been sent (2)
Laminas\ServiceManager\Exception\ServiceNotCreatedException thrown with message "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" Stacktrace: #23 Laminas\ServiceManager\Exception\ServiceNotCreatedException in /usr/local/vufind/vendor/laminas/laminas-servicemanager/src/ServiceManager.php:649 #22 Whoops\Exception\ErrorException in /usr/local/vufind/vendor/laminas/laminas-session/src/Config/SessionConfig.php:181 #21 ini_set in /usr/local/vufind/vendor/laminas/laminas-session/src/Config/SessionConfig.php:181 #20 Laminas\Session\Config\SessionConfig:setStorageOption in /usr/local/vufind/vendor/laminas/laminas-session/src/Config/StandardConfig.php:585 #19 Laminas\Session\Config\StandardConfig:setCookieHttpOnly in /usr/local/vufind/vendor/laminas/laminas-session/src/Config/StandardConfig.php:138 #18 Laminas\Session\Config\StandardConfig:setOptions in /usr/local/vufind/module/VuFind/src/VuFind/Session/ManagerFactory.php:152 #17 VuFind\Session\ManagerFactory:__invoke in /usr/local/vufind/vendor/laminas/laminas-servicemanager/src/ServiceManager.php:642 #16 Laminas\ServiceManager\ServiceManager:doCreate in /usr/local/vufind/vendor/laminas/laminas-servicemanager/src/ServiceManager.php:264 #15 Laminas\ServiceManager\ServiceManager:get in /usr/local/vufind/module/VuFind/src/VuFind/Db/Service/UserServiceFactory.php:70 #14 VuFind\Db\Service\UserServiceFactory:__invoke in /usr/local/vufind/vendor/laminas/laminas-servicemanager/src/ServiceManager.php:642 #13 Laminas\ServiceManager\ServiceManager:doCreate in /usr/local/vufind/vendor/laminas/laminas-servicemanager/src/ServiceManager.php:264 #12 Laminas\ServiceManager\ServiceManager:get in /usr/local/vufind/vendor/laminas/laminas-servicemanager/src/AbstractPluginManager.php:169 #11 Laminas\ServiceManager\AbstractPluginManager:get in /usr/local/vufind/module/VuFind/src/VuFind/ServiceManager/LowerCaseServiceNameTrait.php:55 #10 VuFind\ServiceManager\AbstractPluginManager:get in /usr/local/vufind/module/VuFind/src/VuFind/Auth/ManagerFactory.php:74 #9 VuFind\Auth\ManagerFactory:__invoke in /usr/local/vufind/vendor/laminas/laminas-servicemanager/src/ServiceManager.php:642 #8 Laminas\ServiceManager\ServiceManager:doCreate in /usr/local/vufind/vendor/laminas/laminas-servicemanager/src/ServiceManager.php:264 #7 Laminas\ServiceManager\ServiceManager:get in /usr/local/vufind/module/VuFind/src/VuFind/RateLimiter/RateLimiterManagerFactory.php:89 #6 VuFind\RateLimiter\RateLimiterManagerFactory:__invoke in /usr/local/vufind/vendor/laminas/laminas-servicemanager/src/ServiceManager.php:642 #5 Laminas\ServiceManager\ServiceManager:doCreate in /usr/local/vufind/vendor/laminas/laminas-servicemanager/src/ServiceManager.php:264 #4 Laminas\ServiceManager\ServiceManager:get in /usr/local/vufind/module/VuFind/src/VuFind/Bootstrapper.php:390 #3 VuFind\Bootstrapper:VuFind\{closure} in /usr/local/vufind/vendor/laminas/laminas-eventmanager/src/EventManager.php:318 #2 Laminas\EventManager\EventManager:triggerListeners in /usr/local/vufind/vendor/laminas/laminas-eventmanager/src/EventManager.php:176 #1 Laminas\EventManager\EventManager:triggerEventUntil in /usr/local/vufind/vendor/laminas/laminas-mvc/src/Application.php:319 #0 Laminas\Mvc\Application:run in /usr/local/vufind/public/index.php:23
23
Laminas\ServiceManager\Exception\ServiceNotCreatedException
/vendor/laminas/laminas-servicemanager/src/ServiceManager.php649
22
Whoops\Exception\ErrorException
/vendor/laminas/laminas-session/src/Config/SessionConfig.php181
21
ini_set
/vendor/laminas/laminas-session/src/Config/SessionConfig.php181
20
Laminas\Session\Config\SessionConfig setStorageOption
/vendor/laminas/laminas-session/src/Config/StandardConfig.php585
19
Laminas\Session\Config\StandardConfig setCookieHttpOnly
/vendor/laminas/laminas-session/src/Config/StandardConfig.php138
18
Laminas\Session\Config\StandardConfig setOptions
/module/VuFind/src/VuFind/Session/ManagerFactory.php152
17
VuFind\Session\ManagerFactory __invoke
/vendor/laminas/laminas-servicemanager/src/ServiceManager.php642
16
Laminas\ServiceManager\ServiceManager doCreate
/vendor/laminas/laminas-servicemanager/src/ServiceManager.php264
15
Laminas\ServiceManager\ServiceManager get
/module/VuFind/src/VuFind/Db/Service/UserServiceFactory.php70
14
VuFind\Db\Service\UserServiceFactory __invoke
/vendor/laminas/laminas-servicemanager/src/ServiceManager.php642
13
Laminas\ServiceManager\ServiceManager doCreate
/vendor/laminas/laminas-servicemanager/src/ServiceManager.php264
12
Laminas\ServiceManager\ServiceManager get
/vendor/laminas/laminas-servicemanager/src/AbstractPluginManager.php169
11
Laminas\ServiceManager\AbstractPluginManager get
/module/VuFind/src/VuFind/ServiceManager/LowerCaseServiceNameTrait.php55
10
VuFind\ServiceManager\AbstractPluginManager get
/module/VuFind/src/VuFind/Auth/ManagerFactory.php74
9
VuFind\Auth\ManagerFactory __invoke
/vendor/laminas/laminas-servicemanager/src/ServiceManager.php642
8
Laminas\ServiceManager\ServiceManager doCreate
/vendor/laminas/laminas-servicemanager/src/ServiceManager.php264
7
Laminas\ServiceManager\ServiceManager get
/module/VuFind/src/VuFind/RateLimiter/RateLimiterManagerFactory.php89
6
VuFind\RateLimiter\RateLimiterManagerFactory __invoke
/vendor/laminas/laminas-servicemanager/src/ServiceManager.php642
5
Laminas\ServiceManager\ServiceManager doCreate
/vendor/laminas/laminas-servicemanager/src/ServiceManager.php264
4
Laminas\ServiceManager\ServiceManager get
/module/VuFind/src/VuFind/Bootstrapper.php390
3
VuFind\Bootstrapper VuFind\{closure}
/vendor/laminas/laminas-eventmanager/src/EventManager.php318
2
Laminas\EventManager\EventManager triggerListeners
/vendor/laminas/laminas-eventmanager/src/EventManager.php176
1
Laminas\EventManager\EventManager triggerEventUntil
/vendor/laminas/laminas-mvc/src/Application.php319
0
Laminas\Mvc\Application run
/public/index.php23
     *
     * @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.
Arguments
  1. "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
Arguments
  1. "ini_set(): Session ini settings cannot be changed after headers have already been sent"
    
Exception message: 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
Arguments
  1. "session.cookie_httponly"
    
  2. "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
Arguments
  1. "cookie_httponly"
    
  2. "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
     *
Arguments
  1. 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();
Arguments
  1. 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;
    }
 
Arguments
  1. Laminas\ServiceManager\ServiceManager {#7}
    
  2. "Laminas\Session\SessionManager"
    
  3. 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;
Arguments
  1. "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]);
    }
}
 
Arguments
  1. "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;
    }
 
Arguments
  1. Laminas\ServiceManager\ServiceManager {#7}
    
  2. "VuFind\Db\Service\UserService"
    
  3. 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;
Arguments
  1. "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;
        }
 
Arguments
  1. "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.
     *
Arguments
  1. "VuFind\Db\Service\UserServiceInterface"
    
  2. 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));
Arguments
  1. "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;
    }
 
Arguments
  1. Laminas\ServiceManager\ServiceManager {#7}
    
  2. "VuFind\Auth\Manager"
    
  3. 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;
Arguments
  1. "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
Arguments
  1. "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;
    }
 
Arguments
  1. Laminas\ServiceManager\ServiceManager {#7}
    
  2. "VuFind\RateLimiter\RateLimiterManager"
    
  3. 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;
Arguments
  1. "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);
    }
}
 
Arguments
  1. "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;
    }
Arguments
  1. 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;
    }
 
    /**
Arguments
  1. Laminas\Mvc\MvcEvent {#105}
    
  2. Closure($r): bool {#2 …4}
    
            $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
Arguments
  1. Closure($r): bool {#2 …4}
    
  2. Laminas\Mvc\MvcEvent {#105}
    
$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();
}
 

Environment & details:

Key Value
edit
"236242"
lng
"ca"
empty
empty
empty
empty
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"
0. Whoops\Handler\PrettyPageHandler