Jaf4: Вы или не все рассказываете, или что-то не так делаете. 100%..
Проблема у Belfis действительно была с неправильно указанным владельцем папки с сайтом. Фактически решение свелось к определению имени пользователя и группы, от имени которой работал PHP-скрипт. Правильные данные удалось получить с помощью небольшого кода:
atteizzt: Подскажите, вот в шаблоне на главной написано "Архивы" _inpokemongo.ru , скажите, в каком файле это изменить ? В админке нет такой возможности.
Заголовок указывается в файле loop-meta.php, строка:
Belfis: После перемещения сайта на VPS, Wordpress требует доступ к фтп практически для каждого действия в админке.
Как исправить данную проблему?
Это нормальное поведение WordPress, если владелец у папки с сайтом отличается от пользователя, под которым работает PHP. Грубо говоря, вам нужно сменить владельца папки с сайтом на www-data, например.
Smirnof, у вас ошибка в заголовке From. Смените e-mail, с которого отправляется сообщение, на таковой с адресом сайта, на котором размещена форма. Грубо говоря, если у вас форма размещена на сайте site.ru, то в заголовке From нужно указать e-mail noreply@site.ru.
mendel: Объясняю в чем лажа с "запрет комментариев".
Любое изменение структуры проекта при вашем подходе выливается в огромную лажу. Требуется ведь банальная вещь: отключение возможности комментировать запись. В вашей системе для этого придется переделывать вывод аватарок для комментариев и обрабатывать ситуацию, когда они могут быть отключены. Если эту простую задачу усложнить и добавить возможность запрета комментирования для отдельных групп пользователей, то переделывать придется еще больше.
А все из-за того, что вы грубо нарушили принцип единственной ответственности, о котором так упорно говорите. У вас для нормальной работы комментариев требуется, чтобы они были связаны с постом, у которого есть только одна категория, у которой должен быть включен вывод комментариев. У этой категории также должен быть один автор и у него должен быть аватар. В итоге получается, что за вывод комментариев у вас в явном виде отвечает не только лишь класс с комментариями, а еще и классы с записями, пользователями и категориями. И это только в одной несчастной строчке вашего кода.
В Yii для решения этой простой задачи достаточно просто добавить в модель комментария магический метод getAvatar, который будет просто подгружать аватарку нужного пользователя из соответствующей модели. В итоге вывод аватарки сведется к $comment->avatar. Отключение комментариев в этом случае делается элементарно: для модели записи добавляется метод getCommentsState, который берет на себя все проверки. Если он возвращает true, то подключается модель с комментариями и выводятся комментарии.
Таким образом за поведение комментариев отвечает только класс с комментариями, за вывод комментариев к записи - только класс с записями. Если потребуется каким-то образом изменить вывод аватарки к комментариям, например, то вам достаточно поменять всего лишь один метод в модели комментария.
В итоге поддерживать и дорабатывать проект на Yii или все том же WordPress на порядок проще, чем ваш велосипед.
mendel, похоже, вы так и не поняли в чем же основная проблема вашего кода. Чтобы он работал без ошибок, должно совпасть сразу несколько обстоятельств:
1) У комментария должно быть свойство post. Если его нет - получаете полноценную ошибку, которая связана с обращением к несуществующему свойству. В результате скрипт падает, на выходе белый экран и ваш телефон разрывается от звонков клиентов;
2) Если у объекта post нет свойства category или оно возвращает что-то отличное от объекта со свойством owner, то вы также получите ошибку;
3) Если у объекта owner нет свойства avatar, то вы также получите ошибку.
И все эти ситуации нужно отслеживать только для того, чтобы одна несчастная строка в вашем коде нормально работала. Если в процессе разработки вы что-то из списка выше упустите, то этот будет уже не "другая задача", а ваша проблема, которую вам же придется решать. А теперь представьте, если таких строк будет несколько сотен. Представьте также, что в один прекрасный день клиент поставит вам задачу добавить тривиальную возможность указания для записи нескольких равнозначных категорий, а также возможность запретить комментирование для отдельной записи...
mendel: Начал писать на новом ему языке и фреймворке. Написал код на 100 строк. Потом начал изучать движок и подобавлял кучу проверок исключительных ситуаций. Потом разобрался хорошо и убрал все это нафиг вернувшись к тем же 100 строк с которых начинал.
Проверять данные и обрабатывать исключения нужно. Без этого нормальная разработка невозможна. На этом предлагаю закончить обсуждение.
Вы или не все рассказываете, или что-то не так делаете. 100%..
Проблема у Belfis действительно была с неправильно указанным владельцем папки с сайтом. Фактически решение свелось к определению имени пользователя и группы, от имени которой работал PHP-скрипт. Правильные данные удалось получить с помощью небольшого кода:
Куда дальше копать, или что делаю не верно?
Внимательно прочитайте два моих предыдущих сообщения.
Пытаюсь изменить владельца на Root результат на выходе не меняется.
У вас веб-сервер ведь не под рутом работает. Быстро узнать имя пользователя можно например так
Подскажите, вот в шаблоне на главной написано "Архивы" _inpokemongo.ru , скажите, в каком файле это изменить ? В админке нет такой возможности.
Заголовок указывается в файле loop-meta.php, строка:
После перемещения сайта на VPS, Wordpress требует доступ к фтп практически для каждого действия в админке.
Как исправить данную проблему?
Это нормальное поведение WordPress, если владелец у папки с сайтом отличается от пользователя, под которым работает PHP. Грубо говоря, вам нужно сменить владельца папки с сайтом на www-data, например.
Smirnof, у вас ошибка в заголовке From. Смените e-mail, с которого отправляется сообщение, на таковой с адресом сайта, на котором размещена форма. Грубо говоря, если у вас форма размещена на сайте site.ru, то в заголовке From нужно указать e-mail noreply@site.ru.
Как быть?
Укажите для тега input стиль:
Объясняю в чем лажа с "запрет комментариев".
Любое изменение структуры проекта при вашем подходе выливается в огромную лажу. Требуется ведь банальная вещь: отключение возможности комментировать запись. В вашей системе для этого придется переделывать вывод аватарок для комментариев и обрабатывать ситуацию, когда они могут быть отключены. Если эту простую задачу усложнить и добавить возможность запрета комментирования для отдельных групп пользователей, то переделывать придется еще больше.
А все из-за того, что вы грубо нарушили принцип единственной ответственности, о котором так упорно говорите. У вас для нормальной работы комментариев требуется, чтобы они были связаны с постом, у которого есть только одна категория, у которой должен быть включен вывод комментариев. У этой категории также должен быть один автор и у него должен быть аватар. В итоге получается, что за вывод комментариев у вас в явном виде отвечает не только лишь класс с комментариями, а еще и классы с записями, пользователями и категориями. И это только в одной несчастной строчке вашего кода.
В Yii для решения этой простой задачи достаточно просто добавить в модель комментария магический метод getAvatar, который будет просто подгружать аватарку нужного пользователя из соответствующей модели. В итоге вывод аватарки сведется к $comment->avatar. Отключение комментариев в этом случае делается элементарно: для модели записи добавляется метод getCommentsState, который берет на себя все проверки. Если он возвращает true, то подключается модель с комментариями и выводятся комментарии.
Таким образом за поведение комментариев отвечает только класс с комментариями, за вывод комментариев к записи - только класс с записями. Если потребуется каким-то образом изменить вывод аватарки к комментариям, например, то вам достаточно поменять всего лишь один метод в модели комментария.
В итоге поддерживать и дорабатывать проект на Yii или все том же WordPress на порядок проще, чем ваш велосипед.
Не нужно обрабатывать те исключения которые невозможны, или те которые за тебя уже обработали. А некоторые исключения обрабатывать не нужно
Вы не задумывались, зачем программисты тратят кучу времени, покрывают код тестами, вводят дополнительные проверки и ловят исключения, если:
они не могут произойти.
?
В общем, все тут и так понятно, обсуждение смело можно заканчивать.
mendel, похоже, вы так и не поняли в чем же основная проблема вашего кода. Чтобы он работал без ошибок, должно совпасть сразу несколько обстоятельств:
1) У комментария должно быть свойство post. Если его нет - получаете полноценную ошибку, которая связана с обращением к несуществующему свойству. В результате скрипт падает, на выходе белый экран и ваш телефон разрывается от звонков клиентов;
2) Если у объекта post нет свойства category или оно возвращает что-то отличное от объекта со свойством owner, то вы также получите ошибку;
3) Если у объекта owner нет свойства avatar, то вы также получите ошибку.
И все эти ситуации нужно отслеживать только для того, чтобы одна несчастная строка в вашем коде нормально работала. Если в процессе разработки вы что-то из списка выше упустите, то этот будет уже не "другая задача", а ваша проблема, которую вам же придется решать. А теперь представьте, если таких строк будет несколько сотен. Представьте также, что в один прекрасный день клиент поставит вам задачу добавить тривиальную возможность указания для записи нескольких равнозначных категорий, а также возможность запретить комментирование для отдельной записи...
Начал писать на новом ему языке и фреймворке. Написал код на 100 строк. Потом начал изучать движок и подобавлял кучу проверок исключительных ситуаций. Потом разобрался хорошо и убрал все это нафиг вернувшись к тем же 100 строк с которых начинал.
Проверять данные и обрабатывать исключения нужно. Без этого нормальная разработка невозможна. На этом предлагаю закончить обсуждение.