In reality, there are too many to list. The reason is that it's very hard to write an useful application with just the very core of php enabled (no extensions at all). So if you want it to be very portable, you'll need to be able to fallback to different extensions (for example, it should be able to use PDO, MySQL and MySQLi extensions if you're using a MySQL's database).
In reality, there are a ton of dependencies that you would need to check for. It's not practical to list them all here (not by a long shot). Even things as simple as including paths can be an issue if you're running on Windows or with Safe Mode enabled. And that doesn't even take into account the different possible ini settings.
Fortunately there is a reasonably simple solution. Use a framework. Most frameworks have fallback methods and can do things in multiple ways depending upon server configuration. There are tons of frameworks out there, so I won't get into specifics on which one I'd recommend. By using an abstraction layer, they are able to deal with multiple different possible configurations (another example is caching technology, with drivers for APC, Eacellerator, MySQL, XCache, Memcache, etc).
The only other thing you can do to really be 100% sure is to test. What I'd recommend is writing as many unit, integration and functionality tests as you can. Tools such as PHPUnit and Selenium can greatly help with this.
Once you've automated testing, I'd suggest using a Continuous Integration tool (Such as Hudson ) to automate the testing based on SVN commit. With it, you can set up multiple target platforms to test with. So you can run 10 or 15 different virtual servers, and test each commit against each configuration automatically (Hudson will manage this for you). That way, you know instantly (well, quickly anyway) whether or not your code works with each and every commit without needing to do anything else on your part.
It's not an easy problem to solve. But it is solvable with a little effort and some ingenuity.
The other reasonable thing you can do is to declare minimum requirements and check for them. So if you want MySQL support, check for it during install... The same can go with INI settings... Just list a minimum required configuration, and check for it. That way if someone comes up with an "unsupported platform", you don't need to worry since they will be told outright it won't work...
Best Of Luck...
$_GETuses the ini. (Question updated)