Hello!
Van egy Perl scriptem, ami így néz ki:
http://hup.pastebin.com/f5eff8bb8
(Mailman levlsita tagok szinkronizálása mysql-ből)
Ez így működik szépen parancssorból, crontabból is. Viszont felmerült az igény, hogy web felületről, PHP-ból is le lehessen ezt futtatni, mégpedig úgy, hogy a script kimenete látsszon a webfelületen.
PHP-ból a system() függvényhívással próbálom futtatni a Perl scriptet, de ezzel két probléma is van:
- csak az utolsó sort kapom vissza (pl ha többször egymás után több levlistára hívom meg a Perl sub-ot)
- a Perl script system() hívásának kimenete nem látszik PHP-ból, tehát annyit kapok vissza, hogy:
Synchronizing members for list: "listaneve" Synchronizing members for list: "listaneve" finished"------------------------------
, amit közben kiír a sync_members parancs, az nem látszik.
Átírtam a scriptet így: http://hup.pastebin.com/fb9ecef7 , ennek ellenére továbbra sem látszik PHP-ból a sync_members kimenete, pedig a mailman-out.txt file-ban ott van.
Az első hibára is várom az ötleteket, hogy illik ilyet csinálni? Köszönöm előre is a segítségeteket!
Petya
- 1709 megtekintés
Hozzászólások
Az első problémára megvan a megoldás:
$out=array();
exec("per script amit futtatni akarok", $out);
print_r($out);
Viszont a másodikra nincs ötletem, az itt http://perldoc.perl.org/perlop.html#%60STRING%60 leírtak alapján működni kellene úgy, ahogy próbálkozom (file-ba átirányítani a kimenetet, majd kiíratni)
Petya
- A hozzászóláshoz be kell jelentkezni
Bocs, ha hulyeseget irok. system() helyett hasznalhatod a backticket (``), valahogy igy:
$valtozo = `parancs`;
ezutan kiprintelheted a $valtozo erteket.
- A hozzászóláshoz be kell jelentkezni
Próbáltam, ugyanez az eredmény úgy is.
Petya
- A hozzászóláshoz be kell jelentkezni
RTFM
Return Values
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.
To get the output of the executed command, be sure to set and use the output parameter.
--
The Net is indeed vast and infinite...
http://gablog.eu
- A hozzászóláshoz be kell jelentkezni
Közben észrevettem, most már minden sor átjön, de a perl-ből system-mel hívott parancs kimenete továbbra sincs benne. Pedig a megadott kimeneti file-ban ott van.
Petya
- A hozzászóláshoz be kell jelentkezni
Miért nem olvasod be a file tartalmát?
--------------------------------------------------------
Debian Sid 2.6.25-benyo
GIGABYTE GA-M61PM-S2 Athlon64 4000+ Asus GeForce 7300 SE
Debian Sid 2.6.25-bence
HP nx8220
- A hozzászóláshoz be kell jelentkezni
Beolvasom, írtam a topicnyitóban is, itt a link: http://hup.pastebin.com/fb9ecef7
Petya
- A hozzászóláshoz be kell jelentkezni
Forrását is nézted, hogy mit válaszol a szerver?
Ha a böngészőben nem látszik, pedig elvileg ott kellene legyen, akkor talán valami <...> </...> is szerepel amit ismeretlen tagként kihagy a megjelenítésből. ( code tagok közé tenni a kimenetet?)
- A hozzászóláshoz be kell jelentkezni
Néztem, a forrásban sincs benne.
Petya
- A hozzászóláshoz be kell jelentkezni
Van valakinek ötlete?
Petya
- A hozzászóláshoz be kell jelentkezni
a exec out-ja az az, ami az stdout-ra megy, és nem az amit a képernyőn látsz
nézzed meg hova ír, és azt irányítsad a 1-be
- A hozzászóláshoz be kell jelentkezni