Ugacomp

How to test the Apache server for Syntax errors

Where necessary, you may need to have access to a VPS server so you can follow how to implement the steps in this article.  You can get a cheaper VPS Server from Contabo with 4vCPU cores, 8GM RAM, and 32TB Bandwidth for less than $5.50 per month. Get this deal here now

Table of Contents

Cloud VPS S

$5.50 Monthly
  • 4 vCPU Cores | 8GB RAM

CLOUD VPS M

$15.50 Monthly
  • 6 vCPU Cores | 16GB RAM

CLOUD VPS L

$17.50 Monthly
  • 8 vCPU Cores | 24GB RAM

In the context of Apache HTTP Server, syntax errors refer to mistakes or issues in the configuration files that Apache uses to define its behavior. These configuration files typically include the main configuration file (httpd.conf) and various additional files or directories that are included in the main configuration.

When Apache encounters syntax errors in its configuration files, it fails to start or restart, and it provides an error message indicating the location and nature of the error. Common syntax errors include:

  • Typos: Misspelled directives, module names, or file paths can lead to syntax errors.
  • Missing semicolons or parentheses: Incorrectly terminated lines or missing required punctuation can cause syntax errors.
  • Invalid directives or parameters: Using directives or parameters that are not recognized by Apache or are not applicable in the given context can result in syntax errors.
  • Incorrect order of directives: Some directives must be specified in a specific order. Placing them in the wrong order may cause syntax errors.

Here are the various ways to check and test for apache syntax errors:

Using the apachectl configtest command

This is the recommended method, as it is simple and easy to use. To use this method, open a terminal window and type the following command:

sudo apachectl configtest

Where there is an error

If there is a syntax error detected by the apachectl configtest command, the output will look something like this:

AH00526: Syntax error on line 10 of /etc/httpd/conf/httpd.conf:
Invalid command 'SerrverRoot', perhaps misspelled or defined by a module not included in the server configuration

In this example:

  • AH00526 is the error code.
  • Syntax error on line 10 of /etc/httpd/conf/httpd.conf specifies the file and line number where the syntax error was found.
  • Invalid command 'SerrverRoot', perhaps misspelled or defined by a module not included in the server configuration provides information about the specific error, indicating that there’s a typo in the command ‘SerrverRoot’.

When there is no error

If there are no syntax errors, the command will output the following message:

Syntax OK

If the test indicates “Syntax OK,” you can safely restart Apache to apply the changes:

apachectl restart

Using the systemctl

The systemctl command is typically used for controlling and managing services on Linux systems that use systemd as their init system. To check for syntax errors, you can run the following command to check the Apache service status:

systemctl status apache2

If your Apache service is named differently (e.g., httpd), replace apache2 with the appropriate service name.

When there is an error

The systemctl status command will display the status of the Apache service and provide information about any errors, including syntax errors. Here’s a sample output that includes a hypothetical syntax error:

● apache2.service - The Apache HTTP Server
   Loaded: loaded (/lib/systemd/system/apache2.service; enabled; vendor preset: enabled)
   Active: failed (Result: exit-code) since Mon 2024-02-13 12:00:00 UTC; 5s ago
  Process: 12345 ExecStart=/usr/sbin/apachectl start (code=exited, status=1/FAILURE)

Feb 13 12:00:00 your-server systemd[1]: Starting The Apache HTTP Server...
Feb 13 12:00:00 your-server apachectl[12345]: AH00526: Syntax error on line 10 of /etc/apache2/apache2.conf:
Feb 13 12:00:00 your-server apachectl[12345]: Invalid command 'SerrverRoot', perhaps misspelled or defined by a module not included in the server configuration
Feb 13 12:00:00 your-server systemd[1]: apache2.service: Control process exited, code=exited status=1
Feb 13 12:00:00 your-server systemd[1]: apache2.service: Failed with result 'exit-code'.
Feb 13 12:00:00 your-server systemd[1]: Failed to start The Apache HTTP Server.

In this example:

  • Syntax error on line 10 of /etc/apache2/apache2.conf indicates the file and line number where the syntax error was detected.
  • Invalid command 'SerrverRoot' provides details about the specific syntax error.

To resolve this issue, you would go to the specified file (/etc/apache2/apache2.conf in this case), navigate to line 10, and correct the typo (in this example, changing ‘SerrverRoot’ to ‘ServerRoot’). After making the necessary corrections, you can restart Apache using systemctl restart apache2.

When there is no error

When there are no errors, the systemctl status output for Apache would look like this:

● apache2.service - The Apache HTTP Server
   Loaded: loaded (/lib/systemd/system/apache2.service; enabled; vendor preset: enabled)
   Active: active (running) since Mon 2024-02-13 12:00:00 UTC; 5s ago
     Docs: https://httpd.apache.org/docs/2.4/
 Main PID: 12345 (apache2)
    Tasks: 55 (limit: 4915)
   Memory: 120.0M
   CGroup: /system.slice/apache2.service
           ├─12345 /usr/sbin/apache2 -k start
           ├─12346 /usr/sbin/apache2 -k start
           └─12347 /usr/sbin/apache2 -k start

Feb 13 12:00:00 your-server systemd[1]: Starting The Apache HTTP Server...
Feb 13 12:00:00 your-server systemd[1]: Started The Apache HTTP Server.

In this case:

  • Active: active (running) indicates that the Apache service is running without issues.
  • The Main PID (process ID) shows the ID of the main Apache process.
  • The Tasks, Memory, and CGroup sections provide additional information about the service’s resource usage.

This output suggests that Apache is running successfully without any syntax errors or other issues.

Using the journalctl command


The journalctl command is used to query and display messages from the journal, which includes system logs on Linux systems using the systemd journal service. To check for Apache syntax errors, run the following command to display the journal logs related to the Apache service:

journalctl -u apache2

If your Apache service is named differently (e.g., httpd), replace apache2 with the appropriate service name.

If you need to specifically check for syntax errors without restarting the Apache service, use the following command:

journalctl -u apache2 | grep "Syntax error"

This command filters the output to only show lines containing “Syntax error.”

Check the error logs

Apache logs errors to its error log file. Look for error messages in the log to identify the location and nature of the syntax error.

You can use a text editor or commands like cat or tail to view the contents of these log files. For example:

cat /var/log/apache2/error.log

or for real-time monitoring:

tail -f /var/log/apache2/error.log

RECOMMENDED READING: How can I check Apache error logs?

Manually review apache configuration files

Manually inspect the configuration files, paying close attention to the lines referenced in the error messages.

You can use a text editor or commands like cat to view the contents of these configuration files. For example:

cat /etc/apache2/apache2.conf

To edit the Apache configuration file, you can use nano or vim editors

sudo nano /etc/apache2/apache2.conf

Hire us to handle what you want

Hire us through our Fiverr Profile and leave all the complicated & technical stuff to us. Here are some of the things we can do for you:

  • Website migration, troubleshooting, and maintenance.
  • Server & application deployment, scaling, troubleshooting, and maintenance
  • Deployment of Kubernetes, Docker, Cloudron, Ant Media, Apache, Nginx,  OpenVPN, cPanel, WHMCS, WordPress, and more
  • Everything you need on AWS, IBM Cloud, GCP, Azure, Oracle Cloud, Alibaba Cloud, Linode, Contabo, DigitalOcean, Ionos, Vultr, GoDaddy, HostGator, Namecheap, DreamHost, and more.
 

We will design, configure, deploy, or troubleshoot anything you want. Starting from $10, we will get your job done in the shortest time possible. Your payment is safe with Fiverr as we will only be paid once your project is completed.