ZipArchive php类以root身份提取文件。为什么?

时间:2010-07-30 10:44:51

标签: php unzip ziparchive

我有一个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上的所有文件都显示为OWNER'root',但不显示用户ex。 'neo'应该如此。因此用户无法编辑/重命名/删除这些文件。

无论如何都可以修复此问题(我拥有服务器),文件将通过'USERNAME'所有权提取?

2 个答案:

答案 0 :(得分:3)

ozzwanted,由于某种原因,您的Web服务器(apache)以root身份运行,因此它所创建的任何文件都将以root身份生成。绝不应该这样。 apache通常以'www-data'或'httpd'或'nobody'或'god'的形式运行,具体取决于linux发行版。

我建议你从系统管理员的角度来研究这个问题,然后让某人在你最终被剥削之前为你排序。 (假设这是一个实时服务器)

您可以使用www.php.net/chown函数或者您可以在命令行上运行'chown'命令,或者使用类似system()或exec()函数从PHP执行此命令。

祝你好运。

答案 1 :(得分:0)

它作为运行Web服务器的用户提取(注意:您不应该以root身份运行它)。尝试使用chown