liquidweb/htaccess-validator

Lint and validate Apache2 Htaccess files

v0.2.0 2021-03-08 22:45 UTC

This package is auto-updated.

Last update: 2024-12-09 07:54:09 UTC


README

This is a Composer package wrapper for Liquid Web's Htaccess Validator script, enabling PHP applications to easily validate Htaccess files.

Installation

The easiest way to install the package is via Composer:

$ composer require liquidweb/htaccess-validator

As the package uses Apache2 itself to validate, it must be available within your environment. The Liquid Web Knowledge Base has instructions for installing Apache on most popular platforms.

Usage

There are two main ways to use the validator:

  1. As a stand-alone tool via the command line
  2. As a PHP library (requires proc_open to be available)

Validating Apache2 configurations from the command line interface (CLI)

The bin/validate-htaccess script accepts a configuration file for validation:

$ bin/validate-htaccess /path/to/some/file.conf

The script will return a non-zero exit code if validation errors were detected. Individual codes are documented in the script's header.

Validating Apache2 configurations within a PHP script

The LiquidWeb\HtaccessValidator\Validator class serves as a wrapper around the bin/validate-htaccess script, enabling applications to validate Apache2 configurations programmatically.

There are two ways to instantiate the class:

  1. Passing the full system path of the file under validation to the class constructor:

    use LiquidWeb\HtaccessValidator\Validator;
    
    $validator = new Validator($file);
  2. Passing the configuration directly to the ::createFromString() factory method:

    use LiquidWeb\HtaccessValidator\Validator;
    
    $validator = Validator::createFromString('Options +FollowSymLinks');

Once you have a Validator instance, you may validate it in two ways:

# Throws a LiquidWeb\HtaccessValidator\Exceptions\ValidationException upon failure.
$validator->validate();

# Return a boolean.
$validator->isValid();

Modifying the path to the validator shell script

By default, the library assumes that the validate-htaccess shell script lives in vendor/bin/.

If you're using a non-standard Composer configuration, you can explicitly specify the path by setting the HTACCESS_VALIDATOR_SCRIPT environment variable, either in your environment configuration or inline:

# Absolute system path to the shell script.
putenv('HTACCESS_VALIDATOR_SCRIPT=/some/path/to/vendor/bin/htaccess-validator');

# Will now use the Htaccess Validator script specified above.
$validator = (new Validator($file))->validate();