My website was working for years on the old host but now it does not work on new host. Why? This is one of annoyances that come up because some people fail to realize that there are just too many variables at function here. For a website to operate, there are many building blocks, e.g. Web Server, Scripting Language, Database. And not only that, there are zillions of verions of these tools. If your site code was designed in the last century, it is possible that it will not work in the 21st century. No wait, if it was designed last year with the tool that was developed 5 years ago, it may not work today. Confused?
A static website that is composed of HTML/css/js is served by a web server as it is to the browser which renders and displays it to the client. However if your site is dynamic and is coded in a certain language (e.g. php or perl) that code has to run on the server to make web pages. That code may be written in a certain version of langauge which may be a mismatch between your old host and new host (or your old server and new server). As a responsible website owner you should be aware of what are the pre-requisites of your site code. Not only that, you need to regularly update the code to newest version of tools and make it compatible with them. If your site code has not changed since years, chances are that you are risking your entire hosting account and site, as many bugs that were unknown before may have been released in public. And those known exploits can used by script kiddies to hack your site remotely.
In short, a website owner needs to keep his code upto-date so that (1) it works on newest technologies and server tools (2) it is not open for remote exploits and abuse.
As a starting point, for a Linux Shared Hosting, you should be aware that PHP4 is phasing out and PHP5 is the future. MySQL4 database is also being replaced with MySQL5. So you need to learn how to update the code or get in touch with the developer/vendor of your web application to make it compatible.