【问题标题】:Create a File and set Directory Permissions创建文件并设置目录权限
【发布时间】:2012-10-02 00:24:00
【问题描述】:

我正在使用下面的 PHP 代码来创建动态 xml 文件。

...
$file_name = "";
$rss_feed_dir = $_SERVER['DOCUMENT_ROOT'] . '/xml/';

chmod($rss_feed_dir, 0777);

$file = $rss_feed_dir . $file_name . '.xml';

$file_handle = fopen($file, "w");
fwrite($file_handle, $xml);
fclose($file_handle);

如果目录权限设置为 0777,则将创建该文件,并且似乎在 0755 处失败。我在许多网站上读到全球执行权限可能会带来安全风险。

我应该在这个脚本结束时 chmod 回到 0755 吗?

有没有更好的方法来设置目录权限?

【问题讨论】:

    标签: php xml


    【解决方案1】:

    我怀疑这是因为您的 rss_feed_dir 指向的目录是另一个用户拥有的目录 - 而不是用于运行您的脚本的用户。

    因此,如果您的脚本未与指定的组或用户一起运行,那么 755 权限将排除您对该目录的写访问权限。这就解释了为什么当权限为 755 时无法成功执行写入文件命令,但在 777 时成功。

    如果此 php 文件位于服务器上并从 Web 调用,请尝试修改您的目录所有权本身:

    chown -R YOUR_USER:www-data YOUR_RSS_DIRECTORY_HERE
    

    然后 chmod 到 775

    希望有帮助!

    【讨论】:

    • 如何知道 PHP 脚本属于哪个组?我想知道是否快速解决方法是将组更改为没人?
    • 对不起,我更新了我的答案。您可能需要确保目录上有正确的组权限。 775 是您可能正在寻找的。​​span>
    猜你喜欢
    • 2018-08-18
    • 1970-01-01
    • 2012-05-24
    • 2015-07-28
    • 1970-01-01
    • 2018-04-26
    • 1970-01-01
    • 2010-10-09
    • 2013-07-11
    相关资源
    最近更新 更多