Fórum Root.cz
Hlavní témata => Vývoj => Téma založeno: Mark 17. 04. 2014, 10:37:57
-
Ahoj, když v php zavolám bash script, který vypíše ten bash script pomocí echo výsledek, tak ho v php stejně nevidím. Neporadí někdo?
soubor index.php
<?php
$output = shell_exec('my.bash');
echo "<pre>$output</pre>";
?>
soubor my.bash
#!/bin/bash
echo "něco";
Díky moc.
-
Je možné, že tvé systémové volání skončí chybou? Třeba nesedí cesta?
Zkus místo shell_exec() jen exec(), ten ti vrátí návratovou hodnotu. Nebo ten skript zkus nechat psát někam do souboru - prostě se ujistit, že se vůbec provede.
http://www.php.net/manual/en/function.shell-exec.php
-
Nemáš tam SELINUX?
-
exec funkce byvaji z bezpecnostnich duvodu obvykle zakazany. Zpusobu zakazani je vice, od zakazu funkce exec v php.ini, pres extenze php az po systemove zakazy spousteni skriptu urcitymi uzivateli ci z urcitych disku.
-
Moje tipy:
- shell_exec spuští příkazy v shellu. V shellu není ve výchozím nastavení „.“ v $PATH a je nutné ji explicitně zadat. Tedy: ./my.bash
- Pro spuštění musí mít ten skript práva spouštění (x). Má je?
- exec funkce bývají vypnuté. Je potřeba je zapnout v php.ini
Ještě malá poznámka: shell_exec je asi ta nejblbější funkce, co na to jde použít, protože pokud se něco stane špatně, nejde nijak zjistit, co to bylo. Doporučuji se spouštění skriptů z PHP úplně vyhnout, a pokud to opravdu opravdu nejde, tak používat exec.
-
Chlapy všem velké díky za snahu pomoci. problém byl docela jiný, raději bych ho tady ani snad nezveřejňoval ale udělám to. Soubor s basj kódem jsem měl na jiném serveru než ten se scriptem php. Hold stane se. Mám ještě jeden dotaz, ale založím jiné vlákno ať je to přehledné. Ještě jednou velké díky všem...