Doba čtení: 3 minut
ServerInfo\OperatingSystems\shell_exec() in file ‘/xxxxxx.cz/public_html/apps/serverinfo/lib/OperatingSystems/DefaultOs.php’ line 262 výpis v logu, co s tím a čím to je ?
Jako správci se setkáváte s různými choutkami.Zde kupříkladu řešíme to, kdy není vidět kapacita disku, RAM, a další detaily v cloudovém úložišti.
Řešení je však relativně rychlé chyba, je způsobena tím, že funkce shell_exec()
není dostupná na serveru, na kterém je provozován xcloud. Tato funkce je používána aplikací ServerInfo
(část xcloudu) pro zjišťování informací o operačním systému, například pro získání informací o disku.
Možné příčiny a řešení:
- Zakázaná funkce
shell_exec()
v konfiguraci PHP:- Pokud je funkce
shell_exec()
zakázaná v souboruphp.ini
, bude to způsobovat tuto chybu. Podívej se dophp.ini
a zjisti, zda není funkceshell_exec()
uvedena v seznamu zakázaných funkcí (disable_functions
). Pokud je, zkus ji z tohoto seznamu odebrat (pokud máš přístup k úpravám konfigurace PHP). - Pokud nemáš možnost upravit
php.ini
, můžeš kontaktovat poskytovatele hostingu, aby ti tuto funkci povolil.
- Pokud je funkce
- Omezení prostředí, ve kterém xcloud běží:
- Na některých sdílených hostingových prostředích může být použití
shell_exec()
z bezpečnostních důvodů zakázáno. V tomto případě bude potřeba se obrátit na technickou podporu hostingu, zda mohou povolit tuto funkci, nebo přejít na server, kde tato omezení nejsou.
- Na některých sdílených hostingových prostředích může být použití
- Řešení pomocí konfigurace xcloud:
- Pokud není možné funkci
shell_exec()
povolit, můžeš zkusit dočasně nebo trvale deaktivovat aplikaciServerInfo
v xcloudu, pokud není nutná pro tvé potřeby. To lze udělat následujícím způsobem:- Přihlas se jako správce do xloudu.
- Přejdi do Nastavení > Aplikace.
- Najdi aplikaci Server Info a deaktivuj ji.
- Pokud není možné funkci
- Možné obcházení problému:
- Pokud z nějakého důvodu nemůžeš aplikaci
ServerInfo
deaktivovat a také nemůžeš povolitshell_exec()
, můžeš se pokusit nahradit problematické části kódu ve zdrojovém kódu aplikace, což však vyžaduje znalost PHP a může vést k nestabilitě systému. Toto řešení se však obecně nedoporučuje.
- Pokud z nějakého důvodu nemůžeš aplikaci
- Zjisti
v php.ini
jestli je funkceshell_exec
(spolu s několika dalšími) skutečně zakázaná pomocí direktivydisable_functions
- Najdi řádek s
disable_functions
v souboruphp.ini
: disable_functions = pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wifcontinued,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority,exec,system,passthru,shell_exec,proc_open,popen - a adstraň funkci
shell_exec
- Restartuj webový server (Apache, Nginx nebo jiný server, který používáš), aby se změny projevily.
- sudo systemctl restart apache2 , sudo systemctl restart nginx
- To je celé.
Autor: Alex B.