Considering security during installation, we planned to place DocumentRoot in a separate partition, so we created a directory specifically for it in the logical partition: /Dmnr
In order to mount this partition, set /etc/fstab to:
Code:…
LABEL=/Dmnr /Dmnr ext3 defaults 1 2
After the directory is created, copy the website content into www/html in the directory, and modify /etc/httpd/conf/httpd.conf as follows:
[php]
…
DocumentRoot “/Dmnr/www/html”
…
…
[/php]
When restarting Apache, the following error message appears:
Code: #service httpd restart
Starting httpd: Warning: DocumentRoot [/Dmnr/www/html] does not exist
[ OK ]
Of course, the server will not work properly. Apache thinks this is not a directory! But if you point DocumentRoot "" to other directories, there will be no problem, and the server will work normally.
Solution:
1. SELinux configuration (omitted...), please refer to:
http://www.chinalinuxpub.com/read.php?wid=1010
http://blog.josesun.org/archives/2004_08/2
2. Modify html directory permissions:
1. Check the website content directory
[php]
#ls -Z /Dmnr/www/html
[/php]
The status is:
[php]
-rwxr-xr-x someuser somegroup index.php
…
[/php]
2. Obviously there is no SELinux permission, so make the following modifications:
[php]
chcon -R -t httpd_user_content_t /Dmnr/www/html
[/php]
Looking at it again, this is what it looks like:
[php]
-rwxr-xr-x someuser somegroup user_u:object_r:httpd_sys_content_t index.php
…
[/php]
Restart httpd and normal php will work.
3. Database
1. Mysql
But when reading and writing the database, it will still be rejected by SELinux. Go to /var/lib/mysql or /var/lib/pgsql and see that there is no problem. The permissions are as follows:
[php]
-rw-rw——- mysql mysql root:object_r:mysqld_db_t ibdata1
-rw-rw——- mysql mysql root:object_r:mysqld_db_t ib_logfile0
-rw-rw——- mysql mysql root:object_r:mysqld_db_t ib_logfile1
drwx—— mysql mysql root:object_r:mysqld_db_t mysql
srwxrwxrwx mysql mysql root:object_r:mysqld_var_run_t mysql.sock
drwx—— mysql mysql root:object_r:mysqld_db_t test
[/php]
But if you look under the test library where the data is placed, you will see that the self-built table still does not have SELinux permissions. It doesn’t matter, just modify it:
[php]
chcon -R -t mysqld_db_t /var/lib/mysql
[/php]
Note! The SELinux attribute here is mysqld_db_t
2. pgsql
I also opened the PostgreSQL library, but failed to modify properties using this method. The error occurred:
[php]
chcon: can’t apply partial context to unlabeled file pgsql/data/base/23456
chcon: can’t apply partial context to unlabeled file pgsql/data/base/12345
[/php]
Go to /var/lib/pgsql/data/base and look. It turns out that attributes cannot be applied to self-built libraries 12345 and 23456. I was in a mess looking for information, and I didn’t have a clue for a long time, so forget it!
[php]
#su - postgres
The above introduces the solution to the Warning: DocumentRoot error, including the relevant content. I hope it will be helpful to friends who are interested in PHP tutorials.