Tag Archives: FAQ

Wamp-Developer Server FAQ

Howto Start MongoDB and Enable php_mongo in WAMP

Start MongoDB

WampDeveloper comes with MongoDB located in folder:
C:\WampDeveloper\Tools\mongodb

MongoDB can either be started:

A) Manually from the command-line:

mongod --config C:\WampDeveloper\Tools\mongodb\mongodb.conf

B) Or by double-clicking entry “MongoDB” in WampDeveloper’s Applications Tab, in which case, WampDeveloper will run file:
C:\WampDeveloper\Resources\run\tools.mongodb.start.bat

The MongoDB server will run as long as the command-line window is open.

Enable php_mongo

To connect and talk to the MongoDB server via PHP code, PHP extension php_mongo must be loaded.

1. Edit file:
C:\WampDeveloper\Config\Php\php.ini

2. Uncomment section:

[Mongo]
extension=php_mongo.dll
mongo.allow_empty_keys=0
mongo.chunk_size=262144
mongo.cmd="$"
mongo.default_host="127.0.0.1"
mongo.default_port="27017"
mongo.is_master_interval=15
mongo.long_as_object=0
mongo.native_long=0
mongo.ping_interval=5

(* uncomment by removing “;”, section is located near end of file)

3. Save file and restart Apache.

Connecting To and Using MongoDB

A REST interface to some MongoDB stats and information is provided on URL:
http://127.0.0.1:28017/

Example PHP code to test the operations of the MongoDB server is provided here:
http://blog.mongodb.org/post/24960636131/mongodb-for-the-php-mind-part-1

Howto Start Memcached and Enable php_memcache in WAMP

Start Memcached

WampDeveloper comes with memcached located in folder:
C:\WampDeveloper\Tools\memcached

Memcached can either be started:

A) Manually from the command-line:

memcached.exe -l 127.0.0.1 -p 11211 -m 128 -t 4

B) Or by double-clicking entry “memcached” in WampDeveloper’s Applications Tab, in which case, WampDeveloper will run file:
C:\WampDeveloper\Resources\run\tools.memcached.start.bat

The memcached server will run as long as the command-line window is open. The “-m” option specifies the size (in MB) of memory to use.

Enable php_memcache

To connect and talk to the memcached server via PHP code, PHP extension php_memcache must be loaded.

1. Edit file:
C:\WampDeveloper\Config\Php\php.ini

2. Uncomment section:

[Memcache]
extension=php_memcache.dll
memcache.allow_failover="1"
memcache.max_failover_attempts="20"
memcache.chunk_size="8192"
memcache.default_port="11211"
memcache.hash_strategy="standard"
memcache.hash_function="crc32"
memcache.protocol=ascii
memcache.redundancy=1
memcache.session_redundancy=2
memcache.compress_threshold=20000
memcache.lock_timeout=15

(* uncomment by removing “;”, section is located near end of file)

3. Save file and restart Apache.

Connecting To and Using memcached

Example PHP code to test the operation of the memcached server…

<?php

error_reporting(E_ALL);
ini_set('display_errors', 1);

$memcache = memcache_connect('localhost', 11211);

// note - memcache_connect errors must be suppressed (@) for this code to be reached
if ($memcache === false)
{
	echo "Connection to memcached failed.";
	exit;
}

// test string
$key_string = "string to store in memcached";

// test number
$key_number = 123;

// test array
$key_array  = Array(123, 345, 567);

// test object
$key_object = new StdClass;
$key_object->str_attr = 'test';
$key_object->int_attr = 123;

// store the values into memcached
$memcache->set("str_key", $key_string);
$memcache->set("num_key", $key_number);
$memcache->set("arr_key", $key_array);
$memcache->set("obj_key", $key_object);

// retrieve the values from memcached
var_dump($memcache->get('str_key'));
var_dump($memcache->get('num_key'));
var_dump($memcache->get('arr_key'));
var_dump($memcache->get('obj_key'));

?>

Browser’s “Could Not Find” or “Could Not Display” Webpage Message

Oops! Google Chrome could not find domain-name

Server not found. Firefox can’t find the server at domain-name.

Internet Explorer cannot display the webpage

If, from the same system that the WAMP server is running on, your Browser (Chrome, Firefox, IE) is not able to locate your local website, the above messages will be displayed.

This happens when:

A) The Windows Hosts file does not have an entry resolving the website’s domain-name to the “loopback” address (127.0.0.1).

B) The Browser is still using its previous bad DNS resolve cache for this domain-name.

To fix this:

1. In WampDeveloper’s LocalDNS Tab, make sure this website is check-marked. If the check-mark disappears, then LocalDNS is not able to make changes to the Windows Hosts file because this file is being locked by another application.

2. Then click the Windows Hosts file button to open the file.

Make sure something similar to this line is present in the file:
127.0.0.1 website.domain.name website.domain.alias1 website.domain.alias2

And that no other lines have your website.domain.name in them.

Save file if changes are made.

3. After making these changes, close your Browser so the older DNS caches are cleared.

*To unlock the Windows Hosts file see this howto:
http://www.devside.net/wamp-server/unlock-and-unblock-the-windows-hosts-file

*WampDeveloper’s LocalDNS works by resolving the domain-name to the local IP address 127.0.0.1 via the Hosts file, so your local Browser (Chrome, Firefox, IE) knows where to find that website.

Howto Switch WampDeveloper’s Apache PHP MySQL Branches

WampDeveloper provides 3 Apache, PHP, and MySQL channels:

  • Current: Apache 2.4, PHP 5.5, MySQL 5.6
  • Stable: Apache 2.2, PHP 5.3, MySQL 5.5
  • Legacy: Apache 2.0, PHP 4.4, MySQL 5.1

The WAMP server can be switched to use any channel at any time.

For example:

To switch to using WampDeveloper’s “Stable” channel, which is: Apache 2.2, PHP 5.3, and MySQL 5.5…

1. In WampDeveloper’s Components Tab, click the download links to the latest provided releases of Apache 2.2, PHP 5.3 (regular, not FCGI), and MySQL 5.5 – that are not on the system already.

2. Once downloaded, extract each into the appropriate Versions folder:

Apache versions are maintained in: C:\WampDeveloper\Versions\Apache\
PHP versions are maintained in: C:\WampDeveloper\Versions\Php\
MySQL versions are maintained in: C:\WampDeveloper\Versions\Mysql\

See this howto to make sure each packaged version is correctly extracted and placed:
http://www.devside.net/wamp-server/howto-update-wampdevelopers-apache-php-mysql-versions

3. After these versions are on system, close WampDeveloper and open it again to make sure it re-reads everything (*usually not necessary).

4. Select to use the new Apache, PHP, and MySQL versions:

In WampDeveloper’s Components Tab, in the top right corner, there is a group named “Select Subscription”.

Click on its “Channel” dropdown box, it will list items: Current, Stable, Legacy.

Select “Stable”, and all the Apache, MySQL, PHP branches on system in that channel will become selectable via their check-boxes. Select/check-mark the new Apache, PHP, and MySQL versions, then click: Update To Selected

*Channel “Current” will only work for OSs above XP and Server 2003.

*If you are using PHP-FCGI, using dropdown box “PHP Type”, switch selection from Regular to FCGI.

WAMP’s “Internal Server Error” Message

When Apache or PHP encounter a problem, sometimes this message is displayed…

Internal Server Error

The server encountered an internal error or misconfiguration and was unable to complete your request.

Please contact the server administrator at admin@httpd.host to inform them of the time this error occurred, and the actions you performed just before this error.

More information about this error may be available in the server error log.

Apache/2.4.9 (Win32) PHP/5.5.11 Server Port 80

This error is usually 99% of the time a result of an .htaccess file problem.

Check the specific website’s .htaccess file to make sure it’s not using old or incorrect paths and URLs, RewriteRules, nor a bad RewriteBase /path (try commenting it out with a #).

Also, a much more informative/helpful error message will be logged in the website’s HTTP and PHP error logs…

If you select this website in WampDeveloper’s Websites Tab, and click the (“Logs HTTP” group) ErrorLog and PhpLog buttons, the end of the files will tell what the real issue is. It might be something really easy to fix/correct.

If nothing relevant is shown, check the general Apache and PHP error logs files (in WampDeveloper’s Reliability Tab).

Moving Websites and Databases Between 2 WAMP Installs

This assumes you have the same WampDeveloper versions (ex: WampDeveloper 5.0) installed on each system, running the same MySQL branch (ex: MySQL 5.6), and that each WampDeveloper instance is installed on the same path (ex: C:\WampDeveloper).

First, make sure the receiving WampDeveloper installation has the same websites already created via the Websites Tab – so all the VirtualHosts, website folders, and other configuration files exist.

Then stop the Apache and MySQL Services on both systems.

Transferring Websites

Transfer (zip up and copy) to the other system the Websites folder. Select to overwrite everything, if prompted.
C:\WampDeveloper\Websites\

As an alternative, you can instead only move a specific website by transferring sub-folder:
C:\WampDeveloper\Websites\Websites\domain.name\

Transfer Database

Delete the other system’s Database folder. Replace it completely (replace it, don’t copy-over to overwrite files).
C:\WampDeveloper\Database

MySQL Issues

If MySQL does not start/run after the \Database folder is replaced, and both machines are using the same MySQL version…

It’s possible that your ZIP program, FTP program, etc, (whatever you are using to package + transfer the files), or its options, does not preserve this NTFS Junction-Point folder link:
Database\mysql-data –> Database\mysql-data-56

You can re-create it (after transferring the \Database folder) by:

1. Deleting folder: Database\mysql-data

2. Opening the command-line w/administrative-permissions (System Tab button) and executing this command (*all on one line):
mklink /j D:\WampDeveloper\Database\mysql-data D:\WampDeveloper\Database\mysql-data-56

Note that the above example is for WampDeveloper v5.0 using MySQL 5.6.
For MySQL 5.5, the folder is: Database\mysql-data-55
For MySQL 5.1, the folder is: Database\mysql-data-51

And under WampDeveloper v4.x the Database folder is “as-is” (it does not have specific version sub-folders, nor NTFS Junction-Point links).

If this is not the issue, open this log file to see MySQL’s error messages:
C:\WampDeveloper\Logs\Mysql\errorlog.txt

VirtualHosts and other Website Specific Configuration Files

If you’ve made custom changes to the websites’ VirtualHost files, they exist in this folder and can be transferred:
C:\WampDeveloper\Vhosts\

Files:
domain.name.http.vh.conf
domain.name.ssl.vh.conf

If you’ve made custom changes to the websites’ AWStats files, they exist in this folder and can be transferred:
C:\WampDeveloper\Tools\awstats\wwwroot\cgi-bin

File:
awstats.domain.name.conf

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:
C:\WampDeveloper\Websites\www.example.com\webroot

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:
C:\WampDeveloper\Websites\www.example.com\webroot

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 minor (v4.2.0.1 to v4.2.0.3) and major versions (v4.1 to v4.2 to v5.0) of WampDeveloper is to perform a clean-reinstall. Followed by a website + database transfer procedure (if needed, to maintain all websites and databases)…

Clean Reinstall of WampDeveloper

1. Click the Uninstall link at bottom of Components Tab. The uninstallation 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 in-use or open, reboot your system to close everything.

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 VirtualHosts, other configuration files, and website folders are created.

5. For the 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 C:\WampDeveloper\Websites (copy-over, overwrite all).

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\Database\

WampDeveloper 4.2 used MySQL 5.5 with database location: \WampDeveloper\Database\

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 you are upgrading the WampDeveloper version (v4.2 to v5.0)

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

Ex: Delete \WampDeveloper\Database\mysql-data-56\ and copy + rename \WampDeveloper.old\Database\ as \WampDeveloper\Database\mysql-data-56\

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

If you are 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 you are upgrading from WampDeveloper v4.1 to v4.2

1. Download http://www.devside.net/download/trial/WampDeveloper-4.2.0.3.zip

2. Replace the \Database folder and run from the command-line:
mysql_upgrade.exe

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 files C:\WampDeveloper\Database\ib_logfile0, and ib_logfile1 (if it exists) are deleted.

4. Re-install phpMyAdmin’s database (because phpMyAdmin was upgraded from v3.5 to v4.0).
Open the command-line (via System Tab), and execute the following commands:
mysql -u root -p
DROP DATABASE phpmyadmin
SOURCE C:/WampDeveloper/Tools/phpMyAdmin/examples/create_tables.sql
exit

(*if you have not set a password for MySQL account: root, leave the ‘-p’ part out)
(*make sure to update the path in the SOURCE command if WampDeveloper was installed on a different drive; not on 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.

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.

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 want to use:

For example: php-5.3.28.0-r1-win32-vc9-standard.zip

(*note that there are standard and fcgi versions of PHP provided)

3. After downloading it, open folder C:\WampDeveloper\Versions\Php\ and extract the contents of the zip directly into this folder.

Important -

If you’ve downloaded and unzipped the above PHP version (5.3.28) correctly and into the proper Versions folder, this file path should now be valid and exact…
C:\WampDeveloper\Versions\Php\php-5.3.28.0-r1-win32-vc9-standard\php.exe

Most of the issues happen here: it gets unzipped into the wrong folder, or into an extra sub-folder, or just gets all it’s inner files (zip-file\php-***\files) extracted out into …Versions\Php\.

4. Then check-mark the above PHP version in Components Tab. If you can’t check-mark it, it’s been unzipped into the wrong place. Otherwise, try restarting the WampDeveloper application.

5. 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.

The process is exactly the same for all other components (Apache and MySQL).

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).

Downloads

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
ms\do_nasm
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\

mod_fcgid.so

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

http://wiki.apache.org/httpd/Win32VC9Build

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 INCLUDE=%INCLUDE%;C:\MySQL\include;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