I lost the text sound on an iphone4.
Problem solved by cleaning the dock connector which was full of fluff.
Many thanks to 88naples for pointing this out.
However I would not use a pin to clean out the connector.
I cut a fine slice of a matchstick and used that to avoid short circuiting the connector.
I was amazed at the amount of rubbish that came out - surpised the dock connector fitted in.
Hope this helps others - presume Apple shops will know about this?
Tried all the suggestions given but still could not get it to work for me.
Had this similar problem on my iPhone 4, iOS 5 recently and decided to upgrade to iOS 7 to see if could be resolved.
Settings ->Sounds -> Ringtone. Set to any ringtone and I get both ringing and vibration;
Settings ->Sounds -> Text tone. Set to any ringtone and I get only vibration, no ringing. Same for all the others, New VoiceMail, Sent Mail, etc.
Compared all other settings with a working iPhone 4S/iOS 7, all settings the same.
Did a full factory reset, result is the same.
Any other suggestions? Thanks.