php. текущая cессия. как получить содержимое файла сессии?

yelenabun

Новичок
php. текущая cессия. как получить содержимое файла сессии?

Здравствуйте,
возникла проблема - при попытке прочитать содержимое файла текущей сессии в строку file_get_contents() возвращает пустую строку.

OC Windows
php 5.2.6
apache 2.2.11

file_exists() возвращает true
is_readable() возвращает true
filesize() возвращает 75

код примерно такой:

PHP код:
PHP:
$sessionSavePath = session_save_path();
$dir = dir($sessionSavePath);
while(($entry = $dir -> read()) !== false) {
    if ($entry <> '.' && $entry <> '..' 
            && file_exists($sessionSavePath . '/' . $entry) 
            && is_readable($sessionSavePath . '/' . $entry)) {            
        $data = file_get_contents($sessionSavePath . '/' . $entry);
        echo $data;
    }
}
может что-то конкретно надо настроить в конфиге апача или php.ini?
Редактировать/Удалить сообщение
 

yelenabun

Новичок
Автор оригинала: tashkentchi
А зачем файлы сессий читать через file_get_contents?
так нужно) чтобы потом сделать строке session_decode() и т.д...
или есть какой-то еще способ чтения файлов сессий?
 

yelenabun

Новичок
Автор оригинала: tashkentchi
Создай свой обработчик сессий - session_set_save_handler
наверняка есть какой-то выход из моей ситуации без назначения собственного обработчика сохранения сессий.
 

tashkentchi

Новичок
Я так и не понял, что у тебя за ситуация. Если тебе нужна одна, текущая сессия, то массив $_SESSION вполне достаточен.

Если же ты хочешь что-то неадекватное делать со всеми сессиями, то пиши свой обработчик.
 

yelenabun

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

slach

Новичок
скрипт который содержимое сессий читает
из под какого окружения запущен??

если mod_php
то видимо лочится файлик и не дает уже на уровне php читать

попробуй по cron
и session.save_path другой выставлять в том скрипте, который должен "все сессии" читать
 

tashkentchi

Новичок
Нельзя этого хотеть в силу безопасности, ведь твой ресурс может быть не единственным на хосте. Поэтому у тебя $dir == false

Попробуй
PHP:
session_save_path('./mysessions');
$sessionSavePath = './mysessions';
session_start();
 

yelenabun

Новичок
у меня dir !== false
читается содержимое всех файлов сессий, кроме моей.

-~{}~ 25.02.09 13:50:

пришлось сделать так

PHP:
if ($entry == 'sess_' . session_id())
    $data = session_encode();
else 
    $data = file_get_contents($sessionSavePath . '/' . $entry);
 

tashkentchi

Новичок
Автор оригинала: yelenabun
у меня dir !== false
В таком случае выньда - дырявое гуано. В нормальных системах пермишены не позволяют этот дир просматривать.

читается содержимое всех файлов сессий, кроме моей.
Может быть файл пуст? Учти, что файл сессии перезаписывается ПОСЛЕ того как скрипт отработал. Замени 'echo $data' на 'var_dump($data)'.
 

yelenabun

Новичок
вопрос решен (см. выше)

а на линухе тоже самое - только директорию для сохранения сессий указала свою в .htaccess.

php_value session.save_path /some_dir

файл не пуст. видимо то, что "файл сессии перезаписывается ПОСЛЕ того как скрипт отработал" и является причиной проблемы.
 

zerkms

TDD infected
Команда форума
[offtop + discrimination]
время говнокодеров прошло. начинается новая эра говнокодерш
[/offtop]
 

slach

Новичок
zerkms ??? в чем проблема то??
вполне себе насущно бывает необходимо именно читать сессии

и IMHO это может быть эффективнее чем online пользователей хранить в базе

хотя конечно смотря сколько одновременно хранимых сессий...
хотя конечно, у тебя голове один хакинг ?? ;)

tashkentchi
вообще разграничение по данным сессии между пользователями шаред хостинга достигается через индивидуальный php.ini или индивидуальный php_admin_value session.save_path в конфиге веб-сервера

в свое время DiMA php.spb.ru ругался с мастерхостом по поводу этой дырки
 

флоппик

promotor fidei
Команда форума
Партнер клуба
вполне себе насущно бывает необходимо именно читать сессии
для таких вещей надо переопределять хендлеры, а не файлы с сессиями парсить.
 
Сверху