我已经用谷歌搜索了,但我似乎无法让我的脚本工作。
这是我的代码
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/