• WAMP configuration

    WAMP configuration

    My custom WAMP configuration for local development of WordPress plugins and themes.

    Currently

    • Windows 11
    • Apache server 2.4.37 (Win64)
    • MySQL Community Server (GPL) 8.0.13 for Win64 (x86_64)
    • PHP 8.0.2

    Also, phpMyAdmin 5.1.1

    Configuration

    Domains and subdomains

    Most of my local development sites are accessed as installations in a host called s.b. I prefer this to using localhost or the IP address 127.0.0.1

    Some other domains and subdomains are defined in my hosts file ( c:\windows\system32\drivers\etc\hosts )

    Apache setup

    • Apache 2.4 is actually installed in C:/apache24
    • Document root: C:/apache/htdocs
    • Document root contents:
      • Subdirectories: are one per project, each with its own WordPress installation and MySQL database.
      • The primary development folder is the imaginatively named wordpress
      • Some folders don’t contain WordPress eg bw
    • PHP 8 is configured to load from C:/php, the php_module being "C:/php/php8apache2_4.dll"

    Virtual hosts – extras/httpd-vhosts.conf

    I have more than one virtual host. The main one is for s.b with port 80 for http: and 443 configured for https: Secure Socket Layer (SSL).

    s.b.crt is the certificate and s.b.key is the RSA private key.

    My SSL certificates were created by following Deliciousbrain’s instruction video to Create Your Own SSL Certificate Authority for Local HTTPS Development for Windows.

    WordPress installations

    Some of the WordPress installations are standard WordPress installs. Others are clones of WP-a2z ( bobbingwide/wp-a2z) which is WordPress core without wp-content, ie It’s a git repository containing all versions of WordPress since version 4.5, but without plugins or themes. This makes it easy to revert to earlier versions of WordPress, if required for debugging.

    WordPress configuration file wp-config.php

    In each WordPress installation the wp-config.php file is different from the live site:

    Database settings. Some of the environments have different settings.

    /** MySQL hostname */
    define('DB_HOST', 'localhost');

    I want to see all PHP messages

    # Zero tolerance for PHP Notify messages
    define('WP_DEBUG', true );
    define( 'SCRIPT_DEBUG', true );
    if ( defined( 'WP_DEBUG' ) && WP_DEBUG ) {
            define( 'WP_DEBUG_LOG', true );
            define( 'WP_DEBUG_DISPLAY', true );
    }

    Constants used by WordPress or plugins

    # I don't want WordPress to update itself.
    define( 'WP_AUTO_UPDATE_CORE', false );
    define('WP_MEMORY_LIMIT', '1024M');
     

    I don’t try to force the site’s URL. Instead I update the entries in the wp_options table, usually using phpMyAdmin.

    // Not set in my local installations
    // define( 'WP_HOME', 'https://s.b/wordpress' );
    // define( 'WP_SITEURL', 'https://s.b/wordpress' );

    For more information about the wp-config.php file see WordPress Developer Resources wp-config.php and Developer’s Advanced Guide to wp-config

    WordPress.htaccess file

    Another file that’s different from the live site is the .htaccess file in each installation’s main folder. It’s this file that enables the magic of permalinks.

    This basically tells Apache that if the request URL is for /wordpress/ and it’s not /wordpress/index.php or a file or directory that already exists that it should change it to a request to load wordpress/index.php.

    • wordpress/index.php is the file that loads WordPress
    • there are other PHP files in the installation’s root directory that can be invoked directly eg wordpress/wp-login.php
    • Since my installs are all in sub-directories I need to edit this file for each installation.
    • I have to indicate the installation’s directory in the RewriteBase and RewriteRule directives.
    • Note: For Multi Site installs the file’s a little different.

    This file may also contain directives added by performance optimization, caching and other plugins.

    Enable compression for text output.

    Set expiration dates for static files.

    This example shows two methods to achieve the same result

    Note: These should be updated to include WebP files!

    For more information about the main .htaccess file for WordPress see WordPress Support .htaccess

    Plugins and themes

    In the wordpress subdirectory each of my own plugins and themes is a separate Git repository.

    c:\
      apache\
        htdocs\
          wordpress\
            wp-content\
              plugins\
                ... a lot of plugin folders ( over 200, not all active )
              themes\
                ... not as many themes

    The bundled plugins and themes, and the plugins catalogued in WP-a2z are also Git repositories. Other plugins and themes have been downloaded from wordpress.org or other sites.

    In the other environments many of the plugins and themes are symlinked to the wordpress environment.

    cd \apache\htdocs\wp-a2z\wp-content\plugins
    mklink /J oik-privacy-policy C:\apache\htdocs\wordpress\wp-content\plugins\oik-privacy-policy

    PHP configuration php.ini

    date.timezone = 'UTC'
    max_execution_time = 121

    See also

    My local WordPress development environment



    Published:

    Last updated:

    October 16, 2022

Tide times from tidetimes.org.uk

Tide Times & Heights for Langstone Harbour on
6th October 2026
01:34 – Low Tide ( 1.98m )
08:50 – High Tide ( 4.2m )
14:07 – Low Tide ( 2.03m )
21:12 – High Tide ( 4.19m )

Tide times from tidetimes.org.uk

Tide Times & Heights for Northney on
6th October 2026
01:32 – Low Tide ( 1.39m )
08:54 – High Tide ( 3.88m )
14:05 – Low Tide ( 1.46m )
21:23 – High Tide ( 3.86m )