I have a Linux server with appache as the web server. In my PHP script I am making directories with 0777
mode. the code is pretty simple as follows:
mkdir($path,0777)
when I run this script and go to my server file manager, the folder is there but the permission assigned to that folder is 0755. I can't figure out why this is happening!! when the folder is created the user column has apache in it but the permission is 0755.
You should try with the umask
$old = umask(0);
mkdir($path,0777);
umask($old);
You can try:
chmod ( string $filename , int $mode )
See if that can fix the permissions issue.
Apache might not have the permissions to change this. What you can do is. Make sure that apache is running in the same group as your current files group. Then apache will be able to make changes to that file. You can change you apache group in this apache config. Or the easiest way is to change the entire project user to be the apache user. Then apache can make w.e changes it wants.
go to the file from your server and type ls -al and look at the user and group
Could be your umask:
<?php
$old = umask(0);
mkdir($dir,0777);
mask($old);
?>
来源:https://stackoverflow.com/questions/7878784/php-mkdir-permissions