It's really all about testing. Even though the majority of code will probably work (depending on what techniques you used), there will be lots of bugs.
If your existing applications have any regression tests, run them ALL.
If they don't have regression tests, then you're in more trouble. Devise some way to get decent code coverage on testing.
At an absolute minimum:
- Load every distinct PHP page in the application
- Submit every form that you can at least once
But more desirably:
- Achieve decent function coverage throughout the application
I appreciate that this is difficult, and I know of no test cover measurement tools for PHP (Perhaps you can knock something up which uses the output of APD profiler?).
Another issue is that the worse the quality of the applications in PHP4, the harder it will be to validate that they're working in PHP5 - for example, if you run with error_reporting(E_ALL) (which you should, ALL the time), and you run through your validation tests on PHP4, how many notices do you get on the error log?
A well constructed application should aim for zero E_NOTICEs under normal operation. However, I have seen plenty which emit more than that on a regular basis.
Does the application use the @ operator or error_reporting to suppress errors in many places? If so, things which previously worked on PHP4 could fail on PHP5, but generate absolutely no notices, thus failing silently (or perhaps apparently working).
Mark