私自身、最近知ったのですが、以下の様なファイル名がサーバ上にあった場合、PHPファイルとして実行されます。
foo.php.en
foo.php.orig.test
これはApacheのmod_mime.cの「正しい仕様」なのですが、この仕様を知らなかったが故にできてしまっているファイルアップロード脆弱性もあり得ます。
もし、アップロードされてDocumentRoot下に置かれるファイル名が、自動連番などでなく、元のファイル名を活かした形のものとなった場合、ファイル名最後の.phpだけを禁止しても、意味がなくなります。
XOOPSにそういうモジュールがあるかどうか私は知りませんが、念のため、最新版のProtector (2.54) では、ドット(.)が2つ以上あるファイルをアップロードしようとした場合は、強制終了する仕様にしました。
もし、ファイルアップロードで、真っ白画面になってしまった場合、Protectorの管理画面を見てください。理由が書いてあるはずです。
1: $result = mysql_query( "SELECT ''" , $conn ) ;
2: $obj = mysql_fetch_object( $result ) ;
1: $result = mysql_query( "SELECT '' AS tmp_name" , $conn ) ;
2: $obj = mysql_fetch_object( $result ) ;