我已经知道php中fileperms函数的输出必须是八进制数,但是当我使用它时,我在输出中得到了一个十进制数,我对此感到困惑。我用mkdir函数创建了一个目录(所以默认权限应该是0777),但是当我用fileperms函数显示权限时,它返回了16895,这甚至不是一个八进制数,所以我把它转换成十进制,得到了40777,这才是真正的答案,所以我的问题是,这个函数什么时候返回八进制值,它是否返回一个十进制?还是它总是返回十进制数,我应该使用sprintf之类的函数将其转换为八进制?
qlfbtfca1#
基于PHP文档:以数字模式返回文件的权限。此模式的低位与chmod()所期望的权限相同,但在大多数平台上,返回值还将包含有关文件类型的信息,作为filename。下面的示例演示了如何在POSIX系统(包括Linux和macOS)上测试特定权限和文件类型的返回值。所以如果你使用这样的代码,这将解决这个问题:
<?php echo substr(sprintf('%o', fileperms('/mydirectory')), -4); ?>
1条答案
按热度按时间qlfbtfca1#
基于PHP文档:
以数字模式返回文件的权限。此模式的低位与chmod()所期望的权限相同,但在大多数平台上,返回值还将包含有关文件类型的信息,作为filename。下面的示例演示了如何在POSIX系统(包括Linux和macOS)上测试特定权限和文件类型的返回值。
所以如果你使用这样的代码,这将解决这个问题: