Jak (ne)používáme v PHP exec
Posted 13. 09. 2015 / By Petr Soukup / Cloud
Na funkci exec v PHP se dívám podobně jako na eval. Určitě má svoje využití, ale pokud je to možné, raději se jí vyhnu. Obvykle totiž celý problém lze vzít z jiného konce s mnohem lepším výsledkem.
Co je exec()?
Pokud jste byli vždycky jen na sdíleném hostingu, tak exec možná ani neznáte, protože tam je prakticky vždy zablokovaný. Exec (a jemu podobné shellexec, system, passthru atd.) slouží k zavolání systémové příkazu a získání výstupu. Může to vypadat například takhle:<?php
exec('convert /tmp/image.jpg -resize 500x500');
exec('rm -rf /'); // suicide!
První příkaz převede obrázek pomocí ImageMagick a druhý smaže všechny (co práva dovolí) soubory na disku. Už možná tušíte, co se mi na něm nelíbí.

Na PHP je sympatické, že se ho i začátečník dokáže velmi rychle naučit a hned něco tvořit. Je to trochu jako současné hry, kdy nejdřív projdete tutorialem a máte pocit, jako by jste byli nejlepší hráči na světě - jenže obtížnost se postupně zvyšuje. U jiných jazyků (c#, java, ...) je to trochu jiné. Musíte tam už přesně vědět co děláte, než můžete vytvořit i úplně jednoduchou věc. Proto se na PHP programátory ostatní dívají trochu z vrchu - kazí jim image začátečníci, kteří už sice tvoří reálné projekty, ale spíš je patlají dohromady.