Why can't PHP create a directory with 777 permissions?

PHP's mkdir() function, which is used to create a new directory, defaults to using the server's current umask setting when determining the permissions of the newly created directory. The umask is a value that is subtracted from the default permissions to determine the actual permissions of a newly created file or directory. For example, if the default permissions are 666 and the umask is 002, the actual permissions of the new file will be 664.

If the server's umask is set to a value that does not allow for 777 permissions, then the mkdir() function will not be able to create a directory with 777 permissions. The server administrator can change the umask setting to allow for more permissive permissions, but this may be a security risk and is not recommended.

Additionally, PHP's chmod() function can be used to change the permissions of a directory after it has been created, but it can only be used to change the permissions to a value allowed by the server's current umask setting.