Oprava chyby putenv() has been disabled for security reasons

Tato chyba je jednoduše řešitelná. Stačí se přihlásit na FTP a v souboru
vendor/symfony/symfony/src/Symfony/Component/HttpKernel/Kernel.php
a řádku 122 zakázat funkci putenv pomocí dvou lomítek // putenv(‚SHELL_VERBOSITY=3‘);


2 komentáře. Nechte nové
Bohužel toto v nejnovější verzi 8.1.0 nefunguje Kód, ve kterém ta funkce je vypadá takto:
}
if ($this->debug && !isset($_ENV[‚SHELL_VERBOSITY‘]) && !isset($_SERVER[‚SHELL_VERBOSITY‘])) {
// putenv(‚SHELL_VERBOSITY=3‘) /* disabled, because debug mode */;
$_ENV[‚SHELL_VERBOSITY‘] = 3;
$_SERVER[‚SHELL_VERBOSITY‘] = 3;
}
Ta instrukce je v něm vypnuta.
Problém se objevil po upgradu na 8.1 – ale až tehdy, kdy jsem na serveru nastavil verzi PHP 8,1 Do té doby to normálně jelo. Po nastavení verze spadla stránka a administrace do chyby 500 error. Vrátil jsem PHP zpět na ver 7,4 stránky za chvíli naběhly. Nicméně když jsem je pak přepnul do debug modu vypadla v administraci tato hláška:
Warning: putenv() has been disabled for security reasons
ExceptionLogs 1Stack Trace
ErrorException
in vendor/symfony/symfony/src/Symfony/Component/Dotenv/Dotenv.php (line 149)
in vendor/symfony/symfony/src/Symfony/Component/Dotenv/Dotenv.php -> populate (line 517)
in vendor/symfony/symfony/src/Symfony/Component/Dotenv/Dotenv.php -> doLoad (line 65)
in vendor/symfony/symfony/src/Symfony/Component/Dotenv/Dotenv.php -> load (line 85)
Dotenv->loadEnv()
in modules/ps_mbo/ps_mbo.php (line 429)
ps_mbo->loadEnv()
in modules/ps_mbo/ps_mbo.php (line 128)
ps_mbo->__construct()
ReflectionClass->newInstance()
in src/Core/Foundation/IoC/Container.php (line 123)
Container->makeInstanceFromClassName()
in src/Core/Foundation/IoC/Container.php (line 153)
Container->doMake()
in src/Core/Foundation/IoC/Container.php (line 166)
Container->make()
in src/Adapter/ServiceLocator.php (line 70)
ServiceLocator::get()
in classes/module/Module.php (line 1232)
ModuleCore::coreLoadModule()
in classes/module/Module.php (line 1211)
ModuleCore::getInstanceByName()
in classes/Hook.php (line 913)
HookCore::exec()
in src/Adapter/LegacyHookSubscriber.php (line 127)
LegacyHookSubscriber->__call()
in src/Adapter/Hook/HookDispatcher.php (line 179)
HookDispatcher->doDispatch()
in src/Adapter/Hook/HookDispatcher.php (line 113)
HookDispatcher->dispatch()
in src/Adapter/Hook/HookDispatcher.php (line 209)
HookDispatcher->dispatchForParameters()
in src/Core/Hook/HookDispatcher.php (line 58)
HookDispatcher->dispatchHook()
in src/Core/Hook/HookDispatcher.php (line 67)
HookDispatcher->dispatchWithParameters()
in src/PrestaShopBundle/EventListener/ActionDispatcherLegacyHooksSubscriber.php (line 92)
in vendor/symfony/symfony/src/Symfony/Component/EventDispatcher/Debug/WrappedListener.php -> callActionDispatcherBeforeHook (line 126)
in vendor/symfony/symfony/src/Symfony/Component/EventDispatcher/EventDispatcher.php -> __invoke (line 264)
in vendor/symfony/symfony/src/Symfony/Component/EventDispatcher/EventDispatcher.php -> doDispatch (line 239)
in vendor/symfony/symfony/src/Symfony/Component/EventDispatcher/EventDispatcher.php -> callListeners (line 73)
in vendor/symfony/symfony/src/Symfony/Component/EventDispatcher/Debug/TraceableEventDispatcher.php -> dispatch (line 168)
in vendor/symfony/symfony/src/Symfony/Component/HttpKernel/HttpKernel.php -> dispatch (line 157)
in vendor/symfony/symfony/src/Symfony/Component/HttpKernel/HttpKernel.php -> handleRaw (line 81)
in vendor/symfony/symfony/src/Symfony/Component/HttpKernel/Kernel.php -> handle (line 201)
Kernel->handle()
in manager/index.php (line 84)
na e-shopu pak toto:
Warning: putenv() has been disabled for security reasons in /srv/www/rstick.eu/public/www/vendor/symfony/symfony/src/Symfony/Component/Dotenv/Dotenv.php on line 149
Warning: putenv() has been disabled for security reasons in /srv/www/rstick.eu/public/www/vendor/symfony/symfony/src/Symfony/Component/Dotenv/Dotenv.php on line 149
Warning: putenv() has been disabled for security reasons in /srv/www/rstick.eu/public/www/vendor/symfony/symfony/src/Symfony/Component/Dotenv/Dotenv.php on line 149
Warning: putenv() has been disabled for security reasons in /srv/www/rstick.eu/public/www/vendor/symfony/symfony/src/Symfony/Component/Dotenv/Dotenv.php on line 149
Warning: putenv() has been disabled for security reasons in /srv/www/rstick.eu/public/www/vendor/symfony/symfony/src/Symfony/Component/Dotenv/Dotenv.php on line 149
Warning: putenv() has been disabled for security reasons in /srv/www/rstick.eu/public/www/vendor/symfony/symfony/src/Symfony/Component/Dotenv/Dotenv.php on line 168
Warning: putenv() has been disabled for security reasons in /srv/www/rstick.eu/public/www/vendor/symfony/symfony/src/Symfony/Component/Dotenv/Dotenv.php on line 149
Warning: putenv() has been disabled for security reasons in /srv/www/rstick.eu/public/www/vendor/symfony/symfony/src/Symfony/Component/Dotenv/Dotenv.php on line 168
Warning: putenv() has been disabled for security reasons in /srv/www/rstick.eu/public/www/vendor/symfony/symfony/src/Symfony/Component/Dotenv/Dotenv.php on line 149
Warning: putenv() has been disabled for security reasons in /srv/www/rstick.eu/public/www/vendor/symfony/symfony/src/Symfony/Component/Dotenv/Dotenv.php on line 149
Warning: putenv() has been disabled for security reasons in /srv/www/rstick.eu/public/www/vendor/symfony/symfony/src/Symfony/Component/Dotenv/Dotenv.php on line 149
Warning: putenv() has been disabled for security reasons in /srv/www/rstick.eu/public/www/vendor/symfony/symfony/src/Symfony/Component/Dotenv/Dotenv.php on line 149
Warning: putenv() has been disabled for security reasons in /srv/www/rstick.eu/public/www/vendor/symfony/symfony/src/Symfony/Component/Dotenv/Dotenv.php on line 149
Při pokusu o řešení podle výšeuvedeního návodu jsem narazil na tento popsaný problém. Funkce putenv asi bude nadefinována někde jinde.
Existuje řešení problému?
Testováno. U jiných zákazníků tento problém nemáme. Testováno i na čisté PS 8.1 a PHP 8 a bez problému. To co reportujete je pouze warning, důležité jsou errory, máte tam více chyb bohužel.
Toto způsobuje modul „ps_mbo“. Na webu jsem Vám ho zakomentovali. Případně lze řešit úpravou zde:
vendor\symfony\symfony\src\Symfony\Component\Dotenv\Dotenv.php
$this->usePutenv = $usePutenv;
přepsat na
$this->usePutenv = false;
Máte tam ale více vad, pokud toto vyřešíme, vidíme jiné chyby, toto je pouze warning, ale po jeho vyřešení vidíme errory (ty reálné, co Vám brání přístupu do adminu zřejmě). Zřejmě jste provedl upgrade PS a nepovedl se správně. Doporučujeme obnovení zálohy…
Jelikož se tyto errory netýkají již článku, napíšeme Vám bližší info do emailu.
Případně pokud updatujete PS, tak my nikdy nedoporučujeme to dělat vlastními silami právě z těchto důvodů. Doporučujeme využít odborný update od nás včetně plné podpory a garance:
https://www.openservis.cz/prestashop-blog/aktualizace-prestashopu-na-posledni-verzi/