Wordpress autologin, database error on multisite












0















I'm working on an autologin for Wordpress and everything was working really good, till I enabled my multisite and tried to use it when multisite is off it does its thing logs in and redirects to dashboard, but when I enable it trows



"Error establishing Database Connection"



What could be causing this?



Does multisite WordPress change the database URL?



Here is the code for you to see.



include'../wordpress/wp-load.php';

$errors = array();

$username = 'admin';
$password = '123456';
$remember = "true";

$login_data = array();
$login_data['user_login'] = $username;
$login_data['user_password'] = $password;
$login_data['remember'] = $remember;
$user_verify = wp_signon($login_data, true);

wp_set_auth_cookie($user_verify->ID);

wp_redirect(admin_url());

exit;









share|improve this question

























  • Your question needs a little more context - is this being used in a plugin? Or a theme file?

    – butlerblog
    Nov 14 '18 at 12:34











  • Hi thanks for your answer, it's being used from an external folder into the same server that hosts the wordpress site.

    – Jose Gomez
    Nov 14 '18 at 12:39
















0















I'm working on an autologin for Wordpress and everything was working really good, till I enabled my multisite and tried to use it when multisite is off it does its thing logs in and redirects to dashboard, but when I enable it trows



"Error establishing Database Connection"



What could be causing this?



Does multisite WordPress change the database URL?



Here is the code for you to see.



include'../wordpress/wp-load.php';

$errors = array();

$username = 'admin';
$password = '123456';
$remember = "true";

$login_data = array();
$login_data['user_login'] = $username;
$login_data['user_password'] = $password;
$login_data['remember'] = $remember;
$user_verify = wp_signon($login_data, true);

wp_set_auth_cookie($user_verify->ID);

wp_redirect(admin_url());

exit;









share|improve this question

























  • Your question needs a little more context - is this being used in a plugin? Or a theme file?

    – butlerblog
    Nov 14 '18 at 12:34











  • Hi thanks for your answer, it's being used from an external folder into the same server that hosts the wordpress site.

    – Jose Gomez
    Nov 14 '18 at 12:39














0












0








0








I'm working on an autologin for Wordpress and everything was working really good, till I enabled my multisite and tried to use it when multisite is off it does its thing logs in and redirects to dashboard, but when I enable it trows



"Error establishing Database Connection"



What could be causing this?



Does multisite WordPress change the database URL?



Here is the code for you to see.



include'../wordpress/wp-load.php';

$errors = array();

$username = 'admin';
$password = '123456';
$remember = "true";

$login_data = array();
$login_data['user_login'] = $username;
$login_data['user_password'] = $password;
$login_data['remember'] = $remember;
$user_verify = wp_signon($login_data, true);

wp_set_auth_cookie($user_verify->ID);

wp_redirect(admin_url());

exit;









share|improve this question
















I'm working on an autologin for Wordpress and everything was working really good, till I enabled my multisite and tried to use it when multisite is off it does its thing logs in and redirects to dashboard, but when I enable it trows



"Error establishing Database Connection"



What could be causing this?



Does multisite WordPress change the database URL?



Here is the code for you to see.



include'../wordpress/wp-load.php';

$errors = array();

$username = 'admin';
$password = '123456';
$remember = "true";

$login_data = array();
$login_data['user_login'] = $username;
$login_data['user_password'] = $password;
$login_data['remember'] = $remember;
$user_verify = wp_signon($login_data, true);

wp_set_auth_cookie($user_verify->ID);

wp_redirect(admin_url());

exit;






wordpress login multisite autologin wordpress-login






share|improve this question















share|improve this question













share|improve this question




share|improve this question








edited Nov 14 '18 at 12:33









Masoud Zarjani

4051312




4051312










asked Nov 14 '18 at 12:23









Jose GomezJose Gomez

12




12













  • Your question needs a little more context - is this being used in a plugin? Or a theme file?

    – butlerblog
    Nov 14 '18 at 12:34











  • Hi thanks for your answer, it's being used from an external folder into the same server that hosts the wordpress site.

    – Jose Gomez
    Nov 14 '18 at 12:39



















  • Your question needs a little more context - is this being used in a plugin? Or a theme file?

    – butlerblog
    Nov 14 '18 at 12:34











  • Hi thanks for your answer, it's being used from an external folder into the same server that hosts the wordpress site.

    – Jose Gomez
    Nov 14 '18 at 12:39

















Your question needs a little more context - is this being used in a plugin? Or a theme file?

– butlerblog
Nov 14 '18 at 12:34





Your question needs a little more context - is this being used in a plugin? Or a theme file?

– butlerblog
Nov 14 '18 at 12:34













Hi thanks for your answer, it's being used from an external folder into the same server that hosts the wordpress site.

– Jose Gomez
Nov 14 '18 at 12:39





Hi thanks for your answer, it's being used from an external folder into the same server that hosts the wordpress site.

– Jose Gomez
Nov 14 '18 at 12:39












2 Answers
2






active

oldest

votes


















0














The database connection error message "Error establishing Database Connection" is a message from the wpdb::db_connect() class method. If the method didn't properly handle the connection, this error is thrown.



Turn on WP_DEBUG in your wp-config.php file to output more information to the screen. That should give you information on why the database is not connecting by outputting errors from PHP's mysqli_connect() (which is what is being used to connect to the db).






share|improve this answer
























  • Sorry, i enabled debug and still get no specific error.

    – Jose Gomez
    Nov 14 '18 at 13:42



















0














Well after looking it up i realized two things



1: the error came from wp-load.php



2: as i thought it was because the file was taking current url as database url



so in fixed it doing this



Go to > wp-includes/ms-load.php



Look for ms_load_current_site_and_network() function
and just afther the function starts set the $path variable to your url this way



since my wordpress install was a local one



my url was localhost/wordpress



the system already gets "localhost" the rest of my url is "wordpress"



so path must contain "wordpress"



the function now looks like this



function ms_load_current_site_and_network( $domain, $path, $subdomain = false ) {

//THIS IS WHAT I ADDED
$path="wordpress";
//THIS IS THE END OF WHAT I ADDED

global $current_site, $current_blog;

// If the network is defined in wp-config.php, we can simply use that.
if ( defined( 'DOMAIN_CURRENT_SITE' ) && defined( 'PATH_CURRENT_SITE' ) ) {
$current_site = new stdClass;
$current_site->id = defined( 'SITE_ID_CURRENT_SITE' ) ? SITE_ID_CURRENT_SITE : 1;
$current_site->domain = DOMAIN_CURRENT_SITE;
$current_site->path = PATH_CURRENT_SITE;
if ( defined( 'BLOG_ID_CURRENT_SITE' ) ) {
$current_site->blog_id = BLOG_ID_CURRENT_SITE;
} elseif ( defined( 'BLOGID_CURRENT_SITE' ) ) { // deprecated.
$current_site->blog_id = BLOGID_CURRENT_SITE;
}

if ( 0 === strcasecmp( $current_site->domain, $domain ) && 0 === strcasecmp( $current_site->path, $path ) ) {
$current_blog = get_site_by_path( $domain, $path );
} elseif ( '/' !== $current_site->path && 0 === strcasecmp( $current_site->domain, $domain ) && 0 === stripos( $path, $current_site->path ) ) {
// If the current network has a path and also matches the domain and path of the request,
// we need to look for a site using the first path segment following the network's path.
$current_blog = get_site_by_path( $domain, $path, 1 + count( explode( '/', trim( $current_site->path, '/' ) ) ) );
} else {
// Otherwise, use the first path segment (as usual).
$current_blog = get_site_by_path( $domain, $path, 1 );
}

} elseif ( ! $subdomain ) {
/*
* A "subdomain" installation can be re-interpreted to mean "can support any domain".
* If we're not dealing with one of these installations, then the important part is determining
* the network first, because we need the network's path to identify any sites.
*/
if ( ! $current_site = wp_cache_get( 'current_network', 'site-options' ) ) {
// Are there even two networks installed?
$networks = get_networks( array( 'number' => 2 ) );
if ( count( $networks ) === 1 ) {
$current_site = array_shift( $networks );
wp_cache_add( 'current_network', $current_site, 'site-options' );
} elseif ( empty( $networks ) ) {
// A network not found hook should fire here.
return false;
}
}

if ( empty( $current_site ) ) {
$current_site = WP_Network::get_by_path( $domain, $path, 1 );
}

if ( empty( $current_site ) ) {
/**
* Fires when a network cannot be found based on the requested domain and path.
*
* At the time of this action, the only recourse is to redirect somewhere
* and exit. If you want to declare a particular network, do so earlier.
*
* @since 4.4.0
*
* @param string $domain The domain used to search for a network.
* @param string $path The path used to search for a path.
*/
do_action( 'ms_network_not_found', $domain, $path );

return false;
} elseif ( $path === $current_site->path ) {
$current_blog = get_site_by_path( $domain, $path );
} else {
// Search the network path + one more path segment (on top of the network path).
$current_blog = get_site_by_path( $domain, $path, substr_count( $current_site->path, '/' ) );
}
} else {
// Find the site by the domain and at most the first path segment.
$current_blog = get_site_by_path( $domain, $path, 1 );
if ( $current_blog ) {
$current_site = WP_Network::get_instance( $current_blog->site_id ? $current_blog->site_id : 1 );
} else {
// If you don't have a site with the same domain/path as a network, you're pretty screwed, but:
$current_site = WP_Network::get_by_path( $domain, $path, 1 );
}
}

// The network declared by the site trumps any constants.
if ( $current_blog && $current_blog->site_id != $current_site->id ) {
$current_site = WP_Network::get_instance( $current_blog->site_id );
}

// No network has been found, bail.
if ( empty( $current_site ) ) {
/** This action is documented in wp-includes/ms-settings.php */
do_action( 'ms_network_not_found', $domain, $path );

return false;
}

// During activation of a new subdomain, the requested site does not yet exist.
if ( empty( $current_blog ) && wp_installing() ) {
$current_blog = new stdClass;
$current_blog->blog_id = $blog_id = 1;
$current_blog->public = 1;
}

// No site has been found, bail.
if ( empty( $current_blog ) ) {
// We're going to redirect to the network URL, with some possible modifications.
$scheme = is_ssl() ? 'https' : 'http';
$destination = "$scheme://{$current_site->domain}{$current_site->path}";

/**
* Fires when a network can be determined but a site cannot.
*
* At the time of this action, the only recourse is to redirect somewhere
* and exit. If you want to declare a particular site, do so earlier.
*
* @since 3.9.0
*
* @param object $current_site The network that had been determined.
* @param string $domain The domain used to search for a site.
* @param string $path The path used to search for a site.
*/
do_action( 'ms_site_not_found', $current_site, $domain, $path );

if ( $subdomain && ! defined( 'NOBLOGREDIRECT' ) ) {
// For a "subdomain" installation, redirect to the signup form specifically.
$destination .= 'wp-signup.php?new=' . str_replace( '.' . $current_site->domain, '', $domain );
} elseif ( $subdomain ) {
// For a "subdomain" installation, the NOBLOGREDIRECT constant
// can be used to avoid a redirect to the signup form.
// Using the ms_site_not_found action is preferred to the constant.
if ( '%siteurl%' !== NOBLOGREDIRECT ) {
$destination = NOBLOGREDIRECT;
}
} elseif ( 0 === strcasecmp( $current_site->domain, $domain ) ) {
/*
* If the domain we were searching for matches the network's domain,
* it's no use redirecting back to ourselves -- it'll cause a loop.
* As we couldn't find a site, we're simply not installed.
*/
return false;
}

return $destination;
}

// Figure out the current network's main site.
if ( empty( $current_site->blog_id ) ) {
$current_site->blog_id = get_main_site_id( $current_site->id );
}

return true;
}


then i run my login.php file and it worked!!!



hope it helps






share|improve this answer























    Your Answer






    StackExchange.ifUsing("editor", function () {
    StackExchange.using("externalEditor", function () {
    StackExchange.using("snippets", function () {
    StackExchange.snippets.init();
    });
    });
    }, "code-snippets");

    StackExchange.ready(function() {
    var channelOptions = {
    tags: "".split(" "),
    id: "1"
    };
    initTagRenderer("".split(" "), "".split(" "), channelOptions);

    StackExchange.using("externalEditor", function() {
    // Have to fire editor after snippets, if snippets enabled
    if (StackExchange.settings.snippets.snippetsEnabled) {
    StackExchange.using("snippets", function() {
    createEditor();
    });
    }
    else {
    createEditor();
    }
    });

    function createEditor() {
    StackExchange.prepareEditor({
    heartbeatType: 'answer',
    autoActivateHeartbeat: false,
    convertImagesToLinks: true,
    noModals: true,
    showLowRepImageUploadWarning: true,
    reputationToPostImages: 10,
    bindNavPrevention: true,
    postfix: "",
    imageUploader: {
    brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
    contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
    allowUrls: true
    },
    onDemand: true,
    discardSelector: ".discard-answer"
    ,immediatelyShowMarkdownHelp:true
    });


    }
    });














    draft saved

    draft discarded


















    StackExchange.ready(
    function () {
    StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53300176%2fwordpress-autologin-database-error-on-multisite%23new-answer', 'question_page');
    }
    );

    Post as a guest















    Required, but never shown

























    2 Answers
    2






    active

    oldest

    votes








    2 Answers
    2






    active

    oldest

    votes









    active

    oldest

    votes






    active

    oldest

    votes









    0














    The database connection error message "Error establishing Database Connection" is a message from the wpdb::db_connect() class method. If the method didn't properly handle the connection, this error is thrown.



    Turn on WP_DEBUG in your wp-config.php file to output more information to the screen. That should give you information on why the database is not connecting by outputting errors from PHP's mysqli_connect() (which is what is being used to connect to the db).






    share|improve this answer
























    • Sorry, i enabled debug and still get no specific error.

      – Jose Gomez
      Nov 14 '18 at 13:42
















    0














    The database connection error message "Error establishing Database Connection" is a message from the wpdb::db_connect() class method. If the method didn't properly handle the connection, this error is thrown.



    Turn on WP_DEBUG in your wp-config.php file to output more information to the screen. That should give you information on why the database is not connecting by outputting errors from PHP's mysqli_connect() (which is what is being used to connect to the db).






    share|improve this answer
























    • Sorry, i enabled debug and still get no specific error.

      – Jose Gomez
      Nov 14 '18 at 13:42














    0












    0








    0







    The database connection error message "Error establishing Database Connection" is a message from the wpdb::db_connect() class method. If the method didn't properly handle the connection, this error is thrown.



    Turn on WP_DEBUG in your wp-config.php file to output more information to the screen. That should give you information on why the database is not connecting by outputting errors from PHP's mysqli_connect() (which is what is being used to connect to the db).






    share|improve this answer













    The database connection error message "Error establishing Database Connection" is a message from the wpdb::db_connect() class method. If the method didn't properly handle the connection, this error is thrown.



    Turn on WP_DEBUG in your wp-config.php file to output more information to the screen. That should give you information on why the database is not connecting by outputting errors from PHP's mysqli_connect() (which is what is being used to connect to the db).







    share|improve this answer












    share|improve this answer



    share|improve this answer










    answered Nov 14 '18 at 13:00









    butlerblogbutlerblog

    364514




    364514













    • Sorry, i enabled debug and still get no specific error.

      – Jose Gomez
      Nov 14 '18 at 13:42



















    • Sorry, i enabled debug and still get no specific error.

      – Jose Gomez
      Nov 14 '18 at 13:42

















    Sorry, i enabled debug and still get no specific error.

    – Jose Gomez
    Nov 14 '18 at 13:42





    Sorry, i enabled debug and still get no specific error.

    – Jose Gomez
    Nov 14 '18 at 13:42













    0














    Well after looking it up i realized two things



    1: the error came from wp-load.php



    2: as i thought it was because the file was taking current url as database url



    so in fixed it doing this



    Go to > wp-includes/ms-load.php



    Look for ms_load_current_site_and_network() function
    and just afther the function starts set the $path variable to your url this way



    since my wordpress install was a local one



    my url was localhost/wordpress



    the system already gets "localhost" the rest of my url is "wordpress"



    so path must contain "wordpress"



    the function now looks like this



    function ms_load_current_site_and_network( $domain, $path, $subdomain = false ) {

    //THIS IS WHAT I ADDED
    $path="wordpress";
    //THIS IS THE END OF WHAT I ADDED

    global $current_site, $current_blog;

    // If the network is defined in wp-config.php, we can simply use that.
    if ( defined( 'DOMAIN_CURRENT_SITE' ) && defined( 'PATH_CURRENT_SITE' ) ) {
    $current_site = new stdClass;
    $current_site->id = defined( 'SITE_ID_CURRENT_SITE' ) ? SITE_ID_CURRENT_SITE : 1;
    $current_site->domain = DOMAIN_CURRENT_SITE;
    $current_site->path = PATH_CURRENT_SITE;
    if ( defined( 'BLOG_ID_CURRENT_SITE' ) ) {
    $current_site->blog_id = BLOG_ID_CURRENT_SITE;
    } elseif ( defined( 'BLOGID_CURRENT_SITE' ) ) { // deprecated.
    $current_site->blog_id = BLOGID_CURRENT_SITE;
    }

    if ( 0 === strcasecmp( $current_site->domain, $domain ) && 0 === strcasecmp( $current_site->path, $path ) ) {
    $current_blog = get_site_by_path( $domain, $path );
    } elseif ( '/' !== $current_site->path && 0 === strcasecmp( $current_site->domain, $domain ) && 0 === stripos( $path, $current_site->path ) ) {
    // If the current network has a path and also matches the domain and path of the request,
    // we need to look for a site using the first path segment following the network's path.
    $current_blog = get_site_by_path( $domain, $path, 1 + count( explode( '/', trim( $current_site->path, '/' ) ) ) );
    } else {
    // Otherwise, use the first path segment (as usual).
    $current_blog = get_site_by_path( $domain, $path, 1 );
    }

    } elseif ( ! $subdomain ) {
    /*
    * A "subdomain" installation can be re-interpreted to mean "can support any domain".
    * If we're not dealing with one of these installations, then the important part is determining
    * the network first, because we need the network's path to identify any sites.
    */
    if ( ! $current_site = wp_cache_get( 'current_network', 'site-options' ) ) {
    // Are there even two networks installed?
    $networks = get_networks( array( 'number' => 2 ) );
    if ( count( $networks ) === 1 ) {
    $current_site = array_shift( $networks );
    wp_cache_add( 'current_network', $current_site, 'site-options' );
    } elseif ( empty( $networks ) ) {
    // A network not found hook should fire here.
    return false;
    }
    }

    if ( empty( $current_site ) ) {
    $current_site = WP_Network::get_by_path( $domain, $path, 1 );
    }

    if ( empty( $current_site ) ) {
    /**
    * Fires when a network cannot be found based on the requested domain and path.
    *
    * At the time of this action, the only recourse is to redirect somewhere
    * and exit. If you want to declare a particular network, do so earlier.
    *
    * @since 4.4.0
    *
    * @param string $domain The domain used to search for a network.
    * @param string $path The path used to search for a path.
    */
    do_action( 'ms_network_not_found', $domain, $path );

    return false;
    } elseif ( $path === $current_site->path ) {
    $current_blog = get_site_by_path( $domain, $path );
    } else {
    // Search the network path + one more path segment (on top of the network path).
    $current_blog = get_site_by_path( $domain, $path, substr_count( $current_site->path, '/' ) );
    }
    } else {
    // Find the site by the domain and at most the first path segment.
    $current_blog = get_site_by_path( $domain, $path, 1 );
    if ( $current_blog ) {
    $current_site = WP_Network::get_instance( $current_blog->site_id ? $current_blog->site_id : 1 );
    } else {
    // If you don't have a site with the same domain/path as a network, you're pretty screwed, but:
    $current_site = WP_Network::get_by_path( $domain, $path, 1 );
    }
    }

    // The network declared by the site trumps any constants.
    if ( $current_blog && $current_blog->site_id != $current_site->id ) {
    $current_site = WP_Network::get_instance( $current_blog->site_id );
    }

    // No network has been found, bail.
    if ( empty( $current_site ) ) {
    /** This action is documented in wp-includes/ms-settings.php */
    do_action( 'ms_network_not_found', $domain, $path );

    return false;
    }

    // During activation of a new subdomain, the requested site does not yet exist.
    if ( empty( $current_blog ) && wp_installing() ) {
    $current_blog = new stdClass;
    $current_blog->blog_id = $blog_id = 1;
    $current_blog->public = 1;
    }

    // No site has been found, bail.
    if ( empty( $current_blog ) ) {
    // We're going to redirect to the network URL, with some possible modifications.
    $scheme = is_ssl() ? 'https' : 'http';
    $destination = "$scheme://{$current_site->domain}{$current_site->path}";

    /**
    * Fires when a network can be determined but a site cannot.
    *
    * At the time of this action, the only recourse is to redirect somewhere
    * and exit. If you want to declare a particular site, do so earlier.
    *
    * @since 3.9.0
    *
    * @param object $current_site The network that had been determined.
    * @param string $domain The domain used to search for a site.
    * @param string $path The path used to search for a site.
    */
    do_action( 'ms_site_not_found', $current_site, $domain, $path );

    if ( $subdomain && ! defined( 'NOBLOGREDIRECT' ) ) {
    // For a "subdomain" installation, redirect to the signup form specifically.
    $destination .= 'wp-signup.php?new=' . str_replace( '.' . $current_site->domain, '', $domain );
    } elseif ( $subdomain ) {
    // For a "subdomain" installation, the NOBLOGREDIRECT constant
    // can be used to avoid a redirect to the signup form.
    // Using the ms_site_not_found action is preferred to the constant.
    if ( '%siteurl%' !== NOBLOGREDIRECT ) {
    $destination = NOBLOGREDIRECT;
    }
    } elseif ( 0 === strcasecmp( $current_site->domain, $domain ) ) {
    /*
    * If the domain we were searching for matches the network's domain,
    * it's no use redirecting back to ourselves -- it'll cause a loop.
    * As we couldn't find a site, we're simply not installed.
    */
    return false;
    }

    return $destination;
    }

    // Figure out the current network's main site.
    if ( empty( $current_site->blog_id ) ) {
    $current_site->blog_id = get_main_site_id( $current_site->id );
    }

    return true;
    }


    then i run my login.php file and it worked!!!



    hope it helps






    share|improve this answer




























      0














      Well after looking it up i realized two things



      1: the error came from wp-load.php



      2: as i thought it was because the file was taking current url as database url



      so in fixed it doing this



      Go to > wp-includes/ms-load.php



      Look for ms_load_current_site_and_network() function
      and just afther the function starts set the $path variable to your url this way



      since my wordpress install was a local one



      my url was localhost/wordpress



      the system already gets "localhost" the rest of my url is "wordpress"



      so path must contain "wordpress"



      the function now looks like this



      function ms_load_current_site_and_network( $domain, $path, $subdomain = false ) {

      //THIS IS WHAT I ADDED
      $path="wordpress";
      //THIS IS THE END OF WHAT I ADDED

      global $current_site, $current_blog;

      // If the network is defined in wp-config.php, we can simply use that.
      if ( defined( 'DOMAIN_CURRENT_SITE' ) && defined( 'PATH_CURRENT_SITE' ) ) {
      $current_site = new stdClass;
      $current_site->id = defined( 'SITE_ID_CURRENT_SITE' ) ? SITE_ID_CURRENT_SITE : 1;
      $current_site->domain = DOMAIN_CURRENT_SITE;
      $current_site->path = PATH_CURRENT_SITE;
      if ( defined( 'BLOG_ID_CURRENT_SITE' ) ) {
      $current_site->blog_id = BLOG_ID_CURRENT_SITE;
      } elseif ( defined( 'BLOGID_CURRENT_SITE' ) ) { // deprecated.
      $current_site->blog_id = BLOGID_CURRENT_SITE;
      }

      if ( 0 === strcasecmp( $current_site->domain, $domain ) && 0 === strcasecmp( $current_site->path, $path ) ) {
      $current_blog = get_site_by_path( $domain, $path );
      } elseif ( '/' !== $current_site->path && 0 === strcasecmp( $current_site->domain, $domain ) && 0 === stripos( $path, $current_site->path ) ) {
      // If the current network has a path and also matches the domain and path of the request,
      // we need to look for a site using the first path segment following the network's path.
      $current_blog = get_site_by_path( $domain, $path, 1 + count( explode( '/', trim( $current_site->path, '/' ) ) ) );
      } else {
      // Otherwise, use the first path segment (as usual).
      $current_blog = get_site_by_path( $domain, $path, 1 );
      }

      } elseif ( ! $subdomain ) {
      /*
      * A "subdomain" installation can be re-interpreted to mean "can support any domain".
      * If we're not dealing with one of these installations, then the important part is determining
      * the network first, because we need the network's path to identify any sites.
      */
      if ( ! $current_site = wp_cache_get( 'current_network', 'site-options' ) ) {
      // Are there even two networks installed?
      $networks = get_networks( array( 'number' => 2 ) );
      if ( count( $networks ) === 1 ) {
      $current_site = array_shift( $networks );
      wp_cache_add( 'current_network', $current_site, 'site-options' );
      } elseif ( empty( $networks ) ) {
      // A network not found hook should fire here.
      return false;
      }
      }

      if ( empty( $current_site ) ) {
      $current_site = WP_Network::get_by_path( $domain, $path, 1 );
      }

      if ( empty( $current_site ) ) {
      /**
      * Fires when a network cannot be found based on the requested domain and path.
      *
      * At the time of this action, the only recourse is to redirect somewhere
      * and exit. If you want to declare a particular network, do so earlier.
      *
      * @since 4.4.0
      *
      * @param string $domain The domain used to search for a network.
      * @param string $path The path used to search for a path.
      */
      do_action( 'ms_network_not_found', $domain, $path );

      return false;
      } elseif ( $path === $current_site->path ) {
      $current_blog = get_site_by_path( $domain, $path );
      } else {
      // Search the network path + one more path segment (on top of the network path).
      $current_blog = get_site_by_path( $domain, $path, substr_count( $current_site->path, '/' ) );
      }
      } else {
      // Find the site by the domain and at most the first path segment.
      $current_blog = get_site_by_path( $domain, $path, 1 );
      if ( $current_blog ) {
      $current_site = WP_Network::get_instance( $current_blog->site_id ? $current_blog->site_id : 1 );
      } else {
      // If you don't have a site with the same domain/path as a network, you're pretty screwed, but:
      $current_site = WP_Network::get_by_path( $domain, $path, 1 );
      }
      }

      // The network declared by the site trumps any constants.
      if ( $current_blog && $current_blog->site_id != $current_site->id ) {
      $current_site = WP_Network::get_instance( $current_blog->site_id );
      }

      // No network has been found, bail.
      if ( empty( $current_site ) ) {
      /** This action is documented in wp-includes/ms-settings.php */
      do_action( 'ms_network_not_found', $domain, $path );

      return false;
      }

      // During activation of a new subdomain, the requested site does not yet exist.
      if ( empty( $current_blog ) && wp_installing() ) {
      $current_blog = new stdClass;
      $current_blog->blog_id = $blog_id = 1;
      $current_blog->public = 1;
      }

      // No site has been found, bail.
      if ( empty( $current_blog ) ) {
      // We're going to redirect to the network URL, with some possible modifications.
      $scheme = is_ssl() ? 'https' : 'http';
      $destination = "$scheme://{$current_site->domain}{$current_site->path}";

      /**
      * Fires when a network can be determined but a site cannot.
      *
      * At the time of this action, the only recourse is to redirect somewhere
      * and exit. If you want to declare a particular site, do so earlier.
      *
      * @since 3.9.0
      *
      * @param object $current_site The network that had been determined.
      * @param string $domain The domain used to search for a site.
      * @param string $path The path used to search for a site.
      */
      do_action( 'ms_site_not_found', $current_site, $domain, $path );

      if ( $subdomain && ! defined( 'NOBLOGREDIRECT' ) ) {
      // For a "subdomain" installation, redirect to the signup form specifically.
      $destination .= 'wp-signup.php?new=' . str_replace( '.' . $current_site->domain, '', $domain );
      } elseif ( $subdomain ) {
      // For a "subdomain" installation, the NOBLOGREDIRECT constant
      // can be used to avoid a redirect to the signup form.
      // Using the ms_site_not_found action is preferred to the constant.
      if ( '%siteurl%' !== NOBLOGREDIRECT ) {
      $destination = NOBLOGREDIRECT;
      }
      } elseif ( 0 === strcasecmp( $current_site->domain, $domain ) ) {
      /*
      * If the domain we were searching for matches the network's domain,
      * it's no use redirecting back to ourselves -- it'll cause a loop.
      * As we couldn't find a site, we're simply not installed.
      */
      return false;
      }

      return $destination;
      }

      // Figure out the current network's main site.
      if ( empty( $current_site->blog_id ) ) {
      $current_site->blog_id = get_main_site_id( $current_site->id );
      }

      return true;
      }


      then i run my login.php file and it worked!!!



      hope it helps






      share|improve this answer


























        0












        0








        0







        Well after looking it up i realized two things



        1: the error came from wp-load.php



        2: as i thought it was because the file was taking current url as database url



        so in fixed it doing this



        Go to > wp-includes/ms-load.php



        Look for ms_load_current_site_and_network() function
        and just afther the function starts set the $path variable to your url this way



        since my wordpress install was a local one



        my url was localhost/wordpress



        the system already gets "localhost" the rest of my url is "wordpress"



        so path must contain "wordpress"



        the function now looks like this



        function ms_load_current_site_and_network( $domain, $path, $subdomain = false ) {

        //THIS IS WHAT I ADDED
        $path="wordpress";
        //THIS IS THE END OF WHAT I ADDED

        global $current_site, $current_blog;

        // If the network is defined in wp-config.php, we can simply use that.
        if ( defined( 'DOMAIN_CURRENT_SITE' ) && defined( 'PATH_CURRENT_SITE' ) ) {
        $current_site = new stdClass;
        $current_site->id = defined( 'SITE_ID_CURRENT_SITE' ) ? SITE_ID_CURRENT_SITE : 1;
        $current_site->domain = DOMAIN_CURRENT_SITE;
        $current_site->path = PATH_CURRENT_SITE;
        if ( defined( 'BLOG_ID_CURRENT_SITE' ) ) {
        $current_site->blog_id = BLOG_ID_CURRENT_SITE;
        } elseif ( defined( 'BLOGID_CURRENT_SITE' ) ) { // deprecated.
        $current_site->blog_id = BLOGID_CURRENT_SITE;
        }

        if ( 0 === strcasecmp( $current_site->domain, $domain ) && 0 === strcasecmp( $current_site->path, $path ) ) {
        $current_blog = get_site_by_path( $domain, $path );
        } elseif ( '/' !== $current_site->path && 0 === strcasecmp( $current_site->domain, $domain ) && 0 === stripos( $path, $current_site->path ) ) {
        // If the current network has a path and also matches the domain and path of the request,
        // we need to look for a site using the first path segment following the network's path.
        $current_blog = get_site_by_path( $domain, $path, 1 + count( explode( '/', trim( $current_site->path, '/' ) ) ) );
        } else {
        // Otherwise, use the first path segment (as usual).
        $current_blog = get_site_by_path( $domain, $path, 1 );
        }

        } elseif ( ! $subdomain ) {
        /*
        * A "subdomain" installation can be re-interpreted to mean "can support any domain".
        * If we're not dealing with one of these installations, then the important part is determining
        * the network first, because we need the network's path to identify any sites.
        */
        if ( ! $current_site = wp_cache_get( 'current_network', 'site-options' ) ) {
        // Are there even two networks installed?
        $networks = get_networks( array( 'number' => 2 ) );
        if ( count( $networks ) === 1 ) {
        $current_site = array_shift( $networks );
        wp_cache_add( 'current_network', $current_site, 'site-options' );
        } elseif ( empty( $networks ) ) {
        // A network not found hook should fire here.
        return false;
        }
        }

        if ( empty( $current_site ) ) {
        $current_site = WP_Network::get_by_path( $domain, $path, 1 );
        }

        if ( empty( $current_site ) ) {
        /**
        * Fires when a network cannot be found based on the requested domain and path.
        *
        * At the time of this action, the only recourse is to redirect somewhere
        * and exit. If you want to declare a particular network, do so earlier.
        *
        * @since 4.4.0
        *
        * @param string $domain The domain used to search for a network.
        * @param string $path The path used to search for a path.
        */
        do_action( 'ms_network_not_found', $domain, $path );

        return false;
        } elseif ( $path === $current_site->path ) {
        $current_blog = get_site_by_path( $domain, $path );
        } else {
        // Search the network path + one more path segment (on top of the network path).
        $current_blog = get_site_by_path( $domain, $path, substr_count( $current_site->path, '/' ) );
        }
        } else {
        // Find the site by the domain and at most the first path segment.
        $current_blog = get_site_by_path( $domain, $path, 1 );
        if ( $current_blog ) {
        $current_site = WP_Network::get_instance( $current_blog->site_id ? $current_blog->site_id : 1 );
        } else {
        // If you don't have a site with the same domain/path as a network, you're pretty screwed, but:
        $current_site = WP_Network::get_by_path( $domain, $path, 1 );
        }
        }

        // The network declared by the site trumps any constants.
        if ( $current_blog && $current_blog->site_id != $current_site->id ) {
        $current_site = WP_Network::get_instance( $current_blog->site_id );
        }

        // No network has been found, bail.
        if ( empty( $current_site ) ) {
        /** This action is documented in wp-includes/ms-settings.php */
        do_action( 'ms_network_not_found', $domain, $path );

        return false;
        }

        // During activation of a new subdomain, the requested site does not yet exist.
        if ( empty( $current_blog ) && wp_installing() ) {
        $current_blog = new stdClass;
        $current_blog->blog_id = $blog_id = 1;
        $current_blog->public = 1;
        }

        // No site has been found, bail.
        if ( empty( $current_blog ) ) {
        // We're going to redirect to the network URL, with some possible modifications.
        $scheme = is_ssl() ? 'https' : 'http';
        $destination = "$scheme://{$current_site->domain}{$current_site->path}";

        /**
        * Fires when a network can be determined but a site cannot.
        *
        * At the time of this action, the only recourse is to redirect somewhere
        * and exit. If you want to declare a particular site, do so earlier.
        *
        * @since 3.9.0
        *
        * @param object $current_site The network that had been determined.
        * @param string $domain The domain used to search for a site.
        * @param string $path The path used to search for a site.
        */
        do_action( 'ms_site_not_found', $current_site, $domain, $path );

        if ( $subdomain && ! defined( 'NOBLOGREDIRECT' ) ) {
        // For a "subdomain" installation, redirect to the signup form specifically.
        $destination .= 'wp-signup.php?new=' . str_replace( '.' . $current_site->domain, '', $domain );
        } elseif ( $subdomain ) {
        // For a "subdomain" installation, the NOBLOGREDIRECT constant
        // can be used to avoid a redirect to the signup form.
        // Using the ms_site_not_found action is preferred to the constant.
        if ( '%siteurl%' !== NOBLOGREDIRECT ) {
        $destination = NOBLOGREDIRECT;
        }
        } elseif ( 0 === strcasecmp( $current_site->domain, $domain ) ) {
        /*
        * If the domain we were searching for matches the network's domain,
        * it's no use redirecting back to ourselves -- it'll cause a loop.
        * As we couldn't find a site, we're simply not installed.
        */
        return false;
        }

        return $destination;
        }

        // Figure out the current network's main site.
        if ( empty( $current_site->blog_id ) ) {
        $current_site->blog_id = get_main_site_id( $current_site->id );
        }

        return true;
        }


        then i run my login.php file and it worked!!!



        hope it helps






        share|improve this answer













        Well after looking it up i realized two things



        1: the error came from wp-load.php



        2: as i thought it was because the file was taking current url as database url



        so in fixed it doing this



        Go to > wp-includes/ms-load.php



        Look for ms_load_current_site_and_network() function
        and just afther the function starts set the $path variable to your url this way



        since my wordpress install was a local one



        my url was localhost/wordpress



        the system already gets "localhost" the rest of my url is "wordpress"



        so path must contain "wordpress"



        the function now looks like this



        function ms_load_current_site_and_network( $domain, $path, $subdomain = false ) {

        //THIS IS WHAT I ADDED
        $path="wordpress";
        //THIS IS THE END OF WHAT I ADDED

        global $current_site, $current_blog;

        // If the network is defined in wp-config.php, we can simply use that.
        if ( defined( 'DOMAIN_CURRENT_SITE' ) && defined( 'PATH_CURRENT_SITE' ) ) {
        $current_site = new stdClass;
        $current_site->id = defined( 'SITE_ID_CURRENT_SITE' ) ? SITE_ID_CURRENT_SITE : 1;
        $current_site->domain = DOMAIN_CURRENT_SITE;
        $current_site->path = PATH_CURRENT_SITE;
        if ( defined( 'BLOG_ID_CURRENT_SITE' ) ) {
        $current_site->blog_id = BLOG_ID_CURRENT_SITE;
        } elseif ( defined( 'BLOGID_CURRENT_SITE' ) ) { // deprecated.
        $current_site->blog_id = BLOGID_CURRENT_SITE;
        }

        if ( 0 === strcasecmp( $current_site->domain, $domain ) && 0 === strcasecmp( $current_site->path, $path ) ) {
        $current_blog = get_site_by_path( $domain, $path );
        } elseif ( '/' !== $current_site->path && 0 === strcasecmp( $current_site->domain, $domain ) && 0 === stripos( $path, $current_site->path ) ) {
        // If the current network has a path and also matches the domain and path of the request,
        // we need to look for a site using the first path segment following the network's path.
        $current_blog = get_site_by_path( $domain, $path, 1 + count( explode( '/', trim( $current_site->path, '/' ) ) ) );
        } else {
        // Otherwise, use the first path segment (as usual).
        $current_blog = get_site_by_path( $domain, $path, 1 );
        }

        } elseif ( ! $subdomain ) {
        /*
        * A "subdomain" installation can be re-interpreted to mean "can support any domain".
        * If we're not dealing with one of these installations, then the important part is determining
        * the network first, because we need the network's path to identify any sites.
        */
        if ( ! $current_site = wp_cache_get( 'current_network', 'site-options' ) ) {
        // Are there even two networks installed?
        $networks = get_networks( array( 'number' => 2 ) );
        if ( count( $networks ) === 1 ) {
        $current_site = array_shift( $networks );
        wp_cache_add( 'current_network', $current_site, 'site-options' );
        } elseif ( empty( $networks ) ) {
        // A network not found hook should fire here.
        return false;
        }
        }

        if ( empty( $current_site ) ) {
        $current_site = WP_Network::get_by_path( $domain, $path, 1 );
        }

        if ( empty( $current_site ) ) {
        /**
        * Fires when a network cannot be found based on the requested domain and path.
        *
        * At the time of this action, the only recourse is to redirect somewhere
        * and exit. If you want to declare a particular network, do so earlier.
        *
        * @since 4.4.0
        *
        * @param string $domain The domain used to search for a network.
        * @param string $path The path used to search for a path.
        */
        do_action( 'ms_network_not_found', $domain, $path );

        return false;
        } elseif ( $path === $current_site->path ) {
        $current_blog = get_site_by_path( $domain, $path );
        } else {
        // Search the network path + one more path segment (on top of the network path).
        $current_blog = get_site_by_path( $domain, $path, substr_count( $current_site->path, '/' ) );
        }
        } else {
        // Find the site by the domain and at most the first path segment.
        $current_blog = get_site_by_path( $domain, $path, 1 );
        if ( $current_blog ) {
        $current_site = WP_Network::get_instance( $current_blog->site_id ? $current_blog->site_id : 1 );
        } else {
        // If you don't have a site with the same domain/path as a network, you're pretty screwed, but:
        $current_site = WP_Network::get_by_path( $domain, $path, 1 );
        }
        }

        // The network declared by the site trumps any constants.
        if ( $current_blog && $current_blog->site_id != $current_site->id ) {
        $current_site = WP_Network::get_instance( $current_blog->site_id );
        }

        // No network has been found, bail.
        if ( empty( $current_site ) ) {
        /** This action is documented in wp-includes/ms-settings.php */
        do_action( 'ms_network_not_found', $domain, $path );

        return false;
        }

        // During activation of a new subdomain, the requested site does not yet exist.
        if ( empty( $current_blog ) && wp_installing() ) {
        $current_blog = new stdClass;
        $current_blog->blog_id = $blog_id = 1;
        $current_blog->public = 1;
        }

        // No site has been found, bail.
        if ( empty( $current_blog ) ) {
        // We're going to redirect to the network URL, with some possible modifications.
        $scheme = is_ssl() ? 'https' : 'http';
        $destination = "$scheme://{$current_site->domain}{$current_site->path}";

        /**
        * Fires when a network can be determined but a site cannot.
        *
        * At the time of this action, the only recourse is to redirect somewhere
        * and exit. If you want to declare a particular site, do so earlier.
        *
        * @since 3.9.0
        *
        * @param object $current_site The network that had been determined.
        * @param string $domain The domain used to search for a site.
        * @param string $path The path used to search for a site.
        */
        do_action( 'ms_site_not_found', $current_site, $domain, $path );

        if ( $subdomain && ! defined( 'NOBLOGREDIRECT' ) ) {
        // For a "subdomain" installation, redirect to the signup form specifically.
        $destination .= 'wp-signup.php?new=' . str_replace( '.' . $current_site->domain, '', $domain );
        } elseif ( $subdomain ) {
        // For a "subdomain" installation, the NOBLOGREDIRECT constant
        // can be used to avoid a redirect to the signup form.
        // Using the ms_site_not_found action is preferred to the constant.
        if ( '%siteurl%' !== NOBLOGREDIRECT ) {
        $destination = NOBLOGREDIRECT;
        }
        } elseif ( 0 === strcasecmp( $current_site->domain, $domain ) ) {
        /*
        * If the domain we were searching for matches the network's domain,
        * it's no use redirecting back to ourselves -- it'll cause a loop.
        * As we couldn't find a site, we're simply not installed.
        */
        return false;
        }

        return $destination;
        }

        // Figure out the current network's main site.
        if ( empty( $current_site->blog_id ) ) {
        $current_site->blog_id = get_main_site_id( $current_site->id );
        }

        return true;
        }


        then i run my login.php file and it worked!!!



        hope it helps







        share|improve this answer












        share|improve this answer



        share|improve this answer










        answered Nov 14 '18 at 16:33









        Jose GomezJose Gomez

        12




        12






























            draft saved

            draft discarded




















































            Thanks for contributing an answer to Stack Overflow!


            • Please be sure to answer the question. Provide details and share your research!

            But avoid



            • Asking for help, clarification, or responding to other answers.

            • Making statements based on opinion; back them up with references or personal experience.


            To learn more, see our tips on writing great answers.




            draft saved


            draft discarded














            StackExchange.ready(
            function () {
            StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53300176%2fwordpress-autologin-database-error-on-multisite%23new-answer', 'question_page');
            }
            );

            Post as a guest















            Required, but never shown





















































            Required, but never shown














            Required, but never shown












            Required, but never shown







            Required, but never shown

































            Required, but never shown














            Required, but never shown












            Required, but never shown







            Required, but never shown







            Popular posts from this blog

            The Sandy Post

            Danny Elfman

            Pages that link to "Head v. Amoskeag Manufacturing Co."