为啥我不能下载用 PHP 上传的文件?

Posted

技术标签:

【中文标题】为啥我不能下载用 PHP 上传的文件?【英文标题】:Why can't I download files uploaded with PHP?为什么我不能下载用 PHP 上传的文件? 【发布时间】:2011-09-13 04:30:07 【问题描述】:

我已经使用 php 创建了一个自定义 CMS,它会将文件上传到具有 777 权限的目录。当文件被上传时,它们被赋予 600,而 apache 是所有者,因此我不能作为主要的 FTP 用户通过 FTP 下载它们。

有人有什么想法吗?我已尝试更改权限,但由于所有者是 apache,我没有权限。

【问题讨论】:

您介意发布相关的上传代码吗? 尝试在上传脚本中 chmod 和/或 chown 您的文件。 您可以在上传时更改文件的权限。由于该操作将以apache用户身份运行,因此将被允许。 您可以在目录本身上设置粘性位,这将强制组权限应用于在其中创建的新文件。 chmod g+s /your/upload/dir. 感谢 Marc B,这很奏效。我的 VPS 提供商不允许 SSH,所以我在设置权限时遇到了麻烦。一小行 PHP 解决了我浪费的星期六晚上。 【参考方案1】:

您不能对文件进行 chmod,但 'apache' 可以:上传移动文件后,在同一脚本中更改权限。由于它是由 apache 运行的,所以允许这样做。

http://php.net/manual/en/function.chmod.php

【讨论】:

【参考方案2】:

对于上传文件,请务必注意,上传文件后未明确设置权限是一种不好的做法。

我会使用 Nanne 提供的链接并开始将其添加到您的上传脚本中。这将确保文件在您需要的每种情况下都获得适当的权限。

【讨论】:

以上是关于为啥我不能下载用 PHP 上传的文件?的主要内容,如果未能解决你的问题,请参考以下文章

为啥我从论坛里下载word、压缩包文件,下下来之后是php文件呢?

下载下来的ueditor编辑器,能直接用asp上传图片和附件吗?里面对应的asp处理文件貌似不能直接用!? 谢~

使用php下载的文件打不开,自己用着没问题,客户用就不行?

为啥下载的文件是乱码怎么办

从windows向Linux上传文件,为啥用RZ命令上传文件后,文件权限为600,而其他文件权限都为644?

nodejs为啥可以操作文件原理