PHP / Apache拒绝获得创建文件的权限

时间:2014-03-20 21:21:28

标签: php linux apache unix

我有一个PHP脚本,它是我正在编写的更大网站的一部分。我的笔记本电脑上运行了一个小的apache服务器,因此我可以在构建它时测试网站的不同部分。

作为网站的一部分,我希望用户从我在服务器上的一系列文件中选择。当他们选择文件并点击“下载”时,PHP脚本会收到有关要下载哪些文件的说明,将文件压缩到.zip存档中,然后将它们推送到浏览器下载。

<?php   
    $files = $_POST['files'];
    $zipname = 'ncd_data.zip';

    $zip = new ZipArchive;
    $zip->open($zipname, ZipArchive::CREATE)

    foreach ($files as $file) {
        $zip->addFile($file);
    }
    $zip->close();    

    if (file_exists($zip)) {
        header('Content-Type: application/zip');
        header('Content-Disposition: attachment; filename=ncd_data.zip');
        header('Content-Length: ' . filesize($zip));
        readfile($zip);
        exit;
    }
?>

经过测试,很明显该脚本无法创建.zip文件。在php脚本中运行exec('whoami')表明该脚本是在用户apache下运行的,我继续为apache提供创建文件所需的权限。

通过使用chmodchown,apache现在拥有755个权限,可以访问网站代码所在的'html'文件夹中的所有内容(以及拥有{{1文件夹):

html

[root@callisto var]# ls -l /var/www/html/ total 104 -rwxrwxr-x+ 1 apache root 420 Mar 20 16:54 about.php -rwxrwxr-x+ 1 apache root 346 Mar 20 15:34 about.php~ drwxrwxr-x+ 2 apache root 4096 Mar 20 15:34 css -rwxrwxr-x+ 1 apache root 1341 Mar 20 16:54 download.php -rwxrwxr-x+ 1 apache root 1331 Mar 20 15:34 download.php~ -rwxrwxr-x+ 1 apache root 349 Mar 20 16:54 index.php -rwxrwxr-x+ 1 apache root 346 Mar 20 15:34 index.php~ drwxrwxr-x+ 2 apache root 4096 Mar 20 15:34 js drwxrwxr-x+ 2 apache root 12288 Mar 20 15:34 nucleidata drwxrwxr-x+ 2 apache root 4096 Mar 20 15:58 php -rwxrwxr-x+ 1 apache root 1332 Mar 20 16:54 plot.php -rwxrwxr-x+ 1 apache root 1254 Mar 20 15:34 plot.php~ 权限以及rwx使用/var/的{​​{1}}权限。尽管如此,还是没有骰子:尽管如此,我还是在php脚本中运行setfacl命令时遇到了“权限被拒绝”的错误。我知道赋予mkdir文件夹完全777权限是一个坏主意,但我很难知道还需要做些什么来为PHP提供创建和写入文件所需的权限。

我的设置是Fedora 20笔记本电脑,PHP和Apache分别是他们的最新版本(5.5.10和2.4.7)。提前谢谢。

0 个答案:

没有答案