[Perl > PHP]uitvoeren extern programma

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

  • kazz1980
  • Registratie: Juni 2001
  • Laatst online: 19-08 22:44

kazz1980

Goh... Ik hier?

Topicstarter
Ik heb een programma (text_cat) dat ik wil aanroepen via een php-site.
Momenteel geberud dit via Perl op de volgende manier:

Perl-code:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#!/usr/bin/perl -w
# © Gertjan van Noord, 1997.
# mailto:vannoord@let.rug.nl
BEGIN {
  use lib "/users3/vannoord/Perl/TextCat";
}

use strict;
use CGI qw(:standard);
use MyTextCat;

my $text=param("a1");

print header,
      start_html(-'title'=>'TextCat Language Guesser Demo Result',
                 -'author'=>'vannoord@let.rug.nl',
                 -'style'=>{'src'=>'/~vannoord/vn.css'}),
      h1('Result');

my $result=MyTextCat::classify("$text");

print "<p><pre>$result</pre>\n", hr(), end_html, "\n\n";


Hoe kan ik iets dergelijks in PHP doen? (Ik wil dus $result bereiken)
Iemand enig idee?
Ik heb zelf te weinig verstand van externe programmas aanroepen, en verstand van Perl heb ik al helemaal niet!

Dit heb ik geprobeerd:
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
<?php

//poging1:

$a="een stukje zin";
$result= exec('textcat/text_cat');
echo "blaat$result";

//poging2:

$result= popen('textcat/text_cat','r');
echo "blaat$result";
$read=fread($result, 2096);
echo $read;
pclose($result);

?>

Maar dat werkt dus niet...
Ben nu alweer een paar uur bezig, maar kom niks verder!

hier stond iets interessants, maar het is even weg...


Acties:
  • 0 Henk 'm!

  • Robinski
  • Registratie: September 2000
  • Laatst online: 12-07 19:39

Robinski

A.K.A. RHarmsen

zelf doe ik dit om ping aan te roepen via PHP.

PHP:
1
2
3
<?
shell_exec("ping ". $_POST['host'])
?>


hierbij roep ik Ping dus aan met als argument wat er in $_POST['host'] zit

10xAXItec AC-265P = 2,650kWp @ SolarEdge SE2200 - PVOutput


Acties:
  • 0 Henk 'm!

  • kazz1980
  • Registratie: Juni 2001
  • Laatst online: 19-08 22:44

kazz1980

Goh... Ik hier?

Topicstarter
Robinski schreef op 05 november 2003 @ 10:49:
zelf doe ik dit om ping aan te roepen via PHP.

...

hierbij roep ik Ping dus aan met als argument wat er in $_POST['host'] zit
zoiets:

PHP:
1
$result=shell_exec("textcat/text_cat", _POST['text'])


Dat geeft een parse error...

hier stond iets interessants, maar het is even weg...


Acties:
  • 0 Henk 'm!

Verwijderd

*forget this :)*

[ Voor 129% gewijzigd door Verwijderd op 05-11-2003 11:14 ]


Acties:
  • 0 Henk 'm!

  • Creepy
  • Registratie: Juni 2001
  • Laatst online: 17-09 21:27

Creepy

Tactical Espionage Splatterer

kazz1980 schreef op 05 november 2003 @ 11:07:
[...]


zoiets:

PHP:
1
$result=shell_exec("textcat/text_cat", _POST['text'])


Dat geeft een parse error...
Zelfs eens debuggen en kijken waar het verschil zit?? (hint: je mist een $ ergens)

"I had a problem, I solved it with regular expressions. Now I have two problems". That's shows a lack of appreciation for regular expressions: "I know have _star_ problems" --Kevlin Henney


Acties:
  • 0 Henk 'm!

  • kazz1980
  • Registratie: Juni 2001
  • Laatst online: 19-08 22:44

kazz1980

Goh... Ik hier?

Topicstarter
Creepy schreef op 05 november 2003 @ 11:12:
[...]

Zelfs eens debuggen en kijken waar het verschil zit?? (hint: je mist een $ ergens)
idd...dat had ik kunnen zien ja..

Nu krijg ik dit:
Warning: Wrong parameter count for shell_exec()

wat betekend dat dan weer?

hier stond iets interessants, maar het is even weg...


Acties:
  • 0 Henk 'm!

  • Woy
  • Registratie: April 2000
  • Niet online

Woy

Moderator Devschuur®
Dat je het nog steeds niet helemaal hetzelfde hebt overgetypt

“Build a man a fire, and he'll be warm for a day. Set a man on fire, and he'll be warm for the rest of his life.”


Acties:
  • 0 Henk 'm!

  • kazz1980
  • Registratie: Juni 2001
  • Laatst online: 19-08 22:44

kazz1980

Goh... Ik hier?

Topicstarter
rwb schreef op 05 november 2003 @ 11:28:
Dat je het nog steeds niet helemaal hetzelfde hebt overgetypt
ow..ok.
zo dan:
PHP:
1
$result=shell_exec("textcat/text_cat". $_POST['text'])


geen foutmelding, maar doet helemaal niks...

hier stond iets interessants, maar het is even weg...


Acties:
  • 0 Henk 'm!

  • Woy
  • Registratie: April 2000
  • Niet online

Woy

Moderator Devschuur®
Ik weet bijna niks van php maar ik zie nog wel wat er fout gaat. Kijk nou eens wat er precies gebeurt.
Of met andere woorden wat doet een . operator?

[ Voor 26% gewijzigd door Woy op 05-11-2003 11:59 . Reden: Kromme zin aangepast ]

“Build a man a fire, and he'll be warm for a day. Set a man on fire, and he'll be warm for the rest of his life.”


Acties:
  • 0 Henk 'm!

  • kazz1980
  • Registratie: Juni 2001
  • Laatst online: 19-08 22:44

kazz1980

Goh... Ik hier?

Topicstarter
rwb schreef op 05 november 2003 @ 11:52:
Ik weet bijna niks van php maar ik zie nog wel wat er fout gaat. Kijk nou eens wat er precies gebeurt.
Of met andere woorden wat doet een . operator?
toevoegen.
comma geeft foutmelding...dus wat moet het dan wel zijn??

(heb die punt enkel neergezet omdat jij zei dat ik niet goed had overgetypt....)

[ Voor 12% gewijzigd door kazz1980 op 05-11-2003 12:02 ]

hier stond iets interessants, maar het is even weg...


Acties:
  • 0 Henk 'm!

  • Woy
  • Registratie: April 2000
  • Niet online

Woy

Moderator Devschuur®
Ja de komma is een scheidings tekens voor parameters. Aangezien die functie blijkbaar maar 1 parameter verwacht krijg je dan een foutmelding omdat als je een komma gebruikt je 2 parameters meegeeft. een . concateneert 2 strings met elkaar.
Zie je nu al wat er mis gaat?
Maar als je niet weet wat de operators inhouden moet je denk eerst eens een paar goede tutorials zoeken want het lijkt erop alsof je totaal geen PHP kent en dan zal het inderdaad niet makkelijk lukken om iets van Perl naar PHP te vertalen

“Build a man a fire, and he'll be warm for a day. Set a man on fire, and he'll be warm for the rest of his life.”


Acties:
  • 0 Henk 'm!

  • kazz1980
  • Registratie: Juni 2001
  • Laatst online: 19-08 22:44

kazz1980

Goh... Ik hier?

Topicstarter
rwb schreef op 05 november 2003 @ 12:05:
Ja de komma is een scheidings tekens voor parameters. Aangezien die functie blijkbaar maar 1 parameter verwacht krijg je dan een foutmelding omdat als je een komma gebruikt je 2 parameters meegeeft. een . concateneert 2 strings met elkaar.
Zie je nu al wat er mis gaat?
Maar als je niet weet wat de operators inhouden moet je denk eerst eens een paar goede tutorials zoeken want het lijkt erop alsof je totaal geen PHP kent en dan zal het inderdaad niet makkelijk lukken om iets van Perl naar PHP te vertalen
waar baseer je nou weer op dat ik geen PHP ken????
Heb al complete sites gebouwd in PHP...
Altijd als je even iets niet snapt krijg je meteen commentaar dat je wel een n00b zal zijn... In plaats dat men je probeert te helpen. Hulp is toch het doel van een forum?? :(

Deze functie is enkel nieuw voor me...
En die blijkt dus niet te werken zoals Robinski zegt dattie wel werkt....
Niet mijn fout....!

[ Voor 20% gewijzigd door kazz1980 op 05-11-2003 12:13 ]

hier stond iets interessants, maar het is even weg...


Acties:
  • 0 Henk 'm!

  • Woy
  • Registratie: April 2000
  • Niet online

Woy

Moderator Devschuur®
kazz1980 schreef op 05 november 2003 @ 12:07:
[...]

waar baseer je nou weer op dat ik geen PHP ken????
Heb al complete sites gebouwd in PHP...
Altijd als je even iets niet snapt krijg je meteen commentaar dat je wel een n00b zal zijn... In plaats dat men je probeert te helpen. Hulp is toch het doel van een forum?? :(

Deze functie is enkel nieuw voor me...
En die blijkt dus niet te werken zoals Robinski zegt dattie wel werkt....
Niet mijn fout....!
Ik baseer mijn aanname dat je geen PHP kent op het feit dat je blijkbaar niet weet wat de . operator doet en dat lijkt me toch wel vrij basis kennis.
Verder kan het best dat die functie nieuw voor je is maar dan kan je die gewoon opzoeken in de documentatie. Voor mij is hij dat ook aangezien ik nog nooit een stukje PHP geschreven heb. Verder lijkt het mij dat de functie wel degelijk werkt zoals Robinski het zegt.

“Build a man a fire, and he'll be warm for a day. Set a man on fire, and he'll be warm for the rest of his life.”


Acties:
  • 0 Henk 'm!

  • kazz1980
  • Registratie: Juni 2001
  • Laatst online: 19-08 22:44

kazz1980

Goh... Ik hier?

Topicstarter
rwb schreef op 05 november 2003 @ 12:19:
[...]

Ik baseer mijn aanname dat je geen PHP kent op het feit dat je blijkbaar niet weet wat de . operator doet en dat lijkt me toch wel vrij basis kennis.
Verder kan het best dat die functie nieuw voor je is maar dan kan je die gewoon opzoeken in de documentatie. Voor mij is hij dat ook aangezien ik nog nooit een stukje PHP geschreven heb. Verder lijkt het mij dat de functie wel degelijk werkt zoals Robinski het zegt.
Duh...waarom zou ik niet weten wat de punt doet??
dat is het eerste wat je leert in PHP zon beetje..

zie mijn post ietsje hoger:
toevoegen.
(misschien niet zon duur woord als concateneren...maar betekend toch hetzelfde... Dus lees een antwoord voordat je meteen commentaar geeft!)

Ik weet alleen niet wat ie in deze functie zou moeten doen... en al;s ik de functie gebruik die Robinsky noemt dan gebeurd er met mijn programma helemaal niks...

En de documentatie zegt niet zoveel over de functie. die had ik natuurlijk ook al lang wel bekeken:
shell_exec -- Execute command via shell and return complete output as string
Ben al ruime tijd bezig met PHP> heb een complete boekenwinkel opgezet in PHP/MySQL. Ben gevraagd om een spel te maken in PHP door mijn opleiding (Informatiekunde). en kom daar dus niet helemaal uit omdat ik nooit eerder met externe programmas gewerkt heb binnen PHP.

Dus is er misschien iemand die wel even de moeite wil nemen om te helpen?? in plaats van enkel zinloos commentaar te geven...

[ Voor 60% gewijzigd door kazz1980 op 05-11-2003 12:44 ]

hier stond iets interessants, maar het is even weg...


Acties:
  • 0 Henk 'm!

Verwijderd

Ik heb hetzelfde probleem gehad als jij. En ik heb uitgevonden waar het probleem ligt.

Aangenomen dat je als httpd apache gebruikt, spreekt de httpd externe applicaties aan als de user die in de httpd.conf gespecificeerd staat. Per default is dat nobody. Dat betekent dat als user nobody geen rechten heeft tot dat bestand, hij simpelweg niks teruggeeft. Dit kan je oplossen door of de user in apache te wijzigen, of het bestand andere rechten te geven.

Suc6

Acties:
  • 0 Henk 'm!

  • kazz1980
  • Registratie: Juni 2001
  • Laatst online: 19-08 22:44

kazz1980

Goh... Ik hier?

Topicstarter
Verwijderd schreef op 05 november 2003 @ 15:45:
Ik heb hetzelfde probleem gehad als jij. En ik heb uitgevonden waar het probleem ligt.

Aangenomen dat je als httpd apache gebruikt, spreekt de httpd externe applicaties aan als de user die in de httpd.conf gespecificeerd staat. Per default is dat nobody. Dat betekent dat als user nobody geen rechten heeft tot dat bestand, hij simpelweg niks teruggeeft. Dit kan je oplossen door of de user in apache te wijzigen, of het bestand andere rechten te geven.

Suc6
Ik gebruik idd apache.
ik zal eens naar httpd.conf kijken

>> kan daar niks vinden met "nobody" ...

[ Voor 8% gewijzigd door kazz1980 op 05-11-2003 16:28 ]

hier stond iets interessants, maar het is even weg...


Acties:
  • 0 Henk 'm!

  • Flying_Thunder
  • Registratie: December 2001
  • Niet online
kazz1980 schreef op 05 november 2003 @ 12:21:
Duh...waarom zou ik niet weten wat de punt doet??
dat is het eerste wat je leert in PHP zon beetje..
Waarom? Kijk nog eens goed:
PHP:
1
2
3
<?
$result=shell_exec("textcat/text_cat". $_POST['text'])
?> 


De punt voegt toe zeg jij... wat krijg je dan? "textcat/text_cat$_POST['text']" aan elkaar... Er moet denk ik een spatie tussen commando & die superglobal, en nee, een spatie achter of voor die punt maakt echt niets uit ;)

[ Voor 20% gewijzigd door Flying_Thunder op 05-11-2003 17:44 . Reden: Typo ]


Acties:
  • 0 Henk 'm!

  • JeRa
  • Registratie: Juni 2003
  • Laatst online: 30-04 10:28

JeRa

Authentic

Flying_Thunder schreef op 05 november 2003 @ 17:33:
[...]

De punt voegt toe zeg jij... wat krijg je dan? "textcat/text_cat. $_POST['text']" aan elkaar...
Grootste bullshit ooit. :O

ifconfig eth0 down


Acties:
  • 0 Henk 'm!

  • Woy
  • Registratie: April 2000
  • Niet online

Woy

Moderator Devschuur®
JeRa schreef op 05 november 2003 @ 17:39:
[...]


Grootste bullshit ooit. :O
Hoezo dat?? Dat is hetgene wat ik al de hele tijd duidelijk wil maken.

“Build a man a fire, and he'll be warm for a day. Set a man on fire, and he'll be warm for the rest of his life.”


Acties:
  • 0 Henk 'm!

  • Flying_Thunder
  • Registratie: December 2001
  • Niet online
JeRa schreef op 05 november 2003 @ 17:39:
[...]


Grootste bullshit ooit. :O
Er van uitgaande dat $_POST['text'] = "verhaaaltjuh" is... zou je dit executen:
code:
1
textcat/text_catverhaaaltjuh

Het lijkt me erg sterk dat jij een executable hebt die zo heet ;)

Acties:
  • 0 Henk 'm!

  • kazz1980
  • Registratie: Juni 2001
  • Laatst online: 19-08 22:44

kazz1980

Goh... Ik hier?

Topicstarter
Flying_Thunder schreef op 05 november 2003 @ 17:45:
[...]


Er van uitgaande dat $_POST['text'] = "verhaaaltjuh" is... zou je dit executen:
code:
1
textcat/text_catverhaaaltjuh

Het lijkt me erg sterk dat jij een executable hebt die zo heet ;)
Kijk: dit begrijp ik ook!
m.a.w. bovenstaande functie werkt in zn geheel niet.

**zucht** word je de hele tijd door iemand voor gek verklaard...blijk je nog gelijk te hebben ook.
Bedankt voor deze toelichting! Begon al bijna te denken dat het aan mij lag dat ik die punt daar niet goed begreep

[ Voor 24% gewijzigd door kazz1980 op 05-11-2003 21:49 ]

hier stond iets interessants, maar het is even weg...


Acties:
  • 0 Henk 'm!

  • Woy
  • Registratie: April 2000
  • Niet online

Woy

Moderator Devschuur®
kazz1980 schreef op 05 november 2003 @ 21:42:
[...]


Kijk: dit begrijp ik ook!
m.a.w. bovenstaande functie werkt in zn geheel niet.

**zucht** word je de hele tijd door iemand voor gek verklaard...blijk je nog gelijk te hebben ook.
Bedankt voor deze toelichting! Begon al bijna te denken dat het aan mij lag dat ik die punt daar niet goed begreep
Hoezo met andere woorden de bovenstaande functie werkt in zn geheel niet?? Je kan er toch gewoon een spatie bij zetten? Dan zou het gewoon moeten werken.

“Build a man a fire, and he'll be warm for a day. Set a man on fire, and he'll be warm for the rest of his life.”


Acties:
  • 0 Henk 'm!

  • kazz1980
  • Registratie: Juni 2001
  • Laatst online: 19-08 22:44

kazz1980

Goh... Ik hier?

Topicstarter
rwb schreef op 05 november 2003 @ 23:39:
[...]


Hoezo met andere woorden de bovenstaande functie werkt in zn geheel niet?? Je kan er toch gewoon een spatie bij zetten? Dan zou het gewoon moeten werken.
Spatie IN PLAATS VAN een punt. enkel een spatie toevoegen doet natuurlijk helemaal niks in PHP... (wie begrijpt PHP nou niet ;) )

Maar met een spatie werkt de functie dus ook al niet...: parse error.
Begin te denken dat het gewoon geen geschikte functie hiervoor is...

[ Voor 6% gewijzigd door kazz1980 op 06-11-2003 09:32 ]

hier stond iets interessants, maar het is even weg...


Acties:
  • 0 Henk 'm!

  • xces
  • Registratie: Juli 2001
  • Laatst online: 08-09 17:20

xces

To got or not to got..

exec():
exec() executes the given command, however it does not output anything. It simply returns the last line from the result of the command. If you need to execute a command and have all the data from the command passed directly back without any interference, use the passthru() function.

passthru():
The passthru() function is similar to the exec() function in that it executes a command. If the return_var argument is present, the return status of the Unix command will be placed here. This function should be used in place of exec() or system() when the output from the Unix command is binary data which needs to be passed directly back to the browser.

backticks (``):
PHP will attempt to execute the contents of the backticks as a shell command; the output will be returned (i.e., it won't simply be dumped to output; it can be assigned to a variable). Use of the backtick operator is identical to shell_exec().

Zelf vind ik die backtricks verrekkus makkelijk :)

p.s. titel (bold) == link

Acties:
  • 0 Henk 'm!

  • esf
  • Registratie: Juni 2002
  • Laatst online: 21-02 08:56

esf

kazz1980 schreef op 06 november 2003 @ 09:27:
[...]


Spatie IN PLAATS VAN een punt. enkel een spatie toevoegen doet natuurlijk helemaal niks in PHP... (wie begrijpt PHP nou niet ;) )

Maar met een spatie werkt de functie dus ook al niet...: parse error.
Begin te denken dat het gewoon geen geschikte functie hiervoor is...
Het lukt toch wel om er textcat/text_cat verhaaaltjuh van te maken ipv textcat/text_catverhaaaltjuh? Dat is de bedoeling en verder werkt die methode wel gewoon.. Iedereen draait er alleen een beetje omheen door hints te geven en dan snapt straks niemand er meer iets van ;)

The hardest thing in the world to understand is the income tax. - Albert Einstein


Acties:
  • 0 Henk 'm!

  • Woy
  • Registratie: April 2000
  • Niet online

Woy

Moderator Devschuur®
kazz1980 schreef op 06 november 2003 @ 09:27:
[...]


Spatie IN PLAATS VAN een punt. enkel een spatie toevoegen doet natuurlijk helemaal niks in PHP... (wie begrijpt PHP nou niet ;) )

Maar met een spatie werkt de functie dus ook al niet...: parse error.
Begin te denken dat het gewoon geen geschikte functie hiervoor is...
Tuurlijk niet Spatie IN PLAATS VAN een punt. Gewoon een spatie erbij in de string. Is het nou echt zo moeilijk om te begrijpen dat dat wel degelijk effect heeft.
PHP:
1
2
3
$a = "a";
$b = "b" . $a;
$c = "b " . $a;

Zie je nou het verschil?

[ Voor 8% gewijzigd door Woy op 06-11-2003 09:57 ]

“Build a man a fire, and he'll be warm for a day. Set a man on fire, and he'll be warm for the rest of his life.”


Acties:
  • 0 Henk 'm!

  • kazz1980
  • Registratie: Juni 2001
  • Laatst online: 19-08 22:44

kazz1980

Goh... Ik hier?

Topicstarter
rwb schreef op 06 november 2003 @ 09:54:
[...]

Tuurlijk niet Spatie IN PLAATS VAN een punt. Gewoon een spatie erbij in de string. Is het nou echt zo moeilijk om te begrijpen dat dat wel degelijk effect heeft.
PHP:
1
2
3
$a = "a";
$b = "b" . $a;
$c = "b " . $a;

Zie je nou het verschil?
sorry...hoor...maar jij begrijpt het ook niet.
Die functie werkt op deze manier gewoon niet! Heb alles al geprobeerd...
En de punt heeft weinig zin in deze functie. je kunt het er net zo goed gewoon meteen achter zetten (dus wel spatie in plaats van een punt).
Maar ook dat werkt dus niet.
Alles geeft parse error.

Ga even die andere functies bekijken die hierboven genoemd zijn!

hier stond iets interessants, maar het is even weg...


Acties:
  • 0 Henk 'm!

  • kazz1980
  • Registratie: Juni 2001
  • Laatst online: 19-08 22:44

kazz1980

Goh... Ik hier?

Topicstarter
Xces schreef op 06 november 2003 @ 09:38:
exec():
exec() executes the given command, however it does not output anything. It simply returns the last line from the result of the command. If you need to execute a command and have all the data from the command passed directly back without any interference, use the passthru() function.

passthru():
The passthru() function is similar to the exec() function in that it executes a command. If the return_var argument is present, the return status of the Unix command will be placed here. This function should be used in place of exec() or system() when the output from the Unix command is binary data which needs to be passed directly back to the browser.

backticks (``):
PHP will attempt to execute the contents of the backticks as a shell command; the output will be returned (i.e., it won't simply be dumped to output; it can be assigned to a variable). Use of the backtick operator is identical to shell_exec().

Zelf vind ik die backtricks verrekkus makkelijk :)

p.s. titel (bold) == link
Ik kan alleen nergens duidelijk vinden hoe je een input aan een programma mee kunt geven...
Als ik het programa dat ik wil gebruiken via de UNIX-terminal uitvoer wordt na aanroepen van het programma om een input gevraagd.
Als je dat geeft krijg je output terug.

Hoe kan ik dit nu via PHP doen?? Als het in Perl kan moet het toch ook wel met PHP kunnen?
Tot dusver heb ik bij geen enkele functie het idee dat er uberhaupt wat met het programma gebeurd...

[ Voor 4% gewijzigd door kazz1980 op 06-11-2003 13:20 ]

hier stond iets interessants, maar het is even weg...


Acties:
  • 0 Henk 'm!

  • Flying_Thunder
  • Registratie: December 2001
  • Niet online
kazz1980 schreef op 06 november 2003 @ 13:05:
[...]
sorry...hoor...maar jij begrijpt het ook niet.
Voor zover ik kan opmaken uit zijn replies doet 'ie dat toch echt wel...
Die functie werkt op deze manier gewoon niet! Heb alles al geprobeerd...
En de punt heeft weinig zin in deze functie. je kunt het er net zo goed gewoon meteen achter zetten (dus wel spatie in plaats van een punt).
Ik weet niet hoe je code er nu uitziet, maar die punt zou ik er toch wel bij laten staan zeg maar :P
Maar ook dat werkt dus niet.
Alles geeft parse error.
Als je nu eens je code zou posten en de parse error die je krijgt wordt het een stuk makkelijker voor ons, want nu kunnen we alleen maar wat gissen...
Ga even die andere functies bekijken die hierboven genoemd zijn!
Gebruik dan voortaan de edit knop ipv. een nieuwe reply :)

Acties:
  • 0 Henk 'm!

  • kazz1980
  • Registratie: Juni 2001
  • Laatst online: 19-08 22:44

kazz1980

Goh... Ik hier?

Topicstarter
Ik heb alles geprobeerd, met punt, zonder punt, met spatie, zonder spatie.
Alles geeft Parse error zonder verdere toelichting. Geen foutmelding. enkel een parse error... :( dus er valt niet meer te doen dan gissen wat er misgaat ben ik bang...

Het enige dat geen parse error geeft is met punt en spatie., maar dan gebeurd er verder helemaal niks met het programma. alsof het nieteens aangeroepen wordt!

[ Voor 25% gewijzigd door kazz1980 op 07-11-2003 09:23 ]

hier stond iets interessants, maar het is even weg...


Acties:
  • 0 Henk 'm!

  • RvdH
  • Registratie: Juni 1999
  • Laatst online: 04-02 14:45

RvdH

Uitvinder van RickRAID

kazz1980, wat ben jij een aap zeg. Eerst dacht ik nog, laat ik je eens helpen, maar als ik zie hoe je op rwb reageert (die je vanaf het begin goede antwoorden geeft) dan bedank ik er vriendelijk voor!

Acties:
  • 0 Henk 'm!

  • kazz1980
  • Registratie: Juni 2001
  • Laatst online: 19-08 22:44

kazz1980

Goh... Ik hier?

Topicstarter
RickJansen schreef op 07 november 2003 @ 10:26:
kazz1980, wat ben jij een aap zeg. Eerst dacht ik nog, laat ik je eens helpen, maar als ik zie hoe je op rwb reageert (die je vanaf het begin goede antwoorden geeft) dan bedank ik er vriendelijk voor!
huh?
rwb begon als eerste op mij af te reageren dat ik er niks van snapte omdat ik even iets niet begreep...
waar slaat dit nu weer op!?

rwb heeft inderdaad nuttige antwoorden gegeven...alleen de manier waarop staat me niet echt aan... Hij leest mijn antwoorden niet goed en gaat er dan meteen vanuit dat ik wel een of andere n00b zal zijn.
Dat vind ik op mijn beurt weer niet echt netjes. en dat heb ik dus ook laten blijken.

Update:

Ok. heb even topic nog na gelezen, en moet je wel een beetje gelijk geven.
RWB was niet overal even netjes, maar ik inderdaad ook niet.
Dus bij deze: rwb, excuses voor mijn soms lompe reacties, je commentaar was ongetwijfeld goed bedoeld. Zo kwam het op mij alleen niet over.

En RickJansen, bedankt dat je me hier even op wijst. je hebt inderdaad voor een groot deel gelijk... (En dit zeg ik dus niet enkel zodat je me weer wilt helpen, maaruh wil je me nu wel weer helpen?? ;) zit namelijk nog steeds hardstikke vast!)

[ Voor 54% gewijzigd door kazz1980 op 07-11-2003 10:44 ]

hier stond iets interessants, maar het is even weg...


Acties:
  • 0 Henk 'm!

  • RvdH
  • Registratie: Juni 1999
  • Laatst online: 04-02 14:45

RvdH

Uitvinder van RickRAID

Ik vind het wonderbaarlijk hoe vriendelijk rwb nog tegen je was, maargoed:

Als je nou eerst eens even de code plaatst die *geen* parse errors geeft.
PHP:
1
$output = shell_exec("/pad/naar/textcat " . $_POST['text']); echo $output


Er kunnen een aantal redenen zijn waarom je geen output krijgt. Ten eerste omdat je die misschien niet in een variable zet (zoals hierboven in $output), ten tweede omdat het programma niet gevonden kan worden (als je geen pad op geeft maar alleen 'textcat '.

Ten derde verwacht het textcat script zo te zien input via http (my $text=param("a1")). Ik weet niet zeker of CGI.pm ook ARGV doorloopt in de param() functie, maar als dat wel zo is zou je het script als volgt aan moeten roepen:
PHP:
1
$output = shell_exec("/pad/naar/textcat?a1=" . $_POST['text']); echo $output

En als dat niet werkt moet je textcat aanpassen:
code:
1
my $text = ARGV[0];

[ Voor 5% gewijzigd door RvdH op 07-11-2003 12:34 ]


Acties:
  • 0 Henk 'm!

  • kazz1980
  • Registratie: Juni 2001
  • Laatst online: 19-08 22:44

kazz1980

Goh... Ik hier?

Topicstarter
RickJansen schreef op 07 november 2003 @ 12:33:
Ik vind het wonderbaarlijk hoe vriendelijk rwb nog tegen je was, maargoed:

Als je nou eerst eens even de code plaatst die *geen* parse errors geeft.
PHP:
1
$output = shell_exec("/pad/naar/textcat " . $_POST['text']); echo $output


Er kunnen een aantal redenen zijn waarom je geen output krijgt. Ten eerste omdat je die misschien niet in een variable zet (zoals hierboven in $output), ten tweede omdat het programma niet gevonden kan worden (als je geen pad op geeft maar alleen 'textcat '.

Ten derde verwacht het textcat script zo te zien input via http (my $text=param("a1")). Ik weet niet zeker of CGI.pm ook ARGV doorloopt in de param() functie, maar als dat wel zo is zou je het script als volgt aan moeten roepen:
PHP:
1
$output = shell_exec("/pad/naar/textcat?a1=" . $_POST['text']); echo $output

En als dat niet werkt moet je textcat aanpassen:
code:
1
my $text = ARGV[0];
Bedankt voor je hulp. en nogmaals. je hebt gelijk wat rwb betreft...
PHP:
1
$output = shell_exec("text_cat?a1=" . $_POST['text']);

Werkt helaas ook niet, het geeft geen enkele output. en
PHP:
1
my $text = ARGV[0];

geeft een parse error zonder verdere foutmelding...
Overigens staat text_cat in dezelfde directory als het php-bestand...

hier stond iets interessants, maar het is even weg...


Acties:
  • 0 Henk 'm!

  • Patser
  • Registratie: Maart 2000
  • Laatst online: 14-09 17:18

Patser

this.Close();

Even een voorbeeld hoe ik "uptime.exe" uitvoer met argument "/s".
De uitvoer wordt in de array detail[] gezet die ik daarna terug echo
PHP:
1
2
3
4
5
6
7
8
9
<?php
exec ("uptime /s", $detail);
for ( $i=1 ; $i<sizeof($detail); $i++) 
    {
        {
            echo $detail[$i]."<br>\n";
        }
    }
?>

Acties:
  • 0 Henk 'm!

  • RvdH
  • Registratie: Juni 1999
  • Laatst online: 04-02 14:45

RvdH

Uitvinder van RickRAID

kazz1980 schreef op 07 november 2003 @ 12:50:
[...]


Bedankt voor je hulp. en nogmaals. je hebt gelijk wat rwb betreft...
PHP:
1
$output = shell_exec("text_cat?a1=" . $_POST['text']);

Werkt helaas ook niet, het geeft geen enkele output. en
PHP:
1
my $text = ARGV[0];

geeft een parse error zonder verdere foutmelding...
Mijn fout;
PHP:
1
my $text = ARGV[0];
moet zijn
PHP:
1
my $text = $ARGV[0];


Als je nou eens in text_cat dit zet, na de eerste regel, dus zo:
Perl:
1
2
3
4
5
6
#!/usr/bin/perl -w
open(FP,">/tmp/foo");
foreach ($ARGV) { 
        print FP;
}
close FP;

En je roept dan nog eens je php ding aan, krijg je dan een /tmp/foo bestand, en zo ja, wat staat daar in?
Overigens staat text_cat in dezelfde directory als het php-bestand...
Dan moet je deze aanroep gebruiken:
PHP:
1
$output = shell_exec("./text_cat?a1=" . $_POST['text']);

Want "." staat waarschijnlijk niet in PHPs $PATH..

[ Voor 20% gewijzigd door RvdH op 07-11-2003 13:22 ]


Acties:
  • 0 Henk 'm!

  • kazz1980
  • Registratie: Juni 2001
  • Laatst online: 19-08 22:44

kazz1980

Goh... Ik hier?

Topicstarter
PHP:
1
2
3
<?
my $text = $ARGV[0];
?> 

Geeft nog steeds een parse error zonder foutmelding... (en om heel eerlijk te zijn begrijp ik zelf in het geheel niet wat het moet doen, dus kom er zelf ook niet echt uit wat er wel/niet goed aan is!)

en krijg geen temp/foo-bestand na toevoegen van de perl code (maar zonder dat stukje PHP-code dus, want dat geeft een parse error)

Wat ik ook niet snap...bij de usage van text_cat staat:

-d indicates in which directory the language models are
located (files ending in .lm). Currently only a single
directory is supported. Default: $opt_d.

als ik dit goed begrijp moet
PHP:
1
2
$result= shell_exec("./text_cat-d");
echo $result;

dan dus de directory geven waar de taalmodellen in staan. Maar ook dit geeft geen enkele output (geprobeerd omdat het een aanroep zonder verdere input is...)

[ Voor 64% gewijzigd door kazz1980 op 07-11-2003 13:51 ]

hier stond iets interessants, maar het is even weg...


Acties:
  • 0 Henk 'm!

  • RvdH
  • Registratie: Juni 1999
  • Laatst online: 04-02 14:45

RvdH

Uitvinder van RickRAID

Dat stukje, "my $text = $ARGV[0];" is perl en geen php. Je vervangt dus 'my $text = param('a1');' in textcat door 'my $text = $ARGV[0];'. Dat kan onmogelijk een parse error geven als je precies doet wat ik zeg.

Als je geen /tmp/foo (tmp, als in t m p, als in ZONDER 'e') bestand krijgt dan wordt textcat niet aangeroepen en heb je het verkeerde pad in shell_exec staan. Roep textcat aan met het volledige pad om dit soort wazigheden buiten te sluiten.
Wat ik ook niet snap...bij de usage van text_cat staat:

-d indicates in which directory the language models are
located (files ending in .lm). Currently only a single
directory is supported. Default: $opt_d.

als ik dit goed begrijp moet
PHP:
1
2
$result= shell_exec("./text_cat-d");
echo $result;

dan dus de directory geven waar de taalmodellen in staan. Maar ook dit geeft geen enkele output (geprobeerd omdat het een aanroep zonder verdere input is...)
Dat heb je dus verkeerd begrepen. Je kunt met -d de directory opgeven waarin het programma moet zoeken naar .lm files. Tevens heet '-d' een switch of een argument wat betekent dat je het achter het programmanaam zet gescheiden door een spatie, 'text_cat -d' dus, en niet 'textcat-d' want dat is een bestandsnaam.

[ Voor 51% gewijzigd door RvdH op 07-11-2003 13:56 ]


Acties:
  • 0 Henk 'm!

  • kazz1980
  • Registratie: Juni 2001
  • Laatst online: 19-08 22:44

kazz1980

Goh... Ik hier?

Topicstarter
RickJansen schreef op 07 november 2003 @ 13:52:
Dat stukje, "my $text = $ARGV[0];" is perl en geen php. Je vervangt dus 'my $text = param('a1');' in textcat door 'my $text = $ARGV[0];'. Dat kan onmogelijk een parse error geven als je precies doet wat ik zeg.

Als je geen /tmp/foo (tmp, als in t m p, als in ZONDER 'e') bestand krijgt dan wordt textcat niet aangeroepen en heb je het verkeerde pad in shell_exec staan. Roep textcat aan met het volledige pad om dit soort wazigheden buiten te sluiten.
ow is dat perl...sorry. ben een echte n00b wat perl betreft!
In het programma staat geen 'my $text = param('a1');'. Dit staat enkel in de perl-website.
En die website moet ik dus vervangen door php...

(temp ipv tmp was een typo...)
en met
PHP:
1
2
$output = shell_exec("C:\apache\htdocs\taalspel\textcat\text_cat?a1=" . $_POST['text']); 
echo $output;

Krijg ik nog steeds geen tmp/foo ...

[ Voor 23% gewijzigd door kazz1980 op 07-11-2003 13:58 ]

hier stond iets interessants, maar het is even weg...


Acties:
  • 0 Henk 'm!

  • RvdH
  • Registratie: Juni 1999
  • Laatst online: 04-02 14:45

RvdH

Uitvinder van RickRAID

What the **** is text_cat dan, als niet de code die je in je 1ste post zet?

Acties:
  • 0 Henk 'm!

  • kazz1980
  • Registratie: Juni 2001
  • Laatst online: 19-08 22:44

kazz1980

Goh... Ik hier?

Topicstarter
RickJansen schreef op 07 november 2003 @ 13:57:
What the **** is text_cat dan, als niet de code die je in je 1ste post zet?
Dat is het externe programma dat ik aan moet roepen.
Dit programma wordt momenteel via de Perl-code aangeroepen die ik in de eerste post heb staan, en moet nu aangeroepen worden via PHP. De perl-code in de startpost is dus de code die ik om moet zetten in PHP...

text_cat is een beetje veel code om te plaatsen... maar voor de volledigheid dan maar:

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
#!/usr/bin/perl -w
open(FP,">/tmp/foo");
foreach ($ARGV) { 
        print FP;
}
close FP;
# © Gertjan van Noord, 1997.
# mailto:vannoord@let.rug.nl

use strict;
use vars qw($opt_d $opt_f $opt_h $opt_l $opt_n $opt_t $opt_v $opt_u $opt_a);
use Getopt::Std;
use Benchmark;

my $non_word_characters='0-9s';

# OPTIONS
getopts('a:d:f:hlnt:u:v');

# defaults: set $opt_X unless already defined (Perl Cookbook p. 6):
$opt_a ||= 10;
$opt_d ||= '/users1/vannoord/Perl/TextCat/LM';
$opt_f ||= 0;
$opt_t ||= 400;
$opt_u ||= 1.05;

sub help {
    print <<HELP
Text Categorization. Typically used to determine the language of a
given document. 

Usage
-----

* print help message:

$0 -h

* for guessing: 

$0 [-a Int] [-d Dir] [-f Int] [-l] [-t Int] [-u Int] [-v]

    -a    the program returns the best-scoring language together
          with all languages which are $opt_u times worse (cf option -u). 
          If the number of languages to be printed is larger than the value 
          of this option (default: $opt_a) then no language is returned, but
          instead a message that the input is of an unknown language is
          printed. Default: $opt_a.
    -d    indicates in which directory the language models are 
          located (files ending in .lm). Currently only a single 
          directory is supported. Default: $opt_d.
    -f    Before sorting is performed the Ngrams which occur this number 
          of times or less are removed. This can be used to speed up
          the program for longer inputs. For short inputs you should use
          -f 0.
          Default: $opt_f.
    -l    indicates that input is given as an argument on the command line,
          e.g. text_cat -l "this is english text"
          Cannot be used in combination with -n.
    -t    indicates the topmost number of ngrams that should be used. 
          If used in combination with -n this determines the size of the 
          output. If used with categorization this determines
          the number of ngrams that are compared with each of the language
          models (but each of those models is used completely). 
    -u    determines how much worse result must be in order not to be 
          mentioned as an alternative. Typical value: 1.05 or 1.1. 
          Default: $opt_u.
    -v    verbose. Continuation messages are written to standard error.

* for creating new language model, based on text read from standard input:

$0 -n [-v]

    -v    verbose. Continuation messages are written to standard error.


HELP
}

if ($opt_h) { help(); exit 0; };

if ($opt_n) { 
    my %ngram=();
    my @result = create_lm(input(),%ngram);
    print join("n",map { "$_t $ngram{$_}" ; } @result),"n";
  } elsif ($opt_l) {
    classify($ARGV[0]);
  } else { 
    classify(input()); 
}

# CLASSIFICATION
sub classify {
  my ($input)=@_;
  my %results=();
  my $maxp = $opt_t;
  # open directory to find which languages are supported
  opendir DIR, "$opt_d" or die "directory $opt_d: $!n";
  my @languages = sort(grep { s/.lm// && -r "$opt_d/$_.lm" } readdir(DIR));
  closedir DIR;
  @languages or die "sorry, can't read any language models from $opt_dn" .
    "language models must reside in files with .lm endingn";


  # create ngrams for input. Note that hash %unknown is not used;
  # it contains the actual counts which are only used under -n: creating
  # new language model (and even then they are not really required).
  my @unknown=create_lm($input);
  # load model and count for each language.
  my $language;
  my $t1 = new Benchmark;
  foreach $language (@languages) {
    # loads the language model into hash %$language.
    my %ngram=();
    my $rang=1;
    open(LM,"$opt_d/$language.lm") || die "cannot open $language.lm: $!n";
    while (<LM>) {
      chomp;
      # only use lines starting with appropriate character. Others are
      # ignored.
      if (/^[^$non_word_characters]+/o) {
    $ngram{$&} = $rang++;
      } 
    }
    close(LM);
    #print STDERR "loaded language model $languagen" if $opt_v;
    
    # compares the language model with input ngrams list
    my ($i,$p)=(0,0);
    while ($i < @unknown) {
      if ($ngram{$unknown[$i]}) {
    $p=$p+abs($ngram{$unknown[$i]}-$i);
      } else { 
    $p=$p+$maxp; 
      }
      ++$i;
    }
    #print STDERR "$language: $pn" if $opt_v;
    
    $results{$language} = $p;
  }
  print STDERR "read language models done (" . 
    timestr(timediff(new Benchmark, $t1)) . 
      ".n" if $opt_v;
  my @results = sort { $results{$a} <=> $results{$b} } keys %results;
  
  print join("n",map { "$_t $results{$_}"; } @results),"n" if $opt_v;
  my $a = $results{$results[0]};
  
  my @answers=(shift(@results));
  while (@results && $results{$results[0]} < ($opt_u *$a)) {
    @answers=(@answers,shift(@results));
  }
  if (@answers > $opt_a) {
    print "I don't know; " .
      "Perhaps this is a language I haven't seen before?n";
  } else {
    print join(" or ", @answers), "n";
  }
}

# first and only argument is reference to hash.
# this hash is filled, and a sorted list (opt_n elements)
# is returned.
sub input {
  {
    local $/;     # so it doesn't affect $/ elsewhere
    undef $/;
    $_ = <>;      # swallow input.
  }
  $_ || die "determining the language of an empty file is hard...n";
  return $_;
}

sub create_lm {
  my $t1 = new Benchmark;
  my $ngram;
  ($_,$ngram) = @_;  #$ngram contains reference to the hash we build
    # then add the ngrams found in each word in the hash
  my $word;
  foreach $word (split("[$non_word_characters]+")) {
    $word = "_" . $word . "_";
    my $len = length($word);
    my $flen=$len;
    my $i;
    for ($i=0;$i<$flen;$i++) {
      $$ngram{substr($word,$i,5)}++ if $len > 4;
      $$ngram{substr($word,$i,4)}++ if $len > 3;
      $$ngram{substr($word,$i,3)}++ if $len > 2;
      $$ngram{substr($word,$i,2)}++ if $len > 1;
      $$ngram{substr($word,$i,1)}++;
      $len--;
    }
  }
  ###print "@{[%$ngram]}";
  my $t2 = new Benchmark;
  print STDERR "count_ngrams done (". 
    timestr(timediff($t2, $t1)) .").n" if $opt_v;

  # as suggested by Karel P. de Vos, k.vos@elsevier.nl, we speed up
  # sorting by removing singletons
  map { my $key=$_; if ($$ngram{$key} <= $opt_f) 
             { delete $$ngram{$key}; }; } keys %$ngram;
  #however I have very bad results for short inputs, this way

  
  # sort the ngrams, and spit out the $opt_t frequent ones.
  # adding  `or $a cmp $b' in the sort block makes sorting five
  # times slower..., although it would be somewhat nicer (unique result)
  my @sorted = sort { $$ngram{$b} <=> $$ngram{$a} } keys %$ngram;
  splice(@sorted,$opt_t) if (@sorted > $opt_t); 
  print STDERR "sorting done (" . 
    timestr(timediff(new Benchmark, $t2)) . 
      ").n" if $opt_v;
  return @sorted;
}

[ Voor 96% gewijzigd door kazz1980 op 07-11-2003 14:02 ]

hier stond iets interessants, maar het is even weg...


Acties:
  • 0 Henk 'm!

  • RvdH
  • Registratie: Juni 1999
  • Laatst online: 04-02 14:45

RvdH

Uitvinder van RickRAID

Best handig om te vermelden dat je op een Windows systeem werkt.

Om even wat rariteiten uit de weg te helpen:

Op je Windows systeem heb je een text_cat programma? Plaats eens de 1ste regel van dat bestand hier?
Heb je op je Windows systeem wel perl?
Ben je aan het programmeren op je Windows computer, of op een linux/unix server?
Probeer je de code uit te voeren op je windows systeem of op de linux/unix server?

Zoals het er op lijkt probeer je dat text_cat programma te draaien op Windows, maar het verwacht de perl binary in /usr/bin en tsja die heb je uiteraard niet op Windows.

[ Voor 28% gewijzigd door RvdH op 07-11-2003 14:03 ]


Acties:
  • 0 Henk 'm!

  • kazz1980
  • Registratie: Juni 2001
  • Laatst online: 19-08 22:44

kazz1980

Goh... Ik hier?

Topicstarter
RickJansen schreef op 07 november 2003 @ 14:01:
Best handig om te vermelden dat je op een Windows systeem werkt.

Om even wat rariteiten uit de weg te helpen:

Op je Windows systeem heb je een text_cat programma? Plaats eens de 1ste regel van dat bestand hier?
Heb je op je Windows systeem wel perl?
Ben je aan het programmeren op je Windows computer, of op een linux/unix server?
windows...
en heb geen flauw idee of ik daar Perl op heb...dus dat zal dan wel niet :|
Als ik dit hele zooitje dus naar de unix-server zet (waar het uiteindelijk ook op komt) moet het dus wel werken?

ow....ja snappet... sorry. ik weet echt niks van Perl, en wist dus ook niet dat je daar nog een programma voor moest hebben.
ik upload de boel even naar een unix-machine!

[ Voor 22% gewijzigd door kazz1980 op 07-11-2003 14:05 ]

hier stond iets interessants, maar het is even weg...


Acties:
  • 0 Henk 'm!

  • RvdH
  • Registratie: Juni 1999
  • Laatst online: 04-02 14:45

RvdH

Uitvinder van RickRAID

Zucht.. dat zou in ieder geval een stuk handiger werken ja!

Acties:
  • 0 Henk 'm!

  • kazz1980
  • Registratie: Juni 2001
  • Laatst online: 19-08 22:44

kazz1980

Goh... Ik hier?

Topicstarter
RickJansen schreef op 07 november 2003 @ 14:04:
Zucht.. dat zou in ieder geval een stuk handiger werken ja!
sorry.
het is ge-upload

en geeft nog altijd niks. ik zie ook geen tmp/foo (die zou in dezelfde map moeten verschijnen?)

[ Voor 10% gewijzigd door kazz1980 op 07-11-2003 14:10 ]

hier stond iets interessants, maar het is even weg...


Acties:
  • 0 Henk 'm!

  • Woy
  • Registratie: April 2000
  • Niet online

Woy

Moderator Devschuur®
kazz1980 schreef op 07 november 2003 @ 13:56:
[...]


PHP:
1
2
$output = shell_exec("C:\apache\htdocs\taalspel\textcat\text_cat?a1=" . $_POST['text']); 
echo $output;

Krijg ik nog steeds geen tmp/foo ...
Volgens mij kan je het ook helemaal niet aanroepen op deze manier. Je moet gewoon een string op zien te bouwen zoals je dat ook in de command prompt zou intypen. Het ligt er een beetje aan wat je programma voor parameters verwacht maar als je bijvoorbeeld info wil hebben over ping type je normaal in de command prompt
code:
1
ping /?


voor je script zou je dan zoiets moeten doen

PHP:
1
2
$parameter = "/?";
$result=shell_exec( "ping " . $parameter );


Let hier dus ook op de spatie want anders zou je uitvoeren
code:
1
ping/?

wat natuurlijk niet werkt.
Het enige dat geen parse error geeft is met punt en spatie., maar dan gebeurd er verder helemaal niks met het programma. alsof het nieteens aangeroepen wordt!
Dit komt omdat de functie maar een parameter verwacht. De manier met de punt is de enige waar je 1 parameter meegeeft
PHP:
1
2
3
4
5
6
7
8
9
10
function test( $a )
{
    //doe iets;
}

$test = "test";
test( "Test" ); //werkt
test( "Test" $test ); //parse error want je geeft 2 vars maar niet gescheiden met ,
test( "test" , $test ); //parse error want je geeft 2 argumenten maar er wordt er een verwacht
test( "test" . $test ); //werkt ook goed want de 2 vars worden geconcatenate tot 1

“Build a man a fire, and he'll be warm for a day. Set a man on fire, and he'll be warm for the rest of his life.”


Acties:
  • 0 Henk 'm!

  • kazz1980
  • Registratie: Juni 2001
  • Laatst online: 19-08 22:44

kazz1980

Goh... Ik hier?

Topicstarter
Ja...dat verhaal met die punt en spatie is me nu duidelijk.
Je had daar al die tijd gewoon gelijk in... Stom dat ik dat niet inzag...

Probleem is het volgende:
Als ik via de prompt het programma gebruik roep ik het programma gewoon aan, en krijg dan van het programma vervolgens de vraag om input te geven...
Dat werkt dus heel anders dan een aanroep met meteen de input erbij. en ik heb geen flauw idee hoe die input er dan uit zou moeten zien... het antwoord zit verborgen in de perl-code in de startpost (daar werkt het nl.wel), maar dat omzetten naar php blijkt dus erg lastig!

maar de aanroep van "text_cat -d" werkt dus ook niet via php...terwijl dat via de prompt wel werkt....

PHP:
1
2
$result= shell_exec("./text_cat -d");
echo $result;


Ik heb nog steeds het idee dat het hele programma niet aangeroepen wordt...
Maar waar dat aan ligt weet ik niet

[ Voor 79% gewijzigd door kazz1980 op 07-11-2003 14:22 ]

hier stond iets interessants, maar het is even weg...

Pagina: 1