php不会将文件写入子文件夹,但会写入webroot

时间:2012-01-25 21:10:12

标签: php file

我最近问过一个问题:Write over a htaccess file?

我正在尝试创建的是一个朋友的CMS系统,但没有在所述系统上存储任何ftp详细信息(像许多其他现有系统一样,如轻松的cms。注意,系统将要求成员登录到我的服务器然后从我的文件传输文件到他们自己的服务器。我无法存储其他人的ftp细节的工作是:

客户端服务器在其服务器上有一个config.php。当config.php接收到指令时,它会尝试将我的服务器(我的cms系统)中的新文件写入其webroot中的文件夹,并使用php函数fopen。

在我测试过这个系统的几台服务器上,config.php无法将文件写入webroot中的子文件夹,除非所述子文件夹上有权限777。在我上面提到的帖子中,两个回复都强烈建议不要这样做..(即不要设置777)

所以我做了另一个快速测试,结果是客户端服务器上的相同config.php可以写入webroot(在本例中为'public_html')。

问题

如何在路径上的PHP脚本: $ _ SERVER [ 'DOCUMENT_ROOT'] '/ cmssystem / config.php中';

无法写入文件夹(没有permisions 777),例如: $ _ SERVER [ 'DOCUMENT_ROOT'] '/ cmssystem /文件/';

但是可以将同一个文件写入document_root吗?在大多数服务器上也是如此吗?

1 个答案:

答案 0 :(得分:3)

这是一个非常常见的问题,这里发生的是一些服务器在启用suPHP的情况下运行(切换用户PHP,也称为suExec),以便PHP作为拥有托管帐户的用户执行,因为这通常是与您要写入的文件夹的所有者相同的用户,则只需要755权限即可写入该文件夹。

然而,一些托管公司认为PHP作为通用用户(即无人,apache等)执行更安全,这意味着用户PHP运行,不是拥有您尝试的文件夹的用户写入,因此该文件夹上的另一个组需要写入权限(即777)才能写入该目录。

除了更改权限或更改有问题帐户的托管公司之外,您无法解决此问题。

希望有所帮助!

此致 菲尔,