PHP extension?

Hallo.

Habe einige Fragen zu PHP extension.
Ich habe mir eine PHP extention gebaut. Dort ist nur eine funktion drin die „return „Hello““ macht.

Nun habe ich die ext. in den Ordner „ext“ kopiert und IP Symcon neu gestartet.
In der Php.ini steht die ext. jetzt drin.

Habe nun ein script ausgeführt mit:
include("…/ext/libtest1.dll");
echo test1();

Das wird als fehlerhaft markiert, aber ich sehe leider kein Fehler. Auch nicht im log File.
HTML output ist "MZ "

Hat jemand von euch eine Idee?

Danke.

BYE
Thomas

Funktionen von Extensions sind immer global verfügbar, daher kannst Du sie nicht mit include einbinden. Ob eine Extension korrekt geladen worden ist, kannst Du folgendermaßen feststellen:

<?php phpinfo(); ?>

Schau auch mal ins IPS log… Dort steht drin, wenn eine Extension nicht geladen wurde und warum.

paresy

In der log datei steht

05.07.2010 14:53:36.866 | 0 | MESSAGE | ScriptEngine | >Erweiterung: libtest1_u-2.9a.dll

und in php.ini steht sie auch drin.

Rufe ich nur die Funktion test1() auf, bekomme ich „Call to undefined function test1()“

In phpinfo() steht leider nichts von meiner Funktion.

Ist die dll jetzt geladen?

Danke.
BYE
Thomas

Jupp, sie ist dann geladen. Geht deine DLL im Apache+PHP?

paresy

Habe Sie in xampp mal unter php/ext/ reinkopiert. Geht leider auch nicht, bekomme „Call to undefined function test1()“.

Gibt es unter xampp irgendwie ein log file wo ich nachschauen kann ob die dll geladen wurde?

In php_error.log steht nur „Call to undefined function test1()“.

Danke.
BYE
Thomas

Hallo nochmal.
Hatte die lib in xampp nicht geladen. Jetzt ist Sie drin und ich bekomme einen Fehler.

„PHP Startup: Invalid library (maybe not a PHP library)“.

Warum geht es den bei IP Symcon?

Habe die Extension mit roadsend gemacht, geht das überhaupt damit?

BYe
Thomas

Ich hab mir die Seite angesehen und es wirkt nicht so, als wenn das irgendwas mit dem normalen PHP zu tun hätte. Ich würd darauf tippen, dass es nicht geht. Erstell doch ne normale PHP Extension.

paresy

Habe mir eine Extension unter zend in Visual c++ studio angelegt.
Funktioniert auch soweit.

Habe aber mittlerweile viele eignen Funktionen in php realisiert, wie bekomme ich meine php Funktionen in eine Extension ohne das ganze nochmal in c++ zu machen?

Danke.

BYe
thomas

Das geht so nicht. Extensions sind ausführbare binäre Programme (DLLs), während PHP-Kommandos interpretierte Scripte sind. Man muss also eine Sprache für Extensions verwenden, die DLLs erzeugen kann und die mit den Zend-Libraries zurecht kommt. Und dann die gesamte Logik nachprogrammieren.
Einfacher ist es doch aber, die PHP-Scripte in eine Datei zu kopieren und diese dann mit include zu laden. Das hat den gleichen Effekt wie eine Extension, nämlich die Funktionen für alle Programme bereitzustellen.

Tommi