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

Форум PHP

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

 

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

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

тема: доступ к каталогам Smarty
 
 автор: Slo_Nik   (11.08.2009 в 22:09)   письмо автору
 
 

Помогите, пожалуйста, решить траблу с доступом к каталогам.
Я со Smarty раньше дело не имел.
Скопировал "libs" в "c:/webroot/libs/Smarty-v.e.r/"
Создал папку для некоего приложения в "с:/Sites/home/test.com/www/guestbook/", там же расположил 4-е директории для Smarty(templates, templates_c, configs и cache).
В директории "templates" создал файл "index.tpl".
В самой директории "guestbook" создал файл "index.php"

<?php
define
("SMARTY_DIR","c:/webroot/libs/Smarty-v.e.r/");
require_once(
SMARTY_DIR."Smarty.class.php");
$smarty = new Smarty();

if(
$smarty == true) echo "smarty есть!!!"// маленькая проверка

// пути к директориям Smarty
$smarty->template_dir "C:/Sites/home/test.com/www/guestbook/templates/";
$smarty->$compile_dir "C:/Sites/home/test.com/www/guestbook/templates_c/";
$smarty->$config_dir "C:/Sites/home/test.com/www/guestbook/configs/";
$smarty->$cache_dir "C:/Sites/home/test.com/www/guestbook/cache/";

$smarty->assign("name","slo_nik");

$smarty->debugging true;

$smarty->display("index.tpl");
?>

Проблема в том, что выдаёт ошибку
"Fatal error: Cannot access empty property in C:\Sites\home\testing.ua\www\guestbook\index.php on line 17", если закомментировать 4-е строки с указанием путей к директориям, то всё работает нормально, выводится приветствие.
на все директории стоят права "0777".

  Ответить  
 
 автор: !   (11.08.2009 в 22:18)
 
   для: Slo_Nik   (11.08.2009 в 22:09)
 

Не $smarty->$compile_dir, а $smarty->compile_dir и т.д.

  Ответить  
 
 автор: Slo_Nik   (11.08.2009 в 22:25)   письмо автору
 
   для: !   (11.08.2009 в 22:18)
 

действительно, куда только смотрел? :(
Спасибо.

  Ответить  
 
 автор: sim5   (12.08.2009 в 03:14)   письмо автору
 
   для: Slo_Nik   (11.08.2009 в 22:09)
 

А зачем вы определяете абсолютные пути для кеша как: C:/Sites/home/test.com/..... ?

  Ответить  
 
 автор: Slo_Nik   (12.08.2009 в 11:51)   письмо автору
 
   для: sim5   (12.08.2009 в 03:14)
 

в руководстве к Smarty в примере были указаны абсолютные пути, в примечании написано, что "...более эфективным и менее глюкоопасно...Это придаст уверенность в том, что Smarty получает фалй из тех директорий, из которых вы хотите."
но проблема у меня в другом возникла.
на локальном указал пути "$this->template_dir = "./templates";" - всё отлично работает, а вот на реальном сервере не хочет.
указывал абсолютные пути выдаёт ошибки
"Warning: Smarty error: unable to read resource: "index.tpl" in....../Smarty.class.php on line 1093
и
Fatal error: Smarty error: unable to write to $compile_dir....guestbook/templates_c'. Be sure $compile_dir is writable by the web server user. in.....s/Smarty.class.php on line 1093"

пробовал указать пути "$this->template_dir = $_SERVER['DOCUMENT_ROOT']."/guestbook/templates" - результат тот же.

  Ответить  
 
 автор: sim5   (12.08.2009 в 13:15)   письмо автору
 
   для: Slo_Nik   (12.08.2009 в 11:51)
 

Вот потому и не пишите в путях С:\path..... Вы что уверены, что документы вашего сайта на хосте будут лежать на диске С:? Почитайте еще раз руководство Smarty касаемо путей, и укажите пути так, чтобы не было проблем с переносимостью.

  Ответить  
 
 автор: Slo_Nik   (12.08.2009 в 13:29)   письмо автору
 
   для: sim5   (12.08.2009 в 13:15)
 

я не говорил, что на реальном сервере написал пути с "C://...", на локальном изменил пути на "$this->template_dir = "./templates", точно так же делал и на реальном сервере, пробовал ещё указывать пути "$this->template_dir = $_SERVER['DOCUMENT_ROOT']."/guestbook/templates" , ни чего не помогает.
на локальном всё работает, на реальном не хочет.

  Ответить  
 
 автор: Loki   (12.08.2009 в 13:19)   письмо автору
 
   для: Slo_Nik   (12.08.2009 в 11:51)
 

>всё отлично работает, а вот на реальном сервере не хочет.
я бы предположил что дело в регистре...

  Ответить  
 
 автор: Slo_Nik   (12.08.2009 в 13:29)   письмо автору
 
   для: Loki   (12.08.2009 в 13:19)
 

в регистре чего?
все имена директорий и файлов в нижнем регистре

  Ответить  
 
 автор: Slo_Nik   (12.08.2009 в 14:45)   письмо автору
 
   для: Slo_Nik   (12.08.2009 в 13:29)
 

возникла одна идея, проверил файл "index.tpl" в директории "templates/" функцией "is_file()" и получил ответ, что файл не является файлом.
как это исправить? возможно поэтому у меня и не работает на реальном сервере?

  Ответить  
 
 автор: Loki   (12.08.2009 в 15:06)   письмо автору
 
   для: Slo_Nik   (12.08.2009 в 14:45)
 

для начала стоило бы проверить file_exists, ибо если файла нет, то ясен пень что это не файл:)

  Ответить  
 
 автор: sim5   (12.08.2009 в 15:10)   письмо автору
 
   для: Slo_Nik   (12.08.2009 в 14:45)
 

А права на запись папку кеша вы установили? index.tpl - это шаблон, а у вас проблемы с какой директорией, или они у вас со всеми указанными Smarty деректорями?

  Ответить  
 
 автор: Slo_Nik   (12.08.2009 в 15:29)   письмо автору
 
   для: sim5   (12.08.2009 в 15:10)
 

на все четыре директории стоят права "0770", на "index.tpl" права "0644".

  Ответить  
 
 автор: sim5   (12.08.2009 в 15:44)   письмо автору
 
   для: Slo_Nik   (12.08.2009 в 15:29)
 

У вас проблемы с доступом, вам же ошибка говорит об этом:
не возможно записать в $compile_dir.... guestbook/templates_c'. Убедитесь, что $compile_dir имеет права на перезапись пользователем....

  Ответить  
 
 автор: Slo_Nik   (12.08.2009 в 16:01)   письмо автору
 
   для: sim5   (12.08.2009 в 15:44)
 

поставил на "templates_c" права "0777", на "cache" и "configs" - "0750" и на "templates" - "0755"
всё заработало.
если что то с правами не так, не то значение - поправьте, пожалуйста.

  Ответить  
 
 автор: Loki   (12.08.2009 в 16:07)   письмо автору
 
   для: Slo_Nik   (12.08.2009 в 16:01)
 

Заработало, только каталог конфигов смарти по прежнему прочесть не может.

  Ответить  
 
 автор: sim5   (12.08.2009 в 16:09)   письмо автору
 
   для: Slo_Nik   (12.08.2009 в 16:01)
 

"templates_c" (это и есть кеш) достаточно прав "0775", остальные на чтение.

  Ответить  
 
 автор: Slo_Nik   (12.08.2009 в 17:43)   письмо автору
 
   для: sim5   (12.08.2009 в 16:09)
 

не хочет работать "templates_c" с правами "0775", выдаёт ошибку
"Fatal error: Smarty error: unable to write to $compile_dir '....templates_c'. Be sure $compile_dir is writable by the web server user. in ...../Smarty.class.php on line 1093", только "0777".

  Ответить  
 
 автор: sim5   (12.08.2009 в 17:52)   письмо автору
 
   для: Slo_Nik   (12.08.2009 в 17:43)
 

Ну может быть, это и от хоста зависит, у меня 775 работало.

  Ответить  
 
 автор: Slo_Nik   (12.08.2009 в 18:01)   письмо автору
 
   для: sim5   (12.08.2009 в 17:52)
 

спасибо за подсказку

  Ответить  
 
 автор: Loki   (13.08.2009 в 10:11)   письмо автору
 
   для: Slo_Nik   (12.08.2009 в 17:43)
 

И не должно - прав на запись туда вы же не дали...

  Ответить  
 
 автор: Slo_Nik   (13.08.2009 в 11:30)   письмо автору
 
   для: Loki   (13.08.2009 в 10:11)
 

что не должно?

  Ответить  
 
 автор: Loki   (13.08.2009 в 11:53)   письмо автору
 
   для: Slo_Nik   (13.08.2009 в 11:30)
 

>не хочет работать "templates_c" с правами "0775", выдаёт ошибку
и не должно работать с правами 755

  Ответить  
 
 автор: sim5   (13.08.2009 в 12:22)   письмо автору
 
   для: Loki   (13.08.2009 в 11:53)
 

Ну это смотря где, у меня прекрасно работает при 775 (drwxrwxr-x), а права фалов этой папки 644 (-rw-r--r--).

  Ответить  
 
 автор: Loki   (13.08.2009 в 12:50)   письмо автору
 
   для: sim5   (13.08.2009 в 12:22)
 

При определенных условиях:
1. если апач запущен из под пользователя
2. если апач и пользователь в одной группе
3. если целевой каталог создан скриптом (читай - имеет владельцем апача)
я расположил варианты в порядке возрастания вероятности... в первом случае вообще и при 700 работать будет, другой вопрос что первые два варианта достаточно экзотичные... впрочем, как и третий.

  Ответить  
 
 автор: Slo_Nik   (13.08.2009 в 17:35)   письмо автору
 
   для: Loki   (13.08.2009 в 12:50)
 

так какой оптимальный вариант прав на каталоги?
я просто пока мало об этом знаю...

  Ответить  
 
 автор: Loki   (13.08.2009 в 23:16)   письмо автору
 
   для: Slo_Nik   (13.08.2009 в 17:35)
 

Так почитайте. Что-то на этом форуме у всех мания - найти "самое лучшее решение на все случаи жизни". Потому и решений много что случаи-то разные. Я вот описал случаи при которых будет работать 700 и 770. 777 будет работать во всех случаях. Вам - домашнее задание: разобраться почему.

  Ответить  
 
 автор: Саня   (13.08.2009 в 23:23)   письмо автору
 
   для: Loki   (13.08.2009 в 23:16)
 

Ну что вы так на юзера накидываетесь? Может он всю жизнь сидел в виндах и не знает что такое chmod.

  Ответить  
 
 автор: Loki   (14.08.2009 в 00:52)   письмо автору
 
   для: Саня   (13.08.2009 в 23:23)
 

Не накидываюсь, а рекомендую разобраться в азах. И не на юзера, а разработчика как-никак...

  Ответить  
 
 автор: sim5   (14.08.2009 в 02:22)   письмо автору
 
   для: Slo_Nik   (13.08.2009 в 17:35)
 

Каталог кеша Smarty должен иметь права на перезапись, и устанавливайте их такими, как на хосте вашем работать будет, если это 777, значит это "Портвейн" и выбирайте.
Папку закройте .htaccess, как впрочем и остальные папки Smarty.

  Ответить  
 
 автор: Slo_Nik   (14.08.2009 в 14:43)   письмо автору
 
   для: sim5   (14.08.2009 в 02:22)
 

при отсутствии файла index.php или html настройками сервера запрещён доступ к этой директории, выдаёт ошибку "403".
тогда получается, что не надо закрывать директорию через .htaccess?

  Ответить  
 
 автор: sim5   (14.08.2009 в 15:07)   письмо автору
 
   для: Slo_Nik   (14.08.2009 в 14:43)
 

>при отсутствии файла index.php или html настройками сервера.... ?

Вы подключаете шаблоны, а в браузео отдатеся их кеш, который подключается скриптом, и .htaccess этому не помеха, а вот прямой доступ к этой директории, и деректории самой Smarty, будет закрыт.

  Ответить  
 
 автор: Slo_Nik   (14.08.2009 в 15:44)   письмо автору
 
   для: sim5   (14.08.2009 в 15:07)
 

я понимаю, что .htaccess не помеха, но не могу понять зачем, какой смысл, ставить пароль на директории, если доступ и так закрыт, нет прав, из-за отсутствия файла index и так туда не войдёшь?

  Ответить  
 
 автор: sim5   (14.08.2009 в 16:02)   письмо автору
 
   для: Slo_Nik   (14.08.2009 в 15:44)
 

Какой пароль? Не надо паролей, просто закрывается доступ к файлам этой деректории:
Deny from all
и все.
Вы думаете, что отсутствие индексного файла в директории, это запрет на прямой доступ к ней?

  Ответить  
 
 автор: Slo_Nik   (14.08.2009 в 16:28)   письмо автору
 
   для: sim5   (14.08.2009 в 16:02)
 

но можно же и пароль использовать?

>Вы думаете, что отсутствие индексного файла в директории, это запрет на прямой доступ к ней?
вот тут я протупил, всё понял.

  Ответить  
 
 автор: sim5   (14.08.2009 в 18:30)   письмо автору
 
   для: Slo_Nik   (14.08.2009 в 16:28)
 

Зачем для директории, в которую ни вы входить не будете, ни тем более пользователи не должны входить, устанавливать запрос на пароль?
Директория самого Smarty, это грубо говоря набор подключаемых скриптов, все, более там делать нечего, как нечего делать и в папках шаблонов и кеша. Если возникают проблемы, и нужно просмотреть - на локальном Провоодник, в сети через FTP.

  Ответить  
 
 автор: Slo_Nik   (15.08.2009 в 00:04)   письмо автору
 
   для: sim5   (14.08.2009 в 18:30)
 

спасибо за подсказки

  Ответить  
 
 автор: Loki   (12.08.2009 в 16:06)   письмо автору
 
   для: Slo_Nik   (12.08.2009 в 15:29)
 

>на все четыре директории стоят права "0770", на "index.tpl" права "0644".
Гы... апача в каталог не пущать:)

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

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