I am 22 years old and I currently work for a small startup that does web design/development for a variety of clients. I do not have a post-secondary education. I started building websites for fun when I was about 13 years old, doing HTML markup and some graphic design. I know enough about things like CSS, JavaScript and XML to use them decently. I learned what I consider to be "programming skills" beginning in a computer science class in high school where we basically created a few projects in C, C++, Java and Python. When I started doing stuff "professionally", I learned how to use PHP, which I found easy to use as I found it to be very similar to the C projects I did in high school. I still use PHP for pretty much everything. I develop a lot of interesting PHP-based online applications and web tools for clients and it all works very well and everyone is very happy with the work I do in terms of quality and turnaround. I use a lot of procedural and some object-oriented programming, and I never find myself in a situation where I'm thinking "Damn! This PHP sucks! If only I knew how to write this application in Ruby!".
With that in mind, it seems like the professional programming community in general dislikes PHP a lot and I feel like I'm really not cluing in on what programming is all about. I would like to expand my horizons a little bit and have the ability to approach problems differently than just building something PHP-based. But, I'm not sure what route to go, particularly since I do not have a post-secondary computer science background. A lot of people seem to be focused a lot on desktop applications, but I'm not sure that's where I'd like to focus my career. I like building web-based stuff.
Can anyone recommend what else I could learn that would be best for teaching me things that as a PHP programmer, I've either intentionally or unintentionally been lazy in? Is there a language that really shines in the areas that something like PHP lacks?
Thanks!