PHP session_save_path nem működik
Tisztelt Programozók!
Nagy problémával fordulok Önökhöz. Adott egy tárhelyszolgáltató, illetve a localhost-omon lévő WAMP. Tökéletesen működik a session kezelésem. Fontos a működés szempontjából, hogy az admin felületen elindított session a session/admin mappában, a külső oldali session a session/site mappában helyezkedjen el. Ezt ugyebár a session_save_path("session/admin") php-s függvénnyel érem el. Ez működik is az említett két helyen. Most viszont átkerült másik tárhelyszolgáltatóhoz a weboldal. No itt a hiba. Nincs a session fájl sehol.
Sem az általam megadott mappákban, sem a phpinfo()-val kiíratott session.save_path local value: /var/www/virtual/almafa.hu/phptmp mappában.
Szóltam a szerver karbantartóknak, akik először azt kérték írjam le pontosan mi a baj. Tömören: hol a session, mert a kapott fpt-n nincs semelyik mappában sem? Most visszaírtak, hogy mondjam meg mely szerverbeállítást állítsák át, mert nekik minden más weboldaluk tökéletes (persze, mert azok leszarják a session helyét). Már bocsánat a kifejezésért de ..... tudja mi a hiba, és most nyálazzam át a kb. 14 oldalas szerverinfót.
Az érdekes, hogy a session.save_path master value teljesen másik mappában van: /var/lib/php5. Mi lehet a gond? Hol lehet elbaszva? A működő és nem működő szerveren is ugyan azok a phpinfo()-val kiíratott session beállítások, csak a működőn a master és a local value is megegyezik. Kérlek segítsetek. Előre is köszönöm.
Ui: Ezeket próbáltam:
mappajogot:7777-re
másik mappába
nem állítani a session_save_path-ot (a szerver local value-nak beállított mappában sincs )
teljes elérést adni: session_save_path(/var/www/virtual/almafa.hu/session/admin)
szerver verzió: PHP Version 5.2.17
■ Nagy problémával fordulok Önökhöz. Adott egy tárhelyszolgáltató, illetve a localhost-omon lévő WAMP. Tökéletesen működik a session kezelésem. Fontos a működés szempontjából, hogy az admin felületen elindított session a session/admin mappában, a külső oldali session a session/site mappában helyezkedjen el. Ezt ugyebár a session_save_path("session/admin") php-s függvénnyel érem el. Ez működik is az említett két helyen. Most viszont átkerült másik tárhelyszolgáltatóhoz a weboldal. No itt a hiba. Nincs a session fájl sehol.
Sem az általam megadott mappákban, sem a phpinfo()-val kiíratott session.save_path local value: /var/www/virtual/almafa.hu/phptmp mappában.
Szóltam a szerver karbantartóknak, akik először azt kérték írjam le pontosan mi a baj. Tömören: hol a session, mert a kapott fpt-n nincs semelyik mappában sem? Most visszaírtak, hogy mondjam meg mely szerverbeállítást állítsák át, mert nekik minden más weboldaluk tökéletes (persze, mert azok leszarják a session helyét). Már bocsánat a kifejezésért de ..... tudja mi a hiba, és most nyálazzam át a kb. 14 oldalas szerverinfót.
Az érdekes, hogy a session.save_path master value teljesen másik mappában van: /var/lib/php5. Mi lehet a gond? Hol lehet elbaszva? A működő és nem működő szerveren is ugyan azok a phpinfo()-val kiíratott session beállítások, csak a működőn a master és a local value is megegyezik. Kérlek segítsetek. Előre is köszönöm.
Ui: Ezeket próbáltam:
mappajogot:7777-re
másik mappába
nem állítani a session_save_path-ot (a szerver local value-nak beállított mappában sincs )
teljes elérést adni: session_save_path(/var/www/virtual/almafa.hu/session/admin)
szerver verzió: PHP Version 5.2.17
Néhány kérdés
Ha te indítod őket, akkor a phpinfo nem fogja megmondani, hol vannak a sessionök, mert azt te felüldefiniálod, mielőtt elindítanád.
Ha meg automatikusan indulnak, akkor meg mindegy, hogy a php kódban még mit állítasz át.
A session cookie elküldésre kerül, vagy már az sincs?
Ha van, akkor egyébként működik a session, csak nem jó helyen van tárolva?
Válasz
Én indítom, a kód ami kezeli:
session_save_path($session_save_path);
session_name($session_name);
session_start();
PhpInfo:
http://kepfeltoltes.hu/view/110926/session_www.kepfeltoltes.hu_.png
A session tökéletes, minden remekül működik, csak nem a megadott mappában van. A gondom, hogy admin felhasználó esetén is csak annyit nézek, hogy van-e SESSION["user_id"], meg külső oldalon is. Megtudnám oldani, ha máshogy nevezgetem el a két helyen a változókat, csak már idegesít, hogy hogy lehet úgy elbaszni egy szerverbeállítást, hogy a megrendelt tárhelyemen nincsenek a session fájljaim.
Most kitaláltam a tuttit.
Csináltam egy fájlt: session.php
Kódja:
<?php
session_save_path("a");
session_name("almafa");
session_start();
$_SESSION["a"] = "teszt";
echo "<pre>";
print_r($_SESSION);
echo "</pre>";
?>
Ki is írja, hogy:
Array
(
[a] => teszt
)
Az "a" mappa 7777 joggal tök üres.
Ennek a fájlnak a működését csak a haccess befolyásolhatja, aminek kódja:
RewriteEngine On
RewriteCond %{HTTP_HOST} !^www\.
RewriteRule ^(.*)$ http://www.%{HTTP_HOST}/$1 [R=301,L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
ErrorDocument 404 /index.php?m=tartalom&link=404
+Vagy 30 sor RewriteRule
open_basedir
open_basedir
Master value:
no value
Megvannak
Adatbázis
Miért?
Osztály
Azt, hogy az adott szerveren miért nem működik, csak a szerver üzemeltetőjével tudod lefocizni, vagy átköltözöl egy olyanra, ahol működik, és valószínűleg jobban is jársz, mert ha ezt nem tudják neked megoldani, akkor mi van, ha komolyabb kérdésed lesz?
Félelem
Megoldva
Néha magamnak is okozok meglepetést, hogy 5 év webprogramozás után is ilyen sötét vagyok :). Elnézést a butaságom miatt.
Köszönöm a segítséget a kommentelőktől.