在php中强制下载之前在头文件中设置文件权限?

在php中强制下载之前在头文件中设置文件权限?,php,chmod,Php,Chmod,我正在生成一个文件供用户下载,但服务器不允许我打开它,因为它需要777权限才能打开 这是我的密码 $fh = fopen("$name", 'w') or die("can't open file"); fwrite($fh, $data); fclose($fh); header("Cache-Control: public"); header("Content-Description: File Transfer"); header("Content-Length: ". filesize

我正在生成一个文件供用户下载,但服务器不允许我打开它,因为它需要777权限才能打开

这是我的密码

$fh = fopen("$name", 'w') or die("can't open file");
fwrite($fh, $data);
fclose($fh);

header("Cache-Control: public");
header("Content-Description: File Transfer");
header("Content-Length: ". filesize("$name").";");
header("Content-Disposition: attachment; filename=$name");
header("Content-Type: application/octet-stream; "); 
header("Content-Transfer-Encoding: binary");

readfile($name);

在我打开它之前,有没有办法设置它的权限,或者我该怎么做?该文件尚未创建,因此可能是一个无休止的循环。我应该创建文件,然后打开它,还是什么?

如果您不需要正在编写的临时文件$name,那么直接将其流式输出,而不创建任何文件


您可以只输出所有标题并回显输出。

如果文件名是固定的,则

  • 在服务器上创建一个空文件
  • 设置其权限
  • 从php打开它

为什么不直接使用
echo$data
?或者你还需要这个文件做其他事情吗?卢卡斯·拉林斯基是对的。您应该只在将文件发送给用户的头之后回显数据。而且它不会将其写入您的服务器,从而节省您的硬盘空间。