XIBO step by step Installation IIS 8.5 on WINDOWS SERVER 2012


I want to share my experience for installing Xibo on Windows Server. I want to share if help anyone needs this kind of installation.

This guide will explain every step for IIS 8.5 on WINDOWS SERVER 2012 R2 Standart 64Bit. If any mistake please correct me.
XIBO Installation IIS 8.5 on WINDOWS SERVER 2012

Install Microsoft Web Platform Installer from Windows
Select and Install PHP 5.6 From Web Platform Installer

Mysql 5.6 download from community and install (https://dev.mysql.com/downloads/file/?id=467267)

Files and Folders
In this Manual web site is: Default Web Site you can use which you want in IIS
Extract all Xibo Php Files to C:\PHP_FILES - And Give Permission for IUSR and IIS_IUSR
Create directory for your Library Files C:\LIB_FILES - And Give Permission for IUSR and IIS_IUSR

IIS Settings
Default Web Site -> Basic Settings-Change Physical path to your XiboFiles folder in this manual C:\PHP_FILES\web
Default Web Site-> Request Filtering - Maximum Query String (Bytes) to 4096 (otherwise you will get datatables.ajax error)
Default Web Site->URLRewrite-Import Rules-Configuration files.And browse and import the .htaccess file in C:\PHP_FILES\web\folder. (remove the problem line and import)
Default Web Site->MimeTypes -> Add (.woff = font/x-woff )
Default Web Site-> MimeTypes -> Add (.woff2 = font/woff2 )
Default Web Site->PHP Manager-Select Checkbox If Not optimal PHP configuration detected-View recommentdations
Default document
monitorChangesTo (otherwise you will get HTTP 500 error when start install.php)
IIS: Request Filtering -> Edit Request Filtering Settings - Maximum allowed content length (Bytes) (3000000 to 30000000) (Add one more zero) (Default file size is 30mb, we are making it 300mb.)
Default Web Site->Handler Mappings-PHP_via_FastCGI-Request Restrictions-Verbs-All verbs . (Otherwise you will get HTTP 405 error when try to save a setting in portal) (You need the double quota for start and end of the line of php.exe path, othervise windows wont let you save the setting for Handler Mappings for Php)

PHP.ini (DefaultWebSite-Php Manager-Php.ini)
Add line in [PHP] section: extension=php_fileinfo.dll
Change other lines as below in PHP.ini;

Sending Mail in PHP
Xibo uses PHPMail to connect your local SMTP Server Application but PHPMail cannot send directy from itself. You need a 3rd party smtp server for sending mail from php.
I am using sendmail.exe
Download and extract all sendmail files to a folder ex.C:\Sendmail

modify files as below;
sendmail.ini (samples for office 365mail setting, use your smtp provider setting)

error_logfile=error.log (it creates a text file in sendmail folder to track errors.)
debug_logfile=debug.log (it creates a text file in sendmail folder to track errors.)
auth_password=password of your email

You also need to modify PHP.ini for your mail settings;

[mail function]
SMTP = smtp.office365.com
smtp_port = 25
sendmail_from = your@domain.com
sendmail_path ="C:\sendmail\sendmail.exe"
mail.add_x_header = On

No Need to install Any Seperate Server for Zero Mq

Php Xmr Settings
Download zero mq package from php.net (this is PHP 5.6 and must be x86 even in x64 Windows)
copy php_zmq.dll to your ext folder in PHP installation (ex. C:\Program Files (x86)\PHP\v5.6\ext)
copy libzmq.dll to your PHP installation folder (ex. C:\Program Files (x86)\PHP\v5.6)
If your package is wrong you could get error. You can check from Windows Event Viewer-Application Logs (PHP Warning: PHP Startup: Unable to load dynamic library ‘C:\Program Files (x86)\PHP\v5.6\ext\php_zmq.dll’ - The specified module could not be found.)

Modify php.ini


Xibo Cms Side
Copy from C:\PHP_FILES\vendor\xibosignage\xibo-xmr
or Create new file as the below content
config.json content:

  "listenOn": "tcp://",
  "pubOn": ["tcp://yourip:9505", "tcp://yourip:50002"],
  "debug": true

copy the file in to C:\PHP_FILES\vendor\bin folder.
in same folder open command promt (Pressing Shift and right mouse key and select Open Command prompt from here)
run the command: php xmr.phar
you will get debug console with information on xmr events
if everything is correct you will get a screen like this

C:\YDSPHP\vendor\bin>php xmr.phar
[2017-05-04 22:13:19] xmr.INFO: Starting up - listening for CMS on tcp:// [] []
[2017-05-04 22:13:19] xmr.INFO: Bind to tcp://yourip:9505 for Publish. [] []
[2017-05-04 22:13:19] xmr.INFO: Bind to tcp://yourip:50002 for Publish. [] []
[2017-05-04 22:13:49] xmr.DEBUG: Heartbeat... [] []
[2017-05-04 22:14:19] xmr.DEBUG: Heartbeat... [] []
[2017-05-04 22:14:49] xmr.DEBUG: Heartbeat... [] []
[2017-05-04 22:15:19] xmr.DEBUG: Heartbeat... [] []

Note: Dont forget to run “php xmr.phar” command when you restart your server

CMS Settings for Zeromq
Settings-Displays-XMR Private Address: tcp://
Settings-Displays-XMR Public Address: tcp://x.x.x.x:9505
Displays-Display Setting for your display group-Edit-XMR Public Address:tcp://x.x.x.x:9505
After players get those settings you will see XMR Status: Connected (tcp://x.x.x.x:9505, last activity 04.05.2017 12:23:22) It will update every 30 seconds.

Help with including xmr in xibo installation
CMS install on IIS problem
Windows 2012 Plesk Install - 405 Error
Ajax request fails after 1.8.2 upgrade
Error Xibo Client Options
Can find mcrypt in PHP 7
Iis error 403.14
Problems with XAMPP & ZeroMQ
Application Message: Server Error when trying to delete media and more
The requested method PUT is not allowed for the URL

Thanks. Any plans to add XMR and the ZMQ php extensions to this for 1.8 series CMS?


Yes, I am trying to install them first.


Hi Michael,
thanks for your instructions.
I followed them step by step, but I always get “405 error”.
Could you help me?


Please check; Default Web Site->Handler Mappings-PHP_via_FastCGI-Request Restrictions-Verbs-All verbs . (Otherwise you will get HTTP 405 error when try to save a setting in portal) (You need the double quota for start and end of the line of php.exe path, othervise windows wont let you save the setting for Handler Mappings for Php)
This is screen shot for you;


Added Mail, Zeromq, Xmr Settings.


Thanks. That’s great. I think that only leaves getting XTR working outstanding then. As it stands, none of your Tasks will be being run, so no database maintenance is happening etc.


Thanks Michael,
I tried, but the result is always the same :frowning:


Can you send me sshot of your setting?
This must be releated to verbs authorization. You can also check from Chrome Developer tools which verb is rejected.

(In the popup which says 405 error also write details if you can see all the page, it shows a part of of page in popup)


This is the console from Chrome:

The verb seems the PUT method, but I don’t understand why.

If can help you, I attach my web.config file



You can also try this http://xibo.org.uk/manual-tempel/en/install_environment_windows_iis.html#http_verbs


Unfortunately, I already added this lines in my web.config :frowning:

"localhost/xibo/install/2?" Error 404

Did you try restarting IIS?


Yes, I tried also restart the server.
Could be a problem the WebDAV module?


Hi Michael,
for information, the problem in my case was the WebDAV Module.
I unistalled it.

Thanks for the help.


I have activate monitorChangesTo with phpmanager

Saved/Apply button spins but doesn't save/apply

Michael –

Thanks so much for your guide. I’ve followed the instructions very carefully. When I issue the “php xmr.phar” command I only get the first line “[2017-07-11 08:57:45] xmr.INFO: Starting up - listening for CMS on tcp:// [] []”. I don’t get the “Bind” and Heartbeat" entries. My Campaigns play, but I get “XMR unresponsive, issue reconfigure” errors. Any ideas on what I have missed. Thanks.


Can you send screenshot?


Thanks for your help on this issue. Here is a screenshot of the config.json and the results of the startup command.

I only get the XMR Unresponsive errors on the Android client, the Windows client doesn’t get these errors. I’ve tried both and for the Private XMR IPs in the Xibo “Settings”. I’ve tried both adding and removing the Private XMR address from the Display Settings. I will verify the Android Client settings to see if I have something wrong there.

Thanks again


I think private adress and public adress should not be same.
You can see my settings