我用Google搜索,但似乎无法让我的脚本工作。
这是我的代码
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?
答案 0 :(得分:0)
代表这样: -
chmod("tmp", 0777);
答案 1 :(得分:0)
您尚未向我们提供足够的信息来确定chmod()
失败的原因。可能是Web服务器没有足够的权限来更改目录权限。
Web服务器进程的所有者应拥有该目录或成为拥有组的成员。例如,如果root拥有 tmp ,并且您的Web服务器作为用户'apache'运行,则无法从PHP修改目录的权限。
我相信你在 php.ini 中提到的设置是用于调试,而不是神奇地“修复”chmod
。尝试将以下代码行添加到PHP脚本中,您应该获得更有用的调试输出:
ini_set('display_errors', 'On');
error_reporting(E_ALL)
答案 2 :(得分:0)
运行php守护程序或Web服务器守护程序的用户必须具有对您尝试chmod的目录的写访问权。在我的例子中,www-data是运行php的用户以及php试图运行的任何命令,它将作为www-data用户运行。
如果使用php mkdir函数创建目录,您会注意到目录的所有者是谁正在运行php或webserver守护程序。而且,php,php创建的任何目录都可以通过chmod,chown,对它做任何事情,因为它是所有者。
你可以