Вы используете поле ввода для получения $input
.Это означает, что значение является строкой.
Вы ищете восьмеричное число внутри этого значения.intval
не обрабатывает строки как восьмеричные числа.
chmod
ожидает, что параметр $mode
будет целочисленным значением.
Чтобы преобразовать строку, содержащую восьмеричное число, вы можете использовать функцию octdec
:
$int = octdec($value); # '0777' -> 511
Так что вы можете проверить ввод и проверить, соответствует ли оно восьмеричнымчисло, например, снова преобразовав его с помощью decoct
и проверив, приводит ли оно к тому же результату:
$valid = "0".decoct($int) === $value;