我们公司使用的是 linux 专用服务器。
每当我们使用 php 脚本创建文件夹时,apache 都拥有该文件夹,并且每次我必须通过 root 连接到服务器才能将所有者更改为用户和权限
但我不知道我应该更改哪个设置来解决这个问题。
我试图打开/关闭安全模式,但它不起作用。
如果有人可以帮助我,我会很高兴
提前致谢
您是否尝试过使用chown PHP 命令和chmod PHP 命令?
有两种方法可以做到这一点:
chown()
您可以在其中通过执行该功能更改文件权限。
或者,如果您能够使用 FTP 移动文件,则可以将文件拖到文档根目录 ( public_html/
) 之外,然后右键单击 -> 更改文件的文件权限。
CHMOD 是您想要查看的内容。777
将使任何人和所有东西都可以访问您的文件,您可以将其用作测试以确保您具有文件权限。我不建议保留权限777
。
这是一个可移植性问题,取决于您的服务器配置(即带有 SuExec 的 mod_php 或 FCGI)。
您可以在创建文件后立即尝试使用该chown
函数,但这只有在您知道实际所有者应该是谁的情况下才有效(并非总是如此)。为了克服这个问题,我编写了一个简单的方法,试图找到最好的文件模式,该模式始终确保读取和写入(以及目录的执行),而不会给予过多的权限:
function xChmod($path, $chmod = null) // adapted from phunction
{
if (file_exists($path) === true)
{
if (is_null($chmod) === true)
{
$chmod = (is_dir($path) === true) ? 777 : 666;
if (extension_loaded('posix') === true)
{
$user = posix_getpwuid(posix_getuid());
if (array_key_exists('name', $user) === true)
{
$chmod -= (in_array($user['name'], explode('|', 'apache|httpd|nobody|system|webdaemon|www|www-data')) === true) ? 0 : 22;
}
}
}
return chmod($path, octdec(intval($chmod)));
}
return false;
}
基本上,如果您省略第二个$chmod
参数,默认情况下它将0777
用于文件夹和0666
文件,但是,如果 PHP 在非标准用户下运行,它会将模式减 22,产生0755
文件夹和0644
文件。请记住,这仅适用于已经存在的文件,因此如果您要创建目录,则需要采取额外的预防措施。