pclzip: права (chmod) разархивированных файлов

6epcepk

Новичок
pclzip: права (chmod) разархивированных файлов

Добрый день,
Через curl поступает zip-архив.
Разархивирую его:
PHP:
$archive = new PclZip($v['tmp_name']);
		
		$path = ($info[0] === 'a') ? '/admin/b' : '';
		
		if ($archive->extract(PCLZIP_OPT_SET_CHMOD, 0777, PCLZIP_OPT_PATH, ROOT . $path, PCLZIP_OPT_REPLACE_NEWER) == 0) {
		
			die("Error : ".$archive->errorInfo(true));
Вследствие чего файлы имеют права доступа 777, но я их не могу удалить через ФТП-клиент.
Пробовал и 4777 и для всех групп.
Нужны нормальные права чтобы архив мог заливать свежие файлы (директива PCLZIP_OPT_REPLACE_NEWER).
 

phpdev2007

Новичок
6epcepk
посмотрите любым фтп клиентом какие права на файлах, на сервере, сразу все будет ясно, плюс посмотрите какую ошибку видает редактор.
 

6epcepk

Новичок
Alexandre
Не получилось у меня подружиться с putty что-то.

Но, отвлеченно, вот кусок кода из класса:
PHP:
// ----- Write the uncompressed data
 @fwrite($v_dest_file, $v_file_content, $p_entry['size']);
unset($v_file_content);

// ----- Closing the destination file
@fclose($v_dest_file);

// ----- Change the file mtime
@touch($p_entry['filename'], $p_entry['mtime']);

// Чтоб наверняка
chmod($p_entry['filename'], 0644);
Файл создается, разрешение через FTP-клиента нормальное, но не удаляется опять-таки.
Как такое может быть, сколько раз выставлял chmod'ы в скриптах и такого не было.

На другом сервере вообще не хотят создаваться папки из архива, а с cdmod'ами все впорядке.
 

clevel

Новичок
скорее всего, через фтп закачанные файлы имеют одну юзер/группу, а при разархивировании архива - новые файлы имеют юзер/группу апача, под которым исполнился скрипт.

Обрати на это внимание.
chmod скорее всего здесь не причем..
 

6epcepk

Новичок
Файл у меня приходит через CURL и инициализация архива идет из временного файла ($v['tmp_name']).
По идее - все верно?
Попробовал закачать архив черех ФТП - аналогичная ситуация.

-~{}~ 18.12.07 23:50:

Ситуация немного прояснилась:
1. случай на одном зосте когда не создавались дочерние директории архива - safe_mode = on;
2. случай, когда невозможно удалить файлы раз архивированные скриптом - другой владелец (владельцы процесса сервера и скрипта - разные). Мое предположение сделать
PHP:
chown($p_entry['filename'], fileowner('index.php'));
для каждого файла после раз архивирования не принесли результата: отказано в доступе (ошибка: такую операцию может делать только суперпользователь, а не владелец скрипта).
---
Какие есть варианты? Всего-то навсего мне надо нормально разархивировать архив, чтобы доступ был и от владельца скрипта и от пользователям ФТП-клиентом.
 

6epcepk

Новичок
Да, с первым пунктом тут вообще все ясно, а как поступить во втором?
 

AmdY

Пью пиво
Команда форума
6epcepk, а может найти админов сервера и попытаться договориться с ними.
кстати, помогал другу настроить джумлу, там возникла такая же проблема, решил её способом fixxxer, но с одним файлом не прокатило. друг обратился к админам и больше таких проблем не возникало. в чём была проблема так и не узнал, но заморачваться нехочется.
 

fixxxer

К.О.
Партнер клуба
договориться чтобы на каждый файл chown делали? :)))
 

6epcepk

Новичок
fixxxer
Да, это верно, но владелец-то другой остается..

AmdY
Скрипт распространяется как CMS...
 

fixxxer

К.О.
Партнер клуба
а какая тебе разница какой владелец если ты ставишь 666 ?

-~{}~ 19.12.07 06:11:

а вообще это все говнохостинги. :) есть несколько способов решения задачи запуска php с привелегиями пользователя.
 

AmdY

Пью пиво
Команда форума
оставьте как фичу CMS, мол - тест на вшивость хостинга
 
Сверху