I do NOT recommend using globals...but this should fix it...global needs to be in EVERY function that uses it.  Looks like you also need global for your $return_msg.
global $errhandle_func_call;    
class ERR_HANDLE
{
   public function __construct()
   {
   }
   public function fetch_error_text($err_text)
   {
       global $return_msg;
       $err_text_display = $return_msg[$err_text];
       return "<h4>" . $err_text_display . "</h4>";
   }
}
$errhandle_func_call = new ERR_HANDLE();
class BASKET
{
    public function view_basket()
    {
        global $errhandle_func_call;
        //some_code_here
        if($query->num_rows < 1)
        {
            echo $errhandle_func_call->fetch_error_text("basket_empty");
        }
    }
}
[UPDATE 2015-04-29] Just for the heck of it, a quick, crude, introduction to my recommendations...from Easiest to Hardest...I'm also going to change your casing as ALL_UPPERCASE is usually used to denote constants and I'm a bit OCD.
Static Error Class:
class ErrorType {
    const UserError     = 1;
    const NotFoundError = 2;
    public static function getMessage( $messageId ) {
        switch( $messageId ) {
            case self::UserError: return "user error";
            case self::NotFoundError: return "not found error";
        }
    }
}
class ErrorHandler {
    public static function fetchErrorText( $errorType) {
        return "<h4>".ErrorType::getMessage($errorType)."</h4>";
    }
}
ErrorHandler::fetchErrorText( ErrorType::UserError );
This is definitely the easiest and gets you away from globals. I added the ErrorType class to reduce the "magic strings" in your code by giving you constant values to pass into the function. This will help to avoid typos, etc., as your IDE can give you intellisense for it.
However, static classes are not friendly to Unit Tests.  So, that's where "Inversion of Dependency" can come into play. The easiest way to invert your dependencies is a Service Locator because you don't have to be able to modify your constructor to be able to pass in an instance of an object. Some consider this an anti-pattern, but it's extremely useful in the right situations (e.g. Convention over Configuration, etc.).
Inversion of Dependency: Service Locator
//first thing you need for inversion is an interface
interface IHandleError {
    public function getErrorMessage( $errorType );
}
//imaginary ServiceLocator class, defining instance of interface to use
ServiceLocator::define( array(
    'IHandleError' => 'SomeNamespace\ErrorHandler'
) );
class Basket {
    public function viewBasket() {
        //grab it when you need it
        $errorHandler = ServiceLocator::get('IHandleError');
        if( query->num_rows < 1 ) {
            echo $errorHandler->getErrorMessage( ErrorType::BasketEmpty );
        }
    }
}
The ServiceLocator object is imaginary...but in its simplest form it's just an array of key => value, where the value points to a class...and the ::get() method instantiates an instance or singleton of the class. I'm doing more "magic strings" here, but didn't want to make it too convoluted.
Inversion of Dependency: Dependency Injection
Dependency Injection, on the other hand, is simpler than the ServiceLocator in concept...but sometimes harder in implementation because you need access to modify the constructor of the class and be able to modify its instantiations to pass in the object.
class Basket {
    private $_errorHandler;
    public function __construct( IHandleError $errorHandler ) {
        $this->_errorHandler = $errorHandler;
    }
}
$basket = new Basket( $errorHandler );
Any of these 3 will steer you away from globals and improve the maintainability of your code a bit.
     
    
global $errhandle_func_call;at the top of EVERY function that uses the global variable to define scope. I don't see that in your code. I would, however, recomment dependency injection to pass the class into your other classes via an interface...or if not that, just change your error handling class to a static class...way easier and better than using globals, IMHO.