V4.0.1 XMR not compatible with Windows/IIS installation

Xibo CMS 4 is currently incompatible with Windows/IIS installation because there aren’t any php_zmq NTS binaries out there that work with PHP 8.1/8.2. This shouldn’t be advertised as available for that combination because its impossible to get it to run. I found out the hard way.

I appreciate your frustration - we didn’t know either. We don’t and have never used IIS, so we rely on the community to help with installations on that platform.

We’ve tried to make it clear what is and isn’t supported at the top of the installation instructions (if you’re doing a manual/custom install): Xibo on a Web server | Xibo Digital Signage.

I think the solution will end up being getting it manually compiled - we’re following along with that here: V4.0.0 - Some Bugs + ZMQ Problems - #10 by dan

I was able to get it to work by switching to the thread safe version of PHP 8.2.10, which you aren’t supposed to do on Windows with IIS but seems to be working ok for whatever reason. After that, XMR starts up and runs with the custom compiled binaries found here PHP 8.1 windows builds? · Issue #223 · zeromq/php-zmq · GitHub. Not ideal but it is what it is for right now. I do have an odd glitch where when I request a screen shot from displays it tells me that ZeroMQ has to be installed. But it is installed, and if I were to issue a command like “Collect now” that works fine.

I have no idea how to compile this stuff on my own and I don’t use PHP for anything other than Xibo or I would do so.

Thanks for coming back with your workaround.

I’m hoping that someone will get a NTS version compiled so that this issue is completely solved. Failing that I am not sure what we do to be honest, but we will figure something out.

Docker on windows is much more robust that it used to be (me and some of the dev team develop on it), so that might be an option to explore. You’d reverse proxy it with IIS I’d imagine, although I am not an expert there.

I’ll ask in the github thread; I would be willing to pay a small amount to somebody who knows how to do that to compile a PHP 8.2 compatible NTS version of the binaries and release them to the world.

I also am getting an error in the Event Log every time I visit the Displays page:

Exception information:
Exception type: HttpException
Exception message: The length of the query string for this request exceeds the configured maxQueryStringLength value.
at System.Web.HttpRequest.ValidateInputIfRequiredByConfig()
at System.Web.HttpApplication.PipelineStepManager.ValidateHelper(HttpContext context)

I have the maxQueryStringLength set to a ridiculously high amount, so I am quite certain I am not actually hitting that. Not sure what the actual problem is. The full event log is:

Event code: 3005
Event message: An unhandled exception has occurred.
Event time: 9/11/2023 12:34:52 PM
Event time (UTC): 9/11/2023 4:34:52 PM
Event ID: fa99d69eddfd42a1b74b24fc83f78578
Event sequence: 22
Event occurrence: 17
Event detail code: 0

Application information:
Application domain: /LM/W3SVC/2/ROOT-1-133388784374696312
Trust level: Full
Application Virtual Path: /
Application Path: C:\xibo-cms\web\
Machine name: LSBGFLWS22P01

Process information:
Process ID: 54608
Process name: w3wp.exe
Account name: IIS APPPOOL\Xibo CMS

Exception information:
Exception type: HttpException
Exception message: The length of the query string for this request exceeds the configured maxQueryStringLength value.
at System.Web.HttpRequest.ValidateInputIfRequiredByConfig()
at System.Web.HttpApplication.PipelineStepManager.ValidateHelper(HttpContext context)

Request information:
Request URL: https://xibo-cms.domain.com:443/display?draw=1&length=10&start=0&order[0][column]=1&order[0][dir]=asc&columns[0][data]=displayId&columns[1][data]=display&columns[2][data]=displayType&columns[3][data]=address&columns[4][data]=mediaInventoryStatus&columns[5][data]=licensed&columns[6][data]=currentLayout&columns[7][data]=storageAvailableSpace&columns[8][data]=storageTotalSpace&columns[9][data]=storagePercentage&columns[10][data]=description&columns[11][data]=orientation&columns[12][data]=resolution&columns[13][data]=function&columns[13][name]=tags&columns[14][data]=defaultLayout&columns[15][data]=incSchedule&columns[16][data]=emailAlert&columns[17][data]=loggedIn&columns[18][data]=lastAccessed&columns[19][data]=function&columns[19][name]=displayProfileId&columns[20][data]=function&columns[20][name]=clientSort&columns[21][data]=deviceName&columns[22][data]=clientAddress&columns[23][data]=macAddress&columns[24][data]=timeZone&columns[25][data]=languages&columns[26][data]=latitude&columns[27][data]=longitude&columns[28][data]=screenShotRequested&columns[28][name]=screenShotRequested&columns[29][data]=function&columns[29][name]=thumbnail&columns[30][data]=isCmsTransferInProgress&columns[30][name]=isCmsTransferInProgress&columns[31][data]=&columns[31][name]=bandwidthLimit&columns[32][data]=lastCommandSuccess&columns[33][data]=xmrChannel&columns[34][data]=commercialLicence&columns[34][name]=commercialLicence&columns[35][data]=&columns[35][name]=remote&columns[36][data]=groupsWithPermissions&columns[37][data]=screenSize&columns[38][data]=isMobile&columns[38][name]=isMobile&columns[39][data]=isOutdoor&columns[39][name]=isOutdoor&columns[40][data]=ref1&columns[41][data]=ref2&columns[42][data]=ref3&columns[43][data]=ref4&columns[44][data]=ref5&columns[45][data]=customId&columns[46][data]=costPerPlay&columns[47][data]=impressionsPerPlay&columns[48][data]=createdDt&columns[49][data]=modifiedDt&columns[50][data]=countFaults&columns[50][name]=countFaults&columns[51][data]=function&displayId=&display=&logicalOperatorName=OR&mediaInventoryStatus=&loggedIn=&authorised=&xmrRegistered=&tags=&logicalOperator=OR&displayGroupId=&displayProfileId=&folderId=1&lastAccessed=&clientType=&clientCode=&customId=&macAddress=&clientAddress=&orientation=&commercialLicence=&_=1694450091764
Request path: /display
User host address:
Is authenticated: False
Authentication Type:
Thread account name: IIS APPPOOL\Xibo CMS

Thread information:
Thread ID: 127
Thread account name: IIS APPPOOL\Xibo CMS
Is impersonating: False
Stack trace: at System.Web.HttpRequest.ValidateInputIfRequiredByConfig()
at System.Web.HttpApplication.PipelineStepManager.ValidateHelper(HttpContext context)

Custom event details:

1 Like

The solution for this case (assuming you are using IIS) is to increase the MaxQueryString in your “web.config” file of IIS like this:

<requestLimits maxAllowedContentLength="157286400" maxUrl="8192" maxQueryString="8192" />

Or directly in the site settings in IIS (both solutions are the same thing).

I’m sorry, I just noticed that you mentioned you’ve already increased the number of bytes in the maxQueryString…
Maybe this behavior is due to using PHP TS with IIS + FastCGI, but I can’t say for certain.

Hi @pitoco02,
Yes, I already had that setting way beyond even 8192 bytes, still same message. It doesn’t seem to adversely affect anything though, so who knows.

This was observed before I switched to the “Thread Safe” version of PHP to get php_zmq working and XMR running.

What about this?:

<httpRuntime maxUrlLength="2600" maxQueryStringLength="8192" />

Try adding this httpRunTime configuration tag (which seems to be different from the requestLimits tag). It might solve the issue. Let me know.


That worked, the error is gone. Wonder why it wasn’t necessary before?

The tables plugin we use “DataTables.net” adds more to the URL each time we add more columns to the table. I suppose the new columns in v4 have tripped over that limit.

Now we have it:



You are a gentleman and a scholar. That was me in the threat there btw :smile:

1 Like

Thank you! :smiley: Teamwork

Your XMR are working?

It is running perfectly. I’m using NSSM to run it as a Windows service.