php - 在 php 中更改目录权限 (chmod)

标签 php linux apache chmod

我已经用谷歌搜索了,但我似乎无法让我的脚本工作。

这是我的代码

if (is_dir("tmp")) {
    if (substr(sprintf("%o", fileperms("tmp")), -4) == "0777") {
        echo "good";
    } else {
        echo "going to chmod the tmp folder to 777";
        if (!chmod("tmp", octdec(0777))) { // tried chmod("tmp, 0777) too
                echo "Oops, I couldn't chmod the /setup/tmp directory, please do this manually";
        }
    }
} else {
    echo "we'll make the folder";
}

我似乎无法让 chmod 工作,我在某处读到如果寄存器全局变量关闭那么这将不起作用(我将该设置设置为关闭)。

我遵循了 PHP.net 手册和他们在用户评论中提供的一些示例,以及一些我发现相关的堆栈溢出帖子。但也许我需要调整一些 php 设置才能让它工作?

有没有办法让 chmod 函数在不需要更改 PHP.ini 的情况下工作?

最佳答案

您没有给我们足够的信息来确定为什么 chmod()正在失败。可能是网络服务器没有足够的权限来更改目录权限。

Web 服务器进程的所有者应该拥有该目录或者是拥有组的成员。例如,如果 root拥有 tmp,并且您的 Web 服务器以用户“apache”身份运行,将无法从 PHP 修改目录的权限。

我相信您在 php.ini 中提到的设置是为了调试,而不是神奇地“修复”chmod。尝试将以下代码行添加到您的 PHP 脚本中,您应该会得到更有用的调试输出:

ini_set('display_errors', 'On');
error_reporting(E_ALL)

关于php - 在 php 中更改目录权限 (chmod),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8091220/

相关文章:

apache - 捕获所有 .htaccess - 仅当之前未找到任何内容时

php - 多选框只显示最后选择的值

php - 带有上传百分比的ajax php上传文件

php - 在 PHP 中使用资源作为数组索引

php - 如何将Movielens数据导入Mysql

c++ - C++ Linux蓝牙sdp_connect仅以root特权成功

linux - 设置包含文件内信息的变量

php - php中的system()函数是如何工作的?

php - UTF-8贯穿始终

apache - 通过 HTTPS 的隧道