Well for what it’s worth I found a solution for this problem. I think the reason others may have had trouble reproducing it is that it only shows up on certain versions of PHP. My host (WP Engine) is running 3.5.2, which I think doesn’t allow for modifying overloaded properties, while some earlier and later versions of PHP don’t have that issue.
I’ll put my fix here in case any one else runs into this issue/is using WP Engine.
Go into the Invite Anyone plugin’s folder in via SSH or (S)FTP (/wp-content/plugins/invite-anyone) and then into the ‘by-email’ folder, then open ‘by-email.php’ and search for “$bp->site_options.” You should see a comment about a “royal hack until there is a filter on bp_get_signup_allowed()”
Find this else if statement:
else if ( !empty( $bp->site_options['registration'] ) && $bp->site_options['registration'] == 'none' )
And inside of it replace this line:
$bp->site_options['registration'] = 'user';
With:
$auxiliary_array = array();
foreach( $bp->site_options as $key => $value ) {
if ( $key == 'registration' ) {
$auxiliary_array[$key] = 'user';
}
else {
$auxiliary_array[$key] = $value;
}
}
$bp->site_options = $auxiliary_array;
This is for the specific case of allowing user registration without allowing users to create sites, but you ought to be able to figure out what changes you have to make for that from this.
Please let me know if this isn’t something I should have done so I can change it back and find another solution.