smike
Новичок
include и ob_get_clean()
На хостинге:
PHP Version 5.2.3
FreeBSD 6.2-STABLE
Apache/1.3.37
Server API: CGI
На тестовой машине:
PHP Version 5.1.2
FreeBSD 5.5-RELEASE
Server API Apache
Apache/1.3.34
Пример скрипта
Код функции sys::рarseTpl()
На тестовой машине везде отрабатывает нормально.
У хостера отрабатывает не всегда, иногда выдает ошибку:
Warning: sys::require(/home/host/data/www/host.com/mods/sys/admin/skins/default/tpl.page.php) [function.sys-require]: failed to open stream: No such file or directory in /usr/home/host/data/www/host.com/mods/sys/include/lib.sys.php on line 330
Fatal error: sys::require() [function.require]: Failed opening required '/home/host/data/www/host.com/mods/sys/admin/skins/default/tpl.page.php' (include_path='.:/usr/local/share/pear') in /usr/home/host/data/www/host.com/mods/sys/include/lib.sys.php on line 330
т.е. у хостера при вызове функции sys:
arseTpl() один скрипт отрабатывает, другой аналогичный скрипт выдает ошибку которую я привел выше. Причем в разных случаях функция sys:
arseTpl() не может проинклудить разные файлы шаблонов. Т.е. при вызове sys:
arseTpl() из одного скрипта шаблон tpl.page.php инклудится, при вызове из другого нет, при вызове из третьего скрипта не инкулдится шаблон tpl.menu.php который инклудится из четвертого. Вот такая чертовщина.
Хостер посоветовал модифицировать код sys:
arseTpl()
вместо:
написать:
Я внес изменения на локальной машине и на хостинге, ошибка исчезла, но при очередном обновлении php-файлов сайта появилась опять, но уже при вызове sys:
arseTpl() из других скриптов.
Если кто сталкивался с подобной проблемой пожалуйста подскажите в чем дело. Так как я никак не могу понять закономерность возникновения данной ошибки.
На хостинге:
PHP Version 5.2.3
FreeBSD 6.2-STABLE
Apache/1.3.37
Server API: CGI
На тестовой машине:
PHP Version 5.1.2
FreeBSD 5.5-RELEASE
Server API Apache
Apache/1.3.34
Пример скрипта
PHP:
function showPage()
{
global $_var;
$var=array();
$tpl='/home/host/data/www/host.com/mods/sys/admin/skins/default/tpl.page.php';
$var['text']='Hello';
$_var['body']=sys::рarseTpl($tpl,$var);
}
PHP:
class sys
{
function parseTpl($tpl,$var)
{
ob_start();
require($tpl);
return ob_get_clean();
}
}
На тестовой машине везде отрабатывает нормально.
У хостера отрабатывает не всегда, иногда выдает ошибку:
Warning: sys::require(/home/host/data/www/host.com/mods/sys/admin/skins/default/tpl.page.php) [function.sys-require]: failed to open stream: No such file or directory in /usr/home/host/data/www/host.com/mods/sys/include/lib.sys.php on line 330
Fatal error: sys::require() [function.require]: Failed opening required '/home/host/data/www/host.com/mods/sys/admin/skins/default/tpl.page.php' (include_path='.:/usr/local/share/pear') in /usr/home/host/data/www/host.com/mods/sys/include/lib.sys.php on line 330
т.е. у хостера при вызове функции sys:



Хостер посоветовал модифицировать код sys:

вместо:
PHP:
return ob_get_clean();
PHP:
$ret = ob_get_clean();
return $ret;

Если кто сталкивался с подобной проблемой пожалуйста подскажите в чем дело. Так как я никак не могу понять закономерность возникновения данной ошибки.