This one is a bit odd... the important part of the error message is:
Express Checkout PayerID is missing.
And I can see in dump that it is blank when passed to paypal in the ECO_Process_Request:
<PayerID></PayerID>
If I then go to the code where the payer id is set on pp_confirm.php on line: 97-98 I see:
$WA_PP_ECO_Do_required[0][$nextIndex] = "PayerID";
$WA_PP_ECO_Do_required[1][$nextIndex] = "".((isset($_SESSION["PayPal_ECO_PayerID"]))?$_SESSION["PayPal_ECO_PayerID"]:"") ."";
So the payerid is supposed to be set from the session. Now, I dug through the code for where the session is set, and it is supposed to be set by the code on line 23.
So, I think the issue is that the session isn't started properly or has been closed before line 23. Try this to fix it. Add this code between lines 19-20:
<?php
@session_start();
?>
I think that should fix the problem.