Windows (Apache) Installation Instructions for Development

Wiki Purpose: To guide developers through the Zurmo bare installation process for development purposes.

Who should read this Wiki: A Developer who is a registered member of the Zurmo development program..

Please note this is not an installation guide for setting up a production server..
  1. Install Xampp
    1. Download and run the following installer.
    2. Follow Xampp installation instructions and install to C:\xampp (default)
  2. php.ini configuration changes(C:\xampp\php\php.ini)
    1. Uncomment the line ;extension=php_ldap.dll
    2. Uncomment the line ;extension=php_imap.dll
    3. Add the line zend_extension=php_apc.dll
    4. download from and save in \php\ext\
    5. Change date.timezone = America/Chicago
    6. Change memory_limit = 250m
    7. Change max_execution_time = 3000
    8. Change post_max_size = 20M
    9. Change upload_max_filesize =  20M
    10.  Restart apache for the php.ini changes to take effect 
  3. my.ini  configuration(C:\xampp\mysql\bin)
    1. Add next lines under [mysqld] section:
    2. character-set-server=utf8
    3. collation-server=utf8_unicode_ci
    4. default-storage-engine=INNODB
    5. max_sp_recursion_depth=100
    6. max_allowed_packet = 20M
    7. thread_stack = 512K
    8. optimizer-search-depth = 0
    9. log_bin = 0 (this is default settings, and in most cases you will not need to modify it)
    10. log-bin-trust-function-creators = 1
    11. Restart mysql for the my.ini changes to take effect
  4. Install putty, and all other binaries like pageand.exe, plink.exe. Using putty is an optional step and only required if you use a cmd line svn, if using a gui based svn this step can be optional.
    1. There is a package that contains the required files:
    2. Start PuttyGen (from Start/Applications/Putty menu)
    3. Generate ssh2-rsa key
    4. When key is generated, add your email address to Key Comment field
      *note this is the email address that you used for bitbucket account, this is an important step, because it will allow us to communicate with bitbucket server without having to log in
    5. Save public key as
    6. Login to bitbucket, go to Account, copy and paste the key, into list of your keys
    7. Save private key as id_rsa.ppk, under C:\Documents and Settings\YOUR_USERNAME\ssh
      *note – you will need to create the ssh directory
  5. TortoiseHg
    1. Download and install TortoiseHg
    2. Create file C:\Documents and Settings\YOUR_USERNAME\mercural.ini, and add following code: [ui] username = username ssh=”C:\Program Files\PuTTY\plink.exe” -ssh -i
      “C:\Documents and  Settings\YOUR_USERNAME\ssh\id_rsa.ppk”
  6. Clone Zurmo from Repository
      1. Go to htdocs
      2. Create Zurmo folder
      3. Right click and go TortoiseHG -> Clone
      4. Set destination as: C:\xampp\htdocs\zurmo
      5. Set source as https://<your bitbucket username>
      6. Click on clone and enter your password when requested
  7. PhpUnit

    1. Download and install Composer
    2. Create a folder of your choice commonly C:\composer
    3. Open a command prompt and go to C:\composer
    4. Type ‘composer global require “phpunit/phpunit=4.4.*”‘ and hit Enter
    5. Make sure the following paths are added to the windows path information.
    6.  C:\composer\vendor\bin
  8. Install Selenium
    1. Download and copy the .jar file to a folder of your choice commonly C:\selenium
    2. Create a batch file to run the server and add file to start up
    3. To run server use java –jar selenium-server-standalone-2.5.0.jar
      *note: requires Java to be installed (obviously)
  9. Install Memcache
    1. Use this link for installation files and setup instructions
  10. Windows PATH additions Make sure the following paths are added to the windows path information.
    1. C:\xampp\php\
    2. C:\xampp\php\PEAR\
    3. C:\xampp\mysql\bin\
  11. Create MySql Database and User
    1. Create a Database called zurmo
    2. Create user zurmo  (a password is required, remember this password as it will be required during install)
    3. Grant user zurmo all privileges on zurmo database (important! That this user can create/drop databases)
    4. Create database called zurmo_test
    5. Create user zurmo_test set password to zurmo_test
    6. Grant user zurmo_test all privileges on zurmo_test database (important! That this user can create/drop databases)
    7. Create database called zurmo_temp
    8. Create user zurmo_temp set password to zurmo_temp
    9. Grant user zurmo_temp all privileges on zurmo_temp database (important! That this user can create/drop databases)
  12. Run unit test
    1. Go to C:\xampp\htdocs\zurmo\app\protected\tests\unit from the command line
    2. Run phpunit TestSuite.php All
    3. Run functional tests
  13. You are ready to go to http://localhost/zurmo/app and install the application
    1. The install will check the environment setup and report on the results, fix any errors and rerun
    2. Add the database information
    3. The installation will create all tables and test data
    4. Open link to zurmo application

Additional Notes

    • Eclipse Tweaks
      • If you are using eclipse as your IDE, then install AnyEdit
         which auto-strips trailing spaces on save
      • For the default text editor:
      • General > Editors > Text Editors > Insert spaces for tabs (check it) .
    • For PHP:
      • PHP > Code Style > Formatter > Tab policy (choose “spaces”)
      • PHP > Code Style > Formatter > Indentation size (set to 4)
      • Eclipse > Preferences > General > Editors>
      • Text Editors > Show Print Margin  set to 120
      • Tweak line delimiters to make sure they are linux Select ‘other’ UNIX

Leave a Comment

  • Jpablo

    I had an issue installing Zurmo,
    I ran this: http://localhost/zurmo/app/index.php?r=install/default
    and I’ve got this error:
    include(Tidy.php) [function.include]: failed to open stream: No such file or directory
    C:xampphtdocszurmoappprotectedextensionszurmoincframeworkviewsPageView.php(121): spl_autoload_call(“Tidy”)

    Maybe the file is missing in the distribution package?

    • Jason Green

      You should make sure you have the tidy extension installed with PHP. If you can please post this issue in the forums, i can better address it there. Also – did you run the tests?

    • Jason Green

      The issue is definitely because you don’t have the tidy extension installed with php. I have just checked in the fix. The fix will gracefully tell you before install you need that installed before you can continue. Sorry for the inconvenience. Once you install tidy in php, your install should come up fine.

  • San Brar

    Hello, I am trying get customization to work but it’s not having much success so far. I am working of the latest dev build. Here is what I did.

    Installed the standard package.
    Copied the animal module from Zurmozoo
    Created perInstanceConfig & ZurmoZooInstallUtil

    Now I am not sure how to install the new module. Please help.

    • San Brar

      I think I was approaching this a little a wrong way. I though a module can be installed after the app has been installed but may not be the case. Not sure if someone can clarify this. Thanks.

    • Jason Green

      Can you provide the bitbucket user digimagic with access to your repository? I can take a look and see what you did. I assume you forked this on bitbucket?

      • San Brar

        I got the animal module to work but only after a re-install. I can’t figure out how to make it work without a re-install.

        So after some what success with animal module I tried my own module. It mostly worked after a re-install. Couldn’t get the menu to appear. Repository is as follow:

        extension –> hvac
        module –> sizing_calc (follow your animal example)

        As of now >> no menu & have to re-install to install the module.


        • Sacha Telgenhof

          Hi San,

          Re-install is not needed. If you navigate to Admin > Designer and then to your newly created module edit one of the Fields. After pressing Save, Zurmo is creating/updating your new model.

          At least, this is how I figured it out without re-installing :)

  • Hatem Alimam

    Thank you for your work.
    I just want to make a point, it’s too hard to install zurmo with all these dependencies.
    maybe more explanation in this page would make it easier.

    • Jason Green

      Thanks for the feedback. Its a tough situation. All the dependencies mean things will work and work well, yet you are right regarding the install. If we relax the dependencies during the install, then we risk a bad experience where things are not working or some features can’t be turned on. If you have some additional ideas, please let me know, maybe you can help with making some pre-approved VM snapshots or something?

  • Shark

    I think you should add in the point 3.9 (my.ini configuration) this line too
    log_bin_trust_function_creators = 1
    I was getting this error “ERROR 1418 (HY000): This function has none of DETERMINISTIC, NO SQL,
    or READS SQL DATA in its declaration and binary logging is enabled
    (you *might* want to use the less safe log_bin_trust_function_creators
    variable)”, but after adding the above mentioned line in my.ini, the phpunit testing started working fine.

    • Ivica Nedeljkovic

      Well there are two ways to fix this issue:
      1. Set log_bin=off in my.ini or my.cnf file, and in this case you will not need to care about value of log_bin_trust_function_creator
      2. If log_bin=on, you need to set also log_bin_trust_function_creators=on, and that is case you explained in your comment.

  • Vinicius da Costa Pires


  • saeba

    I’m trying to install zurmo, but i have this error :
    Error code: 1045
    Message: Access denied for user

    under “Database Username”


  • Riki Yudistira

    hi i test instal zurmo and get some trouble Installation in progress. Please wait… never finish and

    in botom page have this messege PHP warning

    date_default_timezone_get() []: 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. In case you used any of those methods and you are still getting this warning, you most likely misspelled the timezone identifier. We selected ‘Asia/Krasnoyarsk’ for ’7.0/no DST’ instead


    123 }
    125 public static function convertTimestampToDbFormatDate($timestamp)
    126 {
    127 assert(‘is_int($timestamp)’);
    128 return Yii::app()->dateFormatter->format(DatabaseCompatibilityUtil::getDateFormat(),
    129 $timestamp);
    130 }
    132 public static function convertTimestampToDbFormatDateTime($timestamp)
    133 {
    134 assert(‘is_int($timestamp)’);
    135 $timeZone = date_default_timezone_get(‘Asia/Krasnoyarsk”);
    136 date_default_timezone_set(‘GMT’);

    and more sourcecode about time

    • Ray Stoeckicht

      Can you post this on our Forums? We have a section for Installation & Setup. Our developers and community members will assist with the issues you are having:

    • Vladimir Nikolic

      @Riki Yudistira
      Open you php.ini file and find directive about date default time zone and set it there.
      For example:
      date.timezone = ‘America/New_York’
      (uncomment the line if commented out)
      save php.ini and restart your server.


    I am using wamp server, can you people, have any other instructions

    • Ivica Nedeljkovic

      Unfortunately we don’t have any instruction directly related to WAMP server, but I think you you can find all info you need in this article. If you still have some issues, I suggest you to post in forum, I think that we have few people who are using WAMP so they might help you with installation.

  • hasulike me

    getting error while install
    Parse error: syntax error, unexpected T_PAAMAYIM_NEKUDOTAYIM in D:xampphtdocszurmoappprotectedcorecomponentsWebApplication.php on line 138
    pls help

    • Ray Stoeckicht

      Did you run the tests? Can you post this on our Forums? We have a section for Installation & Setup. Our developers and community members will assist with the issues you are having:….

  • பெஸ்கின் அஜய்

    We are installing in wamp server and getting issue for log_bin =0 we are unable to set this value.
    Can any one help?

    • nobel wahid

      # configuration my.ini for wamp
      #first change log-bin=mysql-bin ==> log_bin=off
      #second change #log-bin=mysql-bin ==> log_bin_trust_function_creators=on

      # Example MySQL config file for medium systems.

      # This is for a system with little memory (32M – 64M) where MySQL plays
      # an important part, or systems up to 128M where MySQL is used together with
      # other programs (such as a web server)
      # You can copy this file to
      # /etc/my.cnf to set global options,

      # mysql-data-dir/my.cnf to set server-specific options (in this

      # installation this directory is C:mysqldata) or

      # ~/.my.cnf to set user-specific options.


      # In this file, you can use all long options that a program supports.

      # If you want to know which options a program supports, run the program

      # with the “–help” option.

      # The following options will be passed to all MySQL clients


      #password = your_password

      port = 3306

      socket = /tmp/mysql.sock

      # Here follows entries for some specific programs

      # The MySQL server


      port = 3306

      socket = /tmp/mysql.sock

      key_buffer = 16M

      max_allowed_packet = 1M

      table_cache = 64

      sort_buffer_size = 512K

      net_buffer_length = 8K

      read_buffer_size = 256K

      read_rnd_buffer_size = 512K

      myisam_sort_buffer_size = 8M




      # Don’t listen on a TCP/IP port at all. This can be a security enhancement,

      # if all processes that need to connect to mysqld run on the same host.

      # All interaction with mysqld must be made via Unix sockets or named pipes.

      # Note that using this option without enabling named pipes on Windows

      # (via the “enable-named-pipe” option) will render mysqld useless!



      # Disable Federated by default


      # Replication Master Server (default)

      # binary logging is required for replication



      # binary logging format – mixed recommended


      # required unique id between 1 and 2^32 – 1

      # defaults to 1 if master-host is not set

      # but will not function as a master if omitted

      server-id = 1

      # Replication Slave (comment out master section to use this)


      # To configure this host as a replication slave, you can choose between

      # two methods :


      # 1) Use the CHANGE MASTER TO command (fully described in our manual) -

      # the syntax is:





      # where you replace , , by quoted strings and

      # by the master’s port number (3306 by default).


      # Example:


      # CHANGE MASTER TO MASTER_HOST=’125.564.12.1′, MASTER_PORT=3306,

      # MASTER_USER=’joe’, MASTER_PASSWORD=’secret’;


      # OR


      # 2) Set the variables below. However, in case you choose this method, then

      # start replication for the first time (even unsuccessfully, for example

      # if you mistyped the password in master-password and the slave fails to

      # connect), the slave will create a file, and any later

      # change in this file to the variables’ values below will be ignored and

      # overridden by the content of the file, unless you shutdown

      # the slave server, delete and restart the slaver server.

      # For that reason, you may want to leave the lines below untouched

      # (commented) and instead use CHANGE MASTER TO (see above)


      # required unique id between 2 and 2^32 – 1

      # (and different from the master)

      # defaults to 2 if master-host is set

      # but will not function as a slave if omitted

      #server-id = 2


      # The replication master for this slave – required

      #master-host =


      # The username the slave will use for authentication when connecting

      # to the master – required

      #master-user =


      # The password the slave will authenticate with when connecting to

      # the master – required

      #master-password =


      # The port the master is listening on.

      # optional – defaults to 3306

      #master-port =


      # binary logging – not required for slaves, but recommended



      # Point the following paths to different dedicated disks

      #tmpdir = /tmp/

      #log-update = /path-to-dedicated-directory/hostname

      # Uncomment the following if you are using InnoDB tables

      #innodb_data_home_dir = C:mysqldata/

      #innodb_data_file_path = ibdata1:10M:autoextend

      #innodb_log_group_home_dir = C:mysqldata/

      #innodb_log_arch_dir = C:mysqldata/

      # You can set .._buffer_pool_size up to 50 – 80 %

      # of RAM but beware of setting memory usage too high

      #innodb_buffer_pool_size = 16M

      #innodb_additional_mem_pool_size = 2M

      # Set .._log_file_size to 25 % of buffer pool size

      #innodb_log_file_size = 5M

      #innodb_log_buffer_size = 8M

      #innodb_flush_log_at_trx_commit = 1

      #innodb_lock_wait_timeout = 50



      max_allowed_packet = 16M



      # Remove the next comment character if you are not familiar with SQL



      key_buffer = 20M

      sort_buffer_size = 20M

      read_buffer = 2M

      write_buffer = 2M


      key_buffer = 20M

      sort_buffer_size = 20M

      read_buffer = 2M

      write_buffer = 2M





      • anupal

        Not working its still giving the log_bin issue.

  • Sujit

    I installed Zurmo successfully, but i don’t know the username and password to login.What would be the default login credential. any guess???.

    • Ray Stoeckicht

      Try this:
      username: super
      password: super

  • frankiekam

    Hi I’m greener than grass in Zurmo. I’ve installing it, and the strangest thing is even though it says “installtion in progress. Please wait” at the top of my screen, this message is found at the bottom of my screen: “Invalid Schema definition received for globalmetadata. Index: unique_emaNssalc column: className does not exist in current schema definition provided. Columns: Array ( [0] => classname [1] => serializedmetadata )
    The reference id for this error is c461a8407a144f0683071b55fa6d09fa.” PLease advise.