Что передаётся в eval?
Да просто строка $file!
Не имя файла, не содержимое, а просто текст, посимвольно $file
Для начала уберите аппостроф
Дальше, как работает евал?
Оно выполняет пхп код! То есть уже сам код, без тега <?php который видимо есть в файле.
Что бы это обойти, можно якобы закрыть для начала открытый тег
eval( '?>' . $file);
И так, получаем код файл 1.php
<?php
function get_include_contents($filename) {
if (is_file($filename)) {
тема про фатал, вы кидаете по второму кругу ссылки, на то, как логировать фатал при его возникновении, но не продолжить работу скрпита.
перехват фатал в данном случае, по ссылкам выше, это значит что при вываливании фатала, выполнить какой то код, но не продолжить скрпит... а ТС нужно именно продолжить скрпит.
даже с предварительным инклудом не получиться этого сделать, так как анализ просто включенного файла не позволит выявить фаталы, простой пример
От GET параметра зависит, будет тут фатал или нет, а значит просто включив файл, нельзя определить, если ли в нём где то фатал ерор.
29.01.2014, 11:31
r3ntg3n
Degradator, делаете промежуточную страницу, или какое-то модальное окно вида "проверка файла", где через AJAX-запрос к другому скрипту передаете имя нужно файла.
Этот скрипт пытается загрузить файл, и если все ок, отдает ответ, что все прошло успешно, или не прошло.
Обработчик AJAX проверяет статус ответа, и если все ок - перенаправляет на страницу, где подгружается нужный файл, иначе - показывает сообщение, что файл содержит ошибку.
А текс ошибки можете так же аяком и забрать.
Как-то так
29.01.2014, 11:34
Degradator
Нашел решение короче. Вот оно
function get_include_contents($filename, $blockName) {
if (is_file($filename)) {
Конечно, это просто запуск по второму кругу и без подключаемого файла, но в моем случае это вполне допустимо. Как я понимаю myObHandler будет касаться только ob_start(), а не всего скрипта
29.01.2014, 11:35
Degradator
Цитата:
Сообщение от r3ntg3n
Degradator, делаете промежуточную страницу, или какое-то модальное окно вида "проверка файла", где через AJAX-запрос к другому скрипту передаете имя нужно файла.
Этот скрипт пытается загрузить файл, и если все ок, отдает ответ, что все прошло успешно, или не прошло.
Обработчик AJAX проверяет статус ответа, и если все ок - перенаправляет на страницу, где подгружается нужный файл, иначе - показывает сообщение, что файл содержит ошибку.
А текс ошибки можете так же аяком и забрать.