Apache web server support special syntax checking. You can run syntax tests for configuration files only. Following two are important syntax checker option you can pass to apache binary program httpd (Red Hat/ Fedora Linux) or apache-perl (Debian Linux apache binary):
Executing the following command, that will detect syntax errors:
If you are using Debian Linux:
# /usr/sbin/apache-perl -t
Syntax OK
If you are using Red Hat Linux:
# /usr/sbin/httpd -t
Syntax OK
Where,
- -t : The program immediately exits after these syntax parsing with either a return code of 0 (i.e. Syntax OK message) or return code not equal to 0 (i.e. Syntax Error message).
Consider following example:
# /usr/sbin/apache-perl -t
Warning: DocumentRoot [/data/network/www/blogs] does not exist
Syntax OK
Replace it with -T option:
/usr/sbin/apache-perl -T
Syntax OK
The option -T is same as option -t but does not check the configured document roots (warning message disappeared).
Another example:
# /usr/sbin/apache-perl -t -S
Syntax error on line 1059 of /etc/apache-perl/httpd.conf:
Invalid command ‘CustomLogl’, perhaps mis-spelled or defined by a module not included in the server configuration
As you see error on line number 1059 need to be fixed. Use vi text editor:
# vi +1059 /etc/apache-perl/httpd.conf
After correction again retype command:
# /usr/sbin/apache-perl -t –S
Output:
VirtualHost configuration: 192.168.1.1:80 is a NameVirtualHost default server sxi.io (/etc/apache-perl/httpd.conf:1053) port 80 namevhost sxi.io (/etc/apache-perl/httpd.conf:1053) port 80 namevhost apps.sxi.io (/etc/apache-perl/httpd.conf:1062) port 80 namevhost dl.sxi.io (/etc/apache-perl/httpd.conf:1069) port 80 namevhost blogs.sxi.io (/etc/apache-perl/httpd.conf:1076)