关于CHMOD的澄清

时间:2014-01-06 17:51:47

标签: php

我正在尝试创建我的第一个网站,一个用户可以在线销售东西的拍卖/在线市场。为此,用户会添加他们的项目,并通过我的网站上的表格上传它的图片。而是上传表格,我用

检查文件上传目的地
if(!is_dir($uploadpath))
{
    mkdir($uploadpath,0644,true);
}

然后创建一个目录来存储当前不存在的文件。

然而,我是编程的新手(上面的代码被复制了,我不知道CHMOD到底是什么)谷歌搜索告诉我CHMOD处理权限(即谁可以访问文件系统上的文件)并显示结果如何处理CHMOD等,但不是它实际上是什么和做什么。

从php手册,

<?php
// Read and write for owner, nothing for everybody else
chmod("/somedir/somefile", 0600);

// Read and write for owner, read for everybody else
chmod("/somedir/somefile", 0644);

// Everything for owner, read and execute for others
chmod("/somedir/somefile", 0755);

// Everything for owner, read and execute for owner's group
chmod("/somedir/somefile", 0750);
?>

从维基百科,我可以看到“写”权限允许用户添加文件,所以我可能需要给我的用户写入上传图片的权限?

另外我认为“执行”意味着运行一个文件(例如app.exe)虽然我看不出它会如何应用于网站,因为所有页面都在html / php中?

最后,“阅读”权限有何作用?如果我希望其他用户查看已上传项目的图片,是否需要授予他们阅读权限? 我希望用户上传图片,并希望其他用户查看图片,还需要阅读权限吗?

我计划在完成编码后最终使用webhost托管我的第一个网站。在这种情况下,我是否正确地说按照手册的“所有者”是webhost?如果是这样,我将如何允许我的用户在我的网站上添加/写入他们的项目和图片?我在上传文件路径时是否应该使用上面的代码我CHMOD 0644,或者我的webhost会阻止这样做。如果有,有哪些选项可用我吗?

2 个答案:

答案 0 :(得分:2)

您不需要在PHP中使用chmod文件。唯一需要读取它们的用户是PHP运行的任何用户(通常是Web服务器运行的用户)。

此外,请小心将用户上传的文档存储在Web服务器的文档根目录下。否则,他们可以上传他们想要的任何内容并执行它。始终按照您指定的名称(例如,文件根目录之外的ID号或ID哈希,没有文件扩展名)存储用户上载的文档。使用您自己的脚本访问这些文件,并使用readfile()或同等文件。

答案 1 :(得分:0)

  

“所以我可能需要授予我的用户上传权限   照片?“

不,你没有!但是,您必须为上传文件夹/目录 - 您希望上传文件的文件夹 - 提供写入权限。根据您选择允许用户上载的文件,您可以设置执行位。

  

另外我认为“执行”意味着运行文件(例如app.exe)   虽然我没有看到这将如何适用于所有网页的网站   在html / php?

真。你的php文件不需要设置执行位。设置php文件的读取位足以让它们被php解释。

  

最后,“读取”权限的作用是什么?如果我希望其他用户   要查看已上传的项目的图片,我是否需要   允许他们阅读吗?我希望用户上传图片,和   为了让其他用户查看它,还需要读取权限吗?

是的!假设您拥有自己的文件并将apache作为组,您需要为两者设置读取权限,以允许人们“阅读”或查看您的图像!

  

...根据手册说“所有者”是webhost吗?

不是,你也可以成为主人!

这个想法或者更好的做法是将文件/目录chown给所有者:www-data,和 将0644设置为文件,644表示文件的所有者可读取和写入文件,并且该文件的组所有者可以读取该文件,并且其他人都可以读取。 和 将0755设置为目录,755表示对每个人进行读取和执行访问,并为文件所有者写入访问权限