Помощник
|
Поиск fatal error |
Degradator
|
Сообщение
#1
|
||
|
|
||
|
|||
Azazaza_hb |
28.1.2014, 1:18;
Ответить: Azazaza_hb
Сообщение
#2
|
|
|
|
|
Den1xxx |
28.1.2014, 8:29;
Ответить: Den1xxx
Сообщение
#3
|
|
По сути проблема такая - есть file.php который должен быть include file.php;. Но заранее мы не знаем что там внутри, и он может положить весь сайт. Есть ли способы, как проверить на валидность и если все ок, то инклудить, если не ок, то не инклудить? Я в таком случае не проверяю на валидность, иначе не будет отображено в чем ошибка. Я его просто кеширую, и в случае ошибки выдается предпреждение без обрушивания всего скрипта: ob_start(); Но в движке позволяю такое творить только суперадмину;)
include($page);//или eval, даже потенциально небезопасный $text = ob_get_contents(); ob_end_clean(); echo $text; |
|
|
Degradator
|
Сообщение
#4
|
|
Спасибо, но перехватить таким образом например Fatal error: Call to undefined function asdfasd() не получится Кеширование хорошая идея, но к сожалению не могу позволить себе такую роскошь, хотя идея хороша, не думал что это можно обыграть таким образом. Я вот так делаю [PHP]function get_include_contents($filename) { if (is_file($filename)) { ob_start(); include($filename); return ob_get_clean(); } }[/PHP] Не думаю что $text = ob_get_contents(); echo $text; тут необходимо |
|
|
Den1xxx |
28.1.2014, 12:58;
Ответить: Den1xxx
Сообщение
#5
|
|
Не думаю что $text = ob_get_contents(); echo $text; тут необходимо Работает уже 2 года именно таким (ну почти таким) образом. Не думаю что $text = ob_get_contents(); echo $text; тут необходимо Ну если не важно что возвращает скрипт то да, можете опустить. $text = ob_get_contents(); echo $text; — это эмуляция обычной работы скрипта. Но при этом защищенного от фатальных ошибок (парсинга и т.п.). Так же никто не мешает сделать: [PHP] function get_include_contents($filename) { if (is_file($filename)) { ob_start(); include($filename); $text = ob_get_contents(); ob_end_clean(); return $text; } }[/PHP] |
|
|
Degradator
|
Сообщение
#6
|
|
:prilichno:
Падает всеми тремя способами и на Fatal error: Call to undefined function asdfasd() и на Parse error: syntax error, unexpected T_VARIABLE in Что может быть не так? |
|
|
Den1xxx |
28.1.2014, 19:01;
Ответить: Den1xxx
Сообщение
#7
|
|
Я думаю, не надо запихивать код в функцию.
При ошибке парсинга буфер не очищается, с о всеми вытекающими. Можно ещё так попробовать. [PHP] function get_include_contents($filename) { if (is_file($filename)) { ob_start(); $eval_code=file_get_contents($filename); eval($eval_code); $text = ob_get_contents();ob_end_clean();return $text; } } [/PHP] Фишка в том, что eval() сам кидает исключение, не обваливая скрипт и при невозможности выполнить просто возвращается false ЗЫ. Degradator, если хотите могу дать тестовый доступ в скрипт где это все работает:) |
|
|
alexdrob |
28.1.2014, 19:35;
Ответить: alexdrob
Сообщение
#8
|
|
Да не поможешь кеширование вывода с отлавливанием фатальной ошибки. Как оно вообще может помочь?
Вы просто текст может скроете, но скрипт оборвётся. Да и try catch не поможет. так как он отлавливает ошибки вызванные throw. поищите на сайте stackoverflow.com, там обычно етсь ответы на все вопросы, думаю вы не первый кто решил сделать такую задачу |
|
|
Den1xxx |
28.1.2014, 19:42;
Ответить: Den1xxx
Сообщение
#9
|
|
Вы просто текст может скроете, но скрипт оборвётся. Так о том и речь. Скрипт внутри буфера отвалится, а внешний останется цел:goodpost: Никто не говорит о том, что возможно найти ошибку парсинга и исправить автоматически:sarcastic: Но и внешний скрипт не должен рушиться из-за незакрытой кавычки — посмотрите защиту от кривых плагинов в Вордпрессе, например. |
|
|
alexdrob |
28.1.2014, 20:22;
Ответить: alexdrob
Сообщение
#10
|
|
фатал ерор, валит скрипт, при чём тут буфер вывода?
буфер вывода, это буфер вывода :) простой пример [PHP]<?php ob_start(); foo(); $text = ob_get_contents(); ob_end_clean(); [/PHP] результат Fatal error: Call to undefined function foo()
|
|
|
|
Похожие темы
Тема | Ответов | Автор | Просмотров | Последний ответ | |
---|---|---|---|---|---|
Smmsearch.net - поиск самой дешевой накрутки в социальных сетях. | 0 | Professor7717 | 3294 | 13.8.2021, 19:53 автор: Professor7717 |
|
Поиск кодера в команду. PHP, Pyton. На постоянку. | 7 | getsend_mw | 2868 | 3.2.2021, 21:15 автор: getsend_mw |
|
Поиск копирайтера на игровую тематику Поиск копирайтера на игровую тематику |
4 | a1ex777 | 1653 | 2.10.2020, 16:01 автор: AndreyBozhenko |
|
SmmBox - поиск, аналитика и отложенная публикация в соцсетях. Официально! | 23 | smmbox | 11940 | 13.5.2020, 11:12 автор: smmbox |
|
Поиск, сбор информации, парсинг (недорого) Предлагаю услуги по поиску, сбору информации, парсингу и т.д. |
0 | Kabardin | 1352 | 11.3.2020, 14:59 автор: Kabardin |
Текстовая версия | Сейчас: 25.4.2024, 3:46 |