(Nachtrag, Erläuterung)
bearbeitet von TS> umask nutzt die führende Null nicht zur Anzeige einer Oktalzahl; stattdessen erwartet umask drei oder vier Integers, das erste Zeichen ist dabei optional und wird für die seltener genutzten Special-Permissions (setuid, setgid und sticky) genutzt.
Um 02:00 Uhr morgens erliegt man wegen des Nachlassens der Aufmerksamkeit oft kleinen Irrtümern.
**Was Du beschreibst gilt durchaus, aber eben für den 40 oder 50 Jahre alten(¹) Linux/Unix-Befehl "umask" in einer Linux/Unix, [NexTSTEP, OPENSTEP oder MacOS-Shell](https://de.wikipedia.org/wiki/OPENSTEP).**
Der erwartet entweder eine Symbolfolge (a.k.a. 'String') (r.g. 'u=rwx,g=rw,o=') oder eine stets oktal angegebene, ganze Zahl (640) als Argument für die zu setzenden, zu erteilenden oder zu entziehenden Rechte.
**PHP indes vermutet bei einer Folge von Ziffern ohne führende Symbole (0, 0x, 0b) oder gar Stringbegrenzern (', ") einen Integer** [Dezimalwert] und reicht den so an die Funktion umask() weiter. [Ein Oktalwert wird in PHP durch die führende Null vor den Ziffern als Oktalwert (und das Fehlen von Stringbegrenzern) deklariert. Du könntest ebensogut heaxdezimal (beginnend mit `0x`) oder binär (beginnend mit `0b`) notierte Werte übergeben.](https://www.php.net/manual/en/language.types.integer.php).
Versuche mal:
~~~PHP
<?php
echo 0b1000; echo PHP_EOL;
echo 010; echo PHP_EOL;
echo 0x8; echo PHP_EOL;
?>
# Ergebnis ist stets:
# 8
~~~
Falls Du es probieren willst helfen Dir die Funktionen decoct(), octdec(), decbin(), bindec() und base_convert() aus dem Handbuch um die Darstellungsformen zu ermitteln und dann im Programm zu notieren.
Allerdings liefern bzw. erwarten diese eine oktale (dezimale, binäre) **Stringdarstellung**. Funktionen, die einen Integer als Argument erwarten, werden sich vorraussichtlich beschweren wenn Du denen statt dessen einen von decoct(), decbin() oder base_convert() gelieferten String übergibst.
----
1) Damalige, mangels Erfahrung "verbrochene" Entwurfsprinzipien für Programmiersprachen gelten heute vielen als "seltsam". Die Entwicklung und Beliebtheit so mancher einst berühmten Programmiersprache (z.B. Perl) leidet auch darunter.
(Nachtrag, Erläuterung)
bearbeitet von TS> umask nutzt die führende Null nicht zur Anzeige einer Oktalzahl; stattdessen erwartet umask drei oder vier Integers, das erste Zeichen ist dabei optional und wird für die seltener genutzten Special-Permissions (setuid, setgid und sticky) genutzt.
Um 02:00 Uhr morgens erliegt man wegen des Nachlassens der Aufmerksamkeit oft kleinen Irrtümern.
**Was Du beschreibst gilt durchaus, aber eben für den 40 oder 50 Jahre alten(¹) Linux/Unix-Befehl "umask" in einer Linux/Unix, [NexTSTEP, OPENSTEP oder MacOS-Shell](https://de.wikipedia.org/wiki/OPENSTEP).**
Der erwartet entweder eine Symbolfolge (a.k.a. 'String') (r.g. 'u=rwx,g=rw,o=') oder eine stets oktal angegebene, ganze Zahl (640) als Argument für die zu setzenden, zu erteilenden oder zu entziehenden Rechte.
**PHP indes vermutet bei einer Folge von Ziffern ohne führende Symbole (0, 0x, 0b) oder gar Stringbegrenzern (', ") einen Integer** und reicht den so an die Funktion umask() weiter. [Ein Oktalwert wird in PHP durch die führende Null vor den Ziffern als Oktalwert (und das Fehlen von Stringbegrenzern) deklariert. Du könntest ebensogut heaxdezimal (beginnend mit `0x`) oder binär (beginnend mit `0b`) notierte Werte übergeben.](https://www.php.net/manual/en/language.types.integer.php).
Versuche mal:
~~~PHP
<?php
echo 0b1000; echo PHP_EOL;
echo 010; echo PHP_EOL;
echo 0x8; echo PHP_EOL;
?>
# Ergebnis ist stets:
# 8
~~~
Falls Du es probieren willst helfen Dir die Funktionen decoct(), octdec(), decbin(), bindec() und base_convert() aus dem Handbuch um die Darstellungsformen zu ermitteln und dann im Programm zu notieren.
Allerdings liefern bzw. erwarten diese eine oktale (dezimale, binäre) **Stringdarstellung**. Funktionen, die einen Integer als Argument erwarten, werden sich vorraussichtlich beschweren wenn Du denen statt dessen einen von decoct(), decbin() oder base_convert() gelieferten String übergibst.
----
1) Damalige, mangels Erfahrung "verbrochene" Entwurfsprinzipien für Programmiersprachen gelten heute vielen als "seltsam". Die Entwicklung und Beliebtheit so mancher einst berühmten Programmiersprache (z.B. Perl) leidet auch darunter.