A solver CANNOT know if it is in the global minimum or a local minimum. Even a putatively "global" solver cannot be certain except for very specific problems where you know a lot about the problem.
So lsqcurvefit tells you it thinks it found a solution, that may be a local min. It is just being accurate. The problem is in your perception of that announcement, not necessarily in the result itself.
In the case of "solver stopped prematurely" this may indicate a problem with the model, or with your starting values, or with your data. Since we see none of these thigns, we are left unable to help you there.
In general any solution is no better than the starting values you give it, and the ability of the model to adequately represent the data is it being fit unto. So if you are unhappy with the results of the fit, you might look more carefully at the model. Does it really represent that data you want it to fit? If you still believe it does, yet you are unhappy, then look at your starting values. Need a better fit? Then choose more intelligent starting values. This can be especially important for certain classes of model, but also for problems with large noise in the data. In the latter case, what you really need to do most then is to get better data.
Sorry, but if you want better help, then I would strongly suggest providing a good example of your data, as well as the model you use to fit it, and the code you wrote.