Лъжец

Напоследък излизам по-рано от очакваното на няколко уебсайта, които управлявам на Linux сървъри. Проблемът започна спонтанно преди няколко месеца. По това време не бях правил никакви скорошни промени в кода на уебсайта или настройките на CPanel. Нямаше нужда, тъй като настройките на CPanel винаги ме държаха в системата за около 18 часа. Но сега излизам след само 30 минути бездействие. Ето настройките на CPanel, които работеха надеждно до преди няколко месеца:

session.cookie_lifetime 0 session.gc_maxlifetime 65535 

За отстраняване на неизправности също опитах еквивалентните настройки във файла htaccess:

php_value session.cookie_lifetime 0 php_value session.gc_maxlifetime 65535 

(65535 секунди са еквивалентни на около 18 часа.)

Тествах този проблем с три различни PHP форми. Първо влизам с потребителско име и парола. Ако след това натисна F5 за опресняване в рамките на 30 минути, все още съм влязъл. Но ако изчакам повече от 30 минути, преди да опресня страницата, ще открия, че съм излязъл. Също така опитах два различни сървъра, предоставени от един и същ уеб хост, но проблемът остава.

Аз съм на споделен сървър CentOS и нямам достъп до файла php.ini - само CPanel и .htaccess файл.

Подозирам, че този проблем е причинен от скорошна актуализация на Linux / CentOS, но не виждам подобни оплаквания в интернет. Затова се чудя дали това е само моят уеб хост. (Иначе са много надеждни.)

Някой срещал ли се е с този проблем? Дали това е грешка на Linux / CentOS? Има ли поправка? Или трябва да се преместя на друг уеб хост?

  • Датата и часът на сървъра правилни ли са?
  • Да, току-що потвърдих, че датата и часът на сървъра са правилни и синхронизирани. Благодаря.
  • "Точно" 30 минути ли е? Просто това по подразбиране стойност за session.gc_maxlifetime е 1440 секунди (т.е. 24 минути). Проверете стойността, след като сте я задали, или проверете php_info() след това. Имайте предвид също, че ако друг скрипт задава по-ниска стойност (за същия манипулатор на сесия), това вероятно ще спечели.
  • Точно сега се освежих след 27 минути бездействие и все още съм влязъл в системата. Но дори ако session.gc_maxlifetime е 1440 секунди в глобалния файл php.ini, сесията може да не изтече точно по това време, afaik. Така че все още може да си прав. Във всеки случай, каквато и да е глобалната настройка на php.ini, моята настройка на cPanel трябва да я заменя, но не мисля, че това се случва.

Благодаря за помощта за отстраняване на неизправности. Реших проблема - като посочих персонализирана папка за съхраняване на временни данни за сесията. Ето как:

  1. Намерете папката, в която в момента се съхраняват вашите файлове с данни за сесията. В моя случай папката се наричаше tmp. Името и местоположението на папката може да варират в зависимост от вашата версия на Linux и начина, по който е настроен, afaik.

  2. Създайте нова папка, намираща се в същата папка като папката tmp (не в рамките на папката tmp).

  3. В cPanel (php версия / PHP Selector | опции), посочете пълния път до новата папка като стойност за session.save_path. Можете също да направите това във вашия файл php.ini, ако имате достъп до него.

Ако имате нужда от повече информация, следните връзки може да са полезни:

https://security.stackexchange.com/questions/19053/where-and-how-is-data-stored-in-a-session

https://stackoverflow.com/questions/4927850/location-for-session-files-in-apache-php

https://docs.cloudlinux.com/index.html?tmp_directories.html (CloudLinux документация: Tmp директории)

Надявам се това да помогне на всеки, който се сблъска със същия проблем в бъдеще.

е работил за вас: Charles Robertson | Искате ли да се свържете с нас?