Live Blog

Openlitespeed or Litespeed: Error: can’t open log file!

Introduction

This is going to be a quick one. If you’ve ever tried to visit a site on your server running Openlitespeed or Litespeed (not 100% confirmed, you might get the following output.

Error: can't open log file!

Cause? Can’t Write to Log File

It’s actually pretty straight forward, Openlitespeed and Litespeed can’t write to a log file. It’s strange that it’s returning a 200 error, when it should be returning a 500 error.

But what log file? Check the main Openlitespeed / Litespeed log /usr/local/lsws/logs/error.log for errors

# tail -f /usr/local/lsws/logs/error.log

2024-08-18 09:24:20.796796 [NOTICE] [1865589] [127.0.0.1:23046:HTTP2-1#domain.com] [STDERR] PHP Warning:  fopen(/var/www/domain.com/logs/7g.log): Failed to open stream: Permission denied in /var/www/domain.com/htdocs/7g-gridpane.php on line 129

You’ll see above that this error is related to the 7G log file from GridPane.

Fixing Log File Permissions (GridPane 7g.log)

If you’re GridPane and this is related to the 7g.log file. Then you can do the following to fix the issue.

The log file /var/www/domain.com/logs/7g.log will unfortunately become owned by root:root, and you will need to change the ownership to the system user for the site.

chown user:user /var/www/domain.com/logs/7g.log

To find the user, check the GridPane UI and under Site’s it should list the system user. Here’s

Why is this occurring?

I don’t know why this is happening, but it might be due to log rotation or some other mechanism. Reach out to GridPane support.

When the 7G is triggered on a requests, the PHP file /var/www/domain.com/htdocs/7g-gridpane.php is fired. This then writes to the appropriate log file /var/www/domain.com/logs/7g.log

The code needs to be updated to send a 500 error. Specifically the function perishablePress_7G_log here’s the updated code.

function perishablePress_7G_log() {

    list ($date, $method, $protocol, $uri, $string, $address, $host, $referrer, $agent) = perishablePress_7G_vars();

    $log = $address .' - '. $date .' - '. $method .' - '. $protocol .' - '. $uri .' - '. $string .' - '. $host .' - '. $referrer .' - '. $agent ."\n";
    $log = preg_replace('/(\ )+/', ' ', $log);

    // Attempt to open the log file and write to it
    $fp = @fopen(SEVENGLOGFILE, 'a+');
    if ($fp) {
        fwrite($fp, $log);
        fclose($fp);
    } else {
        // Log the error to the PHP error log
        error_log("Error: can't open log file at " . SEVENGLOGFILE);
        
        // Send a 500 status code
        header($_SERVER['SERVER_PROTOCOL'] . ' 500 Internal Server Error');
        exit("Error: can't open log file!");
    }
}
0 Shares: