Display form errors on each field instead of at the top of the page using form_set_error I use form_set_error to set the error text after validation fields (email, phone, etc.). The validation error messages are show at the top of the page. This also happens with errors for required fields that are not explicitly set with form_set_error.

How can I make them appear under their relevant fields.

Note: I'm not using the Webforms module, but rather the Forms API. I'm on Drupal 7.
You can use the Inline Form Errors module for that


  IFE or Inline Form Errors allows you to place form submission error inline with the form elements. Three options are provided for setting your inline error behaviour. You can configure the default behaviour or override the behaviour on a per form basis. You can add as many forms as you like.


Or alternatively the Inline Messages module:


  The Inline Messages module allows you to move form messages (error/status/warning) from the top of the page to just above where your form appears.


The former would appear to be the more actively maintained of the two.