While migrating my server data to anther server, Permission denied /home/.htaccess pcfg_openfile unable, I got this error. while restarting apache server I got following error.
[Mon Apr 25 12:15:41 2016] [crit] [client 18.104.22.168] (13)Permission denied: /home/purab/.htaccess pcfg_openfile: unable to check htaccess file, ensure it is readable
Background, I am using centos (Linux) for hosting my sites and I am using user defined directory and apache 2.4 version for server.
I was not using .htaccess file in that location, still I was getting this error. Easy solution will be disable .htaccess setting httpd.conf file If we are planning not to use the htaccess file in our project. I found many solutions but that didn’t solved my issue. above issue is specific to file permission.
Permission denied /home/.htaccess pcfg_openfile unable
If it isn’t obvious that .htaccess cannot be read by the server (either 0755 or .htacess and the rest of the tree is in www-data group), search for a higher directory root only onwer:group which does *not* have world execute access.
In order for apache to find a file, it has to search down the tree. It cannot do this if a directory which is root:root does not have global execute access.
I executed following command to change ownership of public_html folder.
chown apache -R /home/purab
usermod -a -G /home/purab apache
After this I restarted my apache server using following command.
Using above command, it solved my issue. But purab user cannot edit the files in purab folder. So I used setfacl command.
What is setfacl command?
This utility sets Access Control Lists (ACLs) of files and directories. On the command line, a sequence of commands is followed by a sequence of files (which in turn can be followed by another sequence of commands, …).
The options -m, and -x expect an ACL on the command line. Multiple ACL entries are separated by comma characters (‘,’). The options -M, and -X read an ACL from a file or from standard input. The ACL entry format is described in Section ACL ENTRIES.
Finally I executed following command which solved my issue.
chown purab: /home/purab -R
setfacl -R -m apache:rwx /home/purab
Using above command I kept purab directory permission to purab user again so purab user has all permission of directory. Using setfacl command I given permission to apache user for read, write and execute permission. It worked for me and solved my issue.