Ich versuche schon die halbe Woche IIS 7, PHP und MSSQL 2008 zur Zusammenarbeit mit Typo3 (Version 4.3) zu bewegen. Letztendlich haben viele kleine Debuggingschritte zum Erfolg geführt. Da viele Anleitungen entweder nicht funktionierten oder nicht exakt mein System abbildeten, möchte ich das Ergebnis jetzt hier der Weltöffentlichkeit zugänglich machen:
Erstmal vorab meine Systemkonfiguration:
- IIS7
- MSSQL 2008 SP1
- PHP 5.2.13 nts
Ich gehe davon aus, dass PHP und MSSQL bereits zusammenarbeiten, so dass folgendes Testskript fehlerfrei durchläuft:
<?php
$con = mssql_connect(COMPUTERNAME\DATENBANK-INSTANZNAME','username','password')
or die('Keine Verbindung zum Server!');
mssql_select_db('Testdatenbankname')
or die('Datenbank konnte nicht ausgewählt werden!');
$SQL = "SELECT TOP 10 * FROM ExampleTable";
$result = mssql_query($SQL)
or die('Fehler: ' . mysql_error());
$count = mssql_num_rows($result);
print "$count Datensätze:<hr />\n\n";
while ($Row = mssql_fetch_assoc($result)) {
print $Row['Vorname'] . "<br>";
}
mssql_close($con);
print "<br><br>-----> Fertig!";
?>
Wenn das schon mal funktioniert, kann man von einem richtig konfigurierten Zusammenspiel von IIS7, PHP und MSSQL 2008 ausgehen. Falls nicht: Ich werde bald einen weiteren Artikel über das Zusammenspiel von IIS7, PHP und MSSQL2008 veröffentlichen. Vielleicht hilft auch dieser Link schon weiter. Wichtig ist vor allem der Datenbank-Instanzname mit dem vorangestellten Computernamen.
Um nun TYPO3 mit dem MSSQL-Server reden zu lassen kann, man sich zweier Zugangsarten bedienen:
- via ODBC
- mit dem nativen PHP MSSQL-Treiber
Ich habe mich schließlich für den nativen Treiber entschieden, da via ODBC Probleme mit der 64Bit-Architektur des Servers aufgetreten sind.
Nun aber zur eigentlichen TYPO3-Installation und Konfiguration. Zuerst muss die komplette TYPO3-Installation in das entsprechende Serververzeichnis kopiert werden. Nun der Knackpunkt: Da TYPO3 den Zugriff auf MSSQL über das DatabaseAbstractionLayer (dbal) realisiert, müssen die Extensions dbal und adodb vor jeder weiteren Konfiguration manuell in die TYPO3-Installation eingebunden werden. Dazu die beiden Extensions herunterladen (nicht als *t3x, sondern als Source) und in das Verzeichnis /typo3conf/ext/ kopieren. Ich habe die Extensions einfach mit einem anderen TYPO3 per Extension-Manager heruntergeladen und dann per FTP herunterkopiert.
Damit die Extensions auch verwendet werden, müssen sie in der localconf.php in das Extensionarray aufgenommen werden. Außerdem muss die dbal-Extension noch ein wenig für den MSSQL2008 konfiguriert werden. Das Ganze sieht dann so aus:
<?php
$TYPO3_CONF_VARS['SYS']['sitename'] = 'New TYPO3 site';
// Default password is "joh316"
$TYPO3_CONF_VARS['BE']['installToolPassword'] = 'bacb98acf97e0b6112b1d1b650b84971';
$TYPO3_CONF_VARS['EXT']['extList'] = 'version,tsconfig_help,context_help,extra_page_cm_options,impexp,sys_note,tstemplate,tstemplate_ceditor,tstemplate_info,tstemplate_objbrowser,tstemplate_analyzer,func_wizards,wizard_crpages,wizard_sortpages,lowlevel,install,belog,beuser,aboutmodules,setup,taskcenter,info_pagetsconfig,viewpage,rtehtmlarea,css_styled_content,t3skin,t3editor,report';
$typo_db_extTableDef_script = 'extTables.php';
// dbal-Extension konfigurieren
$TYPO3_CONF_VARS['EXTCONF']['dbal']['handlerCfg'] = array(
'_DEFAULT' => array(
'type' => 'adodb',
'config' => array(
'driver' => 'mssql',
'useNameQuote' => TRUE
)
),
)
// Extensions an das Array anfügen:
$TYPO3_CONF_VARS['EXT']['extList'] .= ',adodb,dbal';
$typo_db_username = 'username';
$typo_db_password = 'password';
$typo_db_host = 'COMPUTERNAME\DATENBANKINSTANZNAME'; // ACHTUNG! Hier meckert TYPO3 im Installer, es ist aber richtig so!
$typo_db = 'Datenbankname';
## INSTALL SCRIPT EDIT POINT TOKEN - all lines after this points may be changed by the install script!
?>
Folgende Links haben mir zwar weitergeholfen, führten aber nicht eindeutig zur Lösung:
http://xavier.perseguers.ch/en/tutorials/typo3/articles/mssql-database/configuring-typo3.html
http://wiki.typo3.org/index.php/Mssql
http://msdn.microsoft.com/de-de/library/dd631816%28v=SQL.10%29.aspx
[Update] Ich wusste es schon, hab es aber erst jetzt getestet: TYPO3 unterstützt ab der Version 4.4, welche Mitte Juni 2010 erscheint, bereits von Haus aus MSSQL und einige andere DBMS. So kann die Datenbankverbindung jetzt auch bequem über den 123-Installer konfiguriert werden – ohne vorheriges, manuelles Extension-Installieren.
[Update2] Da der Database-Analyzer des Install-Tools offenbar nicht für dbal geeignet ist, bin ich mittlerweile doch wieder zu mySQL zurückgekehrt… Mit der neuen mySQL-Workbench (ab Version 5.2) ist das Ganze sogar richtig gut bedienbar!
Tags: adodb, dbal, driver, iis, mssql, mysql, native, PHP, TYPO3
[...] Ein steiniger Weg: MSSQL 2008 und TYPO3 (2010) [...]