php.de

Zurück   php.de > Webentwicklung > PHP-Fortgeschrittene

PHP-Fortgeschrittene Arbeiten mit PHP ohne Einschränkungen

Antwort
 
LinkBack Themen-Optionen Thema bewerten
Alt 09.03.2011, 13:42  
Neuer Benutzer
 
Registriert seit: 09.03.2011
Beiträge: 4
PHP-Kenntnisse:
Fortgeschritten
ab-tools befindet sich auf einem aufstrebenden Ast
Standard C-Bibliothek aus PHP heraus ansprechen

Hallo zusammen,

gibt es eine Möglichkeit eine proprietäre C-Bibliothek aus PHP heraus anzusprechen?

Es müsste lediglich eine Funktion der C-Bibliothek mit ein paar Parametern aufgerufen und das Ergebnis zurückerhalten werden.

Es handelt sich um ein DEBIAN Linux Lenny (5.0) System, auf welchem ich Root-Zugriff habe. Die Bibliothek selbst liegt als dynamische (.so) sowie als statische (.a) Bibliothek vor. Deren Quelltext jedoch besitze ich nicht.

Wie kann solch eine C-Bibliothek aus PHP heraus angesprochen werden?

Grüße und danke im Voraus für eure Hilfe
__________________
Andreas
http://www.ab-tools.com
ab-tools ist offline   Mit Zitat antworten
Sponsor Mitteilung
PHP Code Flüsterer

Registriert seit: 21.08.2005
Beiträge: 4682
PHP-Kenntnisse:
Fortgeschritten

Alt 09.03.2011, 15:13  
Neuer Benutzer
 
Registriert seit: 16.02.2011
Beiträge: 4
PHP-Kenntnisse:
Fortgeschritten
MightyUhu befindet sich auf einem aufstrebenden Ast
Standard

Es gibt ein nettes Tutorial dazu auf der Zend Dev Zone. Allerdings scheinen die gerade Serverprobleme zu haben (ERROR 500) daher mal über Google Cache lesen

http://webcache.googleusercontent.co...=www.google.de

bzw. Originallink
http://devzone.zend.com/article/4486

hth
uhu
MightyUhu ist offline   Mit Zitat antworten
Alt 09.03.2011, 16:02  
Neuer Benutzer
 
Registriert seit: 09.03.2011
Beiträge: 4
PHP-Kenntnisse:
Fortgeschritten
ab-tools befindet sich auf einem aufstrebenden Ast
Standard

Hallo,

zunächst vielen Dank für deine schnelle Antwort.

Das ist dann doch erheblich komplizierter als ich gehofft hatte.

Habe mir das Tutorial gerade mal angesehen (die Seite funktioniert auch wieder):
Dort wird eine ganze C++ Klasse in PHP eingebunden, was ich glücklicherweise nicht brauche, sondern einfach "nur" eine einzige Funktion.

Habe gerade ein wenige in Google gesucht, aber spontan kein möglichst einfaches Tutorial gefunden, was beschreibt wie man eine simple C-Funktion mit Parameterübergabe (die fehlt nämlich leider in obigem Beispiel) in PHP zur Verfügung stellt.

Weißt du zufällig eine Seite wo das einigermaßen verständlich erkärt wird?
Das wird dann nämlich meine erste PHP-Extension.

Viele Grüße und danke
__________________
Andreas
http://www.ab-tools.com
ab-tools ist offline   Mit Zitat antworten
Alt 09.03.2011, 17:22  
Erfahrener Benutzer
 
Registriert seit: 26.12.2010
Beiträge: 175
PHP-Kenntnisse:
Anfänger
elise befindet sich auf einem aufstrebenden Ast
Standard

hi

die gleiche Seite, nur ein Stück vorweg ist ein guter Anfang:
http://devzone.zend.com/article/1021#Heading2

erstmal die Umgebung schaffen, damit alles compilefähig wird.
Welches Betriebssystem? (Developing PHP extensions for Windows will be covered in a later article, siehe dort...)
__________________
OSL♥
elise ist offline   Mit Zitat antworten
Alt 09.03.2011, 17:43  
Neuer Benutzer
 
Registriert seit: 09.03.2011
Beiträge: 4
PHP-Kenntnisse:
Fortgeschritten
ab-tools befindet sich auf einem aufstrebenden Ast
Standard

Hallo elise,

vielen Dank für deine Antwort.

Werde mir das mal in Ruhe ansehen.

Eine andere Möglichkeit wäre noch einfach ein kleine C++ Programm zu schreiben, dass die Parameter per Kommandozeile bekommt und das Ergebnis der Funktion entsprechend wieder ausgibt. Dieses ließe sich dann direkt von PHP aus aufrufen.

Grüße und danke nochmals
__________________
Andreas
http://www.ab-tools.com
ab-tools ist offline   Mit Zitat antworten
Alt 09.03.2011, 19:00  
Erfahrener Benutzer
 
Registriert seit: 26.12.2010
Beiträge: 175
PHP-Kenntnisse:
Anfänger
elise befindet sich auf einem aufstrebenden Ast
Standard

Habe es grad mal getestet, klappt wunderbar.

PHP-Code:
elise:extensions sudo phpize
Password
:
Configuring for:
PHP Api Version:         20041225
Zend Module Api No
:      20060613
Zend Extension Api No
:   220060519
configure
.in:3warningprefer named diversions
configure
.in:3warningprefer named diversions 
ok ok, ist eine ältere Php version... Dann:
PHP-Code:
elise:extensions $ ./configure --enable-hello
checking 
for grep that handles long lines and -e... /usr/bin/grep
checking 
for egrep... /usr/bin/grep -E
checking 
for a sed that does not truncate output... /usr/bin/sed
checking 
for cc... cc
checking whether the C compiler works
... yes
....
....
.... 
also die üblichen checks beim configure. Dann:
PHP-Code:
elise:extensions make

Build complete
.
Don't forget to run 'make test
Dann zeigt er Installationsdetails.

Danach habe ich die entstandene hello.so in den extension-Ordner geworfen und die php.ini angepasst (extension=hello.so).

Schließ und endlich wirft mir nun der Test...

PHP-Code:
elise:test php -'echo hello_world();'Hello World 
das Hello World zurück.

Schick. Bisher hatte ich nur mal Apache Module probiert.
Das Schwierigste wird wahrscheinlich für dich sein, gemäß deinem Betriebssystem die Umgebung herzustellen. Steht aber im Artikel drin. Bei mir war sie schon hergerichtet, weil ich öfters rumspiele.
__________________
OSL♥
elise ist offline   Mit Zitat antworten
Alt 09.03.2011, 20:29  
Erfahrener Benutzer
 
Registriert seit: 26.12.2010
Beiträge: 175
PHP-Kenntnisse:
Anfänger
elise befindet sich auf einem aufstrebenden Ast
Standard

Hier mal die drei Dateien umgearbeitet an den wichtigen Stellen zur Ansicht.
Diese Dateien wie oben (compiliert und) eingehängt ergeben nach Aufruf:
PHP-Code:
elise:extensions2 php -'echo elises();' 
die Auskunft:
PHP-Code:
nice try 
config.m4: (braucht es sicher nicht alles in der config, aber ich machs zum ersten mal)
PHP-Code:
PHP_ARG_ENABLE(elisewhether to enable ELISES support,
[ --
enable-elise   Enable Elises support])

if 
test "$PHP_ELISE" "yes"then
  AC_DEFINE
(HAVE_ELISE1, [Whether you have ELISES])
  
PHP_NEW_EXTENSION(eliseelise.c$ext_shared)
fi 
php_elise.h (der header)
PHP-Code:
#ifndef PHP_ELISE_H
#define PHP_ELISE_H 1

#define PHP_ELISES_VERSION "1.0" 
#define PHP_ELISES_EXTNAME "elise" //Name der Extension

PHP_FUNCTION(elises);

extern zend_module_entry elise_module_entry;
#define phpext_elise_ptr &elise_module_entry

#endif 
elise.c
PHP-Code:
#ifdef HAVE_CONFIG_H
#include "config.h"
#endif

#include "php.h"
#include "php_elise.h"

static function_entry elises_functions[] = {
    
PHP_FE(elisesNULL)
    {
NULLNULLNULL}
};

zend_module_entry elise_module_entry = {
#if ZEND_MODULE_API_NO >= 20010901
    
STANDARD_MODULE_HEADER,
#endif
    
PHP_ELISES_EXTNAME,
    
elises_functions,
    
NULL,
    
NULL,
    
NULL,
    
NULL,
    
NULL,
#if ZEND_MODULE_API_NO >= 20010901
    
PHP_ELISES_VERSION,
#endif
    
STANDARD_MODULE_PROPERTIES
};

#ifdef COMPILE_DL_ELISE
ZEND_GET_MODULE(elise)
#endif

PHP_FUNCTION(elises)
{
    
char *str;

    
str estrdup("nice try");
    
RETURN_STRING(str0);

Ordnerstruktur nach Aufruf von phpize:
PHP-Code:
Makefile        config.log        install-sh
Makefile
.fragments    config.m4        libtool
Makefile
.global        config.nice        ltmain.sh
Makefile
.objects    config.status        missing
acinclude
.m4        config.sub        mkinstalldirs
aclocal
.m4        configure        modules/
autom4te.cache/        configure.in        php_elise.h
build
/            elise.c            run-tests.php
config
.guess        elise.la        tmp-php.ini
config
.h        elise.lo
config
.h.in        include/ 
Die Bibliothek legt er dann schließlich in modules/ ab.
__________________
OSL♥

Geändert von elise (09.03.2011 um 21:57 Uhr).
elise ist offline   Mit Zitat antworten
Alt 11.03.2011, 19:52  
Neuer Benutzer
 
Registriert seit: 09.03.2011
Beiträge: 4
PHP-Kenntnisse:
Fortgeschritten
ab-tools befindet sich auf einem aufstrebenden Ast
Standard

Hallo elise,

vielen Dank für deine Mühe!

Grüße
__________________
Andreas
http://www.ab-tools.com
ab-tools ist offline   Mit Zitat antworten
Antwort


Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an
Gehe zu

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
[Erledigt] Objekte in Arrays ansprechen solick PHP Einsteiger 26 25.02.2011 11:44
Tabellenfelder ansprechen Choba PHP Tipps 2010 21 24.11.2010 20:42
[Erledigt] E-Mail aus Website heraus erzeugen Cyron HTML, Usability und Barrierefreiheit 9 13.10.2010 13:00
PHP Framework bzw. Bibliothek audi_s PHP Tipps 2010 10 12.04.2010 16:15
[Erledigt] Fenster aus Popup heraus schliessen - Popup ist ein frameset mooonikaaa JavaScript, Ajax und mehr 26 02.01.2010 02:08
Formular in Hauptfenster auf iframe ansprechen R.E.M. HTML, Usability und Barrierefreiheit 2 24.09.2006 15:33
Unsichtbares Formularfeld mit Javascript ansprechen mAy^daY HTML, Usability und Barrierefreiheit 6 13.08.2006 21:25
Prozedur auf MSSQL-Server mit php ansprechen duerov PHP Tipps 2006 2 03.08.2006 10:07
Seite per ID ansprechen? tayke PHP Tipps 2006 4 01.06.2006 23:37
[Erledigt] Lesegerät ansprechen und Chipkarte auslesen PHP-Fortgeschrittene 5 21.02.2006 14:38
leeren div-container ansprechen HTML, Usability und Barrierefreiheit 4 18.04.2005 11:04
Einen bestimmten Button in einer Radio Group ansprechen HTML, Usability und Barrierefreiheit 2 12.04.2005 16:31
AVM KEN als lokalen SMTP Server ansprechen workaholic PHP Tipps 2005 3 04.02.2005 13:20
Datenbankfelder ansprechen PHP Tipps 2005 1 04.01.2005 20:01
php heraus auf eine HTML Seite weiter verzweigen votec-cougar PHP Tipps 2004 4 16.09.2004 09:10

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
php c ansprechen, configure.in:3: warning: prefer named diversions, prefer named diversions, configure.in warning: prefer named diversions, warning: prefer named diversions, funktion in c ansprechen, wie rufe ich von php aus c bibliotheken, php programm c ansprechen, c library über php ansprechen, mit php c ansprechen, php funktionen aufrufen c bibliothek, php5.3 warning: prefer named diversions suse, c bibliothek php, php c bibliothek, c bibliothek unter php, c mit php ansprechen, wie binde ich eine c bibliothek in php ein, config.m4 wird nicht gefunden, zugriff von php auf c-bibliothek, php c aufrufen

Alle Zeitangaben in WEZ +2. Es ist jetzt 01:28 Uhr.




Powered by vBulletin® Version 3.7.2 (Deutsch)
Copyright ©2000 - 2012, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0
Aprilia-Forum, Aquaristik-Forum, Liebeskummer-Forum, Zierfisch-Forum, Geizkragen-Forum