Colliers report: The private rental sector is expected to grow in Romania in the coming years

6 August 2021 • Articole

Descarcă 210805 Colliers_CEE_PRS_Report_June_2021_RENTAL.pdf

Colliers report: The private rental sector is expected to grow in Romania in the coming years

This tendency will be driven by the high overcrowding rate and a decrease in the accessibility of new homes in terms of prices

The Private Rental Sector (PRS) sector is expected to grow in the CEE region, as construction costs and inflation are rising and overcrowding rates are higher compared to the rest of the European Union (EU), reveals Colliers in its latest  “The Private Rental Sector: Has it found a home in CEE?” report in collaboration with Greenberg Traurig and Kinstellar. Romania has the highest overcrowding rate in the EU, and even though private ownership is very high, the rising home prices and construction costs make it harder for people to own a bigger home, leading to notable growth in the private rental sector.

Housing ownership in Romania is at the highest level in the EU. According to Eurostat statistics, approximately 96% of people owning the property they are living, but some estimates quoted by the Ministry of Development place the figure of rented apartments at up to 20% of the total stock in big cities like Bucharest and Cluj-Napoca. There is a cultural bias to this choice as much as there is an economical reason. For a very long time, mortgages have been more affordable than rents. In Bucharest, a monthly mortgage is on average 12% cheaper than the monthly rent, a level comparable to Warsaw or Sofia. By comparison, rents in Prague, for example, are more than 40% cheaper than a mortgage.

The overcrowding rate in Romania, based on the availability of rooms per person and the average size of household, was 45.8% in 2019, followed by Latvia (42.2 %) and Bulgaria (41.1%). Data suggests that the majority of households in Central Europe are more overcrowded than the EU average, but the long-term European trend shows a gradual decline in overcrowding and the CEE markets continue towards a convergence, according to Colliers consultants. This long-term evolution will bring a supply gap, more housing will be required and, from this new supply, Colliers consultants would anticipate that rental properties would make up a reasonable portion, subject to a shift in strategy from more developers and investors.

The continuous sales price increase is another driver for the private rental sector, particularly as central banks have taken some steps to limit the expansion of mortgages in recent years in the CEE. This is most apparent in the Czech Republic, with over 50.000 units of the private rental sector stock, but Poland is just starting to catch up, with more than 10.000 units planned or undergoing, adding to a stock of 5.000 units.

Romania lagged far behind the CEE leaders, with a little over 1.000 units built, in construction or planned, but Colliers consultants expect an increased interest in the rental sector in the coming years. An expected increase in sale prices – particularly induced by the higher construction costs – coupled with a decrease in affordability for house purchase loans are likely to boost the case for residential for rent in Romania.

“The last 5 years across CEE have seen sales prices rising rapidly, including in Romania, partly driven by a shortage of supply, relative ease and low cost of debt. Moreover, there is a desire for people to invest, in an effort to earn more money on their savings than they would receive in the bank. All these represented vectors for rising prices and costs, a trend that will force many Romanians, in the long term, to head towards private renting”, said Gabriel Blăniță, Associate Director Valuation & Advisory Services at Colliers Romania.

From the developer’s standpoint, in order for residential rent to make financial sense, projects need to be conceived, designed and built specifically for the rental market. As a result, a great deal of time and planning goes into them, particularly in terms of the unit-mix and the services or amenities that are relevant to the location and target group of customers.

“The private rental sector also requires significant attention to tenant services. Having a professional platform where tenants can speak to someone, register issues, and get timely feedback or resolution, is something that many players have already implemented or are striving towards. Advances in modern technologies (PropTech), are making this increasingly more efficient and effective to manage”, explains Gabriel Blăniță, Associate Director Valuation & Advisory Services at Colliers Romania.

In the private rental sector, the yields depend on the location and would range between 3.5-4% in the Czech Republic and 5-5.5% in Poland. The best estimates place the average yield level for the Bucharest residential sector in the 6-6.5% interval, but can vary slightly depending on location, according to Colliers consultants.

“The private rental sector as an asset class is a relatively new phenomenon in CEE, and you certainly have less of it as you move farther east. Part of it is legacy-related: home ownership was always extremely high in CEE and reflected a mentality that one needed to own one’s home. That is no longer necessarily the case. As demographics are changing and with prices steadily rising for development in congested areas with opportunities becoming scarcer, and many people being priced out of the market for home purchase, we expect this asset class to take hold in CEE”, explains Victor Constantinescu, Managing Partner Kinstellar Bucharest, Co-head of Firm-Wide Real Estate practice.

According to Eurostat data, the cost for constructing new residences in the EU has increased by 15% during the period 2010 to 2019. Among the CEE member states, the largest rises were observed in Hungary (+47 %) and Romania (+46%). In this context, many developers across the region are not tempted to deviate from the build-to-sell model of individual units.

Looking at Eurostat’s trend of house prices between 2011 and 2020, there is a steady upwards trend in the EU since 2013, with particularly large increases between 2016 and 2020. In total, there was an increase of 25% in the EU between 2011 and 2020. Some of the largest increases were observed in CEE, the highest in Hungary (+96%), with strong increases in Czech Republic (+61%) and Slovakia (+52%), followed by Bulgaria (+37%), Poland (+28%) and Romania (+23%). Bucharest has some of the most affordable residential units in the CEE, with an average sale price of around 1,800 euro per square meter in new apartment buildings. By comparison, In Budapest and Warsaw the average price is around 2,600 euro per square meter, while Prague has the most expensive residential sector in the CEE, with 4,700 euro per square meter.

Across Europe, the private rental sector is one of the most sought-after property types by investors. According to Real Capital Analytics (RCA), this is the second most invested asset class in Europe, with Industrial and Logistics coming a close third. The residential sector converged with a declining retail investment sector in 2018 with transaction volumes of ca. €50 billion. Volumes grew to more than €60 billion in both 2019 and 2020, demonstrating strong investor appetite and its resilience to the pandemic.


Whoops! There was an error.
Predis \ Response \ ServerException
MISCONF Redis is configured to save RDB snapshots, but it is currently not able to persist on disk. Commands that may modify the data set are disabled, because this instance is configured to report errors during writes if RDB snapshotting fails (stop-writes-on-bgsave-error option). Please check the Redis logs for details about the RDB error. Predis\Response\ServerException thrown with message "MISCONF Redis is configured to save RDB snapshots, but it is currently not able to persist on disk. Commands that may modify the data set are disabled, because this instance is configured to report errors during writes if RDB snapshotting fails (stop-writes-on-bgsave-error option). Please check the Redis logs for details about the RDB error. " Stacktrace: #12 Predis\Response\ServerException in /var/www/html/blissimobiliare/vendor/predis/predis/src/Client.php:370 #11 Predis\Client:onErrorResponse in /var/www/html/blissimobiliare/vendor/predis/predis/src/Client.php:335 #10 Predis\Client:executeCommand in /var/www/html/blissimobiliare/vendor/predis/predis/src/Client.php:314 #9 Predis\Client:__call in /var/www/html/blissimobiliare/vendor/laravel/framework/src/Illuminate/Redis/Connections/Connection.php:114 #8 Illuminate\Redis\Connections\Connection:command in /var/www/html/blissimobiliare/vendor/laravel/framework/src/Illuminate/Redis/Connections/Connection.php:214 #7 Illuminate\Redis\Connections\Connection:__call in /var/www/html/blissimobiliare/vendor/laravel/framework/src/Illuminate/Cache/RedisStore.php:93 #6 Illuminate\Cache\RedisStore:put in /var/www/html/blissimobiliare/vendor/laravel/framework/src/Illuminate/Cache/Repository.php:208 #5 Illuminate\Cache\Repository:put in /var/www/html/blissimobiliare/vendor/laravel/framework/src/Illuminate/Session/CacheBasedSessionHandler.php:66 #4 Illuminate\Session\CacheBasedSessionHandler:write in /var/www/html/blissimobiliare/vendor/laravel/framework/src/Illuminate/Session/Store.php:129 #3 Illuminate\Session\Store:save in /var/www/html/blissimobiliare/vendor/laravel/framework/src/Illuminate/Session/Middleware/StartSession.php:87 #2 Illuminate\Session\Middleware\StartSession:terminate in /var/www/html/blissimobiliare/vendor/laravel/framework/src/Illuminate/Foundation/Http/Kernel.php:218 #1 Illuminate\Foundation\Http\Kernel:terminateMiddleware in /var/www/html/blissimobiliare/vendor/laravel/framework/src/Illuminate/Foundation/Http/Kernel.php:189 #0 Illuminate\Foundation\Http\Kernel:terminate in /var/www/html/blissimobiliare/public/index.php:58
12
Predis\Response\ServerException
/vendor/predis/predis/src/Client.php370
11
Predis\Client onErrorResponse
/vendor/predis/predis/src/Client.php335
10
Predis\Client executeCommand
/vendor/predis/predis/src/Client.php314
9
Predis\Client __call
/vendor/laravel/framework/src/Illuminate/Redis/Connections/Connection.php114
8
Illuminate\Redis\Connections\Connection command
/vendor/laravel/framework/src/Illuminate/Redis/Connections/Connection.php214
7
Illuminate\Redis\Connections\Connection __call
/vendor/laravel/framework/src/Illuminate/Cache/RedisStore.php93
6
Illuminate\Cache\RedisStore put
/vendor/laravel/framework/src/Illuminate/Cache/Repository.php208
5
Illuminate\Cache\Repository put
/vendor/laravel/framework/src/Illuminate/Session/CacheBasedSessionHandler.php66
4
Illuminate\Session\CacheBasedSessionHandler write
/vendor/laravel/framework/src/Illuminate/Session/Store.php129
3
Illuminate\Session\Store save
/vendor/laravel/framework/src/Illuminate/Session/Middleware/StartSession.php87
2
Illuminate\Session\Middleware\StartSession terminate
/vendor/laravel/framework/src/Illuminate/Foundation/Http/Kernel.php218
1
Illuminate\Foundation\Http\Kernel terminateMiddleware
/vendor/laravel/framework/src/Illuminate/Foundation/Http/Kernel.php189
0
Illuminate\Foundation\Http\Kernel terminate
/public/index.php58
/var/www/html/blissimobiliare/vendor/predis/predis/src/Client.php
     *
     * @return mixed
     */
    protected function onErrorResponse(CommandInterface $command, ErrorResponseInterface $response)
    {
        if ($command instanceof ScriptCommand && $response->getErrorType() === 'NOSCRIPT') {
            $eval = $this->createCommand('EVAL');
            $eval->setRawArguments($command->getEvalArguments());
 
            $response = $this->executeCommand($eval);
 
            if (!$response instanceof ResponseInterface) {
                $response = $command->parseResponse($response);
            }
 
            return $response;
        }
 
        if ($this->options->exceptions) {
            throw new ServerException($response->getMessage());
        }
 
        return $response;
    }
 
    /**
     * Executes the specified initializer method on `$this` by adjusting the
     * actual invokation depending on the arity (0, 1 or 2 arguments). This is
     * simply an utility method to create Redis contexts instances since they
     * follow a common initialization path.
     *
     * @param string $initializer Method name.
     * @param array  $argv        Arguments for the method.
     *
     * @return mixed
     */
    private function sharedContextFactory($initializer, $argv = null)
    {
        switch (count($argv)) {
            case 0:
Arguments
  1. "MISCONF Redis is configured to save RDB snapshots, but it is currently not able to persist on disk. Commands that may modify the data set are disabled, because this instance is configured to report errors during writes if RDB snapshotting fails (stop-writes-on-bgsave-error option). Please check the Redis logs for details about the RDB error.  "
    
/var/www/html/blissimobiliare/vendor/predis/predis/src/Client.php
    }
 
    /**
     * {@inheritdoc}
     */
    public function createCommand($commandID, $arguments = array())
    {
        return $this->profile->createCommand($commandID, $arguments);
    }
 
    /**
     * {@inheritdoc}
     */
    public function executeCommand(CommandInterface $command)
    {
        $response = $this->connection->executeCommand($command);
 
        if ($response instanceof ResponseInterface) {
            if ($response instanceof ErrorResponseInterface) {
                $response = $this->onErrorResponse($command, $response);
            }
 
            return $response;
        }
 
        return $command->parseResponse($response);
    }
 
    /**
     * Handles -ERR responses returned by Redis.
     *
     * @param CommandInterface       $command  Redis command that generated the error.
     * @param ErrorResponseInterface $response Instance of the error response.
     *
     * @throws ServerException
     *
     * @return mixed
     */
    protected function onErrorResponse(CommandInterface $command, ErrorResponseInterface $response)
    {
Arguments
  1. Predis\Command\StringSetExpire {}
    
  2. Predis\Response\Error {}
    
/var/www/html/blissimobiliare/vendor/predis/predis/src/Client.php
        );
 
        if ($response instanceof ResponseInterface) {
            if ($response instanceof ErrorResponseInterface) {
                $error = true;
            }
 
            return (string) $response;
        }
 
        return $response;
    }
 
    /**
     * {@inheritdoc}
     */
    public function __call($commandID, $arguments)
    {
        return $this->executeCommand(
            $this->createCommand($commandID, $arguments)
        );
    }
 
    /**
     * {@inheritdoc}
     */
    public function createCommand($commandID, $arguments = array())
    {
        return $this->profile->createCommand($commandID, $arguments);
    }
 
    /**
     * {@inheritdoc}
     */
    public function executeCommand(CommandInterface $command)
    {
        $response = $this->connection->executeCommand($command);
 
        if ($response instanceof ResponseInterface) {
            if ($response instanceof ErrorResponseInterface) {
Arguments
  1. Predis\Command\StringSetExpire {}
    
/var/www/html/blissimobiliare/vendor/laravel/framework/src/Illuminate/Redis/Connections/Connection.php
     * @param  \Closure  $callback
     * @return void
     */
    public function psubscribe($channels, Closure $callback)
    {
        return $this->createSubscription($channels, $callback, __FUNCTION__);
    }
 
    /**
     * Run a command against the Redis database.
     *
     * @param  string  $method
     * @param  array   $parameters
     * @return mixed
     */
    public function command($method, array $parameters = [])
    {
        $start = microtime(true);
 
        $result = $this->client->{$method}(...$parameters);
 
        $time = round((microtime(true) - $start) * 1000, 2);
 
        if (isset($this->events)) {
            $this->event(new CommandExecuted($method, $parameters, $time, $this));
        }
 
        return $result;
    }
 
    /**
     * Fire the given event if possible.
     *
     * @param  mixed  $event
     * @return void
     */
    protected function event($event)
    {
        if (isset($this->events)) {
            $this->events->dispatch($event);
Arguments
  1. "setex"
    
  2. array:3 [
      0 => "laravel:eBR0nnAkMGHWJCiSuS7qcREQ4j6BQ9e9fCPiolIg"
      1 => 7200
      2 => "s:335:"a:4:{s:6:"_token";s:40:"n8rGMHNtTD0OzpISreYR9s7r2KJee5nJIwZsgIrA";s:9:"_previous";a:1:{s:3:"url";s:140:"http://dev.blissimobiliare.ro/blog/articole/colliers-report-the-private-rental-sector-is-expected-to-grow-in-romania-in-the-coming-years-445";}s:22:"PHPDEBUGBAR_STACK_DATA";a:0:{}s:6:"_flash";a:2:{s:3:"old";a:0:{}s:3:"new";a:0:{}}}";"
    ]
    
/var/www/html/blissimobiliare/vendor/laravel/framework/src/Illuminate/Redis/Connections/Connection.php
    /**
     * Unset the event dispatcher instance on the connection.
     *
     * @return void
     */
    public function unsetEventDispatcher()
    {
        $this->events = null;
    }
 
    /**
     * Pass other method calls down to the underlying client.
     *
     * @param  string  $method
     * @param  array  $parameters
     * @return mixed
     */
    public function __call($method, $parameters)
    {
        return $this->command($method, $parameters);
    }
}
 
Arguments
  1. "setex"
    
  2. array:3 [
      0 => "laravel:eBR0nnAkMGHWJCiSuS7qcREQ4j6BQ9e9fCPiolIg"
      1 => 7200
      2 => "s:335:"a:4:{s:6:"_token";s:40:"n8rGMHNtTD0OzpISreYR9s7r2KJee5nJIwZsgIrA";s:9:"_previous";a:1:{s:3:"url";s:140:"http://dev.blissimobiliare.ro/blog/articole/colliers-report-the-private-rental-sector-is-expected-to-grow-in-romania-in-the-coming-years-445";}s:22:"PHPDEBUGBAR_STACK_DATA";a:0:{}s:6:"_flash";a:2:{s:3:"old";a:0:{}s:3:"new";a:0:{}}}";"
    ]
    
/var/www/html/blissimobiliare/vendor/laravel/framework/src/Illuminate/Cache/RedisStore.php
 
        foreach ($values as $index => $value) {
            $results[$keys[$index]] = ! is_null($value) ? $this->unserialize($value) : null;
        }
 
        return $results;
    }
 
    /**
     * Store an item in the cache for a given number of minutes.
     *
     * @param  string  $key
     * @param  mixed   $value
     * @param  float|int  $minutes
     * @return void
     */
    public function put($key, $value, $minutes)
    {
        $this->connection()->setex(
            $this->prefix.$key, (int) max(1, $minutes * 60), $this->serialize($value)
        );
    }
 
    /**
     * Store multiple items in the cache for a given number of minutes.
     *
     * @param  array  $values
     * @param  float|int  $minutes
     * @return void
     */
    public function putMany(array $values, $minutes)
    {
        $this->connection()->multi();
 
        foreach ($values as $key => $value) {
            $this->put($key, $value, $minutes);
        }
 
        $this->connection()->exec();
    }
Arguments
  1. "setex"
    
  2. array:3 [
      0 => "laravel:eBR0nnAkMGHWJCiSuS7qcREQ4j6BQ9e9fCPiolIg"
      1 => 7200
      2 => "s:335:"a:4:{s:6:"_token";s:40:"n8rGMHNtTD0OzpISreYR9s7r2KJee5nJIwZsgIrA";s:9:"_previous";a:1:{s:3:"url";s:140:"http://dev.blissimobiliare.ro/blog/articole/colliers-report-the-private-rental-sector-is-expected-to-grow-in-romania-in-the-coming-years-445";}s:22:"PHPDEBUGBAR_STACK_DATA";a:0:{}s:6:"_flash";a:2:{s:3:"old";a:0:{}s:3:"new";a:0:{}}}";"
    ]
    
/var/www/html/blissimobiliare/vendor/laravel/framework/src/Illuminate/Cache/Repository.php
    }
 
    /**
     * Store an item in the cache.
     *
     * @param  string  $key
     * @param  mixed   $value
     * @param  \DateTimeInterface|\DateInterval|float|int|null  $minutes
     * @return void
     */
    public function put($key, $value, $minutes = null)
    {
        if (is_array($key)) {
            $this->putMany($key, $value);
 
            return;
        }
 
        if (! is_null($minutes = $this->getMinutes($minutes))) {
            $this->store->put($this->itemKey($key), $value, $minutes);
 
            $this->event(new KeyWritten($key, $value, $minutes));
        }
    }
 
    /**
     * {@inheritdoc}
     */
    public function set($key, $value, $ttl = null)
    {
        $this->put($key, $value, $ttl);
    }
 
    /**
     * Store multiple items in the cache for a given number of minutes.
     *
     * @param  array  $values
     * @param  \DateTimeInterface|\DateInterval|float|int  $minutes
     * @return void
     */
Arguments
  1. "eBR0nnAkMGHWJCiSuS7qcREQ4j6BQ9e9fCPiolIg"
    
  2. "a:4:{s:6:"_token";s:40:"n8rGMHNtTD0OzpISreYR9s7r2KJee5nJIwZsgIrA";s:9:"_previous";a:1:{s:3:"url";s:140:"http://dev.blissimobiliare.ro/blog/articole/colliers-report-the-private-rental-sector-is-expected-to-grow-in-romania-in-the-coming-years-445";}s:22:"PHPDEBUGBAR_STACK_DATA";a:0:{}s:6:"_flash";a:2:{s:3:"old";a:0:{}s:3:"new";a:0:{}}}"
    
  3. 120
    
/var/www/html/blissimobiliare/vendor/laravel/framework/src/Illuminate/Session/CacheBasedSessionHandler.php
     */
    public function close()
    {
        return true;
    }
 
    /**
     * {@inheritdoc}
     */
    public function read($sessionId)
    {
        return $this->cache->get($sessionId, '');
    }
 
    /**
     * {@inheritdoc}
     */
    public function write($sessionId, $data)
    {
        return $this->cache->put($sessionId, $data, $this->minutes);
    }
 
    /**
     * {@inheritdoc}
     */
    public function destroy($sessionId)
    {
        return $this->cache->forget($sessionId);
    }
 
    /**
     * {@inheritdoc}
     */
    public function gc($lifetime)
    {
        return true;
    }
 
    /**
     * Get the underlying cache repository.
Arguments
  1. "eBR0nnAkMGHWJCiSuS7qcREQ4j6BQ9e9fCPiolIg"
    
  2. "a:4:{s:6:"_token";s:40:"n8rGMHNtTD0OzpISreYR9s7r2KJee5nJIwZsgIrA";s:9:"_previous";a:1:{s:3:"url";s:140:"http://dev.blissimobiliare.ro/blog/articole/colliers-report-the-private-rental-sector-is-expected-to-grow-in-romania-in-the-coming-years-445";}s:22:"PHPDEBUGBAR_STACK_DATA";a:0:{}s:6:"_flash";a:2:{s:3:"old";a:0:{}s:3:"new";a:0:{}}}"
    
  3. 120
    
/var/www/html/blissimobiliare/vendor/laravel/framework/src/Illuminate/Session/Store.php
     *
     * @param  string  $data
     * @return string
     */
    protected function prepareForUnserialize($data)
    {
        return $data;
    }
 
    /**
     * Save the session data to storage.
     *
     * @return bool
     */
    public function save()
    {
        $this->ageFlashData();
 
        $this->handler->write($this->getId(), $this->prepareForStorage(
            serialize($this->attributes)
        ));
 
        $this->started = false;
    }
 
    /**
     * Prepare the serialized session data for storage.
     *
     * @param  string  $data
     * @return string
     */
    protected function prepareForStorage($data)
    {
        return $data;
    }
 
    /**
     * Age the flash data for the session.
     *
     * @return void
Arguments
  1. "eBR0nnAkMGHWJCiSuS7qcREQ4j6BQ9e9fCPiolIg"
    
  2. "a:4:{s:6:"_token";s:40:"n8rGMHNtTD0OzpISreYR9s7r2KJee5nJIwZsgIrA";s:9:"_previous";a:1:{s:3:"url";s:140:"http://dev.blissimobiliare.ro/blog/articole/colliers-report-the-private-rental-sector-is-expected-to-grow-in-romania-in-the-coming-years-445";}s:22:"PHPDEBUGBAR_STACK_DATA";a:0:{}s:6:"_flash";a:2:{s:3:"old";a:0:{}s:3:"new";a:0:{}}}"
    
/var/www/html/blissimobiliare/vendor/laravel/framework/src/Illuminate/Session/Middleware/StartSession.php
        if ($this->sessionConfigured()) {
            $this->storeCurrentUrl($request, $session);
 
            $this->addCookieToResponse($response, $session);
        }
 
        return $response;
    }
 
    /**
     * Perform any final actions for the request lifecycle.
     *
     * @param  \Illuminate\Http\Request  $request
     * @param  \Symfony\Component\HttpFoundation\Response  $response
     * @return void
     */
    public function terminate($request, $response)
    {
        if ($this->sessionHandled && $this->sessionConfigured() && ! $this->usingCookieSessions()) {
            $this->manager->driver()->save();
        }
    }
 
    /**
     * Start the session for the given request.
     *
     * @param  \Illuminate\Http\Request  $request
     * @return \Illuminate\Contracts\Session\Session
     */
    protected function startSession(Request $request)
    {
        return tap($this->getSession($request), function ($session) use ($request) {
            $session->setRequestOnHandler($request);
 
            $session->start();
        });
    }
 
    /**
     * Get the session implementation from the manager.
/var/www/html/blissimobiliare/vendor/laravel/framework/src/Illuminate/Foundation/Http/Kernel.php
     * @return void
     */
    protected function terminateMiddleware($request, $response)
    {
        $middlewares = $this->app->shouldSkipMiddleware() ? [] : array_merge(
            $this->gatherRouteMiddleware($request),
            $this->middleware
        );
 
        foreach ($middlewares as $middleware) {
            if (! is_string($middleware)) {
                continue;
            }
 
            [$name] = $this->parseMiddleware($middleware);
 
            $instance = $this->app->make($name);
 
            if (method_exists($instance, 'terminate')) {
                $instance->terminate($request, $response);
            }
        }
    }
 
    /**
     * Gather the route middleware for the given request.
     *
     * @param  \Illuminate\Http\Request  $request
     * @return array
     */
    protected function gatherRouteMiddleware($request)
    {
        if ($route = $request->route()) {
            return $this->router->gatherRouteMiddleware($route);
        }
 
        return [];
    }
 
    /**
Arguments
  1. Illuminate\Http\Request {
      #json: null
      #convertedFiles: null
      #userResolver: Closure($guard = null) { …4}
      #routeResolver: Closure() { …4}
      +attributes: Symfony\Component\HttpFoundation\ParameterBag {}
      +request: Symfony\Component\HttpFoundation\ParameterBag {#1}
      +query: Symfony\Component\HttpFoundation\ParameterBag {#1}
      +server: Symfony\Component\HttpFoundation\ServerBag {}
      +files: Symfony\Component\HttpFoundation\FileBag {}
      +cookies: Symfony\Component\HttpFoundation\ParameterBag {}
      +headers: Symfony\Component\HttpFoundation\HeaderBag {}
      #content: null
      #languages: null
      #charsets: null
      #encodings: null
      #acceptableContentTypes: array:1 [
        0 => "*/*"
      ]
      #pathInfo: "/blog/articole/colliers-report-the-private-rental-sector-is-expected-to-grow-in-romania-in-the-coming-years-445"
      #requestUri: "/blog/articole/colliers-report-the-private-rental-sector-is-expected-to-grow-in-romania-in-the-coming-years-445"
      #baseUrl: ""
      #basePath: null
      #method: "GET"
      #format: null
      #session: Illuminate\Session\Store {}
      #locale: null
      #defaultLocale: "en"
      -preferredFormat: null
      -isHostValid: true
      -isForwardedValid: true
      basePath: ""
      format: "html"
    }
    
  2. Illuminate\Http\Response {}
    
/var/www/html/blissimobiliare/vendor/laravel/framework/src/Illuminate/Foundation/Http/Kernel.php
     */
    protected function dispatchToRouter()
    {
        return function ($request) {
            $this->app->instance('request', $request);
 
            return $this->router->dispatch($request);
        };
    }
 
    /**
     * Call the terminate method on any terminable middleware.
     *
     * @param  \Illuminate\Http\Request  $request
     * @param  \Illuminate\Http\Response  $response
     * @return void
     */
    public function terminate($request, $response)
    {
        $this->terminateMiddleware($request, $response);
 
        $this->app->terminate();
    }
 
    /**
     * Call the terminate method on any terminable middleware.
     *
     * @param  \Illuminate\Http\Request  $request
     * @param  \Illuminate\Http\Response  $response
     * @return void
     */
    protected function terminateMiddleware($request, $response)
    {
        $middlewares = $this->app->shouldSkipMiddleware() ? [] : array_merge(
            $this->gatherRouteMiddleware($request),
            $this->middleware
        );
 
        foreach ($middlewares as $middleware) {
            if (! is_string($middleware)) {
Arguments
  1. Illuminate\Http\Request {
      #json: null
      #convertedFiles: null
      #userResolver: Closure($guard = null) { …4}
      #routeResolver: Closure() { …4}
      +attributes: Symfony\Component\HttpFoundation\ParameterBag {}
      +request: Symfony\Component\HttpFoundation\ParameterBag {#1}
      +query: Symfony\Component\HttpFoundation\ParameterBag {#1}
      +server: Symfony\Component\HttpFoundation\ServerBag {}
      +files: Symfony\Component\HttpFoundation\FileBag {}
      +cookies: Symfony\Component\HttpFoundation\ParameterBag {}
      +headers: Symfony\Component\HttpFoundation\HeaderBag {}
      #content: null
      #languages: null
      #charsets: null
      #encodings: null
      #acceptableContentTypes: array:1 [
        0 => "*/*"
      ]
      #pathInfo: "/blog/articole/colliers-report-the-private-rental-sector-is-expected-to-grow-in-romania-in-the-coming-years-445"
      #requestUri: "/blog/articole/colliers-report-the-private-rental-sector-is-expected-to-grow-in-romania-in-the-coming-years-445"
      #baseUrl: ""
      #basePath: null
      #method: "GET"
      #format: null
      #session: Illuminate\Session\Store {}
      #locale: null
      #defaultLocale: "en"
      -preferredFormat: null
      -isHostValid: true
      -isForwardedValid: true
      basePath: ""
      format: "html"
    }
    
  2. Illuminate\Http\Response {}
    
/var/www/html/blissimobiliare/public/index.php
|--------------------------------------------------------------------------
| Run The Application
|--------------------------------------------------------------------------
|
| Once we have the application, we can handle the incoming request
| through the kernel, and send the associated response back to
| the client's browser allowing them to enjoy the creative
| and wonderful application we have prepared for them.
|
*/
 
$kernel = $app->make(Illuminate\Contracts\Http\Kernel::class);
 
$response = $kernel->handle(
    $request = Illuminate\Http\Request::capture()
);
 
$response->send();
 
$kernel->terminate($request, $response);
 
Arguments
  1. Illuminate\Http\Request {
      #json: null
      #convertedFiles: null
      #userResolver: Closure($guard = null) { …4}
      #routeResolver: Closure() { …4}
      +attributes: Symfony\Component\HttpFoundation\ParameterBag {}
      +request: Symfony\Component\HttpFoundation\ParameterBag {#1}
      +query: Symfony\Component\HttpFoundation\ParameterBag {#1}
      +server: Symfony\Component\HttpFoundation\ServerBag {}
      +files: Symfony\Component\HttpFoundation\FileBag {}
      +cookies: Symfony\Component\HttpFoundation\ParameterBag {}
      +headers: Symfony\Component\HttpFoundation\HeaderBag {}
      #content: null
      #languages: null
      #charsets: null
      #encodings: null
      #acceptableContentTypes: array:1 [
        0 => "*/*"
      ]
      #pathInfo: "/blog/articole/colliers-report-the-private-rental-sector-is-expected-to-grow-in-romania-in-the-coming-years-445"
      #requestUri: "/blog/articole/colliers-report-the-private-rental-sector-is-expected-to-grow-in-romania-in-the-coming-years-445"
      #baseUrl: ""
      #basePath: null
      #method: "GET"
      #format: null
      #session: Illuminate\Session\Store {}
      #locale: null
      #defaultLocale: "en"
      -preferredFormat: null
      -isHostValid: true
      -isForwardedValid: true
      basePath: ""
      format: "html"
    }
    
  2. Illuminate\Http\Response {}
    

Environment & details:

empty
empty
empty
Key Value
lang
"eyJpdiI6IlpURHBRRFpqdlpHT1pIMU8rYldlMFE9PSIsInZhbHVlIjoiZ2QrbWZtSGZZWnBVc2hkSWZ6M2VVUT09IiwibWFjIjoiNWQyYzk1MWRmZDNlYmU5ODI5YjNhNWRhY2UyYWQ0MjQ5NGQ1ODBjOWQ0ZjI4NjU0NTQwYmZiM2ZiYTI2ZDNiYiJ9"
XSRF-TOKEN
"eyJpdiI6IkxnRERMNnVuUyt2U004SVRcL1hhZjhRPT0iLCJ2YWx1ZSI6IlBwTjJnRmtidnV1QURueGNBblZnWGw5MTlCM0xaSDgwUStyWVVRck5RTkNDeHF2Z3pmem5ZU1E2U2JaenVlTFwvIiwibWFjIjoiYWRiYTMzNDhjNDc2YTdkMzA3ZWIwN2FiNWQwYTQ1ZGJmNWY0MDg5MDc5NWM2Yjc0ZGY4YjYwNjc4Y2Q3ZDFhOSJ9"
laravel_session
"eyJpdiI6IjB6ZlBibmp6aUtCQUtnK3R3eWdqQkE9PSIsInZhbHVlIjoiUzFcLzZSSUo3SkxvSlZCYm1oRG5KXC82TG5FbWF0XC9JVVJZaVJXd0NJMFdPXC9zZHRnV1B6NWd2MmxZemoxZkNBRUkiLCJtYWMiOiJkMDU4OGIwN2ExZjI0Zjg2MGI3N2Q3NGJiY2FlMTg5YjNiYzZlMmZkOTJjYjJkNTRkNzI1M2YwMTQyMjY1N2M3In0="
empty
Key Value
REDIRECT_UNIQUE_ID
"aMYkR6wfEagAAEBKHqQAAAAC"
REDIRECT_SCRIPT_URL
"/blog/articole/colliers-report-the-private-rental-sector-is-expected-to-grow-in-romania-in-the-coming-years-445"
REDIRECT_SCRIPT_URI
"http://dev.blissimobiliare.ro/blog/articole/colliers-report-the-private-rental-sector-is-expected-to-grow-in-romania-in-the-coming-years-445"
REDIRECT_STATUS
"200"
UNIQUE_ID
"aMYkR6wfEagAAEBKHqQAAAAC"
SCRIPT_URL
"/blog/articole/colliers-report-the-private-rental-sector-is-expected-to-grow-in-romania-in-the-coming-years-445"
SCRIPT_URI
"http://dev.blissimobiliare.ro/blog/articole/colliers-report-the-private-rental-sector-is-expected-to-grow-in-romania-in-the-coming-years-445"
HTTP_ACCEPT
"*/*"
HTTP_USER_AGENT
"Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; ClaudeBot/1.0; +claudebot@anthropic.com)"
HTTP_COOKIE
"lang=eyJpdiI6IlpURHBRRFpqdlpHT1pIMU8rYldlMFE9PSIsInZhbHVlIjoiZ2QrbWZtSGZZWnBVc2hkSWZ6M2VVUT09IiwibWFjIjoiNWQyYzk1MWRmZDNlYmU5ODI5YjNhNWRhY2UyYWQ0MjQ5NGQ1ODBjOWQ0ZjI4NjU0NTQwYmZiM2ZiYTI2ZDNiYiJ9; XSRF-TOKEN=eyJpdiI6IkxnRERMNnVuUyt2U004SVRcL1hhZjhRPT0iLCJ2YWx1ZSI6IlBwTjJnRmtidnV1QURueGNBblZnWGw5MTlCM0xaSDgwUStyWVVRck5RTkNDeHF2Z3pmem5ZU1E2U2JaenVlTFwvIiwibWFjIjoiYWRiYTMzNDhjNDc2YTdkMzA3ZWIwN2FiNWQwYTQ1ZGJmNWY0MDg5MDc5NWM2Yjc0ZGY4YjYwNjc4Y2Q3ZDFhOSJ9; laravel_session=eyJpdiI6IjB6ZlBibmp6aUtCQUtnK3R3eWdqQkE9PSIsInZhbHVlIjoiUzFcLzZSSUo3SkxvSlZCYm1oRG5KXC82TG5FbWF0XC9JVVJZaVJXd0NJMFdPXC9zZHRnV1B6NWd2MmxZemoxZkNBRUkiLCJtYWMiOiJkMDU4OGIwN2ExZjI0Zjg2MGI3N2Q3NGJiY2FlMTg5YjNiYzZlMmZkOTJjYjJkNTRkNzI1M2YwMTQyMjY1N2M3In0%3D"
HTTP_ACCEPT_ENCODING
"gzip, br, zstd, deflate"
HTTP_HOST
"dev.blissimobiliare.ro"
HTTP_VIA
"1.1 squid-proxy-5b5d847c96-b8kmf (squid/6.10)"
HTTP_X_FORWARDED_FOR
"10.3.134.55"
HTTP_CACHE_CONTROL
"max-age=259200"
HTTP_CONNECTION
"keep-alive"
PATH
"/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"
SERVER_SIGNATURE
""
SERVER_SOFTWARE
"Apache"
SERVER_NAME
"dev.blissimobiliare.ro"
SERVER_ADDR
"172.31.17.168"
SERVER_PORT
"80"
REMOTE_ADDR
"216.73.216.97"
DOCUMENT_ROOT
"/var/www/html/blissimobiliare/public"
REQUEST_SCHEME
"http"
CONTEXT_PREFIX
""
CONTEXT_DOCUMENT_ROOT
"/var/www/html/blissimobiliare/public"
SERVER_ADMIN
"razvan.iacob@blissimobiliare.ro"
SCRIPT_FILENAME
"/var/www/html/blissimobiliare/public/index.php"
REMOTE_PORT
"26764"
REDIRECT_URL
"/blog/articole/colliers-report-the-private-rental-sector-is-expected-to-grow-in-romania-in-the-coming-years-445"
GATEWAY_INTERFACE
"CGI/1.1"
SERVER_PROTOCOL
"HTTP/1.1"
REQUEST_METHOD
"GET"
QUERY_STRING
""
REQUEST_URI
"/blog/articole/colliers-report-the-private-rental-sector-is-expected-to-grow-in-romania-in-the-coming-years-445"
SCRIPT_NAME
"/index.php"
PHP_SELF
"/index.php"
REQUEST_TIME_FLOAT
1757815879.124
REQUEST_TIME
1757815879
APP_ENV
"dev"
APP_KEY
"base64:TUuFX2pGhF01If7DKAC3kZsG4eHfCEDGZOiq1YLX/Fc="
APP_DEBUG
"true"
APP_LOG_LEVEL
"debug"
APP_URL
"https://dev.blissimobiliare.ro"
DB_CONNECTION
"mysql"
DB_HOST
"jaap.c0yqfgjfckuc.eu-central-1.rds.amazonaws.com"
DB_PORT
"3306"
DB_DATABASE
"jaap_dev"
DB_USERNAME
"root"
DB_PASSWORD
"nd3nfm90ms"
BROADCAST_DRIVER
"pusher"
CACHE_DRIVER
"redis"
SESSION_DRIVER
"redis"
QUEUE_DRIVER
"redis"
REDIS_HOST
"127.0.0.1"
REDIS_PASSWORD
"null"
REDIS_PORT
"6379"
SOLR_CORE
"core0"
SOLR_USER
"root"
SOLR_PASS
"jA5GpXhFCc7SeY6x"
MAIL_DRIVER
"smtp"
MAIL_HOST
"smtp.sendgrid.net"
MAIL_PORT
"587"
MAIL_USERNAME
"apikey"
MAIL_PASSWORD
"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"
MAIL_ENCRYPTION
"tls"
SENGRID_API_KEY
"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"
PUSHER_APP_ID
"266734"
PUSHER_APP_KEY
"1da30260f9dbb1a0d9db"
PUSHER_APP_SECRET
"10fbeff65291a4cc067a"
SLACK_WEBHOOK_URL
"https://hooks.slack.com/services/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"
MIXPANEL_TOKEN
"25d54c3d4d562ae8353ed7c7417d488b"
ANALYTICS_VIEW_ID
"132938481"
RECAPTCHA_KEY
"6LecPnoUAAAAAAZgRBMRPEA1V2bqSKNPmTnlN_M_"
RECAPTCHA_SECRET
"6LecPnoUAAAAAD-xVo0bqW7XCeGEHjotj48ShhfK"
S3_KEY
"AKIAIY23DCGM7GE6X26A"
S3_SECRET
"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"
S3_REGION
"eu-central-1"
S3_BUCKET
"bliss-files"
IPAPI_KEY
""
DEBUGBAR_ENABLED
"true"
DB_LOG_QUERIES
"false"
DB_LOG_SLOW_QUERIES
"true"
DB_SLOW_QUERIES_MIN_EXEC_TIME
"100"
DB_LOG_OVERRIDE
"false"
DB_LOG_DIRECTORY
"logs/db"
DB_CONVERT_TIME_TO_SECONDS
"false"
DB_LOG_SEPARATE_ARTISAN
"false"
Key Value
APP_ENV
"dev"
APP_KEY
"base64:TUuFX2pGhF01If7DKAC3kZsG4eHfCEDGZOiq1YLX/Fc="
APP_DEBUG
"true"
APP_LOG_LEVEL
"debug"
APP_URL
"https://dev.blissimobiliare.ro"
DB_CONNECTION
"mysql"
DB_HOST
"jaap.c0yqfgjfckuc.eu-central-1.rds.amazonaws.com"
DB_PORT
"3306"
DB_DATABASE
"jaap_dev"
DB_USERNAME
"root"
DB_PASSWORD
"nd3nfm90ms"
BROADCAST_DRIVER
"pusher"
CACHE_DRIVER
"redis"
SESSION_DRIVER
"redis"
QUEUE_DRIVER
"redis"
REDIS_HOST
"127.0.0.1"
REDIS_PASSWORD
"null"
REDIS_PORT
"6379"
SOLR_CORE
"core0"
SOLR_USER
"root"
SOLR_PASS
"jA5GpXhFCc7SeY6x"
MAIL_DRIVER
"smtp"
MAIL_HOST
"smtp.sendgrid.net"
MAIL_PORT
"587"
MAIL_USERNAME
"apikey"
MAIL_PASSWORD
"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"
MAIL_ENCRYPTION
"tls"
SENGRID_API_KEY
"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"
PUSHER_APP_ID
"266734"
PUSHER_APP_KEY
"1da30260f9dbb1a0d9db"
PUSHER_APP_SECRET
"10fbeff65291a4cc067a"
SLACK_WEBHOOK_URL
"https://hooks.slack.com/services/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"
MIXPANEL_TOKEN
"25d54c3d4d562ae8353ed7c7417d488b"
ANALYTICS_VIEW_ID
"132938481"
RECAPTCHA_KEY
"6LecPnoUAAAAAAZgRBMRPEA1V2bqSKNPmTnlN_M_"
RECAPTCHA_SECRET
"6LecPnoUAAAAAD-xVo0bqW7XCeGEHjotj48ShhfK"
S3_KEY
"AKIAIY23DCGM7GE6X26A"
S3_SECRET
"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"
S3_REGION
"eu-central-1"
S3_BUCKET
"bliss-files"
IPAPI_KEY
""
DEBUGBAR_ENABLED
"true"
DB_LOG_QUERIES
"false"
DB_LOG_SLOW_QUERIES
"true"
DB_SLOW_QUERIES_MIN_EXEC_TIME
"100"
DB_LOG_OVERRIDE
"false"
DB_LOG_DIRECTORY
"logs/db"
DB_CONVERT_TIME_TO_SECONDS
"false"
DB_LOG_SEPARATE_ARTISAN
"false"
0. Whoops\Handler\PrettyPageHandler