Schrift
[thread]875[/thread]

Kommunikationsproblem Perl->PHP

Leser: 1


<< |< 1 2 3 >| >> 28 Einträge, 3 Seiten
Gast Gast
 2007-01-10 16:18
#9482 #9482
Ich hab folgendes Problem:

Ich bin dabei eine XML-Schnittstelle mit einen Telefonanbieter zu programmieren über welche man Webbasiert Rufnummernblöcke von dem Telefonanbieter ordern kann.

Die XML-Schnittstelle (empfangen & senden) selbst ist in Perl programmiert da PHP gewisse Fähigkeiten dafür fehlen.
Um das mal kurz zu veranschaulichen:

Web-Interface (php) ----schreib----> XML-Datei
XML-Schnittstelle (perl, bei mir) ----sendet----> XML-Datei
XML-Schnittstelle (beim Anbieter) <----empfängt---- XML-Datei
---Verarbeitung beim Anbieter unbekannt---
XML-Schnittstelle (beim Anbieter) ----antwortet(sendet)----> neue XML-Datei
XML-Schnittstelle (perl, bei mir) <----empfängt---- neue XML-Datei
Parser (php) <----wertet aus---- neue XML-Datei

Alles ist soweit fertig, das Problem liegt beim letzten Schritt.
Wenn meine XML-Schnittstelle(Perl) die XML-Datei empfängt, dann soll diese automatisch das PHP-Script anstoßen damit die XML-Datei ausgewertet wird, nur das tut die Schnittstelle nicht.

Folgendermaßen sieht der Aufruf von php aus der Perl-Datei aus:
Code: (dl )
system("/usr/bin/php", "/var/www/xml/parse.php");


Der Webbrobser wurde als Owner gesetzt und ich habe jegliche Rechte für die Datei freigegeben.

Wenn ich nun eine Anfrage an den Telefonanbieter schicke bekomme ich eine Antwort welche die besagte Perl-Datei ausführt. Diese Perl Datei führt ihre Arbeit korrekt durch, das einzige was sie anscheinend nicht tut ist den system() Befehl mit der PHP-Datei von oben auszuführen.

Zu Testzwecken habe ich dem system() Befehl folgendermaßen modifiziert, wobei ich die selben Owner / Rechte gesetzt habe:
Code: (dl )
system("echo test > /var/www/xml/test.txt");


Wenn die system() Funktion so aussieht klappt es, mit PHP nicht.
Es klappt auch wenn ich die Perl-Datei (welche den system() Befehl beinhaltet) direkt auf der Konsole ausführe und sie nicht über den Telefon-Anbieter von außen ausführen lasse.

Hat jemand eine Idee woran es liegen kann das der system() Befehl die PHP-Datei nicht ausführt?


PS: danke an renee für die schnelle Antwort auf meine letzte Frage, nun ist es leider etwas schwieriger ;)
renee
 2007-01-10 16:24
#9483 #9483
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
Welche Rechte sind bei der XML-Datei vergeben? Funktioniert es denn, wenn Du die PHP-Datei direkt (selbst in der Konsole) aufrufst?

mach mal
Code: (dl )
1
2
my $return = qx{/usr/bin/php /var/www/xml/parse.php 2>&1};
print "PHP-Return: >>$return<<\n\n";

vielleicht erkennst Du dann mehr...
OTRS-Erweiterungen (http://feature-addons.de/)
Frankfurt Perlmongers (http://frankfurt.pm/)
--

Unterlagen OTRS-Workshop 2012: http://otrs.perl-services.de/workshop.html
Perl-Entwicklung: http://perl-services.de/
ChrisNain
 2007-01-10 16:24
#9484 #9484
User since
2007-01-10
15 Artikel
BenutzerIn
[default_avatar]
Hab mich mal registriert, ich hoffe ihr könnt mir helfen.
renee
 2007-01-10 16:29
#9485 #9485
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
Hat Du mal das Stückchen Code getestet was ich gepostet habe?
OTRS-Erweiterungen (http://feature-addons.de/)
Frankfurt Perlmongers (http://frankfurt.pm/)
--

Unterlagen OTRS-Workshop 2012: http://otrs.perl-services.de/workshop.html
Perl-Entwicklung: http://perl-services.de/
ChrisNain
 2007-01-10 16:41
#9486 #9486
User since
2007-01-10
15 Artikel
BenutzerIn
[default_avatar]
Ich hab es getestet, es liefert genau das selbe Ergebnis.
(Auch wenn ich nicht so ganz weiß was dein Codefragment macht außer die PHP-Datei noch zusätzlich auszugeben. ^^)

Wird die Perl-Datei direkt auf der Konsole ausgeführt funktioniert es, wird sie von außerhalb (Telefon-Anbieter) ausgeführt geht es nicht.

>Welche Rechte sind bei der XML-Datei vergeben?
Die XML-Datei hat mit dem Problem glaube nicht direkt etwas zu tun, ich mache eben einen Test um das auszuschließen.

>Funktioniert es denn, wenn Du die PHP-Datei direkt (selbst in >der Konsole) aufrufst?
Ja, das funktioniert.
renee
 2007-01-10 16:47
#9487 #9487
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
Die PHP-Datei wird wohl nicht ausgeführt. Sonst dürfte nicht die PHP-Datei ausgegeben werden, sondern das Ergebnis...
OTRS-Erweiterungen (http://feature-addons.de/)
Frankfurt Perlmongers (http://frankfurt.pm/)
--

Unterlagen OTRS-Workshop 2012: http://otrs.perl-services.de/workshop.html
Perl-Entwicklung: http://perl-services.de/
ChrisNain
 2007-01-10 16:55
#9488 #9488
User since
2007-01-10
15 Artikel
BenutzerIn
[default_avatar]
Nein nein, es gibt nicht die PHP-Datei aus sondern schon ein Ergebnis, hab mich falsch ausgedrückt.
Die Ausgabe ist nichts weiter als "PHP-Return: >><br><br><<"

Aber mit der XML-Datei scheint an den Rechten vielleicht doch irgendetwas nicht zu stimmen. Ich überprüfe das gerade.
Bin noch gar nicht auf die Idee gekommen.
GwenDragon
 2007-01-10 16:57
#9489 #9489
User since
2005-01-17
14748 Artikel
Admin1
[Homepage]
user image
Da sind die Rechte zur Ausführung von /usr/bin/php in der Shell und im Server verschieden.
Es wird wohl so sein, dass die Shell mit ganz anderen Zugriffsrechten als der Webserver läuft.
ChrisNain
 2007-01-10 17:17
#9490 #9490
User since
2007-01-10
15 Artikel
BenutzerIn
[default_avatar]
[quote=GwenDragon,10.01.2007, 15:57]Da sind die Rechte zur Ausführung von /usr/bin/php in der Shell und im Server verschieden.
Es wird wohl so sein, dass die Shell mit ganz anderen Zugriffsrechten als der Webserver läuft.[/quote]
Ähm nein, die Rechte für die Ausführung von PHP scheinen auch im Webserver zu stimmen.
Mir ist durch renee's Tipp aufgefallen das die PHP-Datei doch ausgeführt wird, wenn ich nämlich den Befehl (geht auch wieder in PHP ;)) in die PHP Datei einbaue dann wird er auch ausgeführt:
Code: (dl )
system("echo test > /var/www/xml/test.txt");


Also müsste die PHP-Datei ausgeführt werden und dort drin läuft dann irgendwas schief.

Meine Perldatei, ließt die Antwort des Telefon-Anbieters als Datenstrom aus und schreibt ihn in eine Datei.
Wäre es möglich dass das Schreiben der Datei noch nicht fertig ist, wenn das PHP-Script ausgeführt wird und deshalb Fehler entstehen wenn PHP wiederum die Datei öffnen will?

Etwas gekürzt sieht der Code an der Stelle nun so aus:

Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
my $PASSPFAD    = "/var/www/xml/response.xml";
my @Feldnamen = $cgi->param();
my $response = "nonInputStreamError";

if(@Feldnamen)
{
open (OUT,">$PASSPFAD");

foreach my $Feld (@Feldnamen) {
print OUT $Feld;
print OUT " = ";
print OUT $cgi->param($Feld);
close (OUT);
}
my $return = qx{/usr/bin/php /var/www/xml/parse.php 2>&1};
print "PHP-Return: >>$return<<\n\n";
GwenDragon
 2007-01-10 17:39
#9491 #9491
User since
2005-01-17
14748 Artikel
Admin1
[Homepage]
user image
Setze mal am Anfang des Skripts
$|=1;
Das schaltet das Puffern aus.
<< |< 1 2 3 >| >> 28 Einträge, 3 Seiten



View all threads created 2007-01-10 16:18.