Ошибка «Не удалось запустить сеанс: уже запущен PHP» при использовании CMS

Ошибка «Не удалось запустить сеанс: уже запущен PHP» при использовании CMS

Я установил CMS под названием Prestashop: она работает под определенным доменом и с определенной конфигурацией VirtualHost на Apache, на сервере с другими PHP-приложениями (Wordpress).

При попытке войти в систему как администратор я получаю следующую ошибку (это журнал ошибок Apache):

[Wed Jan 18 00:09:16.059190 2017] [:error] [pid 31253] [client xx.xx.xx.xx:63129] PHP Fatal error: Uncaught exception 'RuntimeException' with message 'Failed to start the session: already started by PHP.' in /opt/wp/apps/prestashop/app/cache/prod/classes.php:108\nStack trace:\n#0 /opt/wp/apps/prestashop/app/cache/prod/classes.php(483): Symfony\Component\HttpFoundation\Session\Storage\NativeSessionStorage->start()\n#1 /opt/wp/apps/prestashop/vendor/symfony/symfony/src/Symfony/Component/Security/Csrf/TokenStorage/SessionTokenStorage.php(90): Symfony\Component\HttpFoundation\Session\Session->start()\n#2 /opt/wp/apps/prestashop/vendor/symfony/symfony/src/Symfony/Component/Security/Csrf/CsrfTokenManager.php(54): Symfony\Component\Security\Csrf\TokenStorage\SessionTokenStorage->hasToken('ANONYMOUS_USER')\n#3 /opt/wp/apps/prestashop/app/cache/prod/classes.php(8196): Symfony\Component\Security\Csrf\CsrfTokenManager->getToken('ANONYMOUS_USER')\n#4 /opt/wp/apps/prestashop/classes/Link.php(722): PrestaShopBundle\Service\Routing\Router->generate('admin_product_c...')\n#5 /opt/wordpre in /opt/wp/apps/prestashop/app/bootstrap.php.cache on line 3216, referer: http://www.xxxxx.xx/adminXXX/index.php?controller=AdminLogin&token=181fa270d47386a8d523bdea6213932c&redirect=AdminDashboard'

Ошибка извлекается стабильной версией Prestashop, поэтому я не думаю, что это может зависеть от проблемы кода. Это то, что WordPress сначала открывает сессию, а затем Symfony (Prestashop) находит сессию уже открытой? Основной домен фактически обслуживается WP. Я также пытаюсь определить конкретный путь для Prestashop VirtualHost:https://stackoverflow.com/questions/18262878/how-to-prevent-php-sessions-being-shared-between-different-apache-vhosts К сожалению, это не работает.

Параметр auto_start сеанса PHP установлен на 0 в php.ini.

Я не понимаю, как решить эту проблему. Может это зависит от конфигурации Apache или PHP?

Большое спасибо.

решение1

У вас есть некоторые символы за пределами вашего PHP, перед командой session_start. Скорее всего, пробелы после закрывающего тега ?>

Вот почему закрывающие теги не должны располагаться в конце файла, это закреплено в стандарте PSR2.

Убедитесь, что вы загружаете все файлы с правильными настройками FTP и проверьте на наличие случайных изменений. В худшем случае поместите var_dump(headers_sent().__FILE_d); во все файлы, включенные до вашего сообщения об ошибке.

Связанный контент