Заголовок сообщения: Virtual() в PHP - может, кто сталкивался? Добавлено: 21 Май 2007, 07:53:01
Не работает чудо-функция
Код:
bool virtual ( string $filename )
в PHP.
Цитата:
virtual() is an Apache-specific function which is similar to <!--#include virtual...--> in mod_include. It performs an Apache sub-request. It is useful for including CGI scripts or .shtml files, or anything else that you would parse through Apache. Note that for a CGI script, the script must generate valid CGI headers. At the minimum that means it must generate a Content-type header.
To run the sub-request, all buffers are terminated and flushed to the browser, pending headers are sent too.
This function is only supported when PHP is installed as an Apache module.
Все требования соблюдены - PHP 5 стоит как apache module, OS Sun Solaris 10.
Если кто-то сталкивался, помогите.
_________________ Лишь одно в моём кармане - беспонтовый пирожок
К сожалению, не могу отвечать чаще, чем через 2 часа - ограничения на форуме
Ситуация следующая. Я разобрался, слово "неработает" заменяю на "работает, но черт её знает как"!.
Пишу:
Код:
$page = '/dir/page.php'; $content = virtual( $page ); $content = iconv( 'CP1251', 'UTF-8', $content ); // это для того, чтобы через AJAX всё было по-русски print $content;
абсурд в том, что когда я комментирую строку
Код:
print $content;
, у меня всё равно на экране появляется вывод скрипта
Код:
$page
… бред какой-то!
Я так понимаю, что VIRTUAL должен выполнить подзапрос и выдать мне результаты выполнения в переменную, а он, нехороший такой, плюют всё это мне в лицо.
_________________ Лишь одно в моём кармане - беспонтовый пирожок
Crazy, сорри, вот облажался я, так облажался... не обратил почему-то внимания на bool, видимо, потому, что так надеялся на результат
А есть какой-нибудь способ получить таки результат отработки PHP скрипта в строку, не переделывая сам скрипт? Часть скриптов всё же переделал, но проект огромный, руки чешутся всё на AJAX перевести... с HTML-то понятно, как поступать, а вот PHP?
_________________ Лишь одно в моём кармане - беспонтовый пирожок
fStrange, спасибо, попробую... вообще-то я сильно сомневался, что обработка пост-процессором PHP происходит в этой функции...
P.S. проверил... работает. Только несколько "засад" обнаружилось - не видны ранее установленные переменные (включая сессионные), результаты ранее выполненных INCLUDE и т.д... Т.е. всё же без тотальной переделки не обойтись
_________________ Лишь одно в моём кармане - беспонтовый пирожок
P.S. проверил... работает. Только несколько "засад" обнаружилось - не видны ранее установленные переменные (включая сессионные), результаты ранее выполненных INCLUDE и т.д... Т.е. всё же без тотальной переделки не обойтись Sad
попробуй включать буферизацию ob_start
потом делать include на этом участке, забирать ob_get_contents и завершать буферизацию
fStrange, Crazy, прошу вас, не нужно так драматизировать. Некоторое (пусть и поверхностное) понимание (которого мне до сих пор хватало) есть, что недопонимаю - столкнусь - пойму, только диагнозы, прошу, ставить не нужно.
MpaK999, спасибо, я уже об этом думал, но всё же мне наверное лучше попотеть и довести до ума все скрипты, чтобы выдавали они только строки. У меня сайт построен по типу конструктора, т.е. за каждый участок контента на странице (разбитый на слои) отвечает отдельный скрипт. С помощью AJAX удобно вызывать только тот скрипт, который отвечает за перестроение указанного участка контента (слоя). Но так как ранее они все были завязаны через INCLUDE, то все промежуточные переменные были доступны в порядке инициализации. А сейчас мне мешает то, что во многих скриптах есть PRINT или HTML-вставки.
_________________ Лишь одно в моём кармане - беспонтовый пирожок
Уровень доступа: Вы не можете начинать темы. Вы не можете отвечать на сообщения. Вы не можете редактировать свои сообщения. Вы не можете удалять свои сообщения. Вы не можете добавлять вложения.