PHP: write permissions

I have long knocked my head because of this ...

I am trying to install the MyBB forum on my virtual server (CentOS 7, apache http server, php 5.4.3), and I ran into problems with file permissions. MyBB requires two files for writing, one of them is config.php, and the second is settings.php, both of them are in the directory inc.

I set the permissions for both files to 666. I wrote a simple test php page that mimics the way MyBB is tested for writeability:

<?php
echo('config: ');
$configwritable = @fopen('forum/inc/config.php', 'w');
if ($configwritable) {
        echo('yes');
} else {
        echo('no');
}
echo('<br/>');
echo('settings: ');
$configwritable = @fopen('forum/inc/settings.php', 'w');
if ($configwritable) {
    echo('yes');
} else {
    echo('no');
}
?>

Page exit

config: no
settings: yes

but if I list the files, they will be displayed as follows

root@localhost# ls -l forum/inc/config.php forum/inc/settings.php 
-rw-rw-rw-. 1 krkavec krkavec 0  2. říj 22.49 forum/inc/config.php
-rw-rw-rw-. 1 krkavec krkavec 0  2. říj 22.51 forum/inc/settings.php

? , , (), , , ( ) , .

, :

1:

root@localhost# rm -f forum/inc/config.php forum/inc/settings.php

:

config: no
settings: no

, inc .

2: settings.php

root@localhost# F=forum/inc/settings.php ; touch $F ; chown krkavec:krkavec $F ; chmod 666 $F
root@localhost# ls -l forum/inc/settings.php forum/inc/config.php
ls: cannot access forum/inc/config.php: No such file or directory
-rw-rw-rw-. 1 krkavec krkavec 0  2. říj 23.15 forum/inc/settings.php

:

config: no
settings: yes

- .

3: config.php

root@localhost# F=forum/inc/config.php ; touch $F ; chown krkavec:krkavec $F ; chmod 666 $F
root@localhost# ls -l forum/inc/settings.php forum/inc/config.php
-rw-rw-rw-. 1 krkavec krkavec 0  2. říj 23.23 forum/inc/config.php
-rw-rw-rw-. 1 krkavec krkavec 0  2. říj 23.15 forum/inc/settings.php

:

config: no
settings: yes

BAM! , config .

.

EDIT: Marc B drew010

<?php
error_reporting(E_ALL);
ini_set('display_errors', 1);

echo('config var_dump: ');
var_dump(stat('forum/inc/config.php'));
echo('<br/>config: ');
$configwritable = fopen('forum/inc/config.php', 'w');
if ($configwritable) {
    echo('yes');
} else {
    echo('no');
}
echo('<br/>');
echo('settings var_dump: ');
var_dump(stat('forum/inc/settings.php'));
echo('<br/>settings: ');
$configwritable2 = fopen('forum/inc/settings.php', 'w');
if ($configwritable2) {
    echo('yes');
} else {
    echo('no');
}
?>

( ):

config var_dump: array(26) { [0]=> int(64768) [1]=> int(19155212) [2]=> int(33206) [3]=> int(1) [4]=> int(1000) [5]=> int(1000) [6]=> int(0) [7]=> int(0) [8]=> int(1443821772) [9]=> int(1443821772) [10]=> int(1443821772) [11]=> int(4096) [12]=> int(0) ["dev"]=> int(64768) ["ino"]=> int(19155212) ["mode"]=> int(33206) ["nlink"]=> int(1) ["uid"]=> int(1000) ["gid"]=> int(1000) ["rdev"]=> int(0) ["size"]=> int(0) ["atime"]=> int(1443821772) ["mtime"]=> int(1443821772) ["ctime"]=> int(1443821772) ["blksize"]=> int(4096) ["blocks"]=> int(0) } 
config: 
Warning: fopen(forum/inc/config.php): failed to open stream: Permission denied in /var/www/html/test.php on line 8
no
settings var_dump: array(26) { [0]=> int(64768) [1]=> int(19155069) [2]=> int(33206) [3]=> int(1) [4]=> int(1000) [5]=> int(1000) [6]=> int(0) [7]=> int(0) [8]=> int(1443821763) [9]=> int(1443823158) [10]=> int(1443823158) [11]=> int(4096) [12]=> int(0) ["dev"]=> int(64768) ["ino"]=> int(19155069) ["mode"]=> int(33206) ["nlink"]=> int(1) ["uid"]=> int(1000) ["gid"]=> int(1000) ["rdev"]=> int(0) ["size"]=> int(0) ["atime"]=> int(1443821763) ["mtime"]=> int(1443823158) ["ctime"]=> int(1443823158) ["blksize"]=> int(4096) ["blocks"]=> int(0) } 
settings: yes
+4
1

- , , settings.php config.php, settings.php , .

, . , 3, , , .

, , .

EDIT. SELinux, apache . chcon -t httpd_sys_rw_content_t config.php .

+2

Source: https://habr.com/ru/post/1610044/


All Articles