将'0777'字符串更改为0777八进制文件

Xel*_*akz 5 php permissions chmod octal

我的代码就像

$perm = "0777"; //this is fetch from the database
chmod("myFolder/", $perm);
Run Code Online (Sandbox Code Playgroud)

但$ perm的值不是八进制,我怎样才能将变量的数据类型更改为八进制?甚至一种替代方法也可以

sec*_*tus 7

如上所述,没有八进制数字类型.并且chmod函数接收第二个参数作为整数.隐式转换$perm并不假设该数字是八进制的.因此,您需要使用适当的函数将"八进制字符串"转换为整数.

只需使用octdec功能

$perm = "0777"; //this is fetch from the database
chmod("myFolder/", octdec($perm));
Run Code Online (Sandbox Code Playgroud)

或者是intval

chmod("myFolder/", intval($perm, 8));
Run Code Online (Sandbox Code Playgroud)

PS

var_dump('0644' == 0644);             // bool(false)
var_dump(intval('0644') == 0644);     // bool(false)
var_dump(decoct('0644') == 0644);     // bool(false)

var_dump(octdec('0644') == 0644);     // bool(true)
var_dump(intval('0644', 8) == 0644);  // bool(true)
Run Code Online (Sandbox Code Playgroud)


Bla*_*aat -1

八进制不是一种类型。整数是类型。

您想要将字符串转换为 int,并且由于该字符串以零开头,因此它将是一个八进制整数。

为此使用intval :

chmod('myFolder/', intval($perm));
Run Code Online (Sandbox Code Playgroud)