I found one place that required passive mode to function properly, but the initial error manifested itself in an odd way:
PHP Warning: ftp_put(): TYPE is now ASCII in <file.php> on line <#>
PHP Warning: ftp_put(): TYPE is now 8 BIT BINARY in <file.php> on line <#>
The other symptom is that it was taking a long time, perhaps the 90 seconds that the timeout was set to. No errors occurred upon connect, just when I tried ftp_put().
Once I turned on ftp_pasv() it worked, both in the place where active mode worked, and on the server where active mode wouldn't work.