我有一个输入字段,其中包含用于chmod的文件模式.
如果我使用它,它将被用作字符串,因此它会失败.我将它转换为int(intval()),它删除前导零(0777 => 777)并再次失败.如果我像这样使用它:
$int = intval($input);
$finished = 0 . $int;
Run Code Online (Sandbox Code Playgroud)
这也失败因为is_int($finished)是假的.
我怎么解决这个问题?
前导零是整数的不存在概念,因为它们在数学上是无关紧要的.在十进制表示法中,整数0777简单且完全等于777.
但是,如果您尝试将"0777"八进制表示法转换为其整数对应(511十进制)以供使用chmod(),则可以使用octdec($input).该函数接受一个字符串并吐出一个整数,完全按照它在锡上所说的完成.
当然,请确保首先执行验证,例如使用正则表达式.您不希望将全局或无效标志传递chmod()给公众,并可能将敏感文件和文件夹暴露给公众.