Nastavení sessions pro KC Finder

Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
Andrasin
Člen | 29
+
0
-

Zdravím, mám v Nette projektu integrovaný CKEditor a KCFinder. Pro povolení KCFinderu pro registrované uživatele vytvářím po přihlášení session s názvem KCFINDER.

Snažím se nastavit správné parametry v config.php kcfinderu, ale stále se nemůžu dostat ke zdárnému výsledku.

V config.php jsem nastavil

_sessionVar' => &$_SESSION['__NF']['DATA']['KCFINDER'],
//Dále mohu ještě nastavovat tyto parametry, ale nevím jak a ani nevím, jestli je to nutné.
'_sessionDir' => "/full/directory/path",
'_sessionDomain' => ".mysite.com",
'_sessionPath' => "/my/path",

Sessions mám v config.neon nastavené takto:

session:
        expiration: 30 days
        savePath: %tempDir%/sessions

Když si session dumpnu, tak existuje, ale KCFinder ji stále nevidí, vyhazuje hlášku, že uživatel není oprávněn. Jinak Finder normálně funguje, pokud mu v configu nastavím, aby session nepožadoval.
Využívám klasickou strukturu ze Sandboxu.

Poradí prosím někdo, jak to mám nastavit správně?

Editoval Andrasin (29. 9. 2016 22:13)

iguana007
Člen | 970
+
0
-

To nastavení by mělo odpovídat tomu, jak nastavuješ sessions v Nette, tak si to porovnej a postupuj podle tohoto návodu: http://kcfinder.sunhater.com/integrate#…

Andrasin
Člen | 29
+
0
-

To už jsem všechno pročítal a zkoušel. Pokud jsem to tedy pochopil správně, musím nastavit _sessionVar a _sessionDir, jelikož jsem cestu k session v config.neon změnil. Mám tedy nastaveno:

'_sessionVar' => &$_SESSION['__NF']['DATA']['KCFINDER'],
'_sessionLifetime' => 30,
'_sessionDir' => __DIR__ . '/../../../../temp/sessions',

sessionDir cesta je správně

file_exists(__DIR__ . '/../../../../temp/sessions/sess_0n9s94ks0gn0j9o2ekolkmsrc0

vrací TRUE. KCFINDER ale stále stávkuje. Zkoušel jsem cestu zadávat relativně i absolutně…

Zkoušel jsem to i takto:

ini_set('session.save_path', "C:\Users\andrasin\Dropbox\htdocs\gfcms-mini/temp/sessions");
var_dump(session_save_path());exit; //vrací existující cestu k sessions...

Editoval Andrasin (30. 9. 2016 17:43)

Landsman
Člen | 152
+
0
-

Mám pocit, že jsem s tím také bojoval a pak jsem šáhl po elFinder, který jsem dal na vlastní routu a ošetřil login. Integrace do CKeditoru byla rychlá, přidal jsem jen javascript na přenášení img path do formuláře. Třeba to pro tebe bude také rychlejší volba.

Editoval Landsman (2. 10. 2016 18:49)

Andrasin
Člen | 29
+
0
-

Díky za tip, mrknu na to. Buď použiju ten od tebe nebo nějaký jiný, Resnponsive Filemanager vypadá taky pěkně.

Ještě jsem trochu experimentoval a zdá se, že je problém v té verzi KCFinder, kterou jsem použil (3.12). Zkusil jsem verzi 2, která mi úspěšně funguje v jiném projektu s Nette 2.0 a tu jsem rozchodil bez problému.

duke
Člen | 650
+
0
-

Myslím, že problém je v tom, že KCFinder nepodporuje zápis:

'_sessionVar' => &$_SESSION['__NF']['DATA']['KCFINDER'],

Pro přidání této podpory je třeba zasáhnout do kódu skriptu kcfinder/core/class/uploader.php.
Konrkétně přepsat část označenou komentářem // LOAD SESSION CONFIGURATION IF EXISTS takto:

		// LOAD SESSION CONFIGURATION IF EXISTS
$this->config = $_CONFIG;
$sessVar = "_sessionVar";
if (isset($_CONFIG[$sessVar])) {

    $sessVar = $_CONFIG[$sessVar];

    $session = &$_SESSION;
    foreach ((array) $sessVar as $key) {
        if (!isset($session[$key]))
            $session[$key] = array();
        $session = &$session[$key];
    }

    foreach ($session as $key => $val) {
        if ((substr($key, 0, 1) != "_") && isset($_CONFIG[$key]))
            $this->config[$key] = $val;
    };

    if (!isset($session['self']))
        $session['self'] = array();

    $this->session = &$session['self'];

} else
    $this->session = &$_SESSION;

A v configu KCFinderu pak použít:

	'_sessionVar' => array('__NF', 'DATA', 'KCFINDER'),