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.
Názory k článku
PHP a skriptování v shellu
nesmysl
celé vláknouz nemuzu
celé vláknoCast "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.
Re: uz nemuzu
celé vláknotrosku menej arogancie by vam iba prospelo.
"shellove skripty" autor ZJAVNE myslel ako skripty, spustitelne v shelly a kooperujuce s ostatnymi standardnymi programami tohto druhu.
neco chybi
celé vláknoa ja si zase myslim, ze chybi nejdulezitejsi konstrukce
$x=`/bin/ls`;
Re: neco chybi
celé vláknoCo takto si opa:tovne precitat kapitolu "Volání příkazů shellu" uvedeneho clanku? :-)
Prima napad
celé vláknoTed 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.
Moc se mi to nelibi
celé vláknoTaky 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.
Re: Moc se mi to nelibi
celé vláknoSdílím podobný názor. PHP má některé vlastnosti, které při použití jako shell vadí. Dle mého není jeho návrh promyšlený.
Zato při použití krátkých skriptů, které dělají něco s databází je velmi dobrý.
Re: Moc se mi to nelibi
celé vláknoaahahaha, teraz ste si solidne nakadil :)
vid nizsie uvedeny prispevok o prepinaci -C
Perl nestaci?
celé vláknoNa tohle uz delsi dobu pouzivam Perl a za PHP bych nemenil ani nahodou. Ale kazdy podle vkusu, PHP na psani spustitelnych skriptu nikomu neberu...
Shelove skripty v Kylixu
celé vláknoOmlouvam 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.
Re: Shelove skripty v Kylixu
celé vláknoAno, naucit sa nieco nove este nikomu neublizilo. Ide ale o efektivitu. Ak je niekto dost dobry v istej technologii, resp. programovacom jazyku, je naozaj zbytocne aby sa ucil cosi nove, ked si vystaci s tym co vie.
Re: Shelove skripty v Kylixu
celé vláknoPokud jz je clovek natolik 'dobry' v PHP technologii, tak jiste uz prisel na volbu -q sam a z povahy teto volby (teda pokud to ma v hlave vporadku) vyvodi zaver, ze se v tom daji psat i jine veci nez jen stranky. Jinak na urcite veci je to jiste vhodna volba.
PaD
Re: Shelove skripty v Kylixu
celé vláknoVelmi uzitocny je tiez prepinac -C (zrusenie premiestenia sa do adresaru skriptu pri jeho spusteni).
PHP coby skript se mi osvědčil - ve Windows
celé vláknove 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;
?>
Re: PHP coby skript se mi osvědčil - ve Windows
celé vláknoMnoo, ono ano, jestli pisete takto tak se nedivim, ze se Vam osvedcil... neberte to jako napadani, ale mozna by pomohlo trosicku se zamyslet nad tim, co pisete...
@$info = ldap_get_entries($ds, $sr);
if( empty($info) ) die();
Re: PHP coby skript se mi osvědčil - ve Windows
celé vláknoten kod je fakt masakr, neco takoveho by melo byt trestne zverejnovat :)
Re: PHP coby skript se mi osvědčil - ve Windows
celé vláknoNaopak, velmi děkuji autorovi za zveřejnění, je to pro mě dobrý vzor. Ukázal, jak se dá snadno využít na speciální Windowsové věci.
Holt nepíše čistě, ale ukázal princip. A to je fajn. O nic více nejde.
PHP shell
celé vláknoJe 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..
Re: PHP shell
celé vláknoUkazte mi na netu vyznamneho poskytovatele web-hostingu, ktery NEPOUZIVA safe_mode u PHP, to by to po 10 min. provozu takoveho serveru mohl zabalit ..:o)) nebo ne?
Re: PHP shell
celé vláknopes.cz ale tam uz roota ma nekdo jiny ;)
Re: PHP shell
celé vláknoGlobe, Superhosting, Spynet ....
Re: PHP shell
celé vláknoMno, 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!)
pouzivat veci na to k comu su urcene
celé vláknoasi 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 :-) )
Re: pouzivat veci na to k comu su urcene
celé vláknoA kde je napsane co je k cemu urcene?
programovanie do PHP
celé vláknoZdravim.
Prosim Vas, neviete niekto programovat nove extensions do PHP? Pada mi to na segmentation fault a neviem pouzivat niektore makra. Dokumentaciu som (okrem zakladnych principov z php doc) nenasiel.
Dik Robo
Ozvite sa mi prosim na mail.
Otázka, volání skriptu s definováním proměné
celé vláknoJak spustit skript treba ./start a jako parametr nastavit nejakou promenou, treba $a="neco". Trochu umím vytvářet shallové skripty a v php taky neco zvládnu. Hlavně se mi líbí pro komunikaci s databází, ale docela my dost chybí to def. proměné!!! Neví někdo jak na to????
Re: Otázka, volání skriptu s definováním proměné
celé vláknoPokus se osudově nemýlím, tak v PHP proměnné, snad až na příkaz var u definice třídy, nedefinujete. Prostě je použijete a ony se nadefinují samy, ale možná že jste myslel něco jiného ;)
Nice
celé vláknozkuste si zvýraznění syntaxe:
php -s mujskript1.php > mujskript1.htmla stripnutí komentářů a bílých znaků:
php -w mujskript1.php > mujskript1_s.php(To se ale užije spíš na webu, pokud jenom nechcete znepřehlednit kód pro zákazníky, nebo lidi, kterým ho - i když neradi - musíte poskytnout)
PHP Moduly
celé vláknoPHP Cli pod Windows XP
celé vláknopredpokladam, ze asi opakuji problem, ktery se v ramci root.cz pravdepodobne jiz probiral, ale bohuzel se mi nepodarilo zadne pojednani o tomto problemu nikde najit. Asi jsem hledal spatne....
Nicmene, nainstaloval jsem si PHP 5.2.5, ze ktereho chci pouzit pouze CLI (PHP.EXE) pro skriptovani z prikazove radky.
PHP.exe ("C:\Program Files\PHP\") je v PATH, z prikazove radky mi funguje "PHP -v", "PHP -i" atd.
Problem je v tom, ze se mi nedari spustit zadny pripraveny skript ani tento jednoduchy testovaci (C:\temp\test.php):
#!C:\Program Files\PHP\php.exe -q
<?
echo "IT WORKS!";
?>
Kdyz spustim skript z prikazove radky (C:\Temp>php test.php),
je vystupem nasledujici:
<?
echo "IT WORKS!!!";
?>
To znamena, ze jedine, co php.exe provede, je ze obsah souboru test.php vypise na STDOUT. Vysledkem C:\Temp>php -f test.php a C:\Temp>php -f c:\temp\test.php je porad to same.
Nevite prosim nekdo, jak donutit php.exe a muj skript provedl a ne jenom zreprodukoval jeho obsah na STDOUT?
Predem dekuji za jakoukoliv reakci
PHP Cli pod Windows XP - oprava
celé vláknopredpokladam, ze asi opakuji problem, ktery se v ramci root.cz pravdepodobne jiz probiral, ale bohuzel se mi nepodarilo zadne pojednani o tomto problemu nikde najit. Asi jsem hledal spatne....
Nicmene, nainstaloval jsem si PHP 5.2.5, ze ktereho chci pouzit pouze CLI (PHP.EXE) pro skriptovani z prikazove radky.
PHP.exe ("C:\Program Files\PHP\") je v PATH, z prikazove radky mi funguje "PHP -v", "PHP -i" atd.
Problem je v tom, ze se mi nedari spustit zadny pripraveny skript ani tento jednoduchy testovaci (C:\temp\test.php):
#!C:\Program Files\PHP\php.exe -q
<?
echo "IT WORKS!";
?>
Kdyz spustim skript z prikazove radky (C:\Temp>php test.php),
je vystupem nasledujici:
<?
echo "IT WORKS!!!";
?>
To znamena, ze jedine, co php.exe provede, je ze obsah souboru test.php vypise na STDOUT. Vysledkem C:\Temp>php -f test.php a C:\Temp>php -f c:\temp\test.php je porad to same.
Nevite prosim nekdo, jak donutit php.exe a muj skript provedl a ne jenom zreprodukoval jeho obsah na STDOUT?
Predem dekuji za jakoukoliv reakci
P.S.: Omlouvam se za dublovany dotaz, ale chtel jsem jej zalozit jako registrovany, aby mi chodili e-mailem pripadne reakce. Diky za pochopeni.

