Tag Archives: FAQ

Wamp-Developer Server FAQ

Custom DocumentRoot Locations

WampDeveloper expects all websites to be contained under folder C:\WampDeveloper\Websites\ (and it’s best to leave this as-is), but you can work around this by using NTFS “Junction Points” to make a link between an outside folder and either the website’s entire containing folder or the website’s \webroot (DocumentRoot) folder.

First, create a website via WampDeveloper, it will create a website DocumentRoot folder such as:

Then create an NTFS “Junction Point” from the website’s webroot folder to the real location…

1. Delete (or move to new location) the website’s existing DocumentRoot folder:

2. Then from the command line (WampDeveloper’s System Tab, Command Line button) execute (all on one line):
mklink /j C:\WampDeveloper\Websites\www.example.com\webroot C:\Users\YourName\Documents\Web\ProjectName\WebsiteRoot

*Note that C:\Users\YourName\Documents\Web\ProjectName\WebsiteRoot has to already exist.

This way you’ll have your real C:\Users\YourName\Documents\Web\ProjectName\WebsiteRoot folder (where the files reside) and a link to that folder from C:\WampDeveloper\Websites\www.example.com\webroot (which is what WampDeveloper will use).

Notes -

“Junction Points” only work between local drives of the system and OS (between local volumes), and will not link to networked drives or remote shares.

It is also not usually possible to directly link the folders of websites, nor the database folder, to a NAS device.

To use network shares, you would need to change Apache’s account from “LocalSystem” to an account that has network share access. Under Windows, while “LocalSystem” can access TCP/IP, it does not have permissions to access network shares.

Non-local file system access will significantly slow down Apache.

Upgrading WampDeveloper Versions

The cleanest and best way to do an upgrade between both minor (v4.2.0.1 to v4.2.0.3) and major versions (v4.2 to v5.0) of WampDeveloper Pro is to perform a clean re-installation followed by a website + database transfer procedure (if needed, to maintain all websites and databases)…

Clean Re-Installation of WampDeveloper

1. Click the Uninstall link at bottom of Components Tab. The un-installation process will not delete any files or databases.

2. Rename folder C:\WampDeveloper to C:\WampDeveloper.old. If Windows does not allow the folder to be renamed, then some files are still open or in-use. Reboot your system to close everything out.

3. Install new version of WampDeveloper to the previous location (ex: C:\WampDeveloper). Then reboot.

4. Use Websites Tab to re-create your websites so all new and updated Virtual Hosts files, other configuration files, and website folders are created.

(for the next websites + databases transfer processes, stop Apache and MySQL…)

Transfer Websites

If you need to preserve your previous websites…

1. Copy from C:\WampDeveloper.old your \Websites folder over the C:\WampDeveloper\Websites folder (copy-over, overwrite all).

* Do not just delete and replace the folder, it should be rather copied-over the existing folder (to preserve default DocumentRoot folders which might not have existed in the previous version).

Transfer MySQL Database Files

If you need to preserve your previous databases…

Note that:

WampDeveloper 4.1 used MySQL 5.1 with database location:

WampDeveloper 4.2 used MySQL 5.5 with database location:

WampDeveloper 5.0 uses MySQL 5.6 by default, but can also switch to using MySQL 5.5 and 5.1; with each major MySQL branch maintaining its own database files (because the data format/schema of the files is different for each MySQL branch):

  • MySQL 5.6 as \WampDeveloper\Database\mysql-data-56\
  • MySQL 5.5 as \WampDeveloper\Database\mysql-data-55\
  • MySQL 5.1 as \WampDeveloper\Database\mysql-data-51\

If: Upgrading WampDeveloper Versions (v4.2 to v5.0)

1. Place the previous database files in the new location…

Ex: Delete all files in folder \WampDeveloper\Database\mysql-data-56\, and copy all files from \WampDeveloper.old\Database\* back into this location.

2. The database files, when moved under a newer major MySQL branch, have to be updated for that branch by running (from System Tab, command-line button):


* MySQL needs to be started and running for mysql_upgrade.exe to work (also once it’s finished, make sure to restart MySQL).

If: Re-Installing The Same WampDeveloper Branch (v4.2 to v4.2)

1. Move back in your \Database folder (replace in entirety, don’t copy-over).

Nothing else needs to be done as your MySQL branch remains the same.

If: Upgrading WampDeveloper v4.1 to v4.2 (Special Case)

1. Download v4.2:

2. Replace the \Database folder.

3. Due to a my.ini configuration change (for logfile size) between WampDeveloper v4.1 and v4.2 (and the way MySQL 5.5 behaves), MySQL won’t start until these files are removed:
C:\WampDeveloper\Database\ib_logfile0, and ib_logfile1 (you might only have one)

* You can usually safely delete these files, but in some circumstances and edge-cases, they could contain data that is not yet part of some InnoDB tables.

4. Run MySQL’s datafiles upgrade program (from System Tab, command-line button):


* MySQL needs to be started and running for mysql_upgrade.exe to work (also once it’s finished, make sure to restart MySQL).

Re-Install phpMyAdmin’s Database

When phpMyAdmin is upgraded, its existing database should also be re-installed.

Make sure MySQL is running, open the command-line (from System Tab, command-line button), and execute the following commands:

Open the MySQL shell -

mysql -u root -p

Drop and recreate the phpMyAdmin database -

DROP DATABASE phpmyadmin
SOURCE C:/WampDeveloper/Tools/phpMyAdmin/examples/create_tables.sql

* If you have not set a password for MySQL account: root, leave the ‘-p’ part out.

* Make sure to update the path used in the above SOURCE line if WampDeveloper was installed on a different drive (the above example is for drive C:).

Migrate Custom Changes

If you had any custom changes made to the Apache, PHP, or MySQL configurations, the VirtualHost files, AWStats, etc, those changes would need to be re-implemented.

A quick way to see the difference between two configuration files (previous vs. new), or between all files in two directories (ex: between WD 4.1 and WD 4.2 \WampDeveloper\Config\ folders), is to use a tool such as WinMerge (or WinDiff if you have VS.NET installed).

Howto Update WampDeveloper’s Apache PHP MySQL Versions

WampDeveloper can switch between all provided versions of Apache, PHP, and MySQL automatically, while retaining all websites, configurations, databases, etc.

The process is exactly the same for Apache, PHP, and MySQL.

We will use PHP as an example here.

To switch or update to the latest provided PHP version…

1. Go into the Components Tab, PHP sub-tab.

2. Click on the download link for the version of PHP you’d like to use.

For example: php-

(*note that there are Standard and FCGI versions of PHP provided)

3. After downloading the PHP version, extract the contents of the zip directly into this folder:

Important -

If you’ve downloaded and unzipped the above PHP version (5.5.11) correctly and into the proper Versions folder, this file path should now be valid and exact:

Most of the issues happen here – everything gets unzipped into the wrong folder, into an deeper/extra sub-folder, or the inner files get extracted without their containing folder.

4. In the Components Tab, top right corner, there is a group named “Select Subscription”. Click on its “Channel” drop-down box, it will list items: Current, Stable, Legacy.

Select Channel “Current” – and all the Apache, MySQL, PHP branches on system and in that channel will become select-able via their check-boxes.

(*this step is only for WampDeveloper v5; WampDeveloper v4 has only 1 channel)

5. Then check-mark the above PHP version (5.5.11) in Components Tab, PHP sub-tab.

If you can’t check-mark it, it’s been unzipped into the wrong place. Otherwise, try closing and opening again the WampDeveloper application.

6. Click “Update To Selected”. WampDeveloper will do the rest. All your websites, the MySQL Database, configurations, and everything else, will remain as-is.

The User-Interface will switch to the new versions in about 10 seconds.

Building Apache 2.2 on Windows

Building Apache 2.2 on/for Windows

Step by step instructions for building Apache 2.2.x with mod_deflate and mod_ssl on Windows using VS.NET 2008 (VC9 to match official PHP 5.3 builds).


1. Download Apache’s httpd-2.2.26 source code and extract as C:\build\httpd-2.2.26

2. Download zlib-1.2.8 source code and openssl-0.9.8y source code and extract into httpd-2.2.26\srclib

3. Rename httpd-2.2.26\srclib\zlib-1.2.8\ and httpd-2.2.26\srclib\openssl-0.9.8y\ to zlib\ and openssl\ (remove the version info from the directory name).

4. Download apr-iconv-1.2.1-win32-src-r2.zip source code and extract into httpd-2.2.26\srclib

5. Rename httpd-2.2.26\srclib\apr-iconv-1.2.1\ to apr-iconv\ (remove the version info from the directory name).

Build Environment

The build requires the following tools to be installed, and to be in your system’s %PATH% (environmental variable):

1. VS.NET 2008 and Windows SDK 6.1
2. perl – C:\build\Perl
3. nasm – C:\build\nasm
4. Specific GnuWin32 tools: awk (“gawk” renamed to “awk”), bison, flex, sed – C:\build\gnuwin32

Build Apache

1. Open Windows SDK 6.1 cmd.exe (*using 6.1 rather than 7.1 to match official PHP build)
2. SetEnv.cmd /Release /XP /X86
3. “C:\Program Files\Microsoft Visual Studio 9.0\Common7\Tools\vsvars32.bat” (*not needed since we are using the SDK’s environment cmd.exe window)
4. set path=%path%;C:\build\gnuwin32;C:\build\nasm
5. + set path variable to include location to perl.exe

6. CD C:\build\httpd-2.2.26
7. perl srclib\apr\build\lineends.pl (convert line-endings from Linux to Windows style)
8. perl srclib\apr\build\cvtdsp.pl -2005 (convert DSP files from VC6 to VS2005 format)
9. Open Apache.dsw with VS.NET 2008 to convert ALL to current format (from 2005 to 2008) and to create some *.vcproj files. Then File > Save All. Exit.

10. CD C:\build\httpd-2.2.26\srclib\zlib

11. (*Note – taken from contrib\masmx86\bld_ml32.bat)
(*Note – builds ASM implementations of the functions longest_match() and inflate_fast())
ml /coff /Zi /c /Flmatch686.lst contrib\masmx86\match686.asm
ml /coff /Zi /c /Flinffas32.lst contrib\masmx86\inffas32.asm

12. (*Note – _CRT_SECURE_NO_DEPRECATE and /wd4996 will disable deprecation warnings)
NMAKE -f win32\Makefile.msc LOC=”-D_CRT_SECURE_NO_DEPRECATE /wd4996 -DASMV -DASMINF” OBJA=”match686.obj inffas32.obj”
MT -manifest zlib1.dll.manifest -outputresource:zlib1.dll;2

13. CD C:\build\httpd-2.2.26\srclib\openssl

14. (*Note – IDEA cipher in OpenSSL is patented for commercial use)
(*Note – NASM is preferred over MASM for building OpenSSL)
PERL Configure VC-WIN32 –openssldir=/Wamp/Apache/bin enable-camellia disable-idea
NMAKE -f ms\ntdll.mak

15. CD C:\build\httpd-2.2.26

16. NMAKE -f Makefile.win INSTDIR=C:\Wamp\Apache installr
(*make sure this folder does not exist – that nothing is not already installed there)

17. CD C:\WampDeveloper\Components

18. (*Note – to preserve all PDB files into another folder – 300+ files)
C:\Wamp>xcopy /S Apache\*.pdb Apache-2.2.26-pdb-files\

19. CD C:\Wamp\Apache

20. del /s *.pdb

21. move conf\openssl.cnf bin\


If you are going to run PHP via FCGI (NTS releases of PHP), build mod_fcgid against the above installed Apache package (against C:\Wamp\Apache; not C:\build\httpd-2.2.26).

1. set APACHE2_HOME=C:/Wamp/Apache
2. devenv /useenv mod_fcgid.dsw (*to generate VC6 to VS.NET sln file)
3. Convert ALL. Then File > Save All.
4. Build > Configuration Manager. Solution – Release. Build Solution.
5. Copy C:\build\mod_fcgid-2.3.7\modules\fcgid\Release\mod_fcgid.so into C:\Wamp\Apache\modules\ dir.
6. Copy C:\build\mod_fcgid-2.3.7\modules\fcgid\Release\mod_fcgid.pdb into C:\Wamp\Apache-2.2.26-pdb-files\modules\ dir.

Extra Database Drivers for Apache


The ODBC driver is included by default on Windows. To add additional database drivers, first ensure that your LIB and INCLUDE environment variables include the directories which contain the .lib and .h files for your database. Add a DBD_LIST to your NMAKE command, which should be be set to a space-separated list of the desired drivers. For example - if MySQL is in C:\MySQL and SQLite is in C:\SQLite: 

SET LIB=%LIB%;C:\MySQL\lib\opt;C:\SQLite
NMAKE -f Makefile.win  INSTDIR=C:\Wamp\Apache DBD_LIST="odbc mysql sqlite3"  installr

Unlock and Unblock the Windows Hosts File

Some anti-virus, anti-sypware/malware, and firewall software locks the Windows Hosts file so no one can edit it (by maintaining an open file-handle with no write share permissions on this file).

The file is -

The most common Hosts file locker is SpyBot Search & Destroy. Others can be: ZoneAlarm, SpywareBlaster, Ad-Aware, WinPartol, HostsMan, etc.

Try to locate the application(s) that are responsible for this, and turn off the Hosts file lock in their settings (or uninstall/remove the application).

Unlocking the Windows Hosts File

Spybot S&D

With the Advanced Mode active
Tools section
IE Tweaks section
Uncheck: "Lock hosts file as protection against hijackers"

*you might need to start Spybot by right-clicking on it, and selecting ‘Run as admin’


Firewall - Main - Advanced Button - Advanced Settings
Uncheck: "Lock Host File"

*you might also need to disable or configure ZoneAlarm’s OSFirewall

Other Applications

There are free tools you can use to find out who/what is locking this file. They will show you which process is maintaining the lock, and you can infer by the process’s name/path what the application is. Then open the application and go through the application’s settings.


Lock Hunter

Windows Sysinternals Process Explorer

Exclude Hosts File From Scans

Aside from unlocking the Hosts file, you’ll also need to make sure changes to this file are not marked as malicious and then undone – by excluding the Hosts file location from scanning.

Windows Defender & Security Esentials

On Windows 8, open Windows Defender. On Windows 7 and lower, open Windows Security Esentials.

Settings - Excluded files and locations
File locations: (type in...)
Click Add, and then Save changes


Settings - Threats & Exclusions - Exclusions - Settings
Add - Select file or Folder:


1. If you are unable to see this file, change Folder View options to: show hidden files and folders, show known file extensions, and NOT hide protected files.

2. The true HOSTS file path (under all Windows versions) is defined in this Registry key:

3. Howto reset the Hosts file to it’s original default state.

4. BitDefender can prevent WampDeveloper from changing the Hosts file. Process C:\WampDeveloper\WampDeveloper.exe should be added to BitDefender’s Exclusion list.

WAMP is Running Very Slow

How to make your WAMP run lightning fast again.

These steps to speed up your Apache, PHP, and MySQL web-server platform on Windows will work for any WAMP, including WAMP Server and XAMPP. But some of the directory and file paths used here are specific to WampDeveloper Pro (just substitute in the paths of your environment).


Windows Hosts file

Edit the Windows Hosts file and remove the localhost to IPv6 loopback (::1) resolve/mapping.

Edit file -

Comment out the line by adding a ‘#’ in front:

# ::1 localhost

If “localhost” gets resolved to IP address “::1″, the request (not able to find an IPv6 listening socket) might still get routed back to IP address (via timeout, fall-back, or some other mechanism), causing unnessasary delays for connections (anywhere from 1 second to 30 seconds).

Make sure that “localhost” is correctly mapped to the IPv4 looback address “″ (…that this line is not commented out): localhost

*The Windows Hosts file is usually set read-only, and requires Administrative permissions to edit. Some applications (SpyBot, ZoneAlarm, etc) can maintain an edit lock on this file, and Microsoft Defender (and Security Essentials) sometimes detects changes to this file that it thinks are malicious, and changes this file back to its original state. See how to unlock the Windows Hosts file.


Either unbind IPv6 from your network adapter (NIC card), or completely disable IPv6 on your system.

Problems with Windows and IPv6 have been known to add an additional half a second on the initial load-time of each request.


*Since IPv6 can be important to Windows, if this change does not resolve any issues (does not help to speed up WAMP), you should undo it.

Firewall and Anti-Virus software

Some Firewall and anti-virus software have been known to significantly slow down Apache and MySQL (such as Bitdefender, Avast, NOD32, Zone Alarm).

Try disabling them to see if it makes a difference (including the native Windows Firewall, Defender, and Security Essentials applications).

If it does, open their settings, and add the httpd.exe and mysqld.exe paths to the list of excluded programs that should not be interfered with.


*You’ll need to do this for each version of Apache and MySQL that you use.

Also exclude the MySQL Database directory from any checks.


And possibly WAMP’s Temporary directory from any checks.


Power Plan

Change Windows’ Power Plan (also called Power Options, in Control Panel) from the default of “Balanced” (or “Power Saver”) to “High Performance”. “Balanced” restricts CPU Scaling. This can increase performance 50%.

Local Issues


Reset Winsock and TCP/IP back to their original state. Then reboot.

netsh winsock reset
netsh int ip reset c:\resetlog.txt

(*run from an admin level command-line; right-click cmd.exe, select ‘run as admin’)

Other software can attach filters to Winsock, and change the TCP/IP parameters, which causes Apache to stop responding to requests (slow page load, half page load, etc).


Make sure your system is not using old, invalid, non-working, and slow DNS Servers.

ipconfig /all

Wireless LAN adapter Wireless Network Connection:
   DHCP Server . . . . . . . . . . . :
   DNS Servers . . . . . . . . . . . :

The above should list the DNS Servers assigned to you by your ISP (via DHCP), or display a list of public DNS Servers that are set via your Router or OS settings.

Flush Windows DNS Cache:

ipconfig /flushdns

Your Browser

Slow response times for Chrome, Firefox, and IE can be indicative of:

A. Bad Proxy settings that are timing out -

Bypass proxy server for local addresses by creating Exceptions for your domain-names, and IP address

B. Different Plugins, and Phishing and Malware protection settings -

Check your Browser’s active plugins, try disabling them. Check protection settings, exclude your domain-names.

C. Stale cached results -

Clear your Browser’s Cache. Also run Window’s Disk Cleanup.

Clear Your WAMP Log Files

Apache maintains website access and error logs that can grow in size very quickly. PHP also has similar logs (if enabled via configuration).


Once Apache log files grow in size to above several 100MB, performance issues can arise.

Also the Temp folder holds lots of session and temporary data files that don’t get properly cleaned up, which causes it’s own issues.

You can clear out the Log and Temp files like this -

Make sure Apache and MySQL are not running.

Open the command-line (run: cmd.exe).

Delete all the websites log files -

del /S C:\WampDeveloper\Logs\*log.txt

Delete all the temporary files -

del /S C:\WampDeveloper\Temp\*

Since this is a pure wildcard filename delete (*), it will ask you if you want to delete all the files each time it finds a new sub-directory… As it prompts you, press the ‘y’ or ‘Y’ key, then press the ‘Enter’ key; or add in the /Q switch (del /S /Q …) to tell it not to prompt you at all.

The above will delete all the log files and all the temp files, within all the sub-directories. Make sure you do this carefully (that you are using the right paths)!

If you do this manually, make sure to never delete the directories and sub-directories, just the files in them.



Turn log buffering On. This will cause Apache to buffer logs for multiple requests instead of writing them out individually to the log file – and improve disk I/O on a heavily accessed web server.

BufferedLogs On


Set the maximum number of free memory that every Apache thread is allowed to hold without attempting to give it back to the OS. Setting this value to 2048 KB (2MB) might prevent the Apache process from growing too large, as this will typically restrict its process max size to threads * MaxMemFree.

MaxMemFree 2048


Decrease the default amount of Apache Worker threads that the Apache process creates on startup to handle concurrent requests. Each Worker thread takes up system resources. The default number of 64-150 Worker threads under most WAMPs is too high.

ThreadsPerChild 32
ThreadLimit 32

EnableMMAP and EnableSendfile

Make sure EnableMMAP and EnableSendfile are not turned Off (they are On by default) as they use the OS’s abilities to speed up file access and delivery.

EnableMMAP On
EnableSendfile On


Make sure Win32DisableAcceptEx is not present in the configuration as it disables a faster way of accepting network connections on Windows (instead of AcceptEx() it uses accept()).


*Under Apache 2.4, the function of Win32DisableAcceptEx has been replaced with the folowing configuration using the AcceptFilter directive:

AcceptFilter http none
AcceptFilter https none

*Warning when using WAMP Apache 2.4 and IE9+. For some reason IE9+ requests (IE9 is the minimum version tested, so it could be an issue with IE8 too) will break under Apache 2.4 (but not under Apache 2.2). In my case, the first request from IE will usually not start nor complete, though subsequent requests (but only when performed within a 3 second window after the first request) will. The only solution to this is to use the above ‘AcceptFilter … none’ configuration. Setting ‘KeepAlive On/Off’ makes no difference. The Apache error log shows this line: (OS 64)The specified network name is no longer available. : AH00341: winnt_accept: Asynchronous AcceptEx failed.


HostnameLookups should always be Off, as otherwise every request’s IP address will need to get resolved to a host or domain-name.

HostnameLookups Off

MySQL over localhost

Always use IP address ’′ instead of ‘localhost’, host-name, or a domain-name to make a connection to MySQL. Not doing so can cause delay issues due to Host file problems, improper DNS, routing between IPv4 and IPv6, domain resolves, and time-outs.

In 99.9% of all set ups, MySQL runs on the same system the PHP scripts are connecting from, and is bound to (listening-on)… All PHP scripts should be making the connection to MySQL directly via IP

Make sure your scripts’ (and webapps’) configuration files do so, and that the MySQL account they use has its Host: field set to so that connection is allowed.

Example Wordpess configuration -

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

Example phpMyAdmin configuration -

/* Server parameters */
$cfg['Servers'][$i]['host'] = '';

If a PHP script attempted to connect to MySQL via a host-name or a domain-name, that request would need to get resolved via DNS to an IP address, and that IP address would need to get routed back to a listening socket on the local system.

Also, if MySQL (and phpMyAdmin) will never be accessed from outside, you can disable MySQL’s DNS resolves and Host cache…

Edit my.ini, section [mysqld]:


*With this change, you’ll need to make sure all MySQL accounts are set to Host:

MyISAM over InnoDB

If your database access pattern is mostly read-only (less than 15% writes – typical for most webapps like WordPress), try using MyISAM tables. But if it’s write heavy, consider
using InnoDB tables.

Database Buffer Size

Edit my.ini:

Try updating the buffer sizes to 1/4 or 1/2 of your RAM -

For MyISAM tables (caches indexes only, not the data)

key_buffer_size = 256M

For InnoDB tables (caches both indexes and data)

innodb_buffer_pool_size = 512M
innodb_log_file_size = 128M

innodb_log_file_size should be 1/4 of the innodb_buffer_pool_size value.

Changing the value of innodb_log_file_size will either cause MySQL to fail to start, or for the InnoDB Engine to not load. You’ll need to delete (or move out just in case) file(s) C:\WampDeveloper\Database\ib_logfile0 and ib_logfile1 (if it exists). This is a bit unclean, but if everything was flushed and shut down properly, should not be problematic.

The other settings I would not mess with. They hardly ever give anything more than marginal returns, or none at all.

Even the above mentioned settings will have diminishing results with increased values on the average system.

You’re mostly looking to update the existing settings (and not introduce new ones) to set the buffer-sizes of InnoDB and MyISAM to hold all indexes and data in memory as a percentage of your available RAM, and the log sizes as a percentage of the buffer sizes, and leaving everything else alone. As other settings are marginal, introduce complexity, are way too specific (and override good default and autos), or are just not good for the health of the Database.


The only other MySQL setting that can produce good performance gains – changes the way the above buffer is written out to the above log file, and how the whole thing is flushed to disk.

innodb_flush_log_at_trx_commit = 2


The default value of 1 is required for full ACID compliance. With this value, the log buffer is written out to the log file at each transaction commit and the flush to disk operation is performed on the log file.

With a value of 0, any mysqld process crash can erase the last second of transactions. The log buffer is written out to the log file once per second and the flush to disk operation is performed on the log file, but nothing is done at a transaction commit.

With a value of 2, only an operating system crash or a power outage can erase the last second of transactions. The log buffer is written out to the file at each commit, but the flush to disk operation is not performed on it. However, the flushing on the log file takes place once per second also when the value is 2. Note that the once-per-second flushing is not 100% guaranteed to happen every second, due to process scheduling issues.



Make sure php.ini has date.timezone set to a value. Otherwise PHP will attempt to figure out which data-time zone to use on every call to a date related function.

Surprisingly, an unset date.timezone value has drastic performance implications.


Update php.ini’s realpath_cache_size to a much larger value from the default 16K.

realpath_cache_size = 1M

For this to work, open_basedir cannot be set, and safe_mode cannot be On. See – https://bugs.php.net/bug.php?id=52312


Updated the webapp’s MySQL user account (via \phpmyadmin) to change the “Host:” field from “localhost” to “″.

Then update the webapp’s config file to reflect the change.

For example, edit Magento’s configuration file -

Update line -


To -



Typical -
Reset the internal rewrite-rules in wp-options table by clearing the value via \phpmyadmin.

Ultimate -
Refresh the entire wordpress database by Exporting it into an XML file via the Import/Export plugin. Then re-install wordpress (delete the WP database and access the WP website), and re-import the XML file via that same plugin.


Clear (truncate) the session table and watchdog table via \phpmyadmin.

Clear the Cache under Drupal > Configuration > Development > Performance.

Resetting MySQL Root Password

The official MySQL docs are not very clear (and also leave several parts out) on how to reset the MySQL root password -

It’s much simpler and easier than they make it out to be -

These instructions to reset the root password will work for any MySQL installation on Windows, including WAMP Server and XAMPP. But some of the file paths used here are specific to WampDeveloper (just update paths to your environment).

1. Reboot/restart your system.

2. Stop the MySQL Service.

You can do so via:
A) Command Line – Run cmd.exe as admin, then execute: net stop MySQL
B) Window Services Manager – Run services.msc, select MySQL Service, stop it.
C) WampDeveloper’s System Tab – Select MySQL Service, stop it.

3. Create file C:\mysql-init.txt with the following contents -

UPDATE mysql.user SET Password=PASSWORD('xyz123') WHERE User='root';

This SQL will set the root password to: xyz123

4. Open the command-line as admin (via WampDeveloper’s System Tab), run this command -

mysqld --defaults-file=C:\\WampDeveloper\\Config\\Mysql\\my.ini --init-file=C:\\mysql-init.txt

*Note the drive letter of the WampDeveloper folder and the mysql-init.txt file path used, update to your environment.

This will attempt to start a MySQL process, using your my.ini file (which contains the needed paths to the Database folder and other settings), and on startup executing the SQL in the provided file (to change the root password).

5. You should now see a blinking cursor. The MySQL process is now running. After a few seconds, close the command-line window.

6. Terminate/exit the above running MySQL process by opening up another command-line window as admin and running this command -

mysqladmin -u root -p shutdown

When it asks you for the password, enter the above new root password: xyz123

7. Start the MySQL Service via WampDeveloper’s System Tab.

8. All root accounts (host: localhost,, ::1) can now be accessed by password: xyz123

Note – Opening the command-line or running cmd.exe “as admin”, means that the command-line instance has Administrative privileges granted to it. Simply double-clicking on cmd.exe will not usually open it in this mode. You have to right-click cmd.exe and select ‘Run as admin’. The command-line button in WampDeveloper’s System Tab always opens it in admin mode.

Accessing MySQL or phpMyAdmin From Outside

MySQL Access From Outside

To allow direct client connections to MySQL from outside systems…

Edit MySQL’s configuration file -

Change MySQL’s IP binding from “″ to “″:

bind-address =

This will allow MySQL to listen on all the assigned IPs of the system (including, such as the LAN IP and possibly the Public IP (if you’re not behind a Router).

Then you’ll need to -

Update the MySQL user account’s (the account to be allowed access to from outside) “Host:” field to either: “%” (which means it can be accessed from ANY IP) or to the specific outside system’s IP address. This part has nothing to do with the local IPs or the server’s public IP… It’s all about the client IP. You can do this via phpMyAdmin (Users Tab), or via the MySQL Shell.

* This is only done to allow direct-to-MySQL connections from outside, and is NOT done for accessing phpMyAdmin from outside. In the later case phpmyadmin always accesses MySQL locally (from

* Remember to set the correct Windows Firewall rules to allow incoming port 3306 connections. Windows Firewall will block these by default.

* Your Router will need to be configured to “port-forward” all incoming port 3306 TCP + UDP connections to the LAN IP of the server MySQL is running on. Otherwise, the Router will not know what to do with the incoming connections / to what system to forward them to.

phpMyAdmin Access From Outside

To allow login access to phpMyAdmin from an outside system…

Create MySQL Account

Login to \phpmyadmin locally (via user: root) and create 2 new user accounts with the same name and password, one with the “Host” field set to “″ and one with the “Host” field set to “localhost”.

The “Host” field is set so because phpMyAdmin is a server-local script that always accesses MySQL from IP: (or Host:localhost) regardless of the accessing user’s location. The “Host:” value is what MySQL checks when a connection is established to it, and if it does not match, access is refused.

Grant this account specific permissions only on the databases it should be able to read/write.

Update phpMyAdmin Access Permissions

WampDeveloper Pro provides an additional level of security to phpMyAdmin via a user-name + ip-address access list in phpMyAdmin’s config.inc.php file. All users are blocked by default (from non-local access) and have to be specifically white-listed.

Update the access list by adding in “allow mysql-account-user-name from all” to allow that account the ability to login to \phpmyadmin from any outside IP…

Edit phpMyAdmin’s configuration file -

Insert access permissions for the username and the allowed IP address (or IP range) into the array:

 *  phpMyAdmin does no user management and will not cross-check the MySQL account's host with the incoming connection's ip/host
$cfg['Servers'][$i]['AllowDeny']['order'] = 'deny,allow';
$cfg['Servers'][$i]['AllowDeny']['rules'] = array(
    // deny everyone by default
    'deny % from all',

    // allow all users from the local system
    'allow % from localhost',
    'allow % from',
    'allow % from ::1',

    // add more usernames and their IP (or IP ranges) here -
    // ...

    "allow mysql-account-user-name from all",

* For this case: you do NOT need to switch MySQL from listening/binding on to (keep my.ini “bind-address =″), as phpMyAdmin is a local script that accesses MySQL locally regardless of the accessing user’s IP.

* You should: create a new MySQL account to use for connecting from outside, give it only specific permissions on the databases it should be able to read/write, try not to re-use user:root, nor change any existing accounts.

* The only way to logout of phpMyAdmin is to fully close the Browser.

* WampDeveloper doesn’t have a password for user:root set by default (since it’s secured to local network access only). If you do set the password, make sure to do so for all root accounts (, localhost, ::1), and update WampDeveloper.xml with the new password (if you need the WebApps Tab functionality to work).

Setting the default Timezone for PHP to use

The default time-zone used and displayed by PHP is UTC (Coordinated Universal Time)… Hence why it might look several hours off from your *local* time.

While sometimes it’s best to leave the internal time-zone of PHP set on UTC (as it is a international time standard) and then convert (in PHP code) the UTC date-time value to whichever time-zone you’d like to utilize and display…

To set your system’s or server’s PHP to use a specific time-zone…

Setting PHP’s Global TimeZone via php.ini

You can tell PHP to use your time-zone by setting the proper value of “date.timezone” in php.ini.

Edit file:

Change this -

date.timezone = "UTC"

To this -

For West Cost:


For East Cost:


For Central Time:


Save file (and be careful not to change it’s extension when doing so). Restart Apache.

The list of time zones for PHP is here -
For America
For the rest of the World

Setting PHP’s Per-Website TimeZone via VirtualHost

You also have the option of leaving PHP’s global default on UTC (in php.ini), but changing it per-website…

Edit the website’s HTTP and HTTPS VirtualHost files (select website in WampDeveloper’s Websites Tab, click the VirtualHost buttons to open those files). Then within the <VirtualHost> block, insert -

<IfModule php5_module>
php_admin_value date.timezone "America/New_York"

Or use directive “php_value” in the above line instead – if you also want to allow .htaccess files and PHP scripts in that website to be able to further change that value at run-time.

Save the VirtualHost files. Restart Apache.

Note that this will only work if PHP is ran as an Apache module (mod_php), and not as a FCGI process (PHP-FCGI) because that process is separate from Apache and can’t be configured by it.

Setting PHP’s Per-Directory TimeZone via .htaccess

For setting the time-zone per PHP script’s folder/directory…

Edit the website’s .htaccess file and add in the proper “php_value” setting (note that you can’t use “php_admin_value” in .htaccess files) -

<IfModule php5_module>
php_value date.timezone "America/New_York"

Save the .htaccess file. There is no need to restart Apache after .htaccess edits.

In some cases, the time-zone might already be set there already.

This is the more portable way of setting the proper PHP values for your websites and scripts, but as mentioned above, those directives only work for mod_php and do not work for PHP-FCGI.

Setting PHP’s Per-Script TimeZone via Code

Use the PHP function ini_set() to set your runtime values in script code…

ini_set("date.timezone", "America/New_York");

This is a good option if you are running PHP-FCGI, or are unable to make changes to php.ini, or can’t edit the website’s VirtualHost and .htaccess files.


It is important to always have a data.timezone value set. Otherwise, with this value undefined, PHP will:

1. Generate an error/warning for every time the date() and getdate() functions are called.

PHP Notice: in file /index.php on line x: date(): It is not safe to rely on the system's timezone settings. You are *required* to use the date.timezone setting or the date_default_timezone_set() function.

2. Attempt to guess which timezone to use via OS settings, environment variables, and algorithms. In some cases this can negatively impact server performance by a factor of 2-5x (especially PHP 5.3 on Windows)!

Apache Crash Recovery

Automatically Restart Apache

If Apache crashes and does not restart by itself, you can make Windows restart it automatically.

Use Windows’ Service Recovery abilities to restart Apache on each crash…

Click the Services button in WampDeveloper’s System Tab, select the Apache Service (double-click it), in its Properties go to the Recovery tab, select to restart this service on each crash:

First failure: Restart the Service
Second failure: Restart the Service
Subsequent failures: Take No Action

Reset fail count after: 1 (days)

Everything else should be de-selected.

“Service Recovery” only works when the service exits unexpectedly, otherwise this won’t work.

Note that when Apache exits with status code 255, it restarts automatically without having to have Windows Services Manager restart it:

> [Sun Oct 30 13:28:15 2013] [notice] Parent: child process exited with status 255 -- Restarting.
> [Sun Oct 30 13:28:16 2013] [notice] Apache/2.2.20 (Win32) mod_ssl/2.2.20 OpenSSL/0.9.8r configured -- resuming normal operations

WampDeveloper’s Apache log file:

PHP Extensions

If you experience Apache crashing every couple of days, try disabling the APC or eAccelerator PHP opcode module…

Edit file:

Near the end, comment out the entire “[APC]” or “[eAccelerator]” section by inserting a “;” at the beginning of each line in that section.

Save file. Restart Apache.

Also do the same for XDebug and any other PHP extensions listed at the end of php.ini.

Apache Settings

Edit file:

Comment out this line (add a # infront)-

ThreadStackSize 4194304

Apache’s default ThreadStack size is very low on Windows (1MB or less), and is 8MB on Linux. WampDeveloper attempts to set this to 4MB as some webapps and PHP scripts that where developed on Linux assume too much and might require additional memory.

Other times a large value here can have consequences that will result in Apache segmentation faults when a webapp (such as WordPress) starts to receive moderate amounts of connections/traffic.