Smarty проблемы с разрешениями - PullRequest
6 голосов
/ 04 января 2011

Smarty жалуется на разрешения. Я написал небольшую инфраструктуру mvc для проекта, над которым я работаю, и мне нужно иметь возможность отображать шаблоны в каждом контроллере. Я пошел дальше и следовал инструкциям по установке Smarty и установил все параметры конфигурации в своем «фронт-контроллере» или на странице, которая перенаправляет запросы остальной части приложения. Функция testinstall говорит, что все является кошерным, но когда я пытаюсь отобразить шаблоны в моих контроллерах, я получаю это.

Предупреждение: mkdir (): в доступе отказано /var/www/HRTRL/includes/CallLog/lib/Smarty/libs/sysplugins/smarty_internal_write_file.php на линии 28 Предупреждение: переименование (/ TMP / wrt6piczo, / templates_c / 73b1662b4c376f493278f9873564df03430a0b43.file.poopy.tpl.php.): нет такого файла или директории в /var/www/HRTRL/includes/CallLog/lib/Smarty/libs/sysplugins/smarty_internal_write_file.php на линии 48 Предупреждение: chmod (): нет такого файл или каталог в /var/www/HRTRL/includes/CallLog/lib/Smarty/libs/sysplugins/smarty_internal_write_file.php на линии 50 Предупреждение: включают в себя (./ templates_c / 73b1662b4c376f493278f9873564df03430a0b43.file.poopy.tpl.php): не удалось открыть поток: нет такого файла или каталог в /var/www/HRTRL/includes/CallLog/lib/Smarty/libs/sysplugins/smarty_internal_template.php на линии 423 Предупреждение: include (): Ошибка открытие './Templates_c/73b1662b4c376f493278f9873564df03430a0b43.file.poopy.tpl.php' для включения (Include_path = ': / USR / доли / PHP: / USR / доли / груша') в /var/www/HRTRL/includes/CallLog/lib/Smarty/libs/sysplugins/smarty_internal_template.php по линии 423

Я протестировал остальную часть своего фреймворка независимо, и все, кажется, работает Мой «фронт-контроллер» правильно перенаправляет запросы на правильные контроллеры, и я, похоже, могу нормально отображать обычный HTML.

Кроме того, я ради chmodded всех папок библиотеки Smarty, а также других необходимых каталогов в 777 только для тестирования. Я все еще получаю те же ошибки прав доступа.

EDIT

Это настройки, которые я использовал для всех необходимых папок smarty.

$smarty->setTemplateDir('lib/smarty/templates');
$smarty->setCompileDir('lib/smarty/templates_c');
$smarty->setCacheDir('lib/smarty/cache');
$smarty->setConfigDir('lib/smarty/configs');

Ответы [ 6 ]

6 голосов
/ 05 апреля 2012

Правильные разрешения решили это за меня:

chown -R www-data /var/www/HRTRL
4 голосов
/ 06 января 2011

Может ли быть проблема с относительными путями?Не могли бы вы добавить полные пути для установленных вами функций **** Dir, поэтому вы будете уверены, что используете правильные местоположения.

Если вы вызываете это из /specialdir/thisdirhasonlyaPHPfile/file.phpместоположение, вы можете попасть в беду.

0 голосов
/ 10 апреля 2017

Для всех, кто имеет дело с проблемами разрешений в Smarty после выполнения всего вышеперечисленного (проверка config / chown / chmod и т. Д.). Мы столкнулись с проблемой при запуске Smarty в SE (Security Enhanced) Linux.

Каталоги compile / cache были подкаталогами внутри каталога ~ / tmp.

Политика таргетинга по умолчанию запрещает запись в каталоги tmp.

Вы можете использовать semanage для обновления контекстов / политик. Скорее всего, вам потребуется создать новую политику, чтобы назначить контекст httpd_sys_rw_content_t каталогу, который должно записывать и ваше веб-приложение.

Дополнительная информация: http://www.serverlab.ca/tutorials/linux/web-servers-linux/configuring-selinux-policies-for-apache-web-servers/ т

0 голосов
/ 08 января 2013

Согласно документации , разрешение для папки 'template_c' должно быть 775. Но иногда это не работает. Вы должны установить его разрешение 777.

0 голосов
/ 28 октября 2011

Вы должны еще раз проверить разрешение доступа для записи. У меня были те же ошибки, поэтому я установил разрешения на 777 для папки 'templates_c' и всего внутри нее, и теперь это работает. Однако мне пришлось повторить эту операцию 3 раза в Filezilla, не знаю, почему она не изменила разрешения сразу.

0 голосов
/ 05 апреля 2011

Просто закомментируйте следующую строку из файла index.php.

$smarty->caching = true;

Это решит вашу проблему.

...