Hallo!
Ich habe mich im Rahmen von SELFHTML diesbezüglich mal vor einiger Zeit selbst schlaugemacht (wir wollen von zukünftigen SELFHTML-Versionen automatisch CHM-Dateien generieren lassen).
Das Problem ist, dass das CHM-Format nirgendwo wirklich dokumentiert ist. Eine inoffizielle Dokumentation, die über Reverse Engineering entwickelt wurde, ist unter http://www.nongnu.org/chmspec/latest/ zu finden. Dort wird auch auf das zu Grunde liegende Binärformat verwiesen (die verlinkte Seite enthält nur die logische Struktur).
Zumindest vor einigen Monaten habe ich noch nirgends eine brauchbare freie Lösung gefunden, um CHM-Dateien zu erzeugen. Die obige Doku wird im Moment eigentlich nur von Programmierern alternativer CHM-Anzeigeprogramme verwendet. Daher: Die einzige mir bekannte Möglichkeit bleibt weiterhin der Microsoft HTML Help Compiler, der mit dem Microsoft HTML Help Workshop mitkommt.
Da der Microsoft HTML Help Compiler ein Kommandozeilenprogramm ist, kannst Du ihn auch von PHP aus aufrufen - Du müsstest mit PHP halt nur die Dateien generieren, die der HHC benötigt, um daraus eine CHM zu machen - die Quelldateien sind im INI- (Projekthauptdate) und in einem proprietär erweiterten HTML-Format (Inhalts- und Stichwortverzeichnis) - das müsstest Du zusätzlich zu den Inhaltsdateien selbst generieren, das Format der Dateien ist aber relativ brauchbar beschrieben.
Der HHC funktioniert auch unter Linux - dort halt im Wine. Die Installation ist etwas komplizierter, da Wine selbst eine DLL bezüglich CHM mitbringt, die aber CHMs nur lesen kann, weswegen der HHC fehlschlägt, wenn man die mit Wine mitgelieferte DLL nutzt - in dem Fall muss man die DLL, die beim HHC mitkommt, verwenden. Wenn Du interesse daran hast, kann ich die genauen Schritte mal etwas ausführlicher Zusammenfassen.
Wine ist natürlich nur eine Alternative, wenn Du root-Rechte auf dem Server hast (oder sehr viel Ahnung von Linux und zumindest Shell-Zugriff), sonst hast Du keine Chance, das zu nutzen, wenn Du Linux verwendest. Wenn Du dagegen einen Windows-Server hast und mit PHP auch externe Programme ausführen darfst, dann hast Du eine gute Chance, den HHC einfach in ein Verzeichnis nochzuladen und dann ohne Administrator-Rechte direkt auszuführen.
Zusammengefasst: Eine einfache Lösung gibt es meines Wissens nicht, es besteht aber eine Möglichkeit, wenn Du bereit bist, sehr viel Zeit zu investieren und die Voraussetzungen gegeben sind.
Viele Grüße,
Christian