OK, one way to debug it would be to add lots of:
echo __LINE__."\n";
statements inside the file qa-ajax-vote.php, and in addition add an
alert(response);
line inside qa-votes.js, just after:
function(response) {
That way you'll get a message in the browser showing you which lines of qa-ajax-vote.php were successfully executed, and where it failed. If this is to do with the external user code I suspect it will be related to qa_get_logged_in_user(...)
Actually, at a guess, it will be because the relative path you use in your require(...) in qa-external-users.php is not working because the Ajax voting PHP file is in a different directory to index.php. Instead you can try an absolute path, or one based on the QA_BASE_DIR constant, which will be defined the same for all requests.