I spent 3 years at University doing a completely non software related degree, gave it up, was doing feelance web design, then luckily managed to get into a professional software developer position (for relatively low pay). After 16 months I moved into another job with a 40% pay increase and much better environment/conditions.
I've never looked back.
If you do go down the path of university, then make sure you stray outside what they teach. Challenge yourself, because that's how you improve, and you'll also differentiate yourself when someone is looking to hire you.
This being said, I have a bad feeling that my portfolio won't outweigh a degree. I don't know why degrees are valued more than actual knowledge, but that seems to be what the data shows.
This is your only blocker to success. I also had a lack of self confidence -- I put this up to the pedestal we put university degrees upon.
By what you've done so far, it sounds like you are better than most 90% of people finishing with Computer Science degrees. There are employers who can see that -- but most recruiters do not (though they do latch on to buzzwords).
Demonstrate your passion and your skill and you'll easily get a job somewhere in the industry.
It sounds like you've learned something about one domain, using high level languages to accomplish similar tasks. There is an awful lot more to learn, trust me. Hopefully you will take courses on operating systems, data structures and algorithms, building a compiler, etc. Learning different paradigms like functional programming and logic programming will give you different perspectives on computing and make you a better programmer.
I teach computer science to undergraduates and students like yourself sometimes have problems to start with (hopefully this won't apply to you). This can be because they've picked up bad habits (PHP?) or because you breeze through the first year and get bored or get in the habit of thinking they know it all.
Anyway, computer science and software engineering are definitely subjects worth studying at university level. There are deep intellectual challenges involved in mastering the material and universities are the place to tackle them. If you just want to get a job (programmer as tradesman, like a plumber or whatever), do that instead. There are some situations in which the tradesman might have an advantage over the scientist, but if you're going to write a system for me I want to know that you understand complexity and so on and so on.