我有一个分类网站,当用户发布一个新的分类,他们可能会select上传图片。
我的PHP代码将select的图像,上传到一个图像文件夹,并相应地命名。
这里的问题是,我必须设置图像文件夹777为了这个工作。
我的问题是,应该设置什么权限? 还有任何想法,为什么它不工作,如果不是777?
如果你需要更多的投入,只要让我知道…
谢谢
UPDATE
我有一个用户(丹尼)有根访问…图像上传到的文件夹,以及“魔术image_upload.php”文件,是由用户“丹尼”拥有。 然后我试着将它们设置为chmod 764,但是当我这样做的时候,我遇到了一个问题。
看来,我似乎要设置r + w + e权限的“公共”的一切工作。
不知道为什么…
再次感谢
忘记启示, 777
是真正的野兽号码:-)
你几乎不需要这样设置权限。 当然你的图像是在像php
这样的单个用户ID下的目录中创建的。
如果是这种情况(而且应该是这样),则只需将该用户添加到该目录的特定组中,并允许组写入权限( 764
,尽管最后一位数字可能会根据其他需求而更改。
你也许可以通过改变上传脚本来确定哪个用户正在运行:
system ("id >/tmp/id.txt")
或者任何相当于PHP的运行命令行工具。
然后检查/tmp/id.txt
文件的细节。 你会有这样的东西:
uid=1000(php) gid=1000(phpgrp) groups=1000(phpgrp)
一旦你发现了( php
),找出那个images
目录的组:
pax> ls -ald images drwxr-xr-x 4 pax paxgrp 4096 2010-06-14 16:38 images
这将是上述成绩单的paxgrp
。 然后确保php
用户被添加到paxgrp
组中。 这通常可以通过更改在/etc/group
完成,例如:
paxgrp:x:1027:bob,george
成:
paxgrp:x:1027:bob,george,php
那么确保目录权限允许组(但不是世界)写入。
而且,根据你的更新,谁拥有你的PHP文件并不重要,只是谁在运行它,这可能根本就不是danny
。
否则,我可以删除硬盘上的任何文件,因为rm
属于root 🙂
找到那个用户的最快捷的方法就是改变这个文件,以便输出id
信息,正如我所建议的那样。
任何想法,为什么它不工作?
除权限之外,请确保为以下内容指定适当的设置:
看到:
还要确保:
form
指定了enctype="multipart"
print_r($_FILES);
检查文件数组print_r($_FILES);
这里的答案很好,我只是想增加一个其他的可能性。 你提到用户“丹尼”有根访问权限,丹尼拥有这些文件/目录。 使用非CLI PHP脚本,Web服务器用户应该拥有该脚本,那么你不需要公众能够读写和执行(说实话,如果你做对了,你应该能够设置权限700,但仍然可以 – 虽然通常从来没有这种限制)。