The Linux box is just a test server. We host several sites that rely on ASP, so Windows is an absolute must.
Most huge PHP projects, like Joomla, phpBB, etc, will properly function on whatever you throw them on. It's the add-ons that always manage to fuck something up. In this case, the offender is Jumi, a Joomla extension that allows you to insert arbitrary code in Joomla pages (or make your own pages with relative ease).
PHP has rather good path support. You can use forward and backslashes on any operating system that you run it on in order to make it truly OS agnostic. Of course, due to how PHP handles backslashes when you're using double quoted strings, using forward slashes for everything is more definitely recommended. Good so far, eh? The fact that "C:/wwwroot/site" is perfectly valid is fantastic, and I actually have to give the PHP team credit for making that work, since it's far more readable than "C:\\wwwroot\\site".
However, Jumi royally fucks all of that up. For one, it treats backslashes as escape characters. That is a relatively minor offense, as you can work around it. However, it gets worse. It doesn't even do it right! Part of is it bad luck, since the site directory name that we use for this particular site starts with an 'n'. Jumi interprets this (names redacted, of course):
"C:\\wwwroot\\new_site"
As this:
"C:\\wwwroot\
ew_site"
HOW DO YOU EVEN FUCKING DO THAT?! Seriously, if you use PHP with double quotes, it'll parse that correctly, transforming the double backslashes to single backslashes as it should. I can't even imagine why Jumi would ignore the double backslashes yet incorrectly translate "\n" into a newline. The only reason I can see why that would happen is because it uses its own half-baked escaping system, but even that wouldn't make any sense simply because there's no reason for it to have to do such a thing! I even checked the database to make sure that MySQL wasn't mangling the string. It wasn't, of course, because that's not a database's job. The issue was definitely with Jumi, as Joomla happily accepts paths both ways, and even ensures that strings with single backslashes are parsed properly.
To make matters even more headdeskish, attempting to put in the path with forward slashes, such as "C:/wwwroot/new_site" failed miserably, instantly throwing an HTTP 500 when I would go anywhere on the site, even to a non-Jumi page.
It's really, really fucked up, yet we're so reliant on Jumi that I simply had to Make It Work(TM). What I wound up having to do was leave the Jumi root blank (which causes Jumi to correctly pick up Joomla's root directory without fail, displaying it with backslashes just to add insult to injury) and use relative paths for every single one of the Jumi pages. Fortunately, I coded a "$jumi_prefix" variable into the config file for the site. If I hadn't done that and depended on Jumi to set its root path properly, things would have been much worse.
Oh well, at least I don't have to add another bad mark against PHP because of all of this.