PrestaShop 1.7 – řešení putenv() has been disabled for security reasons

2 komentáře

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é

  • R - stick
    26. 8. 2023 19:58

    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?

    Odpovědět
    • 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/

      Odpovědět

Napsat komentář

Vaše e-mailová adresa nebude zveřejněna. Vyžadované informace jsou označeny *

Prosím, vyplňte toto pole.
Prosím, vyplňte toto pole.
Zadejte prosím platnou e-mailovou adresu.
Chcete-li pokračovat, musíte souhlasit s podmínkami