I am using mkdir to create normally 2 nested directories for a file structure. The directories it creates are always set to 0755. The code I am using however is.
mkdir('path_one/path_two', 0777, true);
I have tried then doing
chmod('path_one/path_two', 0777);
but that only sets the final directory as 0777. What would cause mkdir not to function properly?
mkdir is functioning correctly. The intermediate directories created are set based on the current umask. You want something like:
umask(0777);
mkdir('path_one/path_two', 0777, true);
From the php manual:
The mode is also modified by the current umask, which you can change using umask().
Note that any bits that are set in umask()
are unset in the result that's used by mkdir()
. The default umask is 0022 and the default create mode for mkdir is 0777, which gives a result value of 0755. This applies for all created directories.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With