Php 图像保存不需要';不适用于chmod 755,但适用于777。我该怎么办?

Php 图像保存不需要';不适用于chmod 755,但适用于777。我该怎么办?,php,chmod,Php,Chmod,我有一个网站,用户可以裁剪图像。我通常将裁剪后的图像保存在带有“755”chmod参数的文件夹下 然而,当它是755时,它就不起作用了——当我将chmod改为777时它就起作用了,我相信777是非常不安全的,所以我不想使用它 有什么不对劲吗 另外,系统的工作原理是这样的。服务器中有一些图片,PHP允许用户裁剪这些图片,当用户单击“保存”时,应将其保存在“裁剪”文件夹中。它适用于777,但不适用于755。755意味着所有者可以读/写/执行、组和所有人(公共)只能读取/执行。检查httpd的凭据。7

我有一个网站,用户可以裁剪图像。我通常将裁剪后的图像保存在带有“755”chmod参数的文件夹下

然而,当它是755时,它就不起作用了——当我将chmod改为777时它就起作用了,我相信777是非常不安全的,所以我不想使用它

有什么不对劲吗


另外,系统的工作原理是这样的。服务器中有一些图片,PHP允许用户裁剪这些图片,当用户单击“保存”时,应将其保存在“裁剪”文件夹中。它适用于777,但不适用于755。

755意味着所有者可以读/写/执行、组和所有人(公共)只能读取/执行。检查httpd的凭据。777不一定意味着它不安全,只需确保使用.htaccess通过
-ExecCGI
PHP\u标志引擎关闭
甚至
PHP.ini
配置(每个文件夹)禁用该文件夹内的PHP解析


您可以尝试使用775查看组设置是否足够。文件权限指定文件所有者可以做什么,以及其他人可以做什么(组和世界其他地方)。您仍然必须指定正确的所有者

您可能必须将文件夹的所有者更改为服务器进程的用户(如果您使用的是apache,可能是www数据),然后755应该可以工作

chown www-data:www-data /cropped

编辑:如果
/cropped
中有子文件夹,并且您想更改它们的权限,请使用
chown-R

您的/cropped目录需要由运行PHP的用户拥有


这通常是www数据,但您需要检查您的设置。

您已经从其他用户那里得到了答案。因此,我无需在这里为您进一步重复

但是,您应该真正了解755和777的含义,而不是将其视为某种psuedo安全级别设置。777并不立即意味着不安全。坦率地说,我认为您将图像上载文件夹设置为777不会立即出现问题

owner、root、php executer等不是等价的,尽管可能是相同的

这些词是以英语为基础的,你应该把它们看作是英语的价值,而不是一些外国的编程世界

Root用户就像一个独裁者。他说什么就做什么。没有人能说别的

当有一个对象时,就有一个所有者用户。你可以设置所有者可以做什么的规则:读、写或执行。 您还可以设置特定组可以执行的操作的规则。 最后,你还可以为其他人可以做的事情制定法律

现在独裁者并没有到处做所有的工作。运行PHP的人可以是一个人。拥有文件的人可以是另一个人。他们当然可以是同一个人,但这样的定义并不等同。我希望你能看到区别

这是另一个类比。想想一个私人公园。如果你允许每个人(即777)进入公园玩,你会带来某种安全风险吗?不会。
如果你有一个保险箱,你会允许谁?只有你自己(所有者),对吗?那么,在linux中,这将是700个权限。除了你自己,没有其他人有任何权限(除了独裁者,因为他可以到你家里来,杀了你,如果他愿意的话,可以拿走你的东西).

你知道文件权限是什么意思吗?如果不知道,你应该找到一个教程,这样你就知道它为什么不起作用了。755意味着root拥有对文件夹的所有访问权和权限,因此,PHP正在它上面运行。你可以试试775,这意味着所有者和组对它有写访问权,但是任何人只要读/执行它就会安全吗?775可能不会rk.nope,通常Apache进程有自己的用户/组,
public\u html
有root作为所有者,因此Apache不能修改文件,除非您将其修改为它意味着文件的所有者可以这样做-不一定是
root
。755意味着所有者可以读取/写入/执行。所有者组的成员可以读取和搜索/执行但是不写-其他人也一样。Root(永远不应该运行PHP或Apache)除非采取特殊步骤,否则我总是可以做任何事情。我如何找到PHP在Plesk上运行的用户?通常使用FTP,您可以更改chmod,并且您不能浏览文件夹,除非他使用虚拟化/vpc/专用主机。Ubuntu中的包默认有
user=www-data
group=www-data
,但是如果您不确定,您可以在/etc/apache2/envvars()@中查看此功能。非常感谢!此功能非常有效!!cheers@Aris只需创建一个文件并将这行代码放入其中。