DotNet in PHP

Ja das stimmt. Aber ich habe sonst keine andere Alternative für einen realen Einsatz finden können. Oder hättest du noch einen Vorschlag?

Gruß, JeyB
 
Wenn du mir das Script gibst, kann ich es mal mit der Debug-Version von PHP laden und schauen, wo es genau knallt. Dann können wir vielleicht einen Patch zur Verfügung stellen, der das Problem in zukünftigen Versionen von PHP behebt.
 
Das ist der Teil, bei dem der Apache Server gecrasht ist:

PHP:
<?php
	try
	{
		$lDotNet = new DOTNET("System.Windows.Forms, Version=1.0.5000.0,  Culture=neutral, PublicKeyToken=b77a5c561934e089, Custom=null", "System.Windows.Forms.Form") or die("not created");
		die("created");
	}
	catch(Exception $lEx)
	{
		echo "Error occured:<br>".$lEx->GetMessage();
	}
?>

Musst evtl. den PublicKeyToken der assembly anpassen. Kannst auch jede andere .Net Klasse instanziieren. Es crasht bei jeder Klasse beim 2ten mal.
 
Ne ich habe PHP von hier heruntergeladen und verwende Windows Vista inkl. SP1. Die Funktion dotnet_load habe ich auch schon versucht - ohne Erfolg. Nach der Umstellung funktioniert alles. Der einzige Nachteil der jetzt vorliegt ist, dass die Performance nicht mehr so gut wie zuvor ist. Das ist aber nur ein minimaler Unterschied, mit dem ich sehr gut leben kann.
 
Das ist interessant. Bei mir gibts die Klasse DOTNET nicht und in der phpinfo() steht, das der Build keinen Support für .Net hat (unter COM), COM und DCOM sind aber enabled.

Welche PHP-Version hast du verwendet? Kannst du dir das erklären?
 
Ich verwende PHP 5.3.3. Die DotNet Klasse sollte allerdings laut Dokumentation bereits ab PHP 4.1.0 zur Verfügung stehen. Kannst ja manuell dein PHP mindestens auf PHP 5.3.2 upgraden, dann sollte die DotNet Klasse auch bei dir vorhanden sein. Bei mir sind COM, DCOM und .Net support aktiviert. Kannst evtl. auch in der php.ini den .Net support manuell aktivieren, bevor du dein PHP upgrade durchführst.
 
Komisch... ich habe die VC9 und zwar thread-safe.
Also an der Umstellung auf das Fast CGI kann es nicht liegen, weil er bei dem Apache Modul zuvor auch die DotNet Klasse erkannt hatte.
 
Das erklärt dein Problem und meine Inkompetenz ein Objekt von DOTNET zu erzeugen:

http://windows.php.net/download/ hat gesagt.:
Which version do I choose?

If you are using PHP with Apache 1 or Apache2 from apache.org you need to use the VC6 versions of PHP

If you are using PHP with IIS you should use the VC9 versions of PHP

VC6 Versions are compiled with the legacy Visual Studio 6 compiler

VC9 Versions are compiled with the Visual Studio 2008 compiler and have improvements in performance and stability. The VC9 versions require you to have the Microsoft 2008 C++ Runtime (x86) or the Microsoft 2008 C++ Runtime (x64) installed

Do NOT use VC9 version with apache.org binaries

Ich habe mich daran gehalten. Wenn du es auch hättest, hättest du keinen Absturz gehabt, weil es die DOTNET-Klasse gar nicht gegeben hat. Das wird auch der Grund sein, warum das nicht gefixt wird.

Du kannst mal probieren, was passiert, wenn du PHP als Extension für den IIS läuft. Da kannst du ja dann VC9 verwenden. Vermutlich wirst du da diese Probleme nicht haben.
 
Zurück