ZipArchive php класс извлекает файлы как root.Зачем? - PullRequest
3 голосов
/ 30 июля 2010

У меня есть скрипт php:

$extract_dir = "./";
$extract_file = "extractME.zip";

$zip = new ZipArchive;
$res = $zip->open($extract_file);
if ($res === TRUE) {
    $zip->extractTo($extract_dir);
    $zip->close();
    echo "ok";
} else {
    echo "failed";
}

Но когда я запускаю этот скрипт, через http://www.mywebsite.com/extract.php

Все файлы на FTP отображаются с ВЛАДЕЛЬЦЕМ 'root', но непользователь ex.«Нео», как и должно быть.Таким образом, пользователь не может редактировать / переименовывать / удалять эти файлы.

Можно ли это как-то исправить (у меня есть сервер), что файлы будут извлечены с помощью ВЛАДЕЛЬЦА ИМЕНИ ПОЛЬЗОВАТЕЛЯ?

Ответы [ 2 ]

3 голосов
/ 30 июля 2010

ozzwanted, по какой-то причине ваш веб-сервер (apache) работает от имени пользователя root, поэтому любой созданный файл будет создан от имени пользователя root. Это никогда не должно иметь место. apache обычно работает как «www-data» или «httpd», или «nobody» или «god», в зависимости от дистрибутива Linux.

Я предлагаю вам взглянуть на это с точки зрения системного администратора и попросить кого-нибудь разобраться за вас, прежде чем вы начнете эксплуатироваться. (при условии, что это живой сервер)

Вы можете использовать функцию www.php.net/chown или запустить команду 'chown' в командной строке или сделать это из PHP с помощью чего-то вроде функций system () или exec ().

Удачи.

0 голосов
/ 30 июля 2010

Извлекается как пользователь, запустивший веб-сервер (примечание: вы не должны запускать его как root). Попробуйте использовать chown .

...