using multi-instances with dynamic multi-sites problem

Recommended Posts

Having a problem with a basic multi-site instance.

The multi-sites are dynamically created and run as sub-domains and all is ok with them. They are created during a sign up process by end users.

During the sign up process - once the new site & db has been created, I had planned to load the new site instance and add a new user to it, using code similar to this..

$newSiteInstance = new ProcessWire($path, $newSiteUrl);
$u = $newSiteInstance->users->add($sitename);
$u->pass = $pass;
$u->email = $email;
$x = $newSiteInstance->users->save($u);

 This won't work in the registration script. It throws an error ... "SQLSTATE[42S02]: Base table or view not found".

However, if I halt the script, load the new site incognito/other browser, then continue the script, all works perfectly.

So $newSiteInstance = new ProcessWire($path, $newSiteUrl); doesn't seem to work for me unless a site has already been loaded in a browser or instantiated somehow.

I am missing something here ? Does a site need to be bootstrapped before new instance will work on it ? 

Sorry, pretty new to this php/PW arena.  Having fun though :-)

Any ideas folks ?


Share this post

Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

  • Recently Browsing   0 members

    No registered users viewing this page.

  • Similar Content

    • By kongondo
      Using ProcessWire's in-built multi-site support (option #1 here), is it possible to bootstrap the various sites? To bootstrap ProcessWire, the only requirement is to include /path/to/processwire/index.php/. In option #1, there is only one index.php. So, including index.php defaults to bootstrapping the main site (i.e. the site at /site/. Is it possible to bootstrap the other sites, i.e. site-dogs, site-cats, site-birds, etc? I've searched the forums but nothing relevant comes up.
    • By yinken
      Hi everyone,
      I am using ProcessWire to run a multi-site environment using the Multisite module by Soma.
      It's working great with one small caveat. It always defaults to the English version of the site. So when you access the base url (somedomain.com) it always redirects to somedomain.com/en/. In my particular case I need it to go to the Germany version somedomain.com/de/.
      Some things I've tried:
      I've tried fiddling around with the AutoDetectLanguage module to have a user redirected based on the detected browser language - didn't work. I've also tried messing with a module that changes what the default homepage is (smth like DefaultHomepage I believe), but that also had no affect. I used the Redirect module to have the root ('/') redirected to specific language URL ('/de/) - also didn't work My guess is that it has something to do with the default language in the setup which is set to english, but I am not sure.
      Has anyone else come accross this issue?
      Thanks in advance.
    • By xfroggy
      So I am trying to pull some information from another ProcessWire installation within the admin area (_main.php / page tree from the AdminThemeUikit module).
      $pwpath = "/path/"; $pwurl = "https://url.example"; $pw = new ProcessWire($pwpath , $pwurl); which then gives me this error
      I then read that if it is not already in a ProcessWire environment that I would have to include the core, 
      require('/path/to/wire/core/ProcessWire.php'); Which I tried, and makes sense that it already says it is included.
      So what now?
      Here is my _main.php from the AdminThemeUikit module (work in progress), just for reference
    • By swampmusic
      Hi Folks,
      We have a multi-site #1, multiple sites, multiple databases platform in development/concept at the moment.
      A company can sign up, register, and PW then creates a db, copies over a site folder with /wire symlink. All seems to work well, after sign up they can then enter into their subdomain site. ( Because of this dirty hack below that inserts the new subdomain into PW's hostSiteConfig array. Without this, the subdomain is not correctly registered as a PW site & instance I think).
      Does anyone know how to dynamically add an entry into the index.config.php file ? Knowing the little I have learnt so far about PW, Ryan has probably left us a really smart way to do it, but I haven't figured it out or found it yet. 
      I have done a dirty hack on it, which I'm not very happy or proud off. Anybody know of a better way around the problem ?  ... below is more or else the code I am using in the pilot version.
        // some error traps taken out for brevity on the booleans below...   $hostsArray = ProcessWireHostSiteConfig(); // $sitename normally populated from the customers signup/registration // hard coded here for this example... $sitename ='somesubdomain';   $a = $sitename . '.' . 'localhost:8020';     // machine name, port & protocol normally comes from $config, hard coded for example. $b = 'site-' . $sitename . '/site'; $newSite = array($a => $b);   $hostsArray = array_merge($hostsArray, $newSite);   // very dirty hack starting.... // creating a string copy of the array used in // index.config.php $newString=''; foreach($hostsArray as $key => $value) { $newString .= "'" . $key . "' => '" . $value . "', "; } $newString = "return array(" . $newString . ');}';   // dirty hack getting worse :-( $newConfigIndex = file_get_contents($config->paths->root . 'index.config.php'); $startpos = strpos($newConfigIndex, 'return array(');   // quality coders starting to feel sick at this point i suspect... sorry! ;-( $newConfigIndex = substr_replace($newConfigIndex, $newString, $startpos);   $boolConfigIndex = file_put_contents($config->paths->root . 'index.config.php', $newConfigIndex); // crikey! did he really just do that !!!!!!    
    • By Marc
      I'm working on a process module that connects to another ProcessWire 3.0.54 installation on the same (local) server (both sites running 3.0.54). I'm trying to use multi-instance for this, so:
      namespace ProcessWire; $path = "C:/Users/Me/Documents/development/www/pw3/"; $url = "http://www.test.me"; $site = new ProcessWire($path, $url); Those simple three lines generate the following error:
      I'm probably missing something obvious here as I don't have much experience with namespaces yet. Any suggestions?