Проблема у Belfis действительно была с неправильно указанным владельцем папки с сайтом. Фактически решение свелось к определению имени пользователя и группы, от имени которой работал PHP-скрипт. Правильные данные удалось получить с помощью небольшого кода:
$userInfo = posix_getpwuid(posix_getuid());$user = $userInfo['name'];$groupInfo = posix_getgrgid(posix_getgid());$group = $groupInfo = $groupInfo['name'];echo 'User: ' . $user;echo 'Group: ' . $group;
Внимательно прочитайте два моих предыдущих сообщения.
У вас веб-сервер ведь не под рутом работает. Быстро узнать имя пользователя можно например так
Заголовок указывается в файле loop-meta.php, строка:
$chuchadon_archive_title = get_the_archive_title();
Это нормальное поведение WordPress, если владелец у папки с сайтом отличается от пользователя, под которым работает PHP. Грубо говоря, вам нужно сменить владельца папки с сайтом на www-data, например.
Smirnof, у вас ошибка в заголовке From. Смените e-mail, с которого отправляется сообщение, на таковой с адресом сайта, на котором размещена форма. Грубо говоря, если у вас форма размещена на сайте site.ru, то в заголовке From нужно указать e-mail noreply@site.ru.
Укажите для тега input стиль:
display: block;box-sizing: border-box;width: 100%;padding: 5px;
Любое изменение структуры проекта при вашем подходе выливается в огромную лажу. Требуется ведь банальная вещь: отключение возможности комментировать запись. В вашей системе для этого придется переделывать вывод аватарок для комментариев и обрабатывать ситуацию, когда они могут быть отключены. Если эту простую задачу усложнить и добавить возможность запрета комментирования для отдельных групп пользователей, то переделывать придется еще больше.
А все из-за того, что вы грубо нарушили принцип единственной ответственности, о котором так упорно говорите. У вас для нормальной работы комментариев требуется, чтобы они были связаны с постом, у которого есть только одна категория, у которой должен быть включен вывод комментариев. У этой категории также должен быть один автор и у него должен быть аватар. В итоге получается, что за вывод комментариев у вас в явном виде отвечает не только лишь класс с комментариями, а еще и классы с записями, пользователями и категориями. И это только в одной несчастной строчке вашего кода.
В Yii для решения этой простой задачи достаточно просто добавить в модель комментария магический метод getAvatar, который будет просто подгружать аватарку нужного пользователя из соответствующей модели. В итоге вывод аватарки сведется к $comment->avatar. Отключение комментариев в этом случае делается элементарно: для модели записи добавляется метод getCommentsState, который берет на себя все проверки. Если он возвращает true, то подключается модель с комментариями и выводятся комментарии.
Таким образом за поведение комментариев отвечает только класс с комментариями, за вывод комментариев к записи - только класс с записями. Если потребуется каким-то образом изменить вывод аватарки к комментариям, например, то вам достаточно поменять всего лишь один метод в модели комментария.
В итоге поддерживать и дорабатывать проект на Yii или все том же WordPress на порядок проще, чем ваш велосипед.
Вы не задумывались, зачем программисты тратят кучу времени, покрывают код тестами, вводят дополнительные проверки и ловят исключения, если:
?
В общем, все тут и так понятно, обсуждение смело можно заканчивать.
mendel, похоже, вы так и не поняли в чем же основная проблема вашего кода. Чтобы он работал без ошибок, должно совпасть сразу несколько обстоятельств:
1) У комментария должно быть свойство post. Если его нет - получаете полноценную ошибку, которая связана с обращением к несуществующему свойству. В результате скрипт падает, на выходе белый экран и ваш телефон разрывается от звонков клиентов;
2) Если у объекта post нет свойства category или оно возвращает что-то отличное от объекта со свойством owner, то вы также получите ошибку;
3) Если у объекта owner нет свойства avatar, то вы также получите ошибку.
И все эти ситуации нужно отслеживать только для того, чтобы одна несчастная строка в вашем коде нормально работала. Если в процессе разработки вы что-то из списка выше упустите, то этот будет уже не "другая задача", а ваша проблема, которую вам же придется решать. А теперь представьте, если таких строк будет несколько сотен. Представьте также, что в один прекрасный день клиент поставит вам задачу добавить тривиальную возможность указания для записи нескольких равнозначных категорий, а также возможность запретить комментирование для отдельной записи...
Проверять данные и обрабатывать исключения нужно. Без этого нормальная разработка невозможна. На этом предлагаю закончить обсуждение.