%0 Book %A XXX %T XXX Whoops! There was an error.
Whoops \ Exception \ ErrorException (E_WARNING)
fopen(/tmp/vufind_sessions/sess_hjfk7169uqcd83kkeqr2cd7uur): failed to open stream: No space left on device Whoops\Exception\ErrorException thrown with message "fopen(/tmp/vufind_sessions/sess_hjfk7169uqcd83kkeqr2cd7uur): failed to open stream: No space left on device" Stacktrace: #5 Whoops\Exception\ErrorException in /usr/local/vufind/module/VuFind/src/VuFind/Session/File.php:151 #4 fopen in /usr/local/vufind/module/VuFind/src/VuFind/Session/File.php:151 #3 VuFind\Session\File:saveSession in /usr/local/vufind/module/VuFind/src/VuFind/Session/AbstractBase.php:185 #2 VuFind\Session\AbstractBase:write in [internal]:0 #1 session_write_close in /usr/local/vufind/vendor/laminas/laminas-session/src/SessionManager.php:235 #0 Laminas\Session\SessionManager:writeClose in [internal]:0
5
Whoops\Exception\ErrorException
/module/VuFind/src/VuFind/Session/File.php151
4
fopen
/module/VuFind/src/VuFind/Session/File.php151
3
VuFind\Session\File saveSession
/module/VuFind/src/VuFind/Session/AbstractBase.php185
2
VuFind\Session\AbstractBase write
[internal]0
1
session_write_close
/vendor/laminas/laminas-session/src/SessionManager.php235
0
Laminas\Session\SessionManager writeClose
[internal]0
        foreach (glob($this->path . "/sess_*") as $filename) {
            if (filemtime($filename) + $maxlifetime < time()) {
                unlink($filename);
            }
        }
        return true;
    }
 
    /**
     * A function that is called internally when session data is to be saved.
     *
     * @param string $sessId The current session ID
     * @param string $data   The session data to write
     *
     * @return bool
     */
    protected function saveSession($sessId, $data)
    {
        $sessFile = $this->path . '/sess_' . $sessId;
        if ($handle = fopen($sessFile, "w")) {
            $return = fwrite($handle, $data);
            fclose($handle);
            if ($return !== false) {
                return true;
            }
        }
        // If we got this far, something went wrong with the file output...
        // It is tempting to throw an exception here, but this code is called
        // outside of the context of exception handling, so all we can do is
        // echo a message.
        echo 'Cannot write session to ' . $sessFile . "\n";
        return false;
    }
}
 
        foreach (glob($this->path . "/sess_*") as $filename) {
            if (filemtime($filename) + $maxlifetime < time()) {
                unlink($filename);
            }
        }
        return true;
    }
 
    /**
     * A function that is called internally when session data is to be saved.
     *
     * @param string $sessId The current session ID
     * @param string $data   The session data to write
     *
     * @return bool
     */
    protected function saveSession($sessId, $data)
    {
        $sessFile = $this->path . '/sess_' . $sessId;
        if ($handle = fopen($sessFile, "w")) {
            $return = fwrite($handle, $data);
            fclose($handle);
            if ($return !== false) {
                return true;
            }
        }
        // If we got this far, something went wrong with the file output...
        // It is tempting to throw an exception here, but this code is called
        // outside of the context of exception handling, so all we can do is
        // echo a message.
        echo 'Cannot write session to ' . $sessFile . "\n";
        return false;
    }
}
 
        // Anecdotal testing Today and Yesterday seems to indicate destroy()
        //   is called by the garbage collector and everything is good.
        // Something to keep in mind though.
        return true;
    }
 
    /**
     * Write function that is called when session data is to be saved.
     *
     * @param string $sessId The current session ID
     * @param string $data   The session data to write
     *
     * @return bool
     */
    public function write($sessId, $data)
    {
        if ($this->writesDisabled) {
            return true;
        }
        return $this->saveSession($sessId, $data);
    }
 
    /**
     * A function that is called internally when session data is to be saved.
     *
     * @param string $sessId The current session ID
     * @param string $data   The session data to write
     *
     * @return bool
     */
    abstract protected function saveSession($sessId, $data);
}
 
     *
     * @return void
     */
    public function writeClose()
    {
        // The assumption is that we're using PHP's ext/session.
        // session_write_close() will actually overwrite $_SESSION with an
        // empty array on completion -- which leads to a mismatch between what
        // is in the storage object and $_SESSION. To get around this, we
        // temporarily reset $_SESSION to an array, and then re-link it to
        // the storage object.
        //
        // Additionally, while you _can_ write to $_SESSION following a
        // session_write_close() operation, no changes made to it will be
        // flushed to the session handler. As such, we now mark the storage
        // object isImmutable.
        $storage  = $this->getStorage();
        if (! $storage->isImmutable()) {
            $_SESSION = $storage->toArray(true);
            session_write_close();
            $storage->fromArray($_SESSION);
            $storage->markImmutable();
        }
    }
 
    /**
     * Attempt to set the session name
     *
     * If the session has already been started, or if the name provided fails
     * validation, an exception will be raised.
     *
     * @param  string $name
     * @return SessionManager
     * @throws Exception\InvalidArgumentException
     */
    public function setName($name)
    {
        if ($this->sessionExists()) {
            throw new Exception\InvalidArgumentException(
                'Cannot set session name after a session has already started'

Environment & details:

Key Value
style EndNote
empty
empty
empty
Key Value
__Laminas Array ( [_REQUEST_ACCESS_TIME] => 1670575122.7843 [_VALID] => Array ( [Laminas\Session\Validator\Id] => hjfk7169uqcd83kkeqr2cd7uur ) )
SessionState Laminas\Stdlib\ArrayObject Object ( [storage:protected] => Array ( [cookiePath] => / ) [flag:protected] => 2 [iteratorClass:protected] => ArrayIterator [protectedProperties:protected] => Array ( [0] => storage [1] => flag [2] => iteratorClass [3] => protectedProperties ) )
Key Value
USER www-data
HOME /var/www
SCRIPT_NAME /vufind/index.php
REQUEST_URI /vufind/Record/CAD0001640/Export?style=EndNote
QUERY_STRING style=EndNote
REQUEST_METHOD GET
SERVER_PROTOCOL HTTP/1.1
GATEWAY_INTERFACE CGI/1.1
REDIRECT_QUERY_STRING style=EndNote
REDIRECT_URL /vufind/Record/CAD0001640/Export
REMOTE_PORT 52120
SCRIPT_FILENAME /usr/local/vufind/public/index.php
SERVER_ADMIN [no address given]
CONTEXT_DOCUMENT_ROOT /usr/local/vufind/public
CONTEXT_PREFIX /vufind
REQUEST_SCHEME https
DOCUMENT_ROOT /var/www/vufind
REMOTE_ADDR 44.201.99.222
SERVER_PORT 443
SERVER_ADDR 46.226.109.80
SERVER_NAME www.rebal.info
SERVER_SOFTWARE Apache/2.4.25 (Debian)
SERVER_SIGNATURE <address>Apache/2.4.25 (Debian) Server at www.rebal.info Port 443</address>
PATH /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
HTTP_CONNECTION Keep-Alive
HTTP_HOST www.rebal.info
HTTP_ACCEPT_ENCODING br,gzip
HTTP_ACCEPT_LANGUAGE en-US,en;q=0.5
HTTP_ACCEPT text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
HTTP_USER_AGENT CCBot/2.0 (https://commoncrawl.org/faq/)
proxy-nokeepalive 1
SSL_TLS_SNI www.rebal.info
HTTPS on
VUFIND_LOCAL_MODULES rebal
VUFIND_LOCAL_DIR /usr/local/vufind/local
VUFIND_ENV development
SCRIPT_URI https://www.rebal.info/vufind/Record/CAD0001640/Export
SCRIPT_URL /vufind/Record/CAD0001640/Export
REDIRECT_STATUS 200
REDIRECT_SSL_TLS_SNI www.rebal.info
REDIRECT_HTTPS on
REDIRECT_VUFIND_LOCAL_MODULES rebal
REDIRECT_VUFIND_LOCAL_DIR /usr/local/vufind/local
REDIRECT_VUFIND_ENV development
REDIRECT_SCRIPT_URI https://www.rebal.info/vufind/Record/CAD0001640/Export
REDIRECT_SCRIPT_URL /vufind/Record/CAD0001640/Export
FCGI_ROLE RESPONDER
PHP_SELF /vufind/index.php
REQUEST_TIME_FLOAT 1670575122.7527
REQUEST_TIME 1670575122
empty
0. Whoops\Handler\PrettyPageHandler
Cannot write session to /tmp/vufind_sessions/sess_hjfk7169uqcd83kkeqr2cd7uur Whoops! There was an error.
Whoops \ Exception \ ErrorException (E_WARNING)
session_write_close(): Failed to write session data using user defined save handler. (session.save_path: /var/lib/php/sessions) Whoops\Exception\ErrorException thrown with message "session_write_close(): Failed to write session data using user defined save handler. (session.save_path: /var/lib/php/sessions)" Stacktrace: #2 Whoops\Exception\ErrorException in /usr/local/vufind/vendor/laminas/laminas-session/src/SessionManager.php:235 #1 session_write_close in /usr/local/vufind/vendor/laminas/laminas-session/src/SessionManager.php:235 #0 Laminas\Session\SessionManager:writeClose in [internal]:0
2
Whoops\Exception\ErrorException
/vendor/laminas/laminas-session/src/SessionManager.php235
1
session_write_close
/vendor/laminas/laminas-session/src/SessionManager.php235
0
Laminas\Session\SessionManager writeClose
[internal]0
     *
     * @return void
     */
    public function writeClose()
    {
        // The assumption is that we're using PHP's ext/session.
        // session_write_close() will actually overwrite $_SESSION with an
        // empty array on completion -- which leads to a mismatch between what
        // is in the storage object and $_SESSION. To get around this, we
        // temporarily reset $_SESSION to an array, and then re-link it to
        // the storage object.
        //
        // Additionally, while you _can_ write to $_SESSION following a
        // session_write_close() operation, no changes made to it will be
        // flushed to the session handler. As such, we now mark the storage
        // object isImmutable.
        $storage  = $this->getStorage();
        if (! $storage->isImmutable()) {
            $_SESSION = $storage->toArray(true);
            session_write_close();
            $storage->fromArray($_SESSION);
            $storage->markImmutable();
        }
    }
 
    /**
     * Attempt to set the session name
     *
     * If the session has already been started, or if the name provided fails
     * validation, an exception will be raised.
     *
     * @param  string $name
     * @return SessionManager
     * @throws Exception\InvalidArgumentException
     */
    public function setName($name)
    {
        if ($this->sessionExists()) {
            throw new Exception\InvalidArgumentException(
                'Cannot set session name after a session has already started'
     *
     * @return void
     */
    public function writeClose()
    {
        // The assumption is that we're using PHP's ext/session.
        // session_write_close() will actually overwrite $_SESSION with an
        // empty array on completion -- which leads to a mismatch between what
        // is in the storage object and $_SESSION. To get around this, we
        // temporarily reset $_SESSION to an array, and then re-link it to
        // the storage object.
        //
        // Additionally, while you _can_ write to $_SESSION following a
        // session_write_close() operation, no changes made to it will be
        // flushed to the session handler. As such, we now mark the storage
        // object isImmutable.
        $storage  = $this->getStorage();
        if (! $storage->isImmutable()) {
            $_SESSION = $storage->toArray(true);
            session_write_close();
            $storage->fromArray($_SESSION);
            $storage->markImmutable();
        }
    }
 
    /**
     * Attempt to set the session name
     *
     * If the session has already been started, or if the name provided fails
     * validation, an exception will be raised.
     *
     * @param  string $name
     * @return SessionManager
     * @throws Exception\InvalidArgumentException
     */
    public function setName($name)
    {
        if ($this->sessionExists()) {
            throw new Exception\InvalidArgumentException(
                'Cannot set session name after a session has already started'

Environment & details:

Key Value
style EndNote
empty
empty
empty
Key Value
__Laminas Array ( [_REQUEST_ACCESS_TIME] => 1670575122.7843 [_VALID] => Array ( [Laminas\Session\Validator\Id] => hjfk7169uqcd83kkeqr2cd7uur ) )
SessionState Laminas\Stdlib\ArrayObject Object ( [storage:protected] => Array ( [cookiePath] => / ) [flag:protected] => 2 [iteratorClass:protected] => ArrayIterator [protectedProperties:protected] => Array ( [0] => storage [1] => flag [2] => iteratorClass [3] => protectedProperties ) )
Key Value
USER www-data
HOME /var/www
SCRIPT_NAME /vufind/index.php
REQUEST_URI /vufind/Record/CAD0001640/Export?style=EndNote
QUERY_STRING style=EndNote
REQUEST_METHOD GET
SERVER_PROTOCOL HTTP/1.1
GATEWAY_INTERFACE CGI/1.1
REDIRECT_QUERY_STRING style=EndNote
REDIRECT_URL /vufind/Record/CAD0001640/Export
REMOTE_PORT 52120
SCRIPT_FILENAME /usr/local/vufind/public/index.php
SERVER_ADMIN [no address given]
CONTEXT_DOCUMENT_ROOT /usr/local/vufind/public
CONTEXT_PREFIX /vufind
REQUEST_SCHEME https
DOCUMENT_ROOT /var/www/vufind
REMOTE_ADDR 44.201.99.222
SERVER_PORT 443
SERVER_ADDR 46.226.109.80
SERVER_NAME www.rebal.info
SERVER_SOFTWARE Apache/2.4.25 (Debian)
SERVER_SIGNATURE <address>Apache/2.4.25 (Debian) Server at www.rebal.info Port 443</address>
PATH /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
HTTP_CONNECTION Keep-Alive
HTTP_HOST www.rebal.info
HTTP_ACCEPT_ENCODING br,gzip
HTTP_ACCEPT_LANGUAGE en-US,en;q=0.5
HTTP_ACCEPT text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
HTTP_USER_AGENT CCBot/2.0 (https://commoncrawl.org/faq/)
proxy-nokeepalive 1
SSL_TLS_SNI www.rebal.info
HTTPS on
VUFIND_LOCAL_MODULES rebal
VUFIND_LOCAL_DIR /usr/local/vufind/local
VUFIND_ENV development
SCRIPT_URI https://www.rebal.info/vufind/Record/CAD0001640/Export
SCRIPT_URL /vufind/Record/CAD0001640/Export
REDIRECT_STATUS 200
REDIRECT_SSL_TLS_SNI www.rebal.info
REDIRECT_HTTPS on
REDIRECT_VUFIND_LOCAL_MODULES rebal
REDIRECT_VUFIND_LOCAL_DIR /usr/local/vufind/local
REDIRECT_VUFIND_ENV development
REDIRECT_SCRIPT_URI https://www.rebal.info/vufind/Record/CAD0001640/Export
REDIRECT_SCRIPT_URL /vufind/Record/CAD0001640/Export
FCGI_ROLE RESPONDER
PHP_SELF /vufind/index.php
REQUEST_TIME_FLOAT 1670575122.7527
REQUEST_TIME 1670575122
empty
0. Whoops\Handler\PrettyPageHandler