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.inia 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 aplikaciServerInfov 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
ServerInfodeaktivovat 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.inijestli je funkceshell_exec(spolu s několika dalšími) skutečně zakázaná pomocí direktivydisable_functions - Najdi řádek s
disable_functionsv 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.