Hi there. So, big disclaimer, I'm not tech literate at all. I barely know how to open Windows Command Prompt and download stuff off Github. Installing CollectiveAccess (CA) is daunting as hell, but here we are. Somehow with the power of the internet I managed to get it running locally.

If you are an unfortunate soul like me who is trying to install CA on a Windows laptop and have no idea what the heck they're doing, well, hopefully this guide will be helpful! Before you proceed, the first thing you should do is download Providence and Pawtucket from the official CollectiveAccess page, and open up the documentation. Give a cursory glance through the System Requirements and Installation section — we will be working through them in this guide. IMPORTANT: This guide is meant to be read in conjunction with the official documentation.

CA is developed for Linux and is notoriously finicky for Windows, so brace yourself.


I'm planning on using CollectiveAccess for a personal project, so I'll probably make some follow-up posts like adding more extensions/plugins and getting Pawtucket set up once I figure that out. Eventually this might end up getting its own dedicated page.

- Install System Requirements -

Official CollectiveAccess Documentation: System Requirements.

// Installing Apache

Follow this YouTube tutorial.

  1. Install the latest version of Visual C++ Redistributable for Visual Studio 2017-2026 and download the Apache binaries from Apache Lounge.
  2. Unzip and move the folder named "Apache24" into the C: drive so that the folder path should be C:\Apache24.
  3. Go to Windows start menu by pressing the Win key, open Command Prompt (cmd) and run as administrator. Enter cd C:\Apache24\bin - this will change the directory to the "bin" folder.
  4. To instal Apache, enter httpd.exe -k install.
  5. Windows Start → Services → find Apache24 and hit Start the service. Alternatively, open Services by entering services.msc into the cmd.
  6. Open your browser and go to 127.0.0.1. If it works, you should see a webpage that says "It works!".

// Installing MySQL

Follow this YouTube tutorial.

  1. Go to MySQL Community Downloads Windows Installer and download the second installer (the one that has a bigger file size).
  2. Double click the .msi file. Choose Custom setup. Navigate the drop downs and select these to be installed: MySQL Server 8.0.46 - X64, MySQL Workbench 8.0.47, X64, MySQL Shell 8.0.46 - X64 by clicking on it and moving it to the right using the green arrow. Click Next then Execute.
  3. Click Next and don't change anything until you get to Apply Configuration and click Execute. Do set your password at the Accounts and Roles page.
  4. Select Start the Workbench and Shell after setup then Finish, make sure that both actually opens.
  5. Locate this path in File Explorer: C:\Program Files\MySQL\MySQL Server 8.0\bin. Start → Edit the system environment variables → Environment Variables → System Variables → double click Path → Click New and paste the path, then OK.
  6. In cmd, enter mysql --version to verify that it's installed. Enter mysql -u root -p to run MySQL.

// Installing PHP

PHP

Follow this YouTube Tutorial.

  1. Go to PHP Downloads, select version 8.3, and under Current Stable click Windows downloads. Under VS17 x64 Thread Safe, select Zip.
  2. Extract the folder, rename it to php-8.3.32 (or whatever version you have) and move it to C: drive. NOTE: this is the PHP folder I will be referencing from now on. Whatever it is that you named your folder to be, you should replace all code containing php-8.3.32 with that.
  3. Copy the folder address C:\php-8.3.32. Start → Edit the system environment variables → Environment Variables → System Variables → double click Path → Click New and paste the path, then OK.
  4. To verify installation, open cmd and enter php --version.

PHP packages containing extensions

Official Documentation can be found here.
For windows, the extensions are .dll files located in the ext folder at C:\php-8.3.32\ext.

// Media Processing Software

Composer

Official documentation here. Follow this YouTube tutorial.

  1. Download and run Composer-Setup.exe. Install for all users.
  2. No need to change anything, just Click Next until you get to Finish.
  3. To verify installation is successful, open cmd and enter composer.

Git

Official documentation here.

  1. Download Git from here and run it.
  2. Follow the set up wizard to finish installation but you don't have to change anything. I personally use VS Code so I chose that as the default editor. I went with MinTTY (which is the default) instead cmd because supposed it has a better user experience but I don't think it really matters which one you pick.
- Install Providence -

Official Collective Access Documentation: Installation.
I find that the official guide is written pretty clearly for the most part, so I'd say just try your best to follow it. Below are some notes for parts that may be confusing.

// Configuring PHP

  • Open C:\php-8.3.32. Rename php.ini-development to php.ini. This is the file that you will be editing.
  • Open php.ini and follow the official guide to make changes as needed. For upload_max_filesize, the default is 2M meaning 2 Megabytes. Per php.net, the available options are K (for Kilobytes), M (for Megabytes) and G (for Gigabytes), and are all case-insensitive.
  • In php.ini, find ;extension_dir = "ext" and replace with extension_dir = "C:\php-8.3.32\ext".
  • Remember that long list of PHP packages with extensions found under System Requirements? Now find them in php.ini and remove the semicolons in the front to activate them.

// Installing Providence

  • For step 1 setting up an empty MySQL database, use the MySQL Workbench.
    • In MySQL Workbench, open the local instance. From the top, click Create a new schema in the connected server. Give the schema a name; I chose providence_database.
    • You can skip all the login information stuff since that was already done when installing Apache.
    • The Apache local server index.html can be found here: C:\Apache24\htdocs. (To see it running in your browser, type 127.0.0.1 into the browser address bar.) Inside the folder, move the both the unzipped Providence and Pawtucket folders there. I renamed them to providence and pawtucket, respectively.
  • You can skip step 2.
  • Before doing step 3, make sure Apache is linked with PHP. Open C:\Apache24\conf\httpd.conf. (See Stack Overflow Reference.)
    • Under the servername section, put ServerName localhost. Change DirectoryIndex index.html to DirectoryIndex index.php index.html.
    • At the very end of the file, add these each as its own line: LoadModule php_module "C:/php-8.3.32/php8apache2_4.dll", <IfModule php_module>, AddHandler application/x-httpd-php .php, AddType application/x-httpd-php .php .html, PHPIniDir "C:/php-8.3.32", </IfModule>
  • For step 3, open the providence folder, which should be located at C:\Apache24\htdocs\providence.
    • Inside the folder, find setup.php-dist and rename it to setup.php.
    • Then, open setup.php in Notepad (or VS Code or whatever program of your choosing) and make changes as needed. Be sure to change my_database_user → root, my_database_password → Your_MySQL_Password_Here, name_of_my_database → providence_database, and add your admin email too.
    • At the end of all the __CA_DB_ stuff, add this: define('__CA_URL_ROOT__', '/providence');, because all the providence files are located inside the providence folder, which is inside the C:\Apache24\htdocs root folder.
  • You can skip step 4 because that's a Linux thing I think. Don't worry about it for Windows.
  • For step 5, make sure that Apache is running by going into the cmd, enter services.msc, and click on Apache and Start the service. In your browser, go to http://localhost/providence/install/. If luck is on your side it should just work. I recommended restarting Apache after you make changes to multiple files.
    • Soooo unfortunately the first time I tried to go to http://localhost/providence/install/ I got this error:
      Fatal error: Uncaught RuntimeException: Composer detected issues in your platform: Your Composer dependencies require a PHP version ">= 8.4.0". You are running 8.3.32.
    • I think this is because the latest version of CollectiveAccess 2.0.11 somehow forces you to use PHP 8.4, even though the official documentation said it's not fully validated yet and imply that 8.2 and 8.3 should be compatible as well.
    • A workaround is to open C:\Apache24\htdocs\providence\vendor\composer\platform_check.php and add return; right under <?php, forcing it to run. Not the best practice but it works...
  • Anyways that fixes it. For installation profile, I went with PastPerfect 5.0 because it's the only one I've heard of lol. Make sure you do research on which profile you want, because once you installed it, there is no way to change it.
  • To access CollectiveAccess, you have to first start running Apache, which can be accessed by entering services.msc into cmd. Then, in your browser, go to http://localhost/providence/index.php. You can bookmark this link for easier access.
  • NOTE: All this is to get Providence working, which is the back-end of CollectiveAccess. The front-end, Pawtucket, is its own separate thing.

// Troubleshooting Providence

So, ideally, after all that trouble, Providence should be working just fine. Unfortunately that wasn't the case for me. The issue I encountered was that when I create a new object and try to upload a media representation, the image never gets processed. When I try to upload an image, it shows that the image is uploaded, but there's no thumbnail preview. And when I click save, it just turns blank, as if the image was never uploaded. From what I gathered from the CA forum, it seems like this might be a Windows issue. (Remember, CA isn't developed for Windows.) I haven't been able to figure out how to fix the issue, but I did find a workaround.

The Issue

  • So, when I try to upload an image, a copy is successfully created in C:\Apache24\htdocs\providence\uploads\~admin. Note that the last folder, ~admin, is based on your username. I changed my username from the default administrator to admin; so if your username is blue, the folder should be called ~blue.
  • When I click save, what should've happened was that a copy* of the image should've been created in C:\Apache24\htdocs\providence\media\collectiveaccess\images as well. Instead, nothing happens. That folder remains blank. (* Note that when I say copy, it's not really an accurate description. Whatever image processor you're using should've made copies of the image and chopped it up into a bunch of different ones for the zoomable viewer built into CA.)
  • Some relevant files to investigate include: setup.php, media_processing.conf, php.ini, and app.config.
  • Again, I haven't figured out how to fix this. Someone take on the mantle from me PLEASE.

The Workaround

Thankfully, there's a pretty convenient workaround.

  • Open up C:\Apache24\htdocs\providence\uploads. Inside the folder titled ~admin, copy and paste the images you want to upload there. (Again, the folder name depends on your username; mine is admin.)
  • Inside CollectiveAccess, when you go to IMPORTMedia, you should see the images listed under Directory to import. Select the images you want to upload, and voilĂ , it works!
- Extensions/Plugins -

NOTE: You should finish installing CollectiveAccess BEFORE PROCEEDING WITH THE FOLLOWING STEPS. The PHP set ups will only make sense once you've completed the Install Providence section.

// GraphicsMagick - I COULDN'T GET THIS TO WORK THIS IS AS FAR AS I GOT

Official documentation here.

  1. Get GraphicsMagick here. Go into graphicsmagick-binaries and download the newest release. I went with GraphicsMagick-1.3.46-Q16-win64-dll.exe. Run the installer; you don't need to change any of the default settings.
  2. To verify successful installation, open cmd and enter gm. You can also try entering gm convert logo.jpg win:, which should display the GraphicsMagick logo in a window.
  3. Now to install php-gmagick, as far as I know the only way to get it is from PECL. It would seem like the latest Windows version is version 1.1.6RC1 from 2013. I went with 5.6 Thread Safe (TS) x64 so let's just hope and pray that it works.
  4. Unzip the folder and copy php_gmagick.dll into the C:\php-8.3.32\ext folder.
  5. Locate wherever you installed GMagick and copy the path. For me, it's located at: C:\Program Files\GraphicsMagick-1.3.46-Q16. Go to Start → Edit the system environment variables → Environment Variables → System Variables → double click Path → Click New and paste the path, then OK.
  6. Open C:\Apache24\htdocs\providence\app\conf\external_applications.conf. Find and replace graphicsmagick_app = [/usr/bin/gm, /usr/local/bin/gm] with graphicsmagick_app = C:/Program Files/GraphicsMagick-1.3.46-Q16/gm.exe. (Reference.)
  7. Open C:\Apache24\htdocs\providence\app\helpers\mediaPluginHelpers.php. In any function pertaining to GraphicsMagick, change /dev/null to /$null.
  8. Open up php.ini in the PHP folder and add this: extension=gmagick. In the file you'll find a big section of extension=, I added it there.
  9. Yeahhhh so I couldn't get this to work. My theory is that the windows php package is just way too old.

// ImageMagick - Works but Slower than GD

Tips:

  • Without any additional extensions or plugins, CollectiveAccess should still be able to process still images with the native libGD plugin. It's just really slow.
  • In "C:\Apache24\htdocs\providence\app\conf\app.conf", you can change dont_use_imagick = 0 to be equal to 1 to force CollectiveAccess to stop using imagick. This is a good way to troubleshoot and make sure that the media-processing-process itself is working fine.
  • You can see the status of your plugins by going MANAGEAdministrationCONFIGURATION CHECK.

How to Imagick

  1. There are two components: ImageMagick and its PHP plugin Imagick. Get ImageMagick here and the PHP package here. Since I have PHP 8.3.32 built with Visual C++ 2019 Thread Safe x64, I went with ImageMagick-7.1.2-27-Q16-HDRI-x64-dll.exe and php_imagick-3.8.1-8.3-ts-vs16-x64.
  2. Run the ImageMagick installer. After installation, locate where it was downloaded at (probably C:\Program Files) and move folder to C: drive. Rename the folder to ImageMagick. The final file path should be C:/ImageMagick.
  3. Go to C:/ImageMagick/module. Inside, you should see two more folders: coders and filters. Move ALL contents of coders and filters into the main C:/ImageMagick folder. The modules folder should now be empty and you can delete it.
  4. Go to Start → Edit the system environment variables → Environment Variables → System Variables → New → set variable name to MAGICK_CODER_MODULE_PATH and value to C:\ImageMagick. (See this for reference.) Under System Variables, open Path → New → enter the same path C:\ImageMagick.
  5. Open C:\Apache24\htdocs\providence\app\conf\external_applications.conf. Find and replace imagemagick_path = [/usr/bin, /usr/local/bin, /opt/homebrew/bin] with imagemagick_path = C:/ImageMagick. (See this for reference.)
  6. Unzip and open the PHP package. Find php_imagick.dll and copy it into the C:\php-8.3.32\extfolder.
  7. Open C:\php-8.3.32\php.ini and add extension=imagick.
  8. That should be it. Open CollectiveAccess and go to MANAGEAdministrationCONFIGURATION CHECK. For me, ImageMagick still shows Didn't load because ImageMagick executables cannot be found. No idea what's up with that because it works... kinda. Here's the thing, for some reason it takes really long to process an image. Like, 3 minutes and 34 seconds to process a 1.05 MB image. For a file about the size of 450 KB, GD took 4 seconds and Imagick took 24 seconds. No idea what's up with that.
  9. To determine if an image is processed by GD, you can check the metadata. Go to C:\Apache24\htdocs\providence\media\collectiveaccess\images\0. Find an image that ends with thumbnail, right click it, and open with Notepad. You'll see a bunch of gibberish which is normal. If the image is indeed processed by GD, then at the top of the file you should see something like GD-JPEG. If you don't see it and you have Imagick available, then most likely the image was processed by Imagick.

NOTE: So I found this Stack Overflow tutorial. When I followed it and replaced the original ImageMagick CORE files with the PHP ones, it didn't work. When I copied ALL .dll files from the PHP package and replaced the original ImageMagick files, it worked. That didn't make any difference in image processing speed and I honestly don't know what difference it made at all. So to play it safe, I reverted all this. So basically what I'm saying is you probably shouldn't try this.