Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
MySQL 5. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. C++. Мастер-класс в задачах и примерах. Авторы: Кузнецов М.В., Симдянов И.В. PHP Puzzles. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5. На примерах. Авторы: Кузнецов М.В., Симдянов И.В., Голышев С.В. PHP. Практика создания Web-сайтов (второе издание). Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: $smarty-display() даёт белый экран
 
 автор: Киналь   (26.02.2009 в 22:08)   письмо автору
 
 

Попросили меня тут "посмотреть, что с сайтом". Симптомы: при запросе главной страницы - белый экран.
Посмотрел исходники; это оказался Shop Script со Smarty. Потыкася чуток и теперь пребываю в совершенных непонятках. Этот движк и Смарти никогда не изучал, и сейчас анатомировать этих монстров нет никакого желания) Так что надеюсь на чужой опыт.

Вобщем, дошёл вот до чего. Есть строчка, последняя в километровомскрипте

[code]
$smarty->display("index.tpl.html");
[/c\ode]

Если до неё поставить вывод (echo, например) - он работает, если после - то белый экран. При этом print_r($smarty) даёт нормальный результат, а шаблон index.tpl.html существует, правда, не рядом с index.php.
Ещё загадка - несмотря на error_reporting(E_ALL) в начале, так и не смог получить ни одноо сообщения об ошибке, даже на явный бред типа ec_ho 'S'; вместо этого появляется белый экран.


В какую хоть сторону смотреть?

  Ответить  
 
 автор: Axxil   (26.02.2009 в 22:54)   письмо автору
 
   для: Киналь   (26.02.2009 в 22:08)
 

У вас ошибка не выводятся на экран. Смарти тут не при делах.

Попробуйте .htaccess в корень положить и добавить туда:

php_flag  display_errors        on

  Ответить  
 
 автор: Киналь   (27.02.2009 в 07:51)   письмо автору
 
   для: Axxil   (26.02.2009 в 22:54)
 

Да, что-то я растерялся, не сообразил это проверить) Действительно, никакой реакции даже на index.php вида

<?php
ec_ho 
'test';
?>

Спасибо, что вразумили)

Но теперь другая проблема - в phpinfo() видно, что display_errors = off, и директива в .htaccess не помогает. Можно что-то сделать или нужно уже писать хостеру?

  Ответить  
 
 автор: Axxil   (27.02.2009 в 09:53)   письмо автору
 
   для: Киналь   (27.02.2009 в 07:51)
 

Обычно у хостера есть инструкции на сей счёт. Может ошибки в логи пишутся. Покопайтесь в faq или спросите напрямую у саппорта.

  Ответить  
 
 автор: Киналь   (28.02.2009 в 13:18)   письмо автору
 
   для: Axxil   (27.02.2009 в 09:53)
 

Нашёлся error.log, спасибо за совет.

Проблема оказалась совершенно шедевральной, и Смарти вообще ни при чём - у некоторых файлов на сервере были обрезаны названия. Например, вместо core.assemble_plugin_filepath.php лежал core.assemble_plugin_filepat. Естественно, Смарти их не видел=) Теперь, правда, другая проблема - узнать названия файлов Shop Script'а, но под это уже другую тему создам.


Спасибо всем за помощь!

  Ответить  
 
 автор: Лена   (26.02.2009 в 23:15)   письмо автору
 
   для: Киналь   (26.02.2009 в 22:08)
 

Честно говоря, что у вас, не знаю, у меня такого не было.
Где лежит файл index.tpl.html? Путь от корня надо к нему проследить. Может смарти его не "видит".
Я знаю, что до $smarty->display("index.tpl.html"); в скрипте нужно указать путь от корня к папке, где лежат шаблоны(они все в одной папке должны быть).
У меня это так:
$smarty->template_dir = $_SERVER['DOCUMENT_ROOT']."/templates/"; - папка с шаблонами
$smarty->compile_dir = $_SERVER['DOCUMENT_ROOT']."/templates_c/"; - папка с скомпилированными шаблонами. В последней папке можно посмотреть, что "собирается" из шаблона index.tpl.html - он часто состоит из более мелких шаблонов. А дальше уже искать, что не компилируется.
Кроме этого, в смарти есть отладочная консоль. Объявляется она так:
$smarty->debugging = true;
Нужно проверить, есть ли она сразу после объявления смарти, после вот этих строк:
require_once ("smarty/Smarty.class.php");
$smarty = new Smarty;
Она показывает для текущего экземпляра все его шаблоны и переменные. А дальше уже нужно смотреть, что показывает консоль.
За ошибки в смарти отвечает $error_reporting:
тоже как-то так ее надо включить:
$smarty->$error_reporting = true;
Но включать надо или отладочную консоль, или вывод ошибок.
Если что не так, пусть sim5 меня поправит.

  Ответить  
 
 автор: Loki   (26.02.2009 в 23:57)   письмо автору
 
   для: Киналь   (26.02.2009 в 22:08)
 

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

  Ответить  
 
 автор: ols   (27.02.2009 в 10:57)   письмо автору
 
   для: Киналь   (26.02.2009 в 22:08)
 

Проверьте права доступа на папку куда компилируются шаблоны. Поставьте полные права. У меня имено такая ситуация с белым экраном была в правах доступа

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования