Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Странное поведение PHP на Ubuntu Server

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (1): [1]   

> Без описания
Zeboton
Отправлено: 08 Ноября, 2010 - 19:20:15
Post Id


Новичок


Покинул форум
Сообщений всего: 12
Дата рег-ции: Июль 2006  
Откуда: Москва


Помог: 1 раз(а)




Есть сайт, написанный на PHP. На этом сайте у авторизованных пользователей есть возможность загружать на сервер картинки. Картинки загружаются при помощи SWFUpload 2. Всё работало как часы, но недавно пользователи начали жаловаться, что картинки не загружаются. Начал разбираться и оказалось, что в файле, которому SWFUpload передаёт загружаемую картинку, пусть он будет называться upload.php, происходят странные вещи. В upload.php в POST параметрах передаются нужные для сохранения данные, а также PHPSESSID. Далее upload.php, используя полученный PHPSESSID пытается стартануть сессию ( session_id( $_POST['PHPSESSID'] ); session_start(); ). Вот в этом моменте и начается веселье. Сессия стартует, но пустая! Причём через раз она действительно очищается и пользователь, находящийся на сайте, вылетает. На остальном сайте сессия стартуется через COOKIE и работает отлично. В файл upload.php COOKIE не передаются, так как он вызывается из Flash.

Кто знает что делать и куда копать?

Не могу вспомнить чтобы что-нибудь менял на сервере. Последнее что делал на нём — устанавливал задачу на автозапуск php-скрипта в cron.

Лог того, что происходит в файле upload.php: http://pastebin[dot]com/aKGSaFQV
Конфигурация сервера: Ubuntu Server / Apache 2 / PHP Version 5.2.6-3ubuntu4.6


-----
And remember, respect is everything!
 
 Top
Uchkuma
Отправлено: 08 Ноября, 2010 - 21:32:07
Post Id



Участник


Покинул форум
Сообщений всего: 1539
Дата рег-ции: Март 2010  
Откуда: Киров


Помог: 6 раз(а)




Так вы же сами ее потираете:
Zeboton пишет:
session_id( $_POST['PHPSESSID'] );
 
 Top
Zeboton
Отправлено: 08 Ноября, 2010 - 22:09:52
Post Id


Новичок


Покинул форум
Сообщений всего: 12
Дата рег-ции: Июль 2006  
Откуда: Москва


Помог: 1 раз(а)




Uchkuma пишет:
Так вы же сами ее потираете

Из мануала session_id:
Цитата:
If id is specified, it will replace the current session id. session_id() needs to be called before session_start() for that purpose.

Я именно так и поступаю — передаю идентификатор сессии и стартую её. Если не делать session_id( $_POST['PHPSESSID'], то стартует новая пустая сессия.

Или я что-то неправильно в мануале понял?

P.S.
Прошу не забывать, что ранее этот скрипт отлично работал на этом же сервере, а на localhost он до сих пор работает на отлично.

(Отредактировано автором: 08 Ноября, 2010 - 22:26:18)



-----
And remember, respect is everything!
 
 Top
Uchkuma
Отправлено: 08 Ноября, 2010 - 22:51:34
Post Id



Участник


Покинул форум
Сообщений всего: 1539
Дата рег-ции: Март 2010  
Откуда: Киров


Помог: 6 раз(а)




Zeboton пишет:
Или я что-то неправильно в мануале понял?
Давайте все же по-русски, понятнее будет.
Цитата:
session_id() возвращает id текущей сессии. Если id специфицирован, он замещает текущий session id.
Зачем вам замещать текущий id?
php автоматически принимает PHPSESSID и продолжает сессию, если такой id существует. Его не нужно принудительно специфицировать. Ф-я session_id используется для того, чтобы изменить текущий id на другой. В течение сессии этот id не меняется.
 
 Top
OrmaJever Модератор
Отправлено: 08 Ноября, 2010 - 23:14:59
Post Id



Активный участник


Покинул форум
Сообщений всего: 7540
Дата рег-ции: Янв. 2010  
Откуда: Чернигов


Помог: 299 раз(а)




session_id() возвращает id текущей сессии.
попробуйте вывести session_id() и $_POST['PHPSESSID']
Если значения разные то не удивителньо что меняется сесия.


-----
Если вы хотя бы 3-4 раза не решите всё выкинуть и начать заново - вы явно что-то делаете не так.
 
 Top
Zeboton
Отправлено: 09 Ноября, 2010 - 06:48:35
Post Id


Новичок


Покинул форум
Сообщений всего: 12
Дата рег-ции: Июль 2006  
Откуда: Москва


Помог: 1 раз(а)




Uchkuma, перевод того, что написано в мануале:
Цитата:
Если id задан, то это заменит текущий id сессии. session_id() должна быть вызвана до session_start(), чтобы от неё был эффект.


Uchkuma, OrmaJever, г-да, поверьте мне, и пробовал и с session_id( $_POST['PHPSESSID'] и без — результат одинаковый. Чтобы это доказать — вот: http://pastebin[dot]com/pdNh0npV
Смотрите п.3.0.1 (вызван до session_id( $_POST['PHPSESSID'] ), п.3.0.2 (вызван сразу после). Без session_id( $_POST['PHPSESSID']): http://pastebin[dot]com/SQDcQ4VG

И ещё раз повторю — это скрипт ( с session_id( $_POST['PHPSESSID']) ) прекрасно работал на этом же сервере до какого-то момента! Я больше склоняюсь, что сбилось что-то в конфигурации сервера или PHP.


P.S.
Uchkuma, я — сама экономность: у меня на клавиатуре нет лампочек Улыбка


-----
And remember, respect is everything!
 
 Top
Uchkuma
Отправлено: 09 Ноября, 2010 - 08:44:56
Post Id



Участник


Покинул форум
Сообщений всего: 1539
Дата рег-ции: Март 2010  
Откуда: Киров


Помог: 6 раз(а)




Zeboton пишет:
Чтобы это доказать — вот: http://pastebin.com/pdNh0npV
Посмотрел. А вы попробуйте вызовите session_id после session_start и без аргументов. Что она вернет?
 
 Top
JustUserR
Отправлено: 09 Ноября, 2010 - 12:29:11
Post Id



Активный участник


Покинул форум
Сообщений всего: 8715
Дата рег-ции: Июнь 2009  


Помог: 17 раз(а)




Zeboton Для обеспечение мануального управление идентификаторами сессии и блоком их инициализации возможно использование такой схемы - первоначально обеспечивается такая настройка PHP-интерпретатора осуществляющая блокировку автоматической передачи информационного поля с идентификатором сессии - в cookie-значения или trans_sid-подстановку После проведения указанного действия возможна реализация управления встроенных механизмом cookie посредством использования набора функций - в таком случае применение session_start с передачей идентификатора сессии в качесмтве аргумента осуществляет ее возобновления - в то время как session_id используется для мануального получения информационного поля phpsessid


-----
Сделать можно все что угодно - нужно только старание, терпение и хороший поисковик Улыбка
Безлимитный web-хостинг от 15 рублей за 40 МБ дискового пространства - http://ihost[dot]oks71[dot]ru/
 
 Top
Zeboton
Отправлено: 10 Ноября, 2010 - 03:58:56
Post Id


Новичок


Покинул форум
Сообщений всего: 12
Дата рег-ции: Июль 2006  
Откуда: Москва


Помог: 1 раз(а)




Uchkuma пишет:
Посмотрел. А вы попробуйте вызовите session_id после session_start и без аргументов. Что она вернет?

п.3.2. в логе

JustUserR, что-то я не нашёл в документации, что session_start можно передавать аргументы, но попробовал — не помогло.


-----
And remember, respect is everything!
 
 Top
OrmaJever Модератор
Отправлено: 10 Ноября, 2010 - 13:04:44
Post Id



Активный участник


Покинул форум
Сообщений всего: 7540
Дата рег-ции: Янв. 2010  
Откуда: Чернигов


Помог: 299 раз(а)




Zeboton пишет:
что-то я не нашёл в документации, что session_start можно передавать аргументы

А вы когда зашли на форум вы сайт видели?
session_start() session_id()


-----
Если вы хотя бы 3-4 раза не решите всё выкинуть и начать заново - вы явно что-то делаете не так.
 
 Top
JustUserR
Отправлено: 11 Ноября, 2010 - 09:38:30
Post Id



Активный участник


Покинул форум
Сообщений всего: 8715
Дата рег-ции: Июнь 2009  


Помог: 17 раз(а)




Zeboton пишет:
JustUserR, что-то я не нашёл в документации, что session_start можно передавать аргументы, но попробовал — не помогло
Для осуществления диагностики механихма сессии в пределах администрируемого вами web-ресурса возможно использование следующей схемы - главным критерием обеспечение запуска и остановки сессии а также извлечения и переади ее идентификатора производится исключительно в мануальном режиме посредством применения соответствующих PHP-фукнций с требуемыми аргументами - в таком случае возможность проверки используемой сессии и назначение целевого значения обеспечивется исключительно информационными полями на клиентской стороне


-----
Сделать можно все что угодно - нужно только старание, терпение и хороший поисковик Улыбка
Безлимитный web-хостинг от 15 рублей за 40 МБ дискового пространства - http://ihost[dot]oks71[dot]ru/
 
 Top
Zeboton
Отправлено: 14 Ноября, 2010 - 08:14:04
Post Id


Новичок


Покинул форум
Сообщений всего: 12
Дата рег-ции: Июль 2006  
Откуда: Москва


Помог: 1 раз(а)




Проблема явно была в конфликте чего с чем-то на сервере или в самом PHP, так как после переустановки серверного ПО всё заработало как нужно.


-----
And remember, respect is everything!
 
 Top
JustUserR
Отправлено: 14 Ноября, 2010 - 18:57:19
Post Id



Активный участник


Покинул форум
Сообщений всего: 8715
Дата рег-ции: Июнь 2009  


Помог: 17 раз(а)




Zeboton пишет:
Проблема явно была в конфликте чего с чем-то на сервере или в самом PHP, так как после переустановки серверного ПО всё заработало как нужно.
Возможной причиной неправильной работы механихма сессий в испольуемых вами PHP-скриптах являлось наличие конфигурационных директив - обеспечивающих автоматизацию продления инстанции сессии в текущем выполнении - в то время как используемые в PHP-скриптах функциональные компоненты обеспечивали самостоятельное управление даным процессом
Как правило для решения указаной задачи - необходимо произвести включение или выключение директив use_cookies и use_trans_sid а также опцию автоматического проления сессии - в зависимости от конструкционных особенностей web-приложения


-----
Сделать можно все что угодно - нужно только старание, терпение и хороший поисковик Улыбка
Безлимитный web-хостинг от 15 рублей за 40 МБ дискового пространства - http://ihost[dot]oks71[dot]ru/
 
 Top
Zeboton
Отправлено: 14 Ноября, 2010 - 21:18:51
Post Id


Новичок


Покинул форум
Сообщений всего: 12
Дата рег-ции: Июль 2006  
Откуда: Москва


Помог: 1 раз(а)




JustUserR, всё работало и работает сейчас, а значит был сбой.


-----
And remember, respect is everything!
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Программирование на PHP »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB