PHP's execution timeout defaults to 30 seconds, but if that's what you're thinking it won't be an issue: there won't be a single PHP program running the whole time the client is taking the test - PHP only runs for the duration necessary to take the data supplied from the client at the previous page, process it, and deliver the content for the next page. That should take under a second.
To tie all these pages (rather, request/response transactions between the client computer and the server) together into a single process you'd require some sort of session management (without it there would generally be no way to tell which transactions are related).
PHP's default is to assume that any two consecutive transactions in the same session are no more than 1440 seconds apart (I don't know why 24 minutes was chosen); so as long as the client is communicating with the server more often than that, the session will remain live for as long as necessary.
As I said, that's the default: it can be adjusted (to an hour or more if you wish), but I'd also consider breaking the sections down further (but I'm saying that without knowing what each section entails or why it might take so long, of course - I can certainly think of cases where that would be unreasonable).
Furthermore, (by default) PHP won't kill off a "stale" session immediately it runs over its time limit. Such garbage collection is a bit time-consuming so its operation has been built to be probabilistic ... rather than go into detail I've decided to just refer you to the "forgotten documentation": the php.ini file where these things are configured.
So; you'll need session management. With that in place, assuming that you configure it to allow plenty of time for the user to complete each page/section of the test, you shouldn't have any timeout issues.