Назад | Перейти на главную страницу

Ошибка «Не удалось запустить сеанс: уже запущен 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?

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

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

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

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