Cituji: "Méně známá je skutečnost, že PHP lze úspěšně použít pro psaní shellových skriptů."
Co je na tech skriptech sheloveho? Copak php je shell?
Mel jste snad na mysli, ze jde php pouzit nejen
k psani CGI skriptu ale i samostatne spoustenych?
Myslim, ze ctenarum delate v terminologii pekny gulas.
Cast "Volání příkazů shellu"
Cituji:
"Jazyk PHP obsahuje několik příkazů pro přímé volání externích programů: exec(), passthru(), ..."
Takze treba /bin/date je prikaz shelu, nebo co?
Cituji: "Všechny můžeme využít i v PHP skriptech pro shell."
Tohle prosim vysvetlit. Ja si myslim, ze je to uplna kravina.
Ted zrovna dost programuju v PHP a tak me potesilo ze je mozno ho pouzit i takto. Nektere veci, ktere v PHP jdou snadno, se v shellscriptech prece jen delaji dost slozite. (A samozrejme i naopak.)
Co se terminologie tyce, mozna neni pouzita zcela spravne, ale rozhodne nemate.
Taky delam casto shellovy newebovy skripty (konkretne BASH) a zkusil jsem ted udelat jeden skriptik v PHP. Jak jsem byl ale nemile prekvapen, kdyz jsem chtel pomoci system() spoustet, ktery byl v aktualnim adresari,ale skript jsem spoustel z nadadresare (../skript.php). PHP kricelo, ze nemuze program najit. Pekne dlouho jsem stravil hledanim, nez jsem zjistil, ze funkce system() se prepne do adresare, odkud je PHP skript vyvolany. Normalni BASH skript samozrejme zustane v adresari, odkud spustim skript. Sorry, ale tohle je uchylarna. Cim vic s PHPckem delam, tim vic vidim, ze jeste neni dost zraly.
Omlouvam se (trochu) za tu ironii, ale nemohl jsem si pomoci...
Neni snad lepsi pouzivat na jednotlive ukoly nastroje pro to urcene?
Ja jsem treba leta programoval v Delphi a predstavte si, pro jednoduche veci v Linuxu nepisu programy v Kylixu, ale resim je perlovym nebo shelovym skriptem. Naucit se neco noveho snad jeste nikomu neublizilo.
Ale, no flame, at kazdy dela jak mu to vyhovuje.
ve Windows coby shellový skript má následující
výhody:
- neexistují v něm viry
- s Active directory se dobře obcuje přes LDAP
- vynikající podpora SQL serverů
- rychlý interní SMTP mailer
- podpora COM objektů
Příklad:
Po logonu uživatele potřebuji získat jeho celé jméno a toto nastavit coby Username vkládané do dokumentů ve WORDu: (v AD existuje uživatel "ldap" s právy Account operatora)
<?php
// Nastavi pro MS Office jmeno a inicialy uzivatele
$un=getenv("username");
// Pripojime se pres LDAP k Active Directory, zjistime dulezitosti
if( !$ds=ldap_connect("LDAP://w2kserver/") ) die();
if( !$r=ldap_bind($ds,"CN=ldap,OU=Special Users,DC=firma,DC=cz","heslo_ldap") ) die();
if( !$sr=ldap_search($ds,"DC=firma,DC=cz","samaccountname=$un") ) die();
@$info = ldap_get_entries($ds, $sr);
// Pokud nesmysly
if( empty($info) ) die();
if( $info["count"]==0 ) die();
@$displayname=$info[0]["displayname"][0];
@$initials=$info[0]["initials"][0];
if( empty($displayname) || empty($initials) ) die();
// Ty uz nepotrebujeme...
ldap_free_result($sr);
ldap_close($ds);
// Nastavime WORD
$word=new COM("WORD.Application");
$word->username = $displayname;
$word->userinitials = $initials;
$word->useraddress = "firma\r\nulice\r\nmesto";
$word->Quit(0);
$word->Release();
$word = null;
?>
Je sice dobre, ze php ma tuto podporu, ale bohuzel mnoho serveru (napriklad globe.cz) vubec nemaji tuseni co muzou zpusobit chytrejsi chtive ruce s jejich neschopnosti nastavit urcite zabezpeceni PHP na serveru.
Je to sice pekne ale jako server o linuxu by se zde melo psat prave o chybach, ktere muze mit zanasledek kolaps serveru diky crackeru kteri znaji vyborne PHP ze strany programatora-systemaka..
Jentak aby nestala rec bych zde upozornil na safe_mode_exec_dir mnoho serveru toto uplne ignoruje nebo to vubec nezna a tim delaj velkou chybu..
Mno, pokud ma clovek velmi dobre nakonfigurovany server (ne, nemam na mysli veci jako posledni updaty, atp. Spise koncept -- bezp. politiku), tak je safe mod sice dalsi drobnosti ke ztizeni pruniku, ale neni (diky bohu) jedinou ochranou . Jestli nejaky webhosting spoleha jen na safe mod, tak ho driv nebo pozdeji nekdo hackne take. (a dobre jim tak!)
asi tak ze s phpckom na skriptovanie je asi ako zo shellom na web :) aj jedno aj druhe sa da :) .... ale ak uz je potreba pisat skripty a la /usr/bin/php -q tak to radsej /usr/bin/perl. hmm a myslim ze este peknych par rokov to tak bude a nejake phpcko ho len tak hned nenahradi. (naviac sa v nom daju ovela vecie divociny napisat :-) )
php -s mujskript1.php > mujskript1.html
php -w mujskript1.php > mujskript1_s.php