PHP/Apache拒绝被授予创建文件的权限
我有一个PHP脚本,它是我正在编写的大型网站的一部分。我的笔记本电脑上运行着一个小型apache服务器,所以我可以在构建网站时测试网站的不同部分 作为网站的一部分,我希望用户从服务器上的一系列文件中选择。当他们选择文件并点击“下载”时,PHP脚本会收到关于要下载哪些文件的说明,将文件压缩到.zip存档中,并将其推送到浏览器进行下载PHP/Apache拒绝被授予创建文件的权限,php,linux,apache,unix,Php,Linux,Apache,Unix,我有一个PHP脚本,它是我正在编写的大型网站的一部分。我的笔记本电脑上运行着一个小型apache服务器,所以我可以在构建网站时测试网站的不同部分 作为网站的一部分,我希望用户从服务器上的一系列文件中选择。当他们选择文件并点击“下载”时,PHP脚本会收到关于要下载哪些文件的说明,将文件压缩到.zip存档中,并将其推送到浏览器进行下载 <?php $files = $_POST['files']; $zipname = 'ncd_data.zip'; $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;
}
?>
以及使用setfacl
一直到/var/
的rwx
权限。尽管如此,没有骰子:我在php脚本中运行mkdir
命令时遇到了一个“权限被拒绝”错误。我知道给html
文件夹完整的777权限是一个坏主意,但我不知道我还需要做什么才能给PHP创建和写入文件所需的权限
我的设置是Fedora20笔记本电脑,PHP和Apache分别是它们的最新版本(5.5.10和2.4.7)。提前感谢。看起来您不需要保存zip文件,因此您最好在临时目录中创建它,然后在结尾处删除它。我可能会这样做,但这不是问题所在-首先无法创建zip文件。ls-ld/var/www/html/?的权限/所有者/组是什么?我很确定您需要将zip文件写入777目录。我会为此创建一个特殊的目录,并让cron每分钟(或任何时间)运行一次php,以取消10分钟以上所有文件的链接。您命令的progym输出是
drwxrwxr-x+6 apache root 4096 Mar 20 15:38/var/www/html/
。BarryDevSF,问题是脚本首先无法创建.zip文件,我不太清楚你的建议如何解决这个问题。
[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~