OK, try this, then. Go to Settings>General>Reset>Reset All Settings. This will not erase any data but will set all settings to their factory default. If this doesn't work there's the possibility of some kind of defect on your iPhone. In that case, you may want to make a Genius Bar appointment at an Apple Store to have a diagnostic run. They should be able to pinpoint the cause and tell if the problem is hardware or software related. You should do a full backup if your iPhone as there's a good chance that they'll have to erase your iPhone during any work to get your iPhone working. You can then restore from your backup when you get home.
Genius Bar appointments are always free and any software issues are usually free as well. Out of warranty repairs are charged at the rate applicable to your device.