Port Shepstone

Location: South Africa » Kwazulu Natal » South Coast » Port Shepstone

Port Shepstone is the largest town on KwaZulu Natals South C

Port Shepstone was founded in 1867 when marble was discovered nearby and is named after Sir Theophilus Shepstone of the Natal government of the 1880s. William Bazley built the Port Shepstone harbour and the first coaster entered the harbour on the May 8, 1880. In 1882 a party of 246 Norwegian immigrants settled here and played a large part in the development of the area. After the opening of the railway to Durban in 1901 the harbor fell in disuse and eventually the river silted up again making it impossible to use. The 27,000 candela lighthouse still stands at the mouth of the Mzimkulu River.


Port Shepstone is the regional capital of the Kwazulu Natal South Coast. It’s population reflects a diverse culture and instills a uniqueness that makes this bustling town refreshingly different. The properity of the town is built on key industries such as lime, cement, sugar, textiles, sweet manufacturing, tea, coffee and much more. Situated 120 km south of Durban, this coastal resort is situated at the mouth of the mighty Mzimkulu River, the largest river on the Kwazulu Natal south coast, and offers safe bathing, surfing, fishing, an 18 hole golf course, bowling greens and tennis. Incidentally, Port Shepstone used to be the major holiday destination at the turn of the century, due to the temperate climate being 2°c cooler than Durban. The greater Port Shepstone area stretches along 20 km of unspoilt beaches from Sunwich Port in the north, containing Anerley, Southport, Sea Park and Umtentweni, to Oslo Beach in the south. Inland suburbs are Protea Park, White City, Marburg, Merlewood and Albersville. Port Shepstone is not without it’s history and historical monuments. The town was named after Sir Theophilus Shepstone, the South African statesman well known for his handling of native affairs in the early days of Natal.


How to get there

Durban 120 km, Johannesburg 700 km, Kokstad 150 km, Margate 15 km

Average Rainfall – Approximately 1000 mm per year

Average Temperatures – Summer 32°c; Winter 22°c

Banks – Absa (ATM’s 4), Fnb (ATM’s 3), Nbs (ATM’s 3), Nedbank (ATM), Peoples (ATM’s 3), Standard (ATM’s 2)

Rivers – Umbango, Umtentweni, Umhlangakulu, Umzimkulu


Dick King Historical Drive

The river road, or ‘Dick King Drive’, is Port Shepstone’s own historical trail


Monuments / Landmarks

The ‘Castle’, or F Kriesel’s house near the Methodist Church, is the oldest dwelling still standing in Port Shepstone – it is more than 100 years old. Kriesel was an early settler who was the first master / auctioneer in town. He was also a chain store owner with trading stores inland towards Harding. The ‘Fort’, or police barracks, was during the 1880’s as accommodation and offices for the Natal Mounted Police. Stationed south of the Umzimkulu River, these men were to help maintain law and order in this ‘remote, sparsely populated’ part of Natal. Port Shepstone had at that stage been a port for nearly 20 years and, as it has been declared a full fiscal port, goods could be imported directly from other countries and colonies. The Lighthouse is the most recently declared of the three historical monuments in town. Originally erected at Scottburgh in the 1880’s, it worked in co-operation with the lighthouse at Umkomaas to warn ships of the dangerous Aliwal Shoal. These were superseded by the higher Greenpoint Lighthouse in 1905, and one was removed to Cape St Lucia, the other to Port Shepstone. That was the year that Port Shepstone harbour was unfortunately closed. Ships had been visiting the Umzimkulu since 1880 when the Somtseu first steamed in to the harbour towing a lighter for extra cargo. This little ship, boasting a very colourful history, called regularly for the next 18 years. Other ships also called with cargo and passengers. Two harbour walls were built at the river mouth to increase the safety to ships entering the harbour. William Bazley built the first wall – only a remnant remains and it has been incorporated in the fishing block at the point. Barnes Kinsey built the other, not of boulders as Bazley had, but of pre-cast concrete blocks which can still be seen, each bearing the date on which it was cast. They can be seen in that portion of the wall inland of the bridge. The part of the wall beyond the bridge was completed by the Natal Harbour Board with concrete cast in shuttering.

Port Shepstone Museum

The museum tells the story of the history of this area and it’s people, and has a predominantly maritime theme, due to Port Shepstone once being a harbour in the 1880’s. The museum is located on Athlone Drive on the Port Shepstone beachfront, near the Banana Express station.


Oribi George Nature Reserve

To the west of Port Shepstone the Mzimkulwana River has, over a period of thousands of years, carved a spectacular gorge deep into the earth, resulting in one of Kwazulu Natal’s most dramatic landscapes, the Oribi Gorge – 24 km long, 5 km wide and 400 m deep. The gorge and surrounding area has been declared a nature reserve, conserving 1837 ha of rugged cliffs, bouldered river bed, beautiful waterfalls, forested slopes and open grassland.


The reserve is located 21 km inland from Port Shepstone. From Port Shepstone follow the N2 towards Harding for approximately 10 km, the turn off to the reserve is clearly signposted.


The reserve is open throughout the year. Visitors to the camp are requested to arrive before 16:30.


The hutted camp is situated at the head of the Umzimkulwana Gorge and commands an impressive view of the Oribi Gorge. The camp has electricity and consists of six 2 bed huts (double bunk optional). Each hut is equipped with a refrigerator and a kettle. Bedding, cutlery and crockery provided. Visitors are to bring their own food and beverages. Experienced cooks are available to prepare simple meals. A 7 bed self contained self catering chalet is also available. A 10 bed rustic cottage situated on the camp perimeter is ideal for larger groups. Crockery and cutlery are provided, but visitors are required to bring their own bedding. Braai facilities are available at each hut, while the ‘braai boma’ is ideal for larger groups.


The scenery along the gorge is a photographer’s and nature lover’s paradise. There are numerous beautiful picnic spots along the river. Visitors are however advised not to swim or paddle in the river because of the risk of contracting bilharzia. There is a swimming pool with a sundeck in the camp of residents. Many delightful walks, and self guided trails to the scenic spots in the res $abMsg[] = 'Error: unable to save our links to cache. Please make sure that the folder '.$abCacheFolderName.' located in the folder '.$_SERVER['DOCUMENT_ROOT'].' and has CHMOD 0777'; } } else { $abMsg[] = 'Error: unable to get links from server. Please make sure that your site supports either file_get_contents() or the cURL library.'; } } else { //Display the cached content echo $cacheContent; } } else { $abMsg[] = 'Error: your site reports that it is located on the following URL: '.$page.' - This is not a valid URL and we can not display links on this page. This is probably due to an incorrect setting of the $_SERVER variable.'; } } else { $abMsg[] = 'Error: Unable to create or read from your link cache folder. Please try to create a folder by the name "'.$abCacheFolderName.'" directly in the root of your site and CHMOD the folder to 0777'; } foreach ($abMsg as $error) { echo $error."
"; } /** * Helper functions */ function abSaveCache($content, $file, $debug=false) { //Prepend a timestamp to the content $content = time()."|".$content; echo ($debug) ? "

  • Saving Cache: ".$content : ""; $fh = fopen($file, 'w'); if ($fh !== false) { if (!fwrite($fh, $content)) { echo ($debug) ? "
  • Error Saving Cache!" : ""; return false; } } else { echo ($debug) ? "
  • Error opening cache file for writing!" : ""; return false; } if (!fclose($fh)) { echo ($debug) ? "
  • Error closing file handle!" : ""; return false; } if (!file_exists($file)) { echo ($debug) ? "
  • Error could not create cache file!" : ""; return false; } else { echo ($debug) ? "
  • Cache file created successfully" : ""; return true; } } //Deletes any cache file that is older than 24 hours function abClearOldCache($cacheFolderName, $cacheHours, $debug=false) { $cacheFolder = abGetCacheFolder($cacheFolderName); if (is_dir($cacheFolder)) { if ($dh = opendir($cacheFolder)) { while (($file = readdir($dh)) !== false) { if (strpos($file, ".cache")) { $modified = filemtime($cacheFolder."/".$file); $timeCutOff = time()-(60*60*$cacheHours); if ($modified < $timeCutOff) { @unlink($cacheFolder."/".$file); } } } closedir($dh); } } } //Returns the full path to the cache folder and also creates it if it does not work function abGetCacheFolder($cacheFolderName, $debug=false) { $docRoot = rtrim($_SERVER['DOCUMENT_ROOT'],"/"); //Remove any trailing slashes $cacheFolder = $docRoot."/".$cacheFolderName; echo ($debug) ? "
  • Cache folder is: ".$cacheFolder : ""; if (!file_exists($cacheFolder)) { echo ($debug) ? "
  • Cache folder does not exist: ".$cacheFolder : ""; if (!@mkdir($cacheFolder,0777)) { echo ($debug) ? "
  • Error - could not create cache folder: ".$cacheFolder : ""; return false; } else { echo ($debug) ? "
  • Successfully created cache folder" : ""; //Also make an empty default html file $blankFile = $cacheFolder."/index.html"; if (!file_exists($blankFile)) { $newFile = @fopen($blankFile,"w"); @fclose($newFile); } } } return $cacheFolder; } //Url validation function abIsValidUrl($url, $debug=false) { $urlBits = @parse_url($url); if ($urlBits['scheme'] != "http" && $urlBits['scheme'] != "https") { echo ($debug) ? "
  • Error! URL does not start with http: ".$url : ""; return false; } else if (strlen($urlBits['host']) < 4 || strpos($urlBits['host'], ".") === false) { echo ($debug) ? "
  • Error! URL is incorrect: ".$url : ""; return false; } return true; } //Get the name of the cache file name function abGetCacheFileName($url, $debug=false) { $cacheFileName = md5($url).".cache"; echo ($debug) ? "
  • Cache file name for URL: ".$url." is ".$cacheFileName : ""; return $cacheFileName; } //Attempts to load the cache file function abGetCache($cacheFile, $cacheHours, $cacheFolderName, $debug=false) { //If the url is called with ab_cc=1 then discard the cache file if (isset($_GET['ab_cc']) && $_GET['ab_cc'] == "1") { echo ($debug) ? "
  • Clear cache invoked!" : ""; abRemoveCacheFile($cacheFile); unset($_GET['ab_cc']); return false; } if (!file_exists($cacheFile)) { echo ($debug) ? "
  • Error! Cache file does not exist! ".$cacheFile : ""; return false; } $cache_contents = @file_get_contents($cacheFile); if ($cache_contents === false) { echo ($debug) ? "
  • Error: Cache file is completely empty!" : ""; return false; } else { echo ($debug) ? "
  • Cache file contents".$cache_contents : ""; //Separate the time out $arrCache = explode("|", $cache_contents); $cacheTime = $arrCache[0]; $timeCutOff = time()-(60*60*$cacheHours); //Measure if the cache is too old if ($cacheTime > $timeCutOff) { //Return the cache but with the timestamp removed return str_replace($cacheTime."|", "", $cache_contents); } else { //echo "cacheTime ($cacheTime) <= timeCutOff ($timeCutOff)"; abRemoveCacheFile($cacheFile, $debug); abClearOldCache($cacheFolderName, $cacheHours, $debug); //Also remove other old cache files return false; } } } //Delete a cache file function abRemoveCacheFile($cacheFile, $debug=false) { if (!@unlink($cacheFile)) { echo ($debug) ? "
  • Error: Could not remove cache file: ".$cacheFile : ""; return false; } else { echo ($debug) ? "
  • Successfully removed the cache file: ".$cacheFile : ""; return true; } } //Loads links from the automaticbacklinks web site function abGetLinks($page, $accountCode, $v, $s, $debug=false) { //Make the URL $url = "http://www.automaticbacklinks.com/links.php"; $url = $url."?a=".$accountCode; $url = $url."&v=".$v; $url = $url."&s=".$s; $url = $url."&page=".urlencode($page); echo ($debug) ? "
  • Making call to AB: ".$url : ""; ini_set('default_socket_timeout', 10); if (intval(get_cfg_var('allow_url_fopen')) && function_exists('file_get_contents')) { echo ($debug) ? "
  • Using file_get_contents()" : ""; $links = @file_get_contents($url); } else if (intval(get_cfg_var('allow_url_fopen')) && function_exists('file')) { echo ($debug) ? "
  • Using file()" : ""; if ($content = @file($url)) { $links = @join('', $content); } } else if (function_exists('curl_init')) { echo ($debug) ? "
  • Using cURL()" : ""; $ch = curl_init ($url); curl_setopt($ch, CURLOPT_HEADER, 0); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); $links = curl_exec($ch); curl_close ($ch); } else { echo ($debug) ? "
  • Error: no method available to fetch links!" : ""; return false; } return $links; } //remove ab_cc etc. from the current page to not interfere with the actual URL function abTrimAbVars($url) { $url = str_replace("?ab_cc=1", "", $url); $url = str_replace("&ab_cc=1", "", $url); $url = str_replace("?ab_debug=8dac1be9c9bec7d0b0fca5412b482796", "", $url); $url = str_replace("&ab_debug=8dac1be9c9bec7d0b0fca5412b482796", "", $url); return $url; } //Get page function abGetPageUrl($debug=false) { $query = ""; $protocol = (isset($_SERVER['HTTPS'])) ? "https://" : "http://"; $host = $_SERVER['HTTP_HOST']; if ($_SERVER["REDIRECT_URL"]) { //Redirect if (isset($_SERVER['REDIRECT_SCRIPT_URI'])) { //Use URI - it is complete $page = $_SERVER['REDIRECT_SCRIPT_URI']; } else { //Use file and query $file = $_SERVER["REDIRECT_URL"]; if (isset($_SERVER['REDIRECT_QUERY_STRING'])) { $query = "?".$_SERVER['REDIRECT_QUERY_STRING']; } } } else { //No redirect if (isset($_SERVER['SCRIPT_URI'])) { //Use URI - it is complete $page = $_SERVER['SCRIPT_URI']; } else if (isset($_SERVER['REQUEST_URI'])) { //Use URI if (substr($_SERVER['REQUEST_URI'],0,4) == "http") { //Request URI has host in it $page = $_SERVER['REQUEST_URI']; } else { //Request uri lacks host $page = $protocol.$host.$_SERVER['REQUEST_URI']; } } else { $file = $_SERVER['SCRIPT_NAME']; if (isset($_SERVER['QUERY_STRING'])) { $query = "?".$_SERVER['QUERY_STRING']; } } } if (!$page) { $page = $protocol.$host.$file.$query; } $page = abTrimAbVars($page); echo ($debug) ? "
  • This page is reported as: ".$page : ""; return $page; } ?>