dedlfix: Userrechte

Beitrag lesen

echo $begrüßung;

Wenn ich mit chmod() in PHP die Rechte ändere, dann werden die Rechte oktal angegeben.

Die Funktion möchte ein Integer-Argument haben. Notfalls kommt hier die automatische Typumwandlung PHPs zum Tragen. Du kannst unter Beachtung der PHP-Eigenheiten angeben, was du willst. Wenn du allerdings die oft verwendeten Oktalwerte nutzen willst, musst du sie auch PHP-gerecht notieren, nämlich mit einer 0 vorndran.
http://de2.php.net/manual/en/language.types.integer.php

Wenn ich das gleiche in der bash tue, ist es nicht anders.

chmod in der bash ist anders. Hier arbeitet kein PHP dazwischen, das das Argument schon vorher mal interpretiert und eine Oktalzahl erkennt oder auch nicht.

Wenn ich nun statt "0644" "04644" schreibe, dann wird in der bash das SUID-Flag gesetzt. Das wollte ich damit auch erreichen.
Wenn ich das Gleiche aber in PHPs chmod() mache, ergibt das "ulkige" Ergebnisse.

Dann nimm doch nicht "04644" sondern 04644.

Ich wollte nun gerne in den Quellcode gucken, waurm das so sein könnte. Leider weiß ich nicht, wo der zu chmod() verdrahtet steht und wahrscheinlich hätte ich esowieso nichtr verstanden.

cvs.php.net -> php_src -> ext -> wenn keine spezielle zu finden ist, dann: standard -> file.c Fehlanzeige, filestat.c, derzeit ab Zeile 592.

Was macht PHP da? Die "ulkigen Ergebnisse" bekommt man auch mit "2664" oder "4664", aber eben nicht mit "0664".

Sind ja auch keine Oktalzahlen (müssen mit 0 anfangen), und als String hast du sie hier auch zitiert. Kann natürlich sein, dass du sie zur besonderen Hervorhebung in "" eingerahmt hast, aber im PHP-Quelltext ergibt das eine andere Wirkungsweise als z.B. als Argument in der bash.

echo "$verabschiedung $name";