Ведь с кодом всё в порядке!
Может всё дело в том, что у меня две формы и у них одинаковые name в полях
if(!mail(*****)){
echo 'Error';
}
if(!empty($_POST)){
// тут весь Ваш код.
}
$name = $_POST['name'] ? htmlspecialchars(trim($_POST['name'])) : 'Имя не указано';
// и так далее
if ($article->user_id !== $user->id && !$user->can('editor'))
В таблице файлов нет user_id зато есть article_id, а вот уже в таблице статей есть user_id.
данные на форму выводит другой запрос.
Просмотрите логи сервера, ответ, я уверен на 100%, находится именно в них.
Ищите в корне сайта директорию log или logs или что-то подобное.