|
|
|
| Помогите, пожалуйста, решить траблу с доступом к каталогам.
Я со 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 и т.д. | |
|
|
|
|
|
|
|
для: !
(11.08.2009 в 22:18)
| | действительно, куда только смотрел? :(
Спасибо. | |
|
|
|
|
|
|
|
для: Slo_Nik
(11.08.2009 в 22:09)
| | А зачем вы определяете абсолютные пути для кеша как: C:/Sites/home/test.com/..... ? | |
|
|
|
|
|
|
|
для: 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" - результат тот же. | |
|
|
|
|
|
|
|
для: Slo_Nik
(12.08.2009 в 11:51)
| | Вот потому и не пишите в путях С:\path..... Вы что уверены, что документы вашего сайта на хосте будут лежать на диске С:? Почитайте еще раз руководство Smarty касаемо путей, и укажите пути так, чтобы не было проблем с переносимостью. | |
|
|
|
|
|
|
|
для: sim5
(12.08.2009 в 13:15)
| | я не говорил, что на реальном сервере написал пути с "C://...", на локальном изменил пути на "$this->template_dir = "./templates", точно так же делал и на реальном сервере, пробовал ещё указывать пути "$this->template_dir = $_SERVER['DOCUMENT_ROOT']."/guestbook/templates" , ни чего не помогает.
на локальном всё работает, на реальном не хочет. | |
|
|
|
|
|
|
|
для: Slo_Nik
(12.08.2009 в 11:51)
| | >всё отлично работает, а вот на реальном сервере не хочет.
я бы предположил что дело в регистре... | |
|
|
|
|
|
|
|
для: Loki
(12.08.2009 в 13:19)
| | в регистре чего?
все имена директорий и файлов в нижнем регистре | |
|
|
|
|
|
|
|
для: Slo_Nik
(12.08.2009 в 13:29)
| | возникла одна идея, проверил файл "index.tpl" в директории "templates/" функцией "is_file()" и получил ответ, что файл не является файлом.
как это исправить? возможно поэтому у меня и не работает на реальном сервере? | |
|
|
|
|
|
|
|
для: Slo_Nik
(12.08.2009 в 14:45)
| | для начала стоило бы проверить file_exists, ибо если файла нет, то ясен пень что это не файл:) | |
|
|
|
|
|
|
|
для: Slo_Nik
(12.08.2009 в 14:45)
| | А права на запись папку кеша вы установили? index.tpl - это шаблон, а у вас проблемы с какой директорией, или они у вас со всеми указанными Smarty деректорями? | |
|
|
|
|
|
|
|
для: sim5
(12.08.2009 в 15:10)
| | на все четыре директории стоят права "0770", на "index.tpl" права "0644". | |
|
|
|
|
|
|
|
для: Slo_Nik
(12.08.2009 в 15:29)
| | У вас проблемы с доступом, вам же ошибка говорит об этом:
не возможно записать в $compile_dir.... guestbook/templates_c'. Убедитесь, что $compile_dir имеет права на перезапись пользователем.... | |
|
|
|
|
|
|
|
для: sim5
(12.08.2009 в 15:44)
| | поставил на "templates_c" права "0777", на "cache" и "configs" - "0750" и на "templates" - "0755"
всё заработало.
если что то с правами не так, не то значение - поправьте, пожалуйста. | |
|
|
|
|
|
|
|
для: Slo_Nik
(12.08.2009 в 16:01)
| | Заработало, только каталог конфигов смарти по прежнему прочесть не может. | |
|
|
|
|
|
|
|
для: Slo_Nik
(12.08.2009 в 16:01)
| | "templates_c" (это и есть кеш) достаточно прав "0775", остальные на чтение. | |
|
|
|
|
|
|
|
для: 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". | |
|
|
|
|
|
|
|
для: Slo_Nik
(12.08.2009 в 17:43)
| | Ну может быть, это и от хоста зависит, у меня 775 работало. | |
|
|
|
|
|
|
|
для: sim5
(12.08.2009 в 17:52)
| | спасибо за подсказку | |
|
|
|
|
|
|
|
для: Slo_Nik
(12.08.2009 в 17:43)
| | И не должно - прав на запись туда вы же не дали... | |
|
|
|
|
|
|
|
для: Loki
(13.08.2009 в 10:11)
| | что не должно? | |
|
|
|
|
|
|
|
для: Slo_Nik
(13.08.2009 в 11:30)
| | >не хочет работать "templates_c" с правами "0775", выдаёт ошибку
и не должно работать с правами 755 | |
|
|
|
|
|
|
|
для: Loki
(13.08.2009 в 11:53)
| | Ну это смотря где, у меня прекрасно работает при 775 (drwxrwxr-x), а права фалов этой папки 644 (-rw-r--r--). | |
|
|
|
|
|
|
|
для: sim5
(13.08.2009 в 12:22)
| | При определенных условиях:
1. если апач запущен из под пользователя
2. если апач и пользователь в одной группе
3. если целевой каталог создан скриптом (читай - имеет владельцем апача)
я расположил варианты в порядке возрастания вероятности... в первом случае вообще и при 700 работать будет, другой вопрос что первые два варианта достаточно экзотичные... впрочем, как и третий. | |
|
|
|
|
|
|
|
для: Loki
(13.08.2009 в 12:50)
| | так какой оптимальный вариант прав на каталоги?
я просто пока мало об этом знаю... | |
|
|
|
|
|
|
|
для: Slo_Nik
(13.08.2009 в 17:35)
| | Так почитайте. Что-то на этом форуме у всех мания - найти "самое лучшее решение на все случаи жизни". Потому и решений много что случаи-то разные. Я вот описал случаи при которых будет работать 700 и 770. 777 будет работать во всех случаях. Вам - домашнее задание: разобраться почему. | |
|
|
|
|
|
|
|
для: Loki
(13.08.2009 в 23:16)
| | Ну что вы так на юзера накидываетесь? Может он всю жизнь сидел в виндах и не знает что такое chmod. | |
|
|
|
|
|
|
|
для: Саня
(13.08.2009 в 23:23)
| | Не накидываюсь, а рекомендую разобраться в азах. И не на юзера, а разработчика как-никак... | |
|
|
|
|
|
|
|
для: Slo_Nik
(13.08.2009 в 17:35)
| | Каталог кеша Smarty должен иметь права на перезапись, и устанавливайте их такими, как на хосте вашем работать будет, если это 777, значит это "Портвейн" и выбирайте.
Папку закройте .htaccess, как впрочем и остальные папки Smarty. | |
|
|
|
|
|
|
|
для: sim5
(14.08.2009 в 02:22)
| | при отсутствии файла index.php или html настройками сервера запрещён доступ к этой директории, выдаёт ошибку "403".
тогда получается, что не надо закрывать директорию через .htaccess? | |
|
|
|
|
|
|
|
для: Slo_Nik
(14.08.2009 в 14:43)
| | >при отсутствии файла index.php или html настройками сервера.... ?
Вы подключаете шаблоны, а в браузео отдатеся их кеш, который подключается скриптом, и .htaccess этому не помеха, а вот прямой доступ к этой директории, и деректории самой Smarty, будет закрыт. | |
|
|
|
|
|
|
|
для: sim5
(14.08.2009 в 15:07)
| | я понимаю, что .htaccess не помеха, но не могу понять зачем, какой смысл, ставить пароль на директории, если доступ и так закрыт, нет прав, из-за отсутствия файла index и так туда не войдёшь? | |
|
|
|
|
|
|
|
для: Slo_Nik
(14.08.2009 в 15:44)
| | Какой пароль? Не надо паролей, просто закрывается доступ к файлам этой деректории:
Deny from all
и все.
Вы думаете, что отсутствие индексного файла в директории, это запрет на прямой доступ к ней? | |
|
|
|
|
|
|
|
для: sim5
(14.08.2009 в 16:02)
| | но можно же и пароль использовать?
>Вы думаете, что отсутствие индексного файла в директории, это запрет на прямой доступ к ней?
вот тут я протупил, всё понял. | |
|
|
|
|
|
|
|
для: Slo_Nik
(14.08.2009 в 16:28)
| | Зачем для директории, в которую ни вы входить не будете, ни тем более пользователи не должны входить, устанавливать запрос на пароль?
Директория самого Smarty, это грубо говоря набор подключаемых скриптов, все, более там делать нечего, как нечего делать и в папках шаблонов и кеша. Если возникают проблемы, и нужно просмотреть - на локальном Провоодник, в сети через FTP. | |
|
|
|
|
|
|
|
для: sim5
(14.08.2009 в 18:30)
| | спасибо за подсказки | |
|
|
|
|
|
|
|
для: Slo_Nik
(12.08.2009 в 15:29)
| | >на все четыре директории стоят права "0770", на "index.tpl" права "0644".
Гы... апача в каталог не пущать:) | |
|
|
|