I'd scour Paypal for PHP samples related to initiating the transaction and receiving payment completion notifications. On your end, you need to create something like a subscriptions table, with a unique invoice/subscription ID, the user ID, the date range it applies to, and the Paypal transaction ID and status (not submitted, pending, failed, canceled, complete, etc.).
So ... when someone checks out, you generate a subscription record with a subscription record with the appropriate date ranges, user ID, a "not submitted" Paypal status, and whatever other information you need to associate w/ the subscription. When you forward/redirect the user to the Paypal checkout, make sure you pass the subscription ID along. Using the libraries you found on Paypal, update the Paypal ID and status when paypal sends a transaction update. You can optionally notify the user at this point via email that their payment has been successfully processed and they may now access the protected content.
At this point, the user has subscription a record associated with the user record. At any point while the user is signed in (also while signing in), you can look for subscription records that contain the current date and have a PP status of "complete." So, if a subscription exists [that relates to the object/page being requested], allow execution to continue; else, require() or redirect to a "you are not subscribed" page.
If you're protecting various pages/sections/objects independently, you'll need a table that lists those sections and an intersect table between the subscriptions and the sections. So, as implied above, each subscription will have to be joined to an objects table to ensure that it applies to the requested object.
In terms of prepackaged apps that do this -- I'm not sure you'll find something that does JUST this. You'll more likely find scripts that deal with full-on account/user management. For those, I'd google things like, "PHP account management" and variations of that. However, as I've described it above, you're probably looking at a 20 to 40 hour project, including the Paypal integration.