We launched new forums in March 2019—join us there. In a hurry for help with your website? Get Help Now!
    • 10896
    • 76 Posts
    Hmm... I checked the plugins in the trouble install vs the other installs. It looks like the only plugin that this has the others don’t is

    PNG-Alpha Transparency for MSIE - 1.0

    When I disabled this plugin it didn’t seem to make a difference.

    I’m wondering if we could track this down with the spot where there is a consistent error. No matter what browser I’m using I always get kicked out when I try to move a document.


    • I can click move document
    • select the new parent
    • everything is normal up to this point

    Then when I click "Save" I get booted out.

    I’ve grabbed copies of the SERVER and COOKIE global vars at this point, and note significant difference

    good site output
    $_SERVER[HTTP_COOKIE] => __utma=249997211.981992396.1211201062.1211201062.1211380008.2; __utmz=249997211.1211201062.1.1.utmcsr=(direct)|utmccn=(direct)|utmcmd=(none); QE_linksShown=1; SN467bc70201bdd=d1d4b23ed1edf288647fcda52e887a41; webfxtab_resourcesPane=4; webfxtab_documentPane=1
    
    $_COOKIE
    Array
    (
        [__utma] => 249997211.981992396.1211201062.1211201062.1211380008.2
        [__utmz] => 249997211.1211201062.1.1.utmcsr=(direct)|utmccn=(direct)|utmcmd=(none)
        [QE_linksShown] => 1
        [SN467bc70201bdd] => d1d4b23ed1edf288647fcda52e887a41
        [webfxtab_resourcesPane] => 4
        [webfxtab_documentPane] => 1
    )
    


    Bad site
    $_SERVER[HTTP_COOKIE] => SN47d74a4a4b1bb=a4442f47885c2c185d4c1c6ce61e7d79
    
    
    $_COOKIE
    Array
    (
        [SN47d74a4a4b1bb] => a4442f47885c2c185d4c1c6ce61e7d79
    )
    


    (almost putting this down for my own documentation as well as sharing with you.)

    Thoughts?
      • 22303 MODX Staff
      • 10,725 Posts
      Seems to me that your session handler is just losing the session for some unknown reason. Can you post the session handler class you are using, as it is exactly? I looked at the link you gave me and it worries me a little. This could also somehow be related to your clustering configuration, if perhaps the Apache configuration is not reporting the HTTP_HOST, or another key $_SERVER variable as expected (PHP_SELF, SERVER_NAME, SCRIPT_NAME, etc.) or assumed in a non-clustered environment.

      Final thought, have you made sure that the install is at 100% file integrity? In other words, is it possible a file or two got corrupted during transfer to one of the machines via FTP? Or were they extracted directly on the server( s )?

      Mostly just thinking out loud here, as it is a very odd problem...
        • 10896
        • 76 Posts
        Here’s the session handler

        <?
        /* ------------------------------------------------------------------------
         * session_mysql.php
         * ------------------------------------------------------------------------
         * PHP4 MySQL Session Handler
         * Version 1.00
         * by Ying Zhang ([email protected])
         * Last Modified: May 21 2000
         *
         * ------------------------------------------------------------------------
         * TERMS OF USAGE:
         * ------------------------------------------------------------------------
         * You are free to use this library in any way you want, no warranties are
         * expressed or implied.  This works for me, but I don't guarantee that it
         * works for you, USE AT YOUR OWN RISK.
         *
         * While not required to do so, I would appreciate it if you would retain
         * this header information.  If you make any modifications or improvements,
         * please send them via email to Ying Zhang <[email protected]>.
         *
         * ------------------------------------------------------------------------
         * DESCRIPTION:
         * ------------------------------------------------------------------------
         * This library tells the PHP4 session handler to write to a MySQL database
         * instead of creating individual files for each session.
         *
         * Create a new database in MySQL called "sessions" like so:
         *
         * CREATE TABLE sessions (
         *      sesskey char(32) not null,
         *      expiry int(11) unsigned not null,
         *      value text not null,
         *      PRIMARY KEY (sesskey)
         * );
         *
         * ------------------------------------------------------------------------
         * INSTALLATION:
         * ------------------------------------------------------------------------
         * Make sure you have MySQL support compiled into PHP4.  Then copy this
         * script to a directory that is accessible by the rest of your PHP
         * scripts.
         *
         * ------------------------------------------------------------------------
         * USAGE:
         * ------------------------------------------------------------------------
         * Include this file in your scripts before you call session_start(), you
         * don't have to do anything special after that.
         */
        
        //include_once ("globals.php"); global.php includes this file
         
        $SESS_DBHOST = HOST;       /* database server hostname */
        $SESS_DBNAME = DATABASE;   /* database name */
        $SESS_DBUSER = DBLOGIN;    /* database user */
        $SESS_DBPASS = DBPASSWORD; /* database password */
        
        $SESS_DBH = "";
        $SESS_LIFE = get_cfg_var("session.gc_maxlifetime");
        
        function sess_open($save_path, $session_name) {
            global $SESS_DBHOST, $SESS_DBNAME, $SESS_DBUSER, $SESS_DBPASS, $SESS_DBH;
        
            if (! $SESS_DBH = mysql_pconnect($SESS_DBHOST, $SESS_DBUSER, $SESS_DBPASS)) {
                echo "<li>Can't connect to $SESS_DBHOST as $SESS_DBUSER";
                echo "<li>MySQL Error: ", mysql_error();
                die;
            }
        
            if (! mysql_select_db($SESS_DBNAME, $SESS_DBH)) {
                echo "<li>Unable to select database $SESS_DBNAME";
                die;
            }
        
            return true;
        }
        
        function sess_close() {
            return true;
        }
        
        function sess_read($key) {
            global $SESS_DBH, $SESS_LIFE;
        
            $qry = "SELECT value FROM sessions WHERE sesskey = '$key' AND expiry > " . time();
            $qid = mysql_query($qry, $SESS_DBH);
        
            if (list($value) = mysql_fetch_row($qid)) {
                return $value;
            }
        
            return false;
        }
        
        function sess_write($key, $val) {
            global $SESS_DBH, $SESS_LIFE;
        
            $expiry = time() + $SESS_LIFE;
            $value = addslashes($val);
        
            $qry = "INSERT INTO sessions VALUES ('$key', $expiry, '$value')";
            $qid = mysql_query($qry, $SESS_DBH);
        
            if (! $qid) {
                $qry = "UPDATE sessions SET expiry = $expiry, value = '$value' WHERE sesskey = '$key' AND expiry > " . time();
                $qid = mysql_query($qry, $SESS_DBH);
            }
        
            return $qid;
        }
        
        function sess_destroy($key) {
            global $SESS_DBH;
        
            $qry = "DELETE FROM sessions WHERE sesskey = '$key'";
            $qid = mysql_query($qry, $SESS_DBH);
        
            return $qid;
        }
        
        function sess_gc($maxlifetime) {
            global $SESS_DBH;
        
            $qry = "DELETE FROM sessions WHERE expiry < " . time();
            $qid = mysql_query($qry, $SESS_DBH);
        
            return mysql_affected_rows($SESS_DBH);
        }
        
        session_set_save_handler(
            "sess_open",
            "sess_close",
            "sess_read",
            "sess_write",
            "sess_destroy",
            "sess_gc");
        ?>