X   Сообщение сайта
(Сообщение закроется через 3 секунды)



 

Здравствуйте, гость (

| Вход | Регистрация )

Открыть тему
Тема закрыта
> Что не стоит делать с php.ini
sc2r2bey
sc2r2bey
Topic Starter сообщение 31.8.2016, 16:19; Ответить: sc2r2bey
Сообщение #1


Данный материал не претендует на истину в последней инстанции, но стремится показать, что исходить надо из понятия здравого смысла.
Здесь я хочу написать о том, как все-таки настроить вывод ошибок скрипта?

Еще Генри Форд в свое время говорил (тут будет моя интерпретация его слов, но с сохранением смысла):
Если что-то можно сделать стоя или сидя, сделай это сидя,
если что-то можно сделать сидя или лежа, сделай это лежа.


Тема конфигурационного файла php.ini обсуждалась не раз, решил и я затронуть эту тему, открою секрет публикаций будет несколько :drinks:
Кто пользуется виртуальным хостингом она не будет полезна, но если в вашем расположении выделенный сервер, то читай дальше.

Параметры конфигурации php имеют 4 уровня:
PHP_INI_USER - Значение может быть установлено в пользовательских скриптах (с помощью ini_set())
PHP_INI_PERDIR - Значение может быть установлено в php.ini, .htaccess или httpd.conf
PHP_INI_SYSTEM - Значение может быть установлено в php.ini или httpd.conf
PHP_INI_ALL - Значение может быть установлено отовсюду

А теперь давайте включим здравый смысл и вспомним Генри Форда

Зачем менять глобальные настройки для всего сервера, если мы можем это сделать на уровне скрипта? Правильно!
Во-первых это безопасность, в принципе и во-вторых и в-третьих, продолжать можно бесконечно долго.
Что дает безопасность. в данном случае6? Изолированность проектов. Наверняка у вас на сервере крутится больше одного проекта, и возможно только один используется для тестирования и отладки. Так зачем вам показывать ошибки для всех проектов. Глупо, не правда ли?

Реальный пример:

Есть очень известный сайт, существует с начала века, недавно ночью я зашел на него и обнаружил:
Notice: unserialize(): Error at offset 0 of 62532 bytes in /home/*********.ru/www/objects/memcached/memcached.inc.php on line 29 Notice: Undefined index: content in /home/*********.ru/www/objects/templates/templates.inc.php on line 413 Notice: Undefined index: params in /home/*********.ru/www/objects/templates/templates.inc.php on line 414 Fatal error: Method TemplateParam::__toString() must not throw an exception, caught Error: Call to a member function get_data() on null in /home/*********.ru/www/user/manager.inc.php on line 0

через время перезагрузил страницу и вылезло вот что:
Warning: mysqli::__construct(): (HY000/1040): Too many connections in /home/*********.ru/www/objects/memcached/memcached.inc.php on line 14 Warning: mysqli::real_escape_string(): Couldn't fetch mysqli in /home/*********.ru/www/objects/memcached/memcached.inc.php on line 19 Warning: mysqli::query(): Couldn't fetch mysqli in /home/*********.ru/www/objects/memcached/memcached.inc.php on line 21 Notice: Trying to get property of non-object in /home/*********.ru/www/objects/memcached/memcached.inc.php on line 22 Warning: mysqli::__construct(): (HY000/1040): Too many connections in /home/*********.ru/www/objects/database/database.inc.php on line 265 Can't connect to DB

Довольно-таки наглядная картина для того, что бы понять какая структура файловой системы, какие библиотеки используются. Возможно информации не так много, но в плане атаки задает вектор действий по сбору новой информации, приближающей нас к цели.

Поэтому я рекомендую не трогать директиву, отвечающую за вывод ошибок, не зря по умолчанию разработчики отключили вывод ошибок в браузер, вспоминаем Генри Форда.
Если на этапе разработке это лучше сделать функциями самого php, все зависит от архитектуры вашего скрипта, если все идет через index.php, то в его начале вот такой код:
ini_set('display_errors', 1);
ini_set('error_reporting', E_ALL);

Либо сделай функцию или класс/метод и вызывай по необходимости. Этого будет достаточно.

При запуске в скрипта в продакшен можете сделать логирование и все класть туда, можете даже сделать, чтобы сообщения об ошибке сразу приходило вам на почту.

Предвосхищая возражения, я могу сказать только одно. Если бы да кабы не позволяет вам формировать мышление разработчика.

ЗЫ. Без надобности не лезь в конфигурационные файлы сервера.


--------------------
Заметки о разработке и не только
программирую web и для we
0
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
k0ttee
k0ttee
сообщение 31.8.2016, 18:26; Ответить: k0ttee
Сообщение #2


Таки была моя старая тема, где очень простой выводи ошибок "только для авторизованного себя". Ни единой ошибки не было! :laugh:


--------------------
Задонь кибер-коту на крипто-вискас
btc: 3Hq7X9CosVftRFPqWis1Dkk5MdtM1u6jj9
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
sc2r2bey
sc2r2bey
Topic Starter сообщение 31.8.2016, 19:29; Ответить: sc2r2bey
Сообщение #3


(k0ttee)
Таки была моя старая тема, где очень простой выводи ошибок "только для авторизованного себя". Ни единой ошибки не было! :laugh:

пока что я увидел поток сознания от 2014 года.
во-первых зачем так усложнять себе жизнь?
во-вторых о какой cms идет речь, ибо приведенный пример вряд ли будет работать в большинстве движков?
в-третьих режим отладки уже встроен во многие cms, вопрос, зачем?
Апеллирую в здравому смыслу. Зачем?

А не было ошибок, наверное потому что это не работает?


--------------------
Заметки о разработке и не только
программирую web и для we
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
prolisk
prolisk
сообщение 1.9.2016, 22:45; Ответить: prolisk
Сообщение #4


(surfer)
ЗЫ. Без надобности не лезь в конфигурационные файлы сервера.

самое верное замечания, тем более, ТЕМ более, если не виртуальный хостинг, а свой сервер...Ведь его и положить можно...


--------------------
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
k0ttee
k0ttee
сообщение 2.9.2016, 21:28; Ответить: k0ttee
Сообщение #5


во-первых зачем так усложнять себе жизнь?

Из этого
ini_set('error_reporting', E_ALL);

Сделать это
if( /* тут определение авторизован пользователь или нет для вашей cms */ )
   {
   function dump_errors($errno,$errstr,$errfile,$errline,$errcontext) //авторизованному показываем ошибки (по своим условиям)
      {
      //условия задаем сюда
      }
      set_error_handler('dump_errors');
   }
else //иначе
   {
   error_reporting(0); //остальным ошибки не покажу
   }

Усложняет жизнь? :blink:

Если обертка if усложняет жизнь, то мне ну очень тяжело живется. :D А комментарии в коде - усложняют больше всего.

во-вторых о какой cms идет речь, ибо приведенный пример вряд ли будет работать в большинстве движков?

Конструкция языка может не работать в движках? :blink: Тогда нахер движки.
if( ){ }else{ }


А не было ошибок, наверное потому что это не работает?

Ошибок не было по тому что код самописный, а вот код сапы сыпал warning'ами. :P
Апеллирую в здравому смыслу. Зачем?

Вы свой код пишите, или шлепаете на движке?

Замечание модератора:
Эта тема была закрыта автоматически ввиду отсутствия активности в ней на протяжении 100+ дней.
Если Вы считаете ее актуальной и хотите оставить сообщение, то воспользуйтесь кнопкой
или обратитесь к любому из модераторов.


--------------------
Задонь кибер-коту на крипто-вискас
btc: 3Hq7X9CosVftRFPqWis1Dkk5MdtM1u6jj9
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
Открыть тему
Тема закрыта
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0


Свернуть

> Похожие темы

  Тема Ответов Автор Просмотров Последний ответ
Горячая тема (нет новых ответов) Во что сегодня инвестировать?
Делимся своими приносящими прибыль вариантами
69 traveliver 4446 25.3.2024, 6:48
автор: Skyworker
Горячая тема (нет новых ответов) Тема имеет прикрепленные файлыВо что Вы играете?
399 Vmir 67502 23.3.2024, 12:51
автор: Alexand3r
Открытая тема (нет новых ответов) "Извините, что ожидание затянулось, но не думайте, пожалуйста, что мы про вас забыли. Мы заводим задачи по всем обращениям и контролируем работу над ними самым тщательным образом."
Вопрос
0 kuz999 1188 5.2.2024, 14:06
автор: kuz999
Горячая тема (нет новых ответов) Что приведет к краху всего рынка криптовалют
стейблкоины, прогноз
43 GlazAlmaz 5833 13.1.2024, 17:30
автор: Antarez
Горячая тема (нет новых ответов) Microsoft отказался работать в России: на что повлияет и есть ли ему замена
30 Room 4480 30.12.2023, 23:17
автор: australianman


 



RSS Текстовая версия Сейчас: 28.3.2024, 17:39
Дизайн