На самом деле эти ответы не сработали, потому что я выполнял код в подкаталоге Magento.Magento смотрит на dirname вашей переменной SCRIPT_NAME и устанавливает его там.Поэтому, если вы устанавливаете сеанс из /foo/test.php, тогда cookie будет действителен только для / foo /, если magento находится в "/", он не увидит cookie.
Вв этом случае, если ваш сценарий является тем, который изначально создает cookie, вы должны заставить cookie быть действительным для "/".
Симптомы - ваши изменения не вступают в силу, и вы можете видетьдве сессии в "/ var / session".Это кажется непредсказуемым, но разница в том, что если Magento сначала создает сеанс, он действителен для всех путей.Если ваш сценарий создает его первым, он не подходит для Magento, браузер пропускает его, а Magento создает новый сеанс.
Пример рабочего кода:
<?php
ini_set('display_errors', 1);
require_once $_SERVER['DOCUMENT_ROOT'] . '/app/Mage.php';
Mage::app('mystore', 'website');
$session = Mage::getSingleton('core/session', array('name' => 'frontend'));
$sessionName = $session->getSessionName();
$sessionId = $session->getSessionId();
/**
* Magento sets the cookie valid for the path "/recommend", but we need it available always (path "/")
*/
setcookie($sessionName, $sessionId, null, '/');
(причина, по которой я использовал DOCUMENT_ROOTпотому что я использую отображение modman из этого модуля, который запускает код через символическую ссылку).Важной частью является setcookie ().Из изучения заголовков http вы увидите, что установлены два куки.Один для "/ foo" и один для "/".Без вызова setCookie создается только первый сеанс, который не виден Magento при доступе через "/index.php" вместо "/foo/test.php"