Explore the Wonders of Ngorongoro

Explore the Wonders of Ngorongoro

Explore the Wonders of Ngorongoro: Must-Do Activities

Situated in the stunning landscapes of Tanzania, the Ngorongoro Conservation Area is a captivating realm of its own. While the Ngorongoro Crater is undoubtedly the highlight, there is so much more to explore and experience in this region. From scenic hikes along the crater rim to cultural encounters with the Maasai people, and from exploring ancient archaeological sites to marveling at unique landscapes, this page is your guide to the captivating activities that await you in Ngorongoro. Whether you're a wildlife enthusiast, a history buff, or simply someone seeking to immerse yourself in the beauty of nature, Ngorongoro Conservation Area has something for everyone. With this, let’s dive into the diverse array of activities that will make your visit to Ngorongoro Conservation Area exciting!

 

Maasai Village Tour

A short cultural tour you can do on the way to Serengeti or after your Ngorongoro crater tour While East Africa safaris often conjure images of lions and elephants roaming the savanna, there is a cultural tapestry waiting to be explored. Among the most fascinating cultures is that of the Maasai tribes and their villages.

Within the Ngorongoro Conservation Area embark on an extraordinary Maasai village tour and immerse yourself in the vibrant traditions and ancient practices. Engage in heartfelt conversations, listen to captivating stories passed down through generations, take part in their daily activities and witness their mesmerizing dances that echo their cultural heritage. Marvel at their intricate beadwork and traditional attire, reflecting their rich artistic expressions.

 

This immersive journey costs $30 per person and lasts approximately 1 to 1.5 hours, offering a glimpse into the Maasai way of life and the harmonious relationship they maintain with the wildlife and land surrounding them. To understand in detail what goes on during a Maasai Village Tour check out our page here.

 

Olduvai Gorge Museum

A short museum tour you can do on the way to Serengeti

Immerse yourself in the rich history of the Olduvai Museum, a remarkable archaeological site nestled in the Ngorongoro region of Tanzania. Derived from the Maasai term meaning "Place of wild sisal," Olduvai bears witness to the ancient past, housing a treasure trove of fossils, stone tools, and bones that shed light on the evolution of ancestors of modern humans.

As one of the oldest paleoanthropological sites globally, Olduvai takes you on a captivating journey spanning two million to fifteen thousand years ago. Here you can find the evidence of human and animal evolution, unveiling fascinating insights into early hunting practices and scavenging behaviors predating the use of stone tools.

The Olduvai Gorge Museum, located at the junction of the main and side gorges, stands as a gateway to this fascinating history. Here you can immerse yourself in the exhibits that vividly depict the long-standing legacy of the gorge, offering a comprehensive educational experience.

A visit to the Olduvai Museum costs $50 and typically takes around 1.5 to 2 hours, allowing ample time to absorb the profound knowledge it presents.

Whether you're en route to Serengeti or returning from Serengeti to Ngorongoro, make sure to include the Olduvai Museum in your itinerary to witness the captivating story of our past.

 

Ngorongoro Crater Rim Hike

A short scenic hike you can do on the way to Serengeti or after your Ngorongoro crater tour

The Ngorongoro Crater Rim Hike takes you through a delightful trek along the picturesque rim, offering stunning vistas of the surrounding landscapes and abundant wildlife.

Standing at an elevation of 2400 meters above sea level, the hike presents a moderate difficulty level, making it accessible for all skill levels. With the usual duration of about 1.5 to 2 hours and with option to extend upto 4 hours, you have the flexibility to tailor the hike to your preferences and fitness level.

As you venture along the trail, you'll encounter a diverse array of bird species, flora, and grazing animals. So make sure to keep your eyes peeled for captivating sightings of elephants and buffalos against the backdrop of open woodlands, grasslands, and acacia forests. The western rim is also often frequented by the Maasai and their cattle, providing a unique glimpse into their traditional way of life.

For a memorable experience, it is recommended to start the hike early, around 8:30 am, to enjoy the beautiful scenery and make the most of your time in this breathtaking setting.

The cost for this hike is $50 per person for short walks, lasting up to 2 hours, and $45 per person for longer walks, spanning up to 4 hours. These rates are based on a group of two individuals sharing the experience.

We recommend you to take this hike on your way from Karatu to Serengeti National Park or on the way back from Serengeti to Ngorongoro, giving a refreshing change to your day.

 

Shifting Sand Dunes

A natural attraction you can visit on the way to Serengeti

Discover the mesmerising beauty of the crescent-shaped black dunes found 2 km north of Olduvai Gorge, along the scenic route to Serengeti within the Ngorongoro Conservation Area. These striking dunes, formed by volcanic activity, captivate with their distinct black color, a testament to their origin. These magnetic dunes possess a unique quality that causes particles thrown into the air to gravitate back, seemingly drawn to the black mountain itself.

Originating from the Ol Doinyo Lengai, also known as the Mountain of God, these dunes gradually migrate westward at a steady pace of 15-20 meters per year. Occasionally, when fierce winds sweep across the land, the dunes come alive, shifting at an accelerated rate of 17 meters per year. A smaller dune has even veered off, carving its own path 3 km northward.

While visiting these dune, it is essential to respect their significance to the Maasai people, who consider them sacred during times of prolonged drought, often performing rituals and goat sacrifices in hopes of summoning rain.

The exploration of these dunes typically takes around 45 minutes to 1 hour and it is close to the road that connects to Serengeti. So best time to visit this would be on the way to Serengeti (or on the way back from Serengeti)

 

Empakaai Crater Hike

Scenic hike that requires close to a full day

Empakaai Crater, nestled at the northeastern edge of the Ngorongoro Crater is another great location for a hike. This captivating crater, spanning an impressive 6000 meters in width and towering 300 meters high, stands as a testament to the region's natural splendor.

Embark on a picturesque journey along forested trails, immersing yourself in the breathtaking surroundings of Empakaai. As you venture forward, you'll encounter an array of wildlife, including waterbucks, buffalos, elands, and an abundance of vibrant bird species. Also, a keen eye out for the lesser-known flamingos that have made Empakaai their home.

The summit of Empakaai Crater reveals a panorama of awe-inspiring sights. Take in the grandeur of Ol Doinyo Lengai, an active volcano known as the "Mountain of God" from the summit, and on clear days look out for the striking views of the Great Rift Valley, the towering presence of Mount Kilimanjaro, and the vibrant red hues of Lake Natron.

Throughout the hike, you'll be accompanied by a knowledgeable guide and an armed park ranger, ensuring your safety and offering valuable insights into the area's natural wonders. For an even more enriching experience, we can arrange for a Maasai companion to join your hike, sharing their culture and traditions along the way.

Choose a convenient time to embark on this adventure, starting anytime from 8:30 am. While the overall descent and ascent can take around 4 hours, considering the drive from your accommodation to the hike location and back, you will need a full day to plan this tour.

 

Mt. Makarot Hike

Scenic hike that requires close to a full day

You can also choose to hike on Mount Makarot, which is a short distance from the western rim of the Ngorongoro Crater, and boasts of panoramic views and vast grasslands. This steep climb rewards you with breathtaking vistas and a captivating journey that takes approximately 2 hours to reach the summit and similar time to return. Considering the drive time from your accommodation in Ngorongoro or Karatu and back, this tour can take full day (upto 8 hours).

Throughout the hike, you'll encounter Maasai villages nestled below, their presence sometimes accompanied by the distant sounds of grazing cows and donkeys. Keep a keen eye out for buffalos, lions, and elusive leopards along the trail. And don’t worry, you will be accompanied by a knowledgeable guide and armed ranger to ensure your safety. Also, look out for playful baboons and immerse yourself in the ever-changing surroundings, transitioning from bush scrubs to expansive grasslands and lush forests reminiscent of a jungle.

As you hike around the ridge, a slope with boundless skies awaits, providing the perfect spot to savour a meal. The peak lies just a few minutes beyond this point, granting a splendid view of Lake Eyasi. Overlooking the steep drop to the northwest, a glimpse of the Serengeti National Park can also be caught.

While the trail remains open throughout the day, starting early is recommended to allow ample time to complete the hike and return to your accommodation.

 

Olmoti Crater Hike

Scenic hike that requires close to a full day

Explore the remarkable Olmoti Crater, a geological marvel that emerged from volcanic activities nearly 2 million years ago in the Ngorongoro region. The name "Olmoti" translates to "cooking pot" in the Maasai language, reminiscent of its sunken caldera formation. Situated 13 kilometers north of the renowned Ngorongoro Crater, Olmoti offers a unique allure, though it may not match the vastness of its sibling.

Despite its relatively smaller size, Olmoti Crater serves as a magnet for a variety of wildlife, including buffalos, elephants, and antelopes, drawn to its lush greenery and reliable water sources. Additionally, the Maasai people utilize the area as a grazing ground for their cattle.

To embark on this adventure, start your journey with a 30-minute hike from the ranger post at Nainokanoka in Ngorongoro, where you'll be joined by an armed ranger who will accompany you throughout the trail alongside your guide. As you reach the caldera, a captivating sight awaits: a river gracefully meanders through the broken crater, culminating in the breathtaking Munge waterfall.

The Olmoti Crater hike covers a distance of 3 kilometers (round trip), with a manageable duration of approximately 1.5 hours. The trail entails a steep descent and ascent, with an elevation of 310 meters. The higher altitude may cause you to breathe heavily, but the hike is considered an easy endeavor, suitable for individuals capable of walking for an hour or two.

Upon reaching the crater, you may settle down for a well-deserved lunch in a nice picnic spot, and keep an eye on the skies to look out for Verreaux's Eagles and Augur Buzzards gracefully soaring above the cliffs.

The Olmoti Crater hike can be undertaken at any time of the day, allowing flexibility in planning your excursion. You may start as early as 8:30 am and complete the hike as late as 3 pm. Adding the time required for transfers, we recommend to plan this when you have full day for Ngorongoro.

Elevating your exploration to a height of 3088 meters above sea level, the Olmoti Crater hike promises captivating scenery, accessible trails, and an opportunity to immerse yourself in the natural wonders of the Ngorongoro region.

 

Conclusion

Hence, the Ngorongoro Conservation Area offers a wide range of activities and attractions to explore. From the stunning landscapes of the Ngorongoro Crater to the rich cultural encounters with the Maasai people, there is something for everyone to enjoy. Whether you choose to hike, visit museums, or marvel at the abundant wildlife, Ngorongoro promises an unforgettable experience. Take in the beauty, immerse yourself in the unique surroundings, and create lasting memories of your time in this remarkable conservation area. Read more about short tours you can do at Serengeti.

Whoops! There was an error.
ErrorException (E_NOTICE)
fwrite(): write of 1821 bytes failed with errno=122 Disk quota exceeded ErrorException thrown with message "fwrite(): write of 1821 bytes failed with errno=122 Disk quota exceeded" Stacktrace: #11 ErrorException in /home2/kimtours/theapp/vendor/monolog/monolog/src/Monolog/Handler/StreamHandler.php:131 #10 fwrite in /home2/kimtours/theapp/vendor/monolog/monolog/src/Monolog/Handler/StreamHandler.php:131 #9 Monolog\Handler\StreamHandler:streamWrite in /home2/kimtours/theapp/vendor/monolog/monolog/src/Monolog/Handler/StreamHandler.php:117 #8 Monolog\Handler\StreamHandler:write in /home2/kimtours/theapp/vendor/monolog/monolog/src/Monolog/Handler/AbstractProcessingHandler.php:39 #7 Monolog\Handler\AbstractProcessingHandler:handle in /home2/kimtours/theapp/vendor/monolog/monolog/src/Monolog/Logger.php:344 #6 Monolog\Logger:addRecord in /home2/kimtours/theapp/vendor/monolog/monolog/src/Monolog/Logger.php:712 #5 Monolog\Logger:error in /home2/kimtours/theapp/vendor/laravel/framework/src/Illuminate/Log/Writer.php:203 #4 Illuminate\Log\Writer:writeLog in /home2/kimtours/theapp/vendor/laravel/framework/src/Illuminate/Log/Writer.php:114 #3 Illuminate\Log\Writer:error in /home2/kimtours/theapp/vendor/laravel/framework/src/Illuminate/Foundation/Exceptions/Handler.php:113 #2 Illuminate\Foundation\Exceptions\Handler:report in /home2/kimtours/theapp/app/Exceptions/Handler.php:39 #1 App\Exceptions\Handler:report in /home2/kimtours/theapp/vendor/laravel/framework/src/Illuminate/Foundation/Bootstrap/HandleExceptions.php:81 #0 Illuminate\Foundation\Bootstrap\HandleExceptions:handleException in [internal]:0
11
ErrorException
/vendor/monolog/monolog/src/Monolog/Handler/StreamHandler.php131
10
fwrite
/vendor/monolog/monolog/src/Monolog/Handler/StreamHandler.php131
9
Monolog\Handler\StreamHandler streamWrite
/vendor/monolog/monolog/src/Monolog/Handler/StreamHandler.php117
8
Monolog\Handler\StreamHandler write
/vendor/monolog/monolog/src/Monolog/Handler/AbstractProcessingHandler.php39
7
Monolog\Handler\AbstractProcessingHandler handle
/vendor/monolog/monolog/src/Monolog/Logger.php344
6
Monolog\Logger addRecord
/vendor/monolog/monolog/src/Monolog/Logger.php712
5
Monolog\Logger error
/vendor/laravel/framework/src/Illuminate/Log/Writer.php203
4
Illuminate\Log\Writer writeLog
/vendor/laravel/framework/src/Illuminate/Log/Writer.php114
3
Illuminate\Log\Writer error
/vendor/laravel/framework/src/Illuminate/Foundation/Exceptions/Handler.php113
2
Illuminate\Foundation\Exceptions\Handler report
/app/Exceptions/Handler.php39
1
App\Exceptions\Handler report
/vendor/laravel/framework/src/Illuminate/Foundation/Bootstrap/HandleExceptions.php81
0
Illuminate\Foundation\Bootstrap\HandleExceptions handleException
[internal]0
/home2/kimtours/theapp/vendor/monolog/monolog/src/Monolog/Handler/StreamHandler.php
        if ($this->useLocking) {
            // ignoring errors here, there's not much we can do about them
            flock($this->stream, LOCK_EX);
        }
 
        $this->streamWrite($this->stream, $record);
 
        if ($this->useLocking) {
            flock($this->stream, LOCK_UN);
        }
    }
 
    /**
     * Write to stream
     * @param resource $stream
     * @param array $record
     */
    protected function streamWrite($stream, array $record)
    {
        fwrite($stream, (string) $record['formatted']);
    }
 
    private function customErrorHandler($code, $msg)
    {
        $this->errorMessage = preg_replace('{^(fopen|mkdir)\(.*?\): }', '', $msg);
    }
 
    /**
     * @param string $stream
     *
     * @return null|string
     */
    private function getDirFromStream($stream)
    {
        $pos = strpos($stream, '://');
        if ($pos === false) {
            return dirname($stream);
        }
 
        if ('file://' === substr($stream, 0, 7)) {
Arguments
  1. "fwrite(): write of 1821 bytes failed with errno=122 Disk quota exceeded"
    
/home2/kimtours/theapp/vendor/monolog/monolog/src/Monolog/Handler/StreamHandler.php
        if ($this->useLocking) {
            // ignoring errors here, there's not much we can do about them
            flock($this->stream, LOCK_EX);
        }
 
        $this->streamWrite($this->stream, $record);
 
        if ($this->useLocking) {
            flock($this->stream, LOCK_UN);
        }
    }
 
    /**
     * Write to stream
     * @param resource $stream
     * @param array $record
     */
    protected function streamWrite($stream, array $record)
    {
        fwrite($stream, (string) $record['formatted']);
    }
 
    private function customErrorHandler($code, $msg)
    {
        $this->errorMessage = preg_replace('{^(fopen|mkdir)\(.*?\): }', '', $msg);
    }
 
    /**
     * @param string $stream
     *
     * @return null|string
     */
    private function getDirFromStream($stream)
    {
        $pos = strpos($stream, '://');
        if ($pos === false) {
            return dirname($stream);
        }
 
        if ('file://' === substr($stream, 0, 7)) {
Arguments
  1. stream resource @7
      timed_out: false
      blocked: true
      eof: false
      wrapper_type: "plainfile"
      stream_type: "STDIO"
      mode: "a"
      unread_bytes: 0
      seekable: true
      uri: "/home2/kimtours/theapp/storage/logs/laravel.log"
      options: []
    }
    
  2. """
    [2025-06-11 00:58:17] local.ERROR: file_put_contents(): write of 235 bytes failed with errno=122 Disk quota exceeded {"exception":"[object] (ErrorException(code: 0): file_put_contents(): write of 235 bytes failed with errno=122 Disk quota exceeded at /home2/kimtours/theapp/vendor/laravel/framework/src/Illuminate/Filesystem/Filesystem.php:122)\n
    [stacktrace]\n
    #0 [internal function]: Illuminate\\Foundation\\Bootstrap\\HandleExceptions->handleError(8, 'file_put_conten...', '/home2/kimtours...', 122, Array)\n
    #1 /home2/kimtours/theapp/vendor/laravel/framework/src/Illuminate/Filesystem/Filesystem.php(122): file_put_contents('/home2/kimtours...', 'a:3:{s:6:\"_toke...', 2)\n
    #2 /home2/kimtours/theapp/vendor/laravel/framework/src/Illuminate/Session/FileSessionHandler.php(83): Illuminate\\Filesystem\\Filesystem->put('/home2/kimtours...', 'a:3:{s:6:\"_toke...', true)\n
    #3 /home2/kimtours/theapp/vendor/laravel/framework/src/Illuminate/Session/Store.php(128): Illuminate\\Session\\FileSessionHandler->write('UJP21uiiwOTFn1m...', 'a:3:{s:6:\"_toke...')\n
    #4 /home2/kimtours/theapp/vendor/laravel/framework/src/Illuminate/Session/Middleware/StartSession.php(87): Illuminate\\Session\\Store->save()\n
    #5 /home2/kimtours/theapp/vendor/laravel/framework/src/Illuminate/Foundation/Http/Kernel.php(218): Illuminate\\Session\\Middleware\\StartSession->terminate(Object(Illuminate\\Http\\Request), Object(Illuminate\\Http\\Response))\n
    #6 /home2/kimtours/theapp/vendor/laravel/framework/src/Illuminate/Foundation/Http/Kernel.php(189): Illuminate\\Foundation\\Http\\Kernel->terminateMiddleware(Object(Illuminate\\Http\\Request), Object(Illuminate\\Http\\Response))\n
    #7 /home2/kimtours/public_html/index.php(60): Illuminate\\Foundation\\Http\\Kernel->terminate(Object(Illuminate\\Http\\Request), Object(Illuminate\\Http\\Response))\n
    #8 {main}\n
    "} \n
    """
    
/home2/kimtours/theapp/vendor/monolog/monolog/src/Monolog/Handler/StreamHandler.php
            $this->createDir();
            $this->errorMessage = null;
            set_error_handler(array($this, 'customErrorHandler'));
            $this->stream = fopen($this->url, 'a');
            if ($this->filePermission !== null) {
                @chmod($this->url, $this->filePermission);
            }
            restore_error_handler();
            if (!is_resource($this->stream)) {
                $this->stream = null;
                throw new \UnexpectedValueException(sprintf('The stream or file "%s" could not be opened: '.$this->errorMessage, $this->url));
            }
        }
 
        if ($this->useLocking) {
            // ignoring errors here, there's not much we can do about them
            flock($this->stream, LOCK_EX);
        }
 
        $this->streamWrite($this->stream, $record);
 
        if ($this->useLocking) {
            flock($this->stream, LOCK_UN);
        }
    }
 
    /**
     * Write to stream
     * @param resource $stream
     * @param array $record
     */
    protected function streamWrite($stream, array $record)
    {
        fwrite($stream, (string) $record['formatted']);
    }
 
    private function customErrorHandler($code, $msg)
    {
        $this->errorMessage = preg_replace('{^(fopen|mkdir)\(.*?\): }', '', $msg);
    }
Arguments
  1. stream resource @7
      timed_out: false
      blocked: true
      eof: false
      wrapper_type: "plainfile"
      stream_type: "STDIO"
      mode: "a"
      unread_bytes: 0
      seekable: true
      uri: "/home2/kimtours/theapp/storage/logs/laravel.log"
      options: []
    }
    
  2. array:8 [
      "message" => "file_put_contents(): write of 235 bytes failed with errno=122 Disk quota exceeded"
      "context" => array:1 [
        "exception" => ErrorException {
          #message: "file_put_contents(): write of 235 bytes failed with errno=122 Disk quota exceeded"
          #code: 0
          #file: "/home2/kimtours/theapp/vendor/laravel/framework/src/Illuminate/Filesystem/Filesystem.php"
          #line: 122
          #severity: E_NOTICE
        }
      ]
      "level" => 400
      "level_name" => "ERROR"
      "channel" => "local"
      "datetime" => DateTime @1749603497 {
        date: 2025-06-11 00:58:17.465097 UTC (+00:00)
      }
      "extra" => []
      "formatted" => """
        [2025-06-11 00:58:17] local.ERROR: file_put_contents(): write of 235 bytes failed with errno=122 Disk quota exceeded {"exception":"[object] (ErrorException(code: 0): file_put_contents(): write of 235 bytes failed with errno=122 Disk quota exceeded at /home2/kimtours/theapp/vendor/laravel/framework/src/Illuminate/Filesystem/Filesystem.php:122)\n
        [stacktrace]\n
        #0 [internal function]: Illuminate\\Foundation\\Bootstrap\\HandleExceptions->handleError(8, 'file_put_conten...', '/home2/kimtours...', 122, Array)\n
        #1 /home2/kimtours/theapp/vendor/laravel/framework/src/Illuminate/Filesystem/Filesystem.php(122): file_put_contents('/home2/kimtours...', 'a:3:{s:6:\"_toke...', 2)\n
        #2 /home2/kimtours/theapp/vendor/laravel/framework/src/Illuminate/Session/FileSessionHandler.php(83): Illuminate\\Filesystem\\Filesystem->put('/home2/kimtours...', 'a:3:{s:6:\"_toke...', true)\n
        #3 /home2/kimtours/theapp/vendor/laravel/framework/src/Illuminate/Session/Store.php(128): Illuminate\\Session\\FileSessionHandler->write('UJP21uiiwOTFn1m...', 'a:3:{s:6:\"_toke...')\n
        #4 /home2/kimtours/theapp/vendor/laravel/framework/src/Illuminate/Session/Middleware/StartSession.php(87): Illuminate\\Session\\Store->save()\n
        #5 /home2/kimtours/theapp/vendor/laravel/framework/src/Illuminate/Foundation/Http/Kernel.php(218): Illuminate\\Session\\Middleware\\StartSession->terminate(Object(Illuminate\\Http\\Request), Object(Illuminate\\Http\\Response))\n
        #6 /home2/kimtours/theapp/vendor/laravel/framework/src/Illuminate/Foundation/Http/Kernel.php(189): Illuminate\\Foundation\\Http\\Kernel->terminateMiddleware(Object(Illuminate\\Http\\Request), Object(Illuminate\\Http\\Response))\n
        #7 /home2/kimtours/public_html/index.php(60): Illuminate\\Foundation\\Http\\Kernel->terminate(Object(Illuminate\\Http\\Request), Object(Illuminate\\Http\\Response))\n
        #8 {main}\n
        "} \n
        """
    ]
    
/home2/kimtours/theapp/vendor/monolog/monolog/src/Monolog/Handler/AbstractProcessingHandler.php
 *
 * @author Jordi Boggiano <j.boggiano@seld.be>
 * @author Christophe Coevoet <stof@notk.org>
 */
abstract class AbstractProcessingHandler extends AbstractHandler
{
    /**
     * {@inheritdoc}
     */
    public function handle(array $record)
    {
        if (!$this->isHandling($record)) {
            return false;
        }
 
        $record = $this->processRecord($record);
 
        $record['formatted'] = $this->getFormatter()->format($record);
 
        $this->write($record);
 
        return false === $this->bubble;
    }
 
    /**
     * Writes the record down to the log of the implementing handler
     *
     * @param  array $record
     * @return void
     */
    abstract protected function write(array $record);
 
    /**
     * Processes a record.
     *
     * @param  array $record
     * @return array
     */
    protected function processRecord(array $record)
    {
Arguments
  1. array:8 [
      "message" => "file_put_contents(): write of 235 bytes failed with errno=122 Disk quota exceeded"
      "context" => array:1 [
        "exception" => ErrorException {
          #message: "file_put_contents(): write of 235 bytes failed with errno=122 Disk quota exceeded"
          #code: 0
          #file: "/home2/kimtours/theapp/vendor/laravel/framework/src/Illuminate/Filesystem/Filesystem.php"
          #line: 122
          #severity: E_NOTICE
        }
      ]
      "level" => 400
      "level_name" => "ERROR"
      "channel" => "local"
      "datetime" => DateTime @1749603497 {
        date: 2025-06-11 00:58:17.465097 UTC (+00:00)
      }
      "extra" => []
      "formatted" => """
        [2025-06-11 00:58:17] local.ERROR: file_put_contents(): write of 235 bytes failed with errno=122 Disk quota exceeded {"exception":"[object] (ErrorException(code: 0): file_put_contents(): write of 235 bytes failed with errno=122 Disk quota exceeded at /home2/kimtours/theapp/vendor/laravel/framework/src/Illuminate/Filesystem/Filesystem.php:122)\n
        [stacktrace]\n
        #0 [internal function]: Illuminate\\Foundation\\Bootstrap\\HandleExceptions->handleError(8, 'file_put_conten...', '/home2/kimtours...', 122, Array)\n
        #1 /home2/kimtours/theapp/vendor/laravel/framework/src/Illuminate/Filesystem/Filesystem.php(122): file_put_contents('/home2/kimtours...', 'a:3:{s:6:\"_toke...', 2)\n
        #2 /home2/kimtours/theapp/vendor/laravel/framework/src/Illuminate/Session/FileSessionHandler.php(83): Illuminate\\Filesystem\\Filesystem->put('/home2/kimtours...', 'a:3:{s:6:\"_toke...', true)\n
        #3 /home2/kimtours/theapp/vendor/laravel/framework/src/Illuminate/Session/Store.php(128): Illuminate\\Session\\FileSessionHandler->write('UJP21uiiwOTFn1m...', 'a:3:{s:6:\"_toke...')\n
        #4 /home2/kimtours/theapp/vendor/laravel/framework/src/Illuminate/Session/Middleware/StartSession.php(87): Illuminate\\Session\\Store->save()\n
        #5 /home2/kimtours/theapp/vendor/laravel/framework/src/Illuminate/Foundation/Http/Kernel.php(218): Illuminate\\Session\\Middleware\\StartSession->terminate(Object(Illuminate\\Http\\Request), Object(Illuminate\\Http\\Response))\n
        #6 /home2/kimtours/theapp/vendor/laravel/framework/src/Illuminate/Foundation/Http/Kernel.php(189): Illuminate\\Foundation\\Http\\Kernel->terminateMiddleware(Object(Illuminate\\Http\\Request), Object(Illuminate\\Http\\Response))\n
        #7 /home2/kimtours/public_html/index.php(60): Illuminate\\Foundation\\Http\\Kernel->terminate(Object(Illuminate\\Http\\Request), Object(Illuminate\\Http\\Response))\n
        #8 {main}\n
        "} \n
        """
    ]
    
/home2/kimtours/theapp/vendor/monolog/monolog/src/Monolog/Logger.php
        }
        $ts->setTimezone(static::$timezone);
 
        $record = array(
            'message' => (string) $message,
            'context' => $context,
            'level' => $level,
            'level_name' => $levelName,
            'channel' => $this->name,
            'datetime' => $ts,
            'extra' => array(),
        );
 
        try {
            foreach ($this->processors as $processor) {
                $record = call_user_func($processor, $record);
            }
 
            while ($handler = current($this->handlers)) {
                if (true === $handler->handle($record)) {
                    break;
                }
 
                next($this->handlers);
            }
        } catch (Exception $e) {
            $this->handleException($e, $record);
        }
 
        return true;
    }
 
    /**
     * Ends a log cycle and frees all resources used by handlers.
     *
     * Closing a Handler means flushing all buffers and freeing any open resources/handles.
     * Handlers that have been closed should be able to accept log records again and re-open
     * themselves on demand, but this may not always be possible depending on implementation.
     *
     * This is useful at the end of a request and will be called automatically on every handler
Arguments
  1. array:8 [
      "message" => "file_put_contents(): write of 235 bytes failed with errno=122 Disk quota exceeded"
      "context" => array:1 [
        "exception" => ErrorException {
          #message: "file_put_contents(): write of 235 bytes failed with errno=122 Disk quota exceeded"
          #code: 0
          #file: "/home2/kimtours/theapp/vendor/laravel/framework/src/Illuminate/Filesystem/Filesystem.php"
          #line: 122
          #severity: E_NOTICE
        }
      ]
      "level" => 400
      "level_name" => "ERROR"
      "channel" => "local"
      "datetime" => DateTime @1749603497 {
        date: 2025-06-11 00:58:17.465097 UTC (+00:00)
      }
      "extra" => []
      "formatted" => """
        [2025-06-11 00:58:17] local.ERROR: file_put_contents(): write of 235 bytes failed with errno=122 Disk quota exceeded {"exception":"[object] (ErrorException(code: 0): file_put_contents(): write of 235 bytes failed with errno=122 Disk quota exceeded at /home2/kimtours/theapp/vendor/laravel/framework/src/Illuminate/Filesystem/Filesystem.php:122)\n
        [stacktrace]\n
        #0 [internal function]: Illuminate\\Foundation\\Bootstrap\\HandleExceptions->handleError(8, 'file_put_conten...', '/home2/kimtours...', 122, Array)\n
        #1 /home2/kimtours/theapp/vendor/laravel/framework/src/Illuminate/Filesystem/Filesystem.php(122): file_put_contents('/home2/kimtours...', 'a:3:{s:6:\"_toke...', 2)\n
        #2 /home2/kimtours/theapp/vendor/laravel/framework/src/Illuminate/Session/FileSessionHandler.php(83): Illuminate\\Filesystem\\Filesystem->put('/home2/kimtours...', 'a:3:{s:6:\"_toke...', true)\n
        #3 /home2/kimtours/theapp/vendor/laravel/framework/src/Illuminate/Session/Store.php(128): Illuminate\\Session\\FileSessionHandler->write('UJP21uiiwOTFn1m...', 'a:3:{s:6:\"_toke...')\n
        #4 /home2/kimtours/theapp/vendor/laravel/framework/src/Illuminate/Session/Middleware/StartSession.php(87): Illuminate\\Session\\Store->save()\n
        #5 /home2/kimtours/theapp/vendor/laravel/framework/src/Illuminate/Foundation/Http/Kernel.php(218): Illuminate\\Session\\Middleware\\StartSession->terminate(Object(Illuminate\\Http\\Request), Object(Illuminate\\Http\\Response))\n
        #6 /home2/kimtours/theapp/vendor/laravel/framework/src/Illuminate/Foundation/Http/Kernel.php(189): Illuminate\\Foundation\\Http\\Kernel->terminateMiddleware(Object(Illuminate\\Http\\Request), Object(Illuminate\\Http\\Response))\n
        #7 /home2/kimtours/public_html/index.php(60): Illuminate\\Foundation\\Http\\Kernel->terminate(Object(Illuminate\\Http\\Request), Object(Illuminate\\Http\\Response))\n
        #8 {main}\n
        "} \n
        """
    ]
    
/home2/kimtours/theapp/vendor/monolog/monolog/src/Monolog/Logger.php
     * @param  array  $context The log context
     * @return bool   Whether the record has been processed
     */
    public function err($message, array $context = array())
    {
        return $this->addRecord(static::ERROR, $message, $context);
    }
 
    /**
     * Adds a log record at the ERROR level.
     *
     * This method allows for compatibility with common interfaces.
     *
     * @param  string $message The log message
     * @param  array  $context The log context
     * @return bool   Whether the record has been processed
     */
    public function error($message, array $context = array())
    {
        return $this->addRecord(static::ERROR, $message, $context);
    }
 
    /**
     * Adds a log record at the CRITICAL level.
     *
     * This method allows for compatibility with common interfaces.
     *
     * @param  string $message The log message
     * @param  array  $context The log context
     * @return bool   Whether the record has been processed
     */
    public function crit($message, array $context = array())
    {
        return $this->addRecord(static::CRITICAL, $message, $context);
    }
 
    /**
     * Adds a log record at the CRITICAL level.
     *
     * This method allows for compatibility with common interfaces.
Arguments
  1. 400
    
  2. "file_put_contents(): write of 235 bytes failed with errno=122 Disk quota exceeded"
    
  3. array:1 [
      "exception" => ErrorException {
        #message: "file_put_contents(): write of 235 bytes failed with errno=122 Disk quota exceeded"
        #code: 0
        #file: "/home2/kimtours/theapp/vendor/laravel/framework/src/Illuminate/Filesystem/Filesystem.php"
        #line: 122
        #severity: E_NOTICE
      }
    ]
    
/home2/kimtours/theapp/vendor/laravel/framework/src/Illuminate/Log/Writer.php
     * @return void
     */
    public function write($level, $message, array $context = [])
    {
        $this->writeLog($level, $message, $context);
    }
 
    /**
     * Write a message to Monolog.
     *
     * @param  string  $level
     * @param  string  $message
     * @param  array  $context
     * @return void
     */
    protected function writeLog($level, $message, $context)
    {
        $this->fireLogEvent($level, $message = $this->formatMessage($message), $context);
 
        $this->monolog->{$level}($message, $context);
    }
 
    /**
     * Register a file log handler.
     *
     * @param  string  $path
     * @param  string  $level
     * @return void
     */
    public function useFiles($path, $level = 'debug')
    {
        $this->monolog->pushHandler($handler = new StreamHandler($path, $this->parseLevel($level)));
 
        $handler->setFormatter($this->getDefaultFormatter());
    }
 
    /**
     * Register a daily file log handler.
     *
     * @param  string  $path
Arguments
  1. "file_put_contents(): write of 235 bytes failed with errno=122 Disk quota exceeded"
    
  2. array:1 [
      "exception" => ErrorException {
        #message: "file_put_contents(): write of 235 bytes failed with errno=122 Disk quota exceeded"
        #code: 0
        #file: "/home2/kimtours/theapp/vendor/laravel/framework/src/Illuminate/Filesystem/Filesystem.php"
        #line: 122
        #severity: E_NOTICE
      }
    ]
    
/home2/kimtours/theapp/vendor/laravel/framework/src/Illuminate/Log/Writer.php
     *
     * @param  string  $message
     * @param  array  $context
     * @return void
     */
    public function critical($message, array $context = [])
    {
        $this->writeLog(__FUNCTION__, $message, $context);
    }
 
    /**
     * Log an error message to the logs.
     *
     * @param  string  $message
     * @param  array  $context
     * @return void
     */
    public function error($message, array $context = [])
    {
        $this->writeLog(__FUNCTION__, $message, $context);
    }
 
    /**
     * Log a warning message to the logs.
     *
     * @param  string  $message
     * @param  array  $context
     * @return void
     */
    public function warning($message, array $context = [])
    {
        $this->writeLog(__FUNCTION__, $message, $context);
    }
 
    /**
     * Log a notice to the logs.
     *
     * @param  string  $message
     * @param  array  $context
     * @return void
Arguments
  1. "error"
    
  2. "file_put_contents(): write of 235 bytes failed with errno=122 Disk quota exceeded"
    
  3. array:1 [
      "exception" => ErrorException {
        #message: "file_put_contents(): write of 235 bytes failed with errno=122 Disk quota exceeded"
        #code: 0
        #file: "/home2/kimtours/theapp/vendor/laravel/framework/src/Illuminate/Filesystem/Filesystem.php"
        #line: 122
        #severity: E_NOTICE
      }
    ]
    
/home2/kimtours/theapp/vendor/laravel/framework/src/Illuminate/Foundation/Exceptions/Handler.php
     */
    public function report(Exception $e)
    {
        if ($this->shouldntReport($e)) {
            return;
        }
 
        if (method_exists($e, 'report')) {
            return $e->report();
        }
 
        try {
            $logger = $this->container->make(LoggerInterface::class);
        } catch (Exception $ex) {
            throw $e; // throw the original exception
        }
 
        $logger->error(
            $e->getMessage(),
            array_merge($this->context(), ['exception' => $e]
        ));
    }
 
    /**
     * Determine if the exception should be reported.
     *
     * @param  \Exception  $e
     * @return bool
     */
    public function shouldReport(Exception $e)
    {
        return ! $this->shouldntReport($e);
    }
 
    /**
     * Determine if the exception is in the "do not report" list.
     *
     * @param  \Exception  $e
     * @return bool
     */
Arguments
  1. "file_put_contents(): write of 235 bytes failed with errno=122 Disk quota exceeded"
    
  2. array:1 [
      "exception" => ErrorException {
        #message: "file_put_contents(): write of 235 bytes failed with errno=122 Disk quota exceeded"
        #code: 0
        #file: "/home2/kimtours/theapp/vendor/laravel/framework/src/Illuminate/Filesystem/Filesystem.php"
        #line: 122
        #severity: E_NOTICE
      }
    ]
    
/home2/kimtours/theapp/app/Exceptions/Handler.php
     * A list of the inputs that are never flashed for validation exceptions.
     *
     * @var array
     */
    protected $dontFlash = [
        'password',
        'password_confirmation',
    ];
 
    /**
     * Report or log an exception.
     *
     * This is a great spot to send exceptions to Sentry, Bugsnag, etc.
     *
     * @param  \Exception  $exception
     * @return void
     */
    public function report(Exception $exception)
    {
        parent::report($exception);
    }
 
    /**
     * Render an exception into an HTTP response.
     *
     * @param  \Illuminate\Http\Request  $request
     * @param  \Exception  $exception
     * @return \Illuminate\Http\Response
     */
    public function render($request, Exception $exception)
    {
        return parent::render($request, $exception);
    }
}
 
Arguments
  1. ErrorException {
      #message: "file_put_contents(): write of 235 bytes failed with errno=122 Disk quota exceeded"
      #code: 0
      #file: "/home2/kimtours/theapp/vendor/laravel/framework/src/Illuminate/Filesystem/Filesystem.php"
      #line: 122
      #severity: E_NOTICE
    }
    
/home2/kimtours/theapp/vendor/laravel/framework/src/Illuminate/Foundation/Bootstrap/HandleExceptions.php
    }
 
    /**
     * Handle an uncaught exception from the application.
     *
     * Note: Most exceptions can be handled via the try / catch block in
     * the HTTP and Console kernels. But, fatal error exceptions must
     * be handled differently since they are not normal exceptions.
     *
     * @param  \Throwable  $e
     * @return void
     */
    public function handleException($e)
    {
        if (! $e instanceof Exception) {
            $e = new FatalThrowableError($e);
        }
 
        try {
            $this->getExceptionHandler()->report($e);
        } catch (Exception $e) {
            //
        }
 
        if ($this->app->runningInConsole()) {
            $this->renderForConsole($e);
        } else {
            $this->renderHttpResponse($e);
        }
    }
 
    /**
     * Render an exception to the console.
     *
     * @param  \Exception  $e
     * @return void
     */
    protected function renderForConsole(Exception $e)
    {
        $this->getExceptionHandler()->renderForConsole(new ConsoleOutput, $e);
Arguments
  1. ErrorException {
      #message: "file_put_contents(): write of 235 bytes failed with errno=122 Disk quota exceeded"
      #code: 0
      #file: "/home2/kimtours/theapp/vendor/laravel/framework/src/Illuminate/Filesystem/Filesystem.php"
      #line: 122
      #severity: E_NOTICE
    }
    
[internal]
Arguments
  1. ErrorException {
      #message: "file_put_contents(): write of 235 bytes failed with errno=122 Disk quota exceeded"
      #code: 0
      #file: "/home2/kimtours/theapp/vendor/laravel/framework/src/Illuminate/Filesystem/Filesystem.php"
      #line: 122
      #severity: E_NOTICE
    }
    

Environment & details:

empty
empty
empty
empty
empty
Key Value
LSPHP_ENABLE_USER_INI
"on"
PATH
"/usr/local/bin:/usr/bin:/bin"
TEMP
"/tmp"
TMP
"/tmp"
TMPDIR
"/tmp"
PWD
"/"
HTTP_ACCEPT
"*/*"
HTTP_ACCEPT_ENCODING
"gzip, br, zstd, deflate"
HTTP_CONNECTION
"keep-alive"
CONTENT_LENGTH
"0"
HTTP_HOST
"www.kim.tours"
HTTP_USER_AGENT
"Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; ClaudeBot/1.0; +claudebot@anthropic.com)"
HTTP_CACHE_CONTROL
"max-age=259200"
HTTP_X_FORWARDED_FOR
"10.2.65.104"
HTTP_VIA
"1.1 squid-proxy-5b5d847c96-fdpt8 (squid/6.10)"
REDIRECT_UNIQUE_ID
"aEjUqb5QGfnbq0fPpmGfwQAAAY8"
REDIRECT_QS_SrvConn
"82"
REDIRECT_QS_AllConn
"82"
REDIRECT_QS_ConnectionId
"174960349723261499465964"
REDIRECT_SCRIPT_URL
"/things-to-do-in-ngorongoro-on-top-of-classic-game-drives"
REDIRECT_SCRIPT_URI
"http://www.kim.tours/things-to-do-in-ngorongoro-on-top-of-classic-game-drives"
REDIRECT_STATUS
"200"
UNIQUE_ID
"aEjUqb5QGfnbq0fPpmGfwQAAAY8"
QS_SrvConn
"82"
QS_AllConn
"82"
QS_ConnectionId
"174960349723261499465964"
SCRIPT_URL
"/things-to-do-in-ngorongoro-on-top-of-classic-game-drives"
SCRIPT_URI
"http://www.kim.tours/things-to-do-in-ngorongoro-on-top-of-classic-game-drives"
SERVER_SIGNATURE
""
SERVER_SOFTWARE
"Apache"
SERVER_NAME
"www.kim.tours"
SERVER_ADDR
"192.185.92.29"
SERVER_PORT
"80"
REMOTE_ADDR
"216.73.216.162"
DOCUMENT_ROOT
"/home2/kimtours/public_html"
REQUEST_SCHEME
"http"
CONTEXT_PREFIX
""
CONTEXT_DOCUMENT_ROOT
"/home2/kimtours/public_html"
SERVER_ADMIN
"webmaster@kim.tours"
SCRIPT_FILENAME
"/home2/kimtours/public_html/index.php"
REMOTE_PORT
"46478"
REDIRECT_URL
"/things-to-do-in-ngorongoro-on-top-of-classic-game-drives"
SERVER_PROTOCOL
"HTTP/1.1"
REQUEST_METHOD
"GET"
QUERY_STRING
""
REQUEST_URI
"/things-to-do-in-ngorongoro-on-top-of-classic-game-drives"
SCRIPT_NAME
"/index.php"
PHP_SELF
"/index.php"
REQUEST_TIME_FLOAT
1749603497.2418
REQUEST_TIME
1749603497
argv
[]
argc
0
APP_NAME
"Kim'zebra Adventures & Safaris"
APP_ENV
"local"
APP_KEY
"base64:B3WF9t8UARMSYbPts9CiehrwZw8seRi6wtrqlUxZC6g="
APP_DEBUG
"true"
APP_LOG_LEVEL
"debug"
APP_URL
"http://localhost"
DB_CONNECTION
"mysql"
DB_HOST
"127.0.0.1"
DB_PORT
"3306"
DB_DATABASE
"kimtours_data"
DB_USERNAME
"kimtours_staff"
DB_PASSWORD
"123s_s321"
BROADCAST_DRIVER
"log"
CACHE_DRIVER
"file"
SESSION_DRIVER
"file"
QUEUE_DRIVER
"sync"
REDIS_HOST
"127.0.0.1"
REDIS_PASSWORD
"null"
REDIS_PORT
"6379"
MAIL_DRIVER
"smtp"
MAIL_HOST
"mail.kim.tours"
MAIL_PORT
"465"
MAIL_USERNAME
"noreply@kim.tours"
MAIL_PASSWORD
"7wWq1n06tnUz"
MAIL_ENCRYPTION
"ssl"
PUSHER_APP_ID
""
PUSHER_APP_KEY
""
PUSHER_APP_SECRET
""
Key Value
APP_NAME
"Kim'zebra Adventures & Safaris"
APP_ENV
"local"
APP_KEY
"base64:B3WF9t8UARMSYbPts9CiehrwZw8seRi6wtrqlUxZC6g="
APP_DEBUG
"true"
APP_LOG_LEVEL
"debug"
APP_URL
"http://localhost"
DB_CONNECTION
"mysql"
DB_HOST
"127.0.0.1"
DB_PORT
"3306"
DB_DATABASE
"kimtours_data"
DB_USERNAME
"kimtours_staff"
DB_PASSWORD
"123s_s321"
BROADCAST_DRIVER
"log"
CACHE_DRIVER
"file"
SESSION_DRIVER
"file"
QUEUE_DRIVER
"sync"
REDIS_HOST
"127.0.0.1"
REDIS_PASSWORD
"null"
REDIS_PORT
"6379"
MAIL_DRIVER
"smtp"
MAIL_HOST
"mail.kim.tours"
MAIL_PORT
"465"
MAIL_USERNAME
"noreply@kim.tours"
MAIL_PASSWORD
"7wWq1n06tnUz"
MAIL_ENCRYPTION
"ssl"
PUSHER_APP_ID
""
PUSHER_APP_KEY
""
PUSHER_APP_SECRET
""
0. Whoops\Handler\PrettyPageHandler