Thursday, March 20, 2008

Mediawiki on .NET - not just yet

Task of the day - run MediaWiki, the engine behind Wikipedia using .NET Phalanger project. Easier said then done.

Result so far: PHP5 is not supported by Phalanger, latest build can't even process "require()" PHP call. Waiting for the newer release...

Software
  • IIS with ASP.NET enabled
  • Visual Studio 2008 pro
  • Phalanger
  • MediaWiki source code
  • MySQL
Issues
  • The latest stable Phalanger build - March 2008 official release - is broken. It fails on
    require_once( "$preIP/includes/WebStart.php" );
    Unfortunately, Phalanger team does not have nightly builds setup yet, and building it is not as simple as I was hoping. IMHO, continuous integration is the key for this kinds of projects.
  • Beta 4 (2007) does not support VS2008, and does not implement any of the PHP5 features. I don't know if the final release has PHP5 support, but b4 definitely does not support the new XML DOM objects. I guess it should be possible to use older MediaWiki release for PHP4, but I haven't tried that yet.
Version-updated configuration file i used (taken from this forum post)

<configuration>

<phpNet>
<classLibrary>
<add assembly="PhpNetMySql, Version=2.0.0.0, Culture=neutral, PublicKeyToken=2771987119c16a03" section="mysql" />
<add assembly="php_curl.mng, Version=2.0.0.0, Culture=neutral, PublicKeyToken=4ef6ed87c53048a3" section="curl" />
<add assembly="php_exif.mng, Version=2.0.0.0, Culture=neutral, PublicKeyToken=4ef6ed87c53048a3" section="exif" />
<add assembly="php_gd2.mng, Version=2.0.0.0, Culture=neutral, PublicKeyToken=4ef6ed87c53048a3" section="gd2" />
<add assembly="php_domxml.mng, Version=2.0.0.0, Culture=neutral, PublicKeyToken=4ef6ed87c53048a3" section="domxml" />
<add assembly="php_xml.mng, Version=2.0.0.0, Culture=neutral, PublicKeyToken=4ef6ed87c53048a3" section="xml" />
<add assembly="php_mbstring.mng, Version=2.0.0.0, Culture=neutral, PublicKeyToken=4ef6ed87c53048a3" section="mbstring" />
</classLibrary>

<compiler>
<!-- Whether to compile scripts in debug mode. -->
<set name="Debug" value="true" />
</compiler>

<error-control>
<set name="ReportErrors" phpName="error_reporting">
<remove value="Warning,Notice,Strict"/>
</set>
</error-control>

<globalization>
<!--
Encoding used for converting source files to Unicode and for run-time binary data conversions.
The value should be one of the identifiers of the code-page supported by Windows OS.
These include e.g. values "Latin1", "Latin2", "Windows-1250" etc
An empty value means the default code-page used by OS used.
Option has application scope and cannot be changed in application sub-directories.
-->
<set name="PageEncoding" value="Windows-1250" />
</globalization>
</phpNet>

<system.web>
<!-- Encoding used by web server to encode output data sent to the client. -->
<globalization responseEncoding="Windows-1250" />
</system.web>

</configuration>

No comments: