I realized my problem was slightly different than what I thought. I actually was using RNCryptor 2.0 unknowingly, but it turns out that the underlying problem was still there, that the PHP implementation RNCryptor includes wasn't decrypting my data.
Here's what I've learned after many hours of research and testing today: RNCryptor doesn't just encrypt the data by itself. It also adds custom headers and an HMAC digital signature. Unfortunately, this schema for laying out the headers and the HMAC has changed a couple of times since RNCryptor 1.0 was released.
RNCryptor 1.0 and 1.1 use schema version 0. I banged my head against this for longer than I care to admit, and I just can't get AES CTR Little-Endian en/decryption to work in PHP. (Anyone know?)
RNCryptor 2.0 uses schema version 1, and RNCryptor 2.1 uses schema 2. The only difference is that in schema 1, the HMAC is generated solely from the payload, but not the headers. Schema 2 correctly generates the HMAC from the payload plus the headers (and thus is way more secure.) More on this can be found in this post on Rob Napier's blog.
I decided to overhaul the PHP implementation included in RNCryptor in order to document this issue and prevent others (you!) from running into problems. I also wanted to modernize the implementation and make it Object-Oriented. See my forked RNCryptor on Github. I've submitted a pull request as well, so hopefully it'll end up in rnapier/RNCryptor too.
Cheers!