Home  >  Article  >  Backend Development  >  Warning: DocumentRoot error solution

Warning: DocumentRoot error solution

WBOY
WBOYOriginal
2016-07-30 13:30:141883browse

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
cd/var /li b/pgsql/ data /base

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.

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Previous article:php_arrayNext article:php_array