2011-04-12 277 views
0

我有一个脚本,我在管理控制面板中使用,以便用户轻松更改某些配置文件的写入权限,但我遇到了一些问题。PHP chmod()不会将权限更改为0444

有两个主开关,一个允许用户将文件更改为'可写'=> 0777,另一个保护'=> 0444。这第一个工作正常,但第二个,当我运行它,没有错误显示,它的行为就好像它已成功更改权限,但在FTP中查看显示该文件实际上是0644,看起来它不能成功更改为0444。有任何想法吗?

+4

更改为'0444'对于交换机并没有多大意义,因为您再也无法拥有写入权限,因此永远无法将其切换回来。 – jeroen 2011-04-12 22:51:07

+0

PHP可能没有权限将其更改为“0444”。 – iamandrus 2011-04-12 22:58:12

+0

没有理由删除所有者的写入。如果有的话,会出现一些严重的服务器配置问题。 – 2011-04-12 23:02:14

回答

0

执行PHP的帐户必须先拥有该文件,然后才能修改权限。 “www-data”或“apache”是常见的用户帐户。

同时让全局可读或可写的东西是非常糟糕的主意。使其可执行也是一个坏主意。您可能需要400和chmod 500

0

我认为这种方法是错误的,php总是需要写权限才能在将来改变任何事情,所以硬文件只读权限是不可行的。

解决方案是数据库表或其他配置文件,用于跟踪哪些文件被锁定,哪些文件可以更改(以及由谁......)。然后,您可以添加php检查,以查看某个用户是否可以更改某个文件。