PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Apache als Dienst verursacht "com_exception" Fehler, sonst nicht


Scream
2012-10-11, 09:20:36
Sobald ich Apache als Dienst laufen habe, bekomme ich folgenden Fehler:

Fatal error: Uncaught exception 'com_exception' with message '<b>Source:</b> Unknown<br/><b>Description:</b> Unknown' in C:\xampp\htdocs\.....

Mein PHP-Code lautet:

function IT_Execute($command)
{
$conn = new com("Test.Applikation");
$m1 = 1;
$m2 = 2000;
$erg = $conn ->settimeout($m1, $m2);
$erg = $conn ->Execute($command);
}

Ich weiß nicht schön, aber funktioniert, sobald Apache nicht als Dienst installiert ist und vom Control-Panel aus gestartet wird.

Habe schon alles Versucht. Den Dienst mit anderen Benutzern bzw. Rechten zu starten, andere XAMPP Versionen getestet, diverse COM-Einstellungen in der php.ini und mehrere Stunden gegoogelt. Auch diesen und viele ähnliche Tipps habe ich erfolglos probiert: http://figured-it-out.com/figured-out.php?sid=24

An meiner Anwendung oder am PHP-Code kann es nicht liegen, da es ohne Dienst ja funktioniert.

Ich hoffe jemand hat noch nen Tipp!

Lokadamus
2012-10-11, 09:39:10
mmm...

Welche Version läuft den da?

Scream
2012-10-11, 10:41:56
Windows Server 2008 R2 und aktuell XAMPP 1.81. Wie gesagt haben andere XAMPP Versionen auch nicht funktioniert, habe mindestens 5 getestet.

EDIT:
Habe es gerade auch nochmal mit Windows 7 SP1 x64 versucht, dasselbe Problem. Ebenso mit Windows XP SP3 x86.

Lokadamus
2012-10-11, 12:23:06
mmm...

Firewall ist ausgeschaltet?
In den Logs von Apache, MySQL oder Windows steht nichts?
http://php.net/manual/de/function.mysql-connect.php <-- vielleicht helfen dir die Hinweise in der Mitte irgendwie weiter.

Die Kommentare könnten vielleicht auch helfen, geht um Localhost und 127.0.0.1
http://www.php.net/manual/de/function.mysql-connect.php#97019

Scream
2012-10-11, 23:26:43
mmm...

Firewall ist ausgeschaltet?
In den Logs von Apache, MySQL oder Windows steht nichts?
http://php.net/manual/de/function.mysql-connect.php <-- vielleicht helfen dir die Hinweise in der Mitte irgendwie weiter.

Die Kommentare könnten vielleicht auch helfen, geht um Localhost und 127.0.0.1
http://www.php.net/manual/de/function.mysql-connect.php#97019

Ich glaube du hast mein Problem nicht richtig verstanden ;-)
Hat auf alle Fälle nichts mit MySQL zu tun. Ich versuche es morgen evtl. nochmal zu erklären.

Hab noch was gefunden, worauf mein Problem eher passt:

If you try to launch GUI apps from a service in Vista, you'll have lots of trouble. As a security feature, Vista mediates the interaction of services with the desktop using 'Interactive Services Detection'.

That means, if you are running PHP as a module of an Apache service, you won't be able to launch GUI apps using any method. This kind of thing just won't work:

$WshShell = new COM("WScript.Shell");
$oExec = $WshShell->Run("notepad.exe", 7, false);

So, if you want to use Apache/PHP as a proxy for launching GUI apps, you'll need to run Apache as a console application.

First, if Apache is already installed as a service, you'll need to set it's startup type to "manual" using the services snap-in. (%SystemRoot%\system32\services.msc) Search for Services in the start menu search box.

Then add a shortcut to C:\apache\bin\httpd.exe (or wherever Apache is installed) to your Startup folder, and set that shortcut to start minimized. You can use an app like TrayIt! to force Apache down into the system tray.

Then use any of the methods outlined on the PHP website and you will be able to open a Windows application from PHP and see it's GUI.

Lokadamus
2012-10-12, 09:49:30
Ich glaube du hast mein Problem nicht richtig verstanden ;-)

Hab noch was gefunden, worauf mein Problem eher passt:mmm...

Du hast meine Fragen auch nicht richtig beantwortet. ;)
Xampp besteht zumindest aus: Apache 2.4.3, MySQL 5.5.27, PHP 5.4.7 und phpMyAdmin 3.5.2.2
Mit welcher DB sich PHP nicht verbinden soll, hast du nicht beschrieben.
Da MySQL zu AMP (=Lamp usw.) standardmäßig gehört, ist es die naheliegenste Sache.

Hat XP SP3 die Interactive Services Detection erhalten? Würde mich etwas wundern. Ansonsten müsste es hier fehlerfrei laufen, was aber laut deinen Beitrag weiter oben nicht der Fall ist. ;(
Kannst mal schauen, ob die sich abschalten lassen:
http://myguidemaster.blogspot.de/2012/04/disable-interactive-services-detection.html

Scream
2012-10-12, 17:06:29
mmm...

Du hast meine Fragen auch nicht richtig beantwortet. ;)
Xampp besteht zumindest aus: Apache 2.4.3, MySQL 5.5.27, PHP 5.4.7 und phpMyAdmin 3.5.2.2
Mit welcher DB sich PHP nicht verbinden soll, hast du nicht beschrieben.
Da MySQL zu AMP (=Lamp usw.) standardmäßig gehört, ist es die naheliegenste Sache.

Hat XP SP3 die Interactive Services Detection erhalten? Würde mich etwas wundern. Ansonsten müsste es hier fehlerfrei laufen, was aber laut deinen Beitrag weiter oben nicht der Fall ist. ;(
Kannst mal schauen, ob die sich abschalten lassen:
http://myguidemaster.blogspot.de/2012/04/disable-interactive-services-detection.html


Stimmt. Also die Firewall ist überall ausgeschaltet. In den Windows und Apache Logs stand nichts. Nur im PHP Log der oben bereits genannte Fehler :

Fatal error: Uncaught exception 'com_exception' with message '<b>Source:</b> Unknown<br/><b>Description:</b> Unknown' in C:\xampp\htdocs\.....

Ich will mich zu gar keiner DB verbinden. Ich möchte nur auf die Daten vom Programm "Test.Applikation" zugreifen. Das habe ich in meinem ersten Beitrag leider nicht beschrieben, sorry.
Es ist ein Windows Programm, welches läuft und von dem ich mittels PHP Daten holen möchte, über COM eben.


Deinen Tipp mit dem "Interactive Services Detection" abschalten teste ich am Montag. Danke dafür!

Sephiroth
2012-10-12, 18:49:53
DCOM aktiviert und beim Apache-Dienst die Option "Datenaustausch zwischen Dienst und Desktop zulassen" aktiviert (Tab Anmelden)?

Scream
2012-10-12, 19:58:52
DCOM aktiviert und beim Apache-Dienst die Option "Datenaustausch zwischen Dienst und Desktop zulassen" aktiviert (Tab Anmelden)?

Jop, hat nicht geholfen.

Scream
2012-10-15, 08:25:44
Kannst mal schauen, ob die sich abschalten lassen:
http://myguidemaster.blogspot.de/2012/04/disable-interactive-services-detection.html

Hat leider auch nicht funktioniert.

Allerdings habe ich etwas weiter geforscht und bin auf diesen Beitrag hier gestoßen: Erkennung interaktiver Dienste / UI0Detect (http://w8.apfelböck.de/1440-erkennung-interaktiver-dienste-ui0detect)
Mit dieser Batchdatei lassen sich Programme im Systemkontext starten. Habe das mit Apache getestet und nun klappts. Ist zwar nicht schön aber das ist mir in diesem Fall egal ;)

Wenn ich Apache als User starte funktionierts zwar auch, allerdings wird Apache beim abmelden des Benutzers dann auch beendet. Mit dieser Lösung läuft Apache weiter.

Sephiroth
2012-10-15, 20:05:49
ähm, da wird das gemacht was ich geschrieben habe, nur auf cmd line ebene o.0

Scream
2012-10-15, 20:08:36
ähm, da wird das gemacht was ich geschrieben habe, nur auf cmd line ebene o.0

So funktionierts aber leider nicht ;-)

Gast
2012-10-23, 04:24:41
Wenn ich Apache als User starte funktionierts zwar auch, allerdings wird Apache beim abmelden des Benutzers dann auch beendet. Mit dieser Lösung läuft Apache weiter.Aber dann doch auch im Kontext des "allmächtigen" SYSTEM-Users, oder? Zumindest ziehe ich das aus der Beschreibung dieses RunAsSystem-Skripts. Bezweifle, dass das eine gute Idee ist.

Scream
2012-10-23, 07:02:21
Aber dann doch auch im Kontext des "allmächtigen" SYSTEM-Users, oder? Zumindest ziehe ich das aus der Beschreibung dieses RunAsSystem-Skripts. Bezweifle, dass das eine gute Idee ist.
Ja genau. Ich stimme dir zu die Lösung ist nicht schön, aber vorerst die einzig funktionierende.