Имам Ubuntu 16.04 с Apache2 и php7 на него. Не искам да чета някои лог файлове с php и да ги отпечатвам. Затова правя просто
readfile("/var/log/apache2/access.log");
Но това не работи. Получавам тази грешка:
Warning: readfile(/var/log/apache2/access.log): failed to open stream: Permission denied in /var/www/test.php on line 2
Съвсем сигурен съм, че съм задал правата правилно, Apache и php работят като www-данни, така че добавих потребителските www-данни към групите „adm“ и „syslog“, тъй като тези групи имат разрешения за четене за цялото път на файла и самия файл. Разрешенията са 640 по подразбиране, но само ако го задам на 647 например, файлът е четлив за php/apache. Дори 644 или 646 не са достатъчни.
Защо така? Трябва ли да променя нещо в конфигурацията на Apache vhost?
Добавяне: ls -alp /var/log/apache2
drw-r----- 2 root adm 4096 Oct 25 11:07 ./
drwxr-xr-x 9 root syslog 4096 Oct 25 10:39 ../
-rw-r----- 1 root adm 47861 Oct 25 14:01 access.log
-rw-r----- 1 root adm 12014 Oct 25 14:01 error.log
-rw-r----- 1 root adm 0 Oct 25 10:40 other_vhosts_access.log