Výsledek z Bash skriptu do PHP

Mark

Výsledek z Bash skriptu do PHP
« kdy: 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
Kód: [Vybrat]
<?php
$output 
shell_exec('my.bash');
echo 
"<pre>$output</pre>";
?>

soubor my.bash

Kód: [Vybrat]
#!/bin/bash
echo "něco";

Díky moc.
« Poslední změna: 17. 04. 2014, 11:47:27 od Petr Krčmář »


v2kt0r

Re:Jak dostat výsledek z bash scriptu do php
« Odpověď #1 kdy: 17. 04. 2014, 11:01:01 »
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

m

Re:Jak dostat výsledek z bash scriptu do php
« Odpověď #2 kdy: 17. 04. 2014, 11:37:44 »
Nemáš tam SELINUX?

Gandalf

Re:Výsledek z Bash skriptu do PHP
« Odpověď #3 kdy: 17. 04. 2014, 12:47:34 »
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.

Sten

Re:Výsledek z Bash skriptu do PHP
« Odpověď #4 kdy: 17. 04. 2014, 15:20:04 »
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.


Mark

Re:Výsledek z Bash skriptu do PHP
« Odpověď #5 kdy: 17. 04. 2014, 19:33:28 »
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...