Smarty. Проблеммы с правами.

Krisha

pain in the neck
Smarty. Проблеммы с правами.

Тестирую работу Smarty на серваке: FreeBSD 4.8, PHP Version 4.3.4, Apache/1.3.27, Smarty 2.6.2

Делаю:
PHP:
init.php:
<?
error_reporting(E_ALL);

### Установки проекта

define('PRJ_WEB_ROOT' , str_replace("\\", "/", dirname(__FILE__)) . "/");

define('PRJ_INCLUDES_DIR'   , PRJ_WEB_ROOT     . 'includes/');
define('PRJ_CONTENT_DIR'    , PRJ_WEB_ROOT     . 'content/');
define('PRJ_LIB_SMARTY_DIR' , PRJ_INCLUDES_DIR . 'smarty/libs/');

### Подключаем библиотеку Smarty

require (PRJ_LIB_SMARTY_DIR . 'Smarty.class.php');
$smarty = new Smarty;

### Конфигурируем Smarty

$smarty->config_dir    =  PRJ_CONTENT_DIR . 'configs/';
$smarty->template_dir  =  PRJ_CONTENT_DIR . 'templates/';
$smarty->compile_dir   =  PRJ_CONTENT_DIR . 'templates_c/';

?>

index.php:
<?
require 'init.php';
$smarty->display('test.tpl');
?>

Warning: touch(): Utime failed: Operation not permitted in /pub/home/htdocs/includes/smarty/libs/core/core.write_file.php on line 38

core.write_file.php, cтрока 38:
touch($_tmp_file, $params['timestamp']);

Делаю перед этой строкой:
echo $_tmp_file;

Получаю:
/pub/home/htdocs/content/templates_c/4062cd399bc2f

Права на папках стоят 777. При чем ошибка вылазит когда шаблон компилица в первый раз. То есть, если сделать потом рефреш, то ошибка пропадает.

Куды копать или может руки ровнять ?
 

tony2001

TeaM PHPClub
>Права на папках стоят 777
точно?
а покажи
ls -ld /pub/home/htdocs/content/templates_c/4062cd399bc2f
 

Krisha

pain in the neck
tony2001
к сожалению нету шел доступа, я права устанавливаю при помощи ftp клиента.
 

Krisha

pain in the neck
Smarty.class.php:
var $use_sub_dirs = false;

-~{}~ 25.03.04 15:27:

в смысле уже так и было, ничего не менял...

-~{}~ 26.03.04 14:06:

Проблемма так и не решилась, файлы в папке templates_c создаются в правами 660.
 

tony2001

TeaM PHPClub
>Проблемма так и не решилась, файлы в папке templates_c создаются в правами 660.
так и в чем трабл тогда?
660 не хватает для перезаписи?
 

Krisha

pain in the neck
tony2001
Выходит, что не хватает, 10 раз перепроверил права на папки, везде стоит 777, дальше:

1. вычищаю папку templates_c
2. запускаю тестовый скрипт
3. получаю вышеуказанную ошибку
4. делаю рефреш
5. ошибка пропадает

какие из этого можно сделать выводы ?

-~{}~ 26.03.04 18:12:

Код:
posix_getpwuid(fileowner("/pub/home/scilla47/htdocs/scilla47/content/templates_c/"):
array(7) {
  ["name"]=>
  string(8) "scilla47"
  ["passwd"]=>
  string(1) "*"
  ["uid"]=>
  int(1733)
  ["gid"]=>
  int(1000)
  ["gecos"]=>
  string(8) "scilla47"
  ["dir"]=>
  string(18) "/pub/home/scilla47"
  ["shell"]=>
  string(19) "/usr/local/bin/bash"
}

posix_getpwuid(fileowner(/pub/home/scilla47/htdocs/scilla47/content/templates_c/406455af39e2d):
array(7) {
  ["name"]=>
  string(8) "scilla47"
  ["passwd"]=>
  string(1) "*"
  ["uid"]=>
  int(1733)
  ["gid"]=>
  int(1000)
  ["gecos"]=>
  string(8) "scilla47"
  ["dir"]=>
  string(18) "/pub/home/scilla47"
  ["shell"]=>
  string(19) "/usr/local/bin/bash"
}

====================
Warning: touch(): Utime failed: Operation not permitted in /pub/home/scilla47/htdocs/scilla47/includes/smarty/libs/core/core.write_file.php on line 56
 

tony2001

TeaM PHPClub
chown директории сделать можешь?
чтобы владельцем и группой-владельцем был юзер апача.
 

Krisha

pain in the neck
tony2001
сейчас попробую, только какого юзера указать - apache что ли ?
 

Krisha

pain in the neck
apache:
User/Group :: nobody(65534)/8080

chown("/pub/home/scilla47/htdocs/scilla47/content/templates_c/","nobody");

Warning: chown(): Operation not permitted in /pub/home/scilla47/htdocs/test.php on line 6
 
Сверху