prestoav

Problem Upgrading to V3

Recommended Posts

Hi all and happy Christmas!

I have an odd problem upgrading a site from 2.7.2 to 3.0.62. I've never had an issues upgrading PW versions before!

Here's the error report:

Fatal error: Exception: Unknown Selector operator: '' -- was your selector value properly escaped? field='1', value='', selector: '1' (in /Applications/MAMP/htdocs/idreamav/wire/core/Selectors.php line 396) 
#0 /Applications/MAMP/htdocs/idreamav/wire/core/Selectors.php(439): ProcessWire\Selectors->create('1', '', '') 
#1 /Applications/MAMP/htdocs/idreamav/wire/core/Selectors.php(159): ProcessWire\Selectors->extractString('1') 
#2 /Applications/MAMP/htdocs/idreamav/wire/core/Selectors.php(145): ProcessWire\Selectors->setSelectorString(Object(ProcessWire\Page)) 
#3 /Applications/MAMP/htdocs/idreamav/wire/core/PagesLoader.php(217): ProcessWire\Selectors->init(Object(ProcessWire\Page)) 
#4 /Applications/MAMP/htdocs/idreamav/wire/core/Pages.php(232): ProcessWire\PagesLoader->find(Object(ProcessWire\Page), Array) 
#5 /Applications/MAMP/htdocs/idreamav/wire/core/Wire.php(386): ProcessWire\Pages->___find(Object(ProcessWire\Page), Array) #6 /Applications/MAMP/htdocs/idreamav/wire/core/WireHooks.php(698): ProcessWire\Wire->_callMethod(' in /Applications/MAMP/htdocs/idreamav/index.php on line 64

For my eyes it looks like a selector format somewhere. I've been through all of the site templates and can; see anything wrong and they were all working under 2.7.2.

Anyone have any ideas?

Share this post


Link to post
Share on other sites

Does this happen in the frontend or backend? Did you also replace the index.php and .htaccess file?

Try deleting the site/assets/cache/ folder contents.

If that doesn't help (and you can login to the backend), try clearing the modules cache.

If that doesn't help either, disable all modules (other than core modules), and re-install one by one. Or add namespacing on the very first line of your .module files:

<?php namespace ProcessWire;

  • Like 1

Share this post


Link to post
Share on other sites
28 minutes ago, dragan said:

Does this happen in the frontend or backend? Did you also replace the index.php and .htaccess file?

Try deleting the site/assets/cache/ folder contents.

If that doesn't help (and you can login to the backend), try clearing the modules cache.

If that doesn't help either, disable all modules (other than core modules), and re-install one by one. Or add namespacing on the very first line of your .module files:

<?php namespace ProcessWire;

Hi Dragan,

Many thanks for the suggestions. I've just been through and tried all your suggestions and am still getting the same result.

Just for clarification, I'm getting the same error report for the frontend and backend of the site :-(

Share this post


Link to post
Share on other sites

Do you have Tracy Debugger installed? That might provide some additional info;

Usually when I'm doing a V2 -> V3 upgrade, i follow this procedure:

1) If I don't have the site already cloned locally, make a duplicate site on local machine to test the upgrade

- make sure you have TracyDebugger installed, force development mode
- put site into debug = true

2) check/repair permissions on files, and also check the chmod settings inside config.php (I've had upgrades seem to fail because of bad permissions)..

3) remove all modules that are known to not work on V3, for example legacy CropImage;
- also remove all modules that are not necessary for the site to run  - check which ones are in the modules folder, but are not installed and remove those.

4) Run the upgrades on the local version, and find issues, repair...;
- view logs if you get errors
- repair permissions if you get server errors but nothing in logs
- Update .htaccess, add any mods that were made to the 2x version into the 3x version (such as www/non-www, force https, custom redirects, gzip etc).

So far even on a really complex site, i've maybe found 4-5 things that needed to be fixed, and then i went to the live site, fixed those things before the upgrade, then ran the upgrade on live and it worked fine.  Make a complete backup of the live site, as well as the database, using the database backup module, prior to running the upgrade

Troubleshooting:

- If you run into modules that seem to be broken, you sometimes have to trick the filecompiler to recompile the module, you can open the module file, create a new line somewhere, save, undo, save... (this happened on a few sites)

- refresh the modules - sometimes you have to refresh modules several times to clear out errors

 

  • Like 3

Share this post


Link to post
Share on other sites

Thanks for your help Macrua. I'm running this update on localhost first so the main site is safe!

Sadly still fighting this. I've removed the modules that don't specifically report 3.0 compatibility but am still getting the error. Each time I've regressed to 2.7.2 all is well again. 

After re-reading the upgrade troubleshooting guide I've also tried the last 2.8.62 legacy version and thats' throwing the same errors as V3.

Am really struggling with this one!

Share this post


Link to post
Share on other sites
25 minutes ago, dragan said:

Did you see this thread? https://processwire.com/talk/topic/16689-exception-unknown-selector-operator/

Also, what is exactly on line 64 of index.php? And did you check perhaps your error logs? Maybe you'll find more infos there (although the above seems pretty verbose)

 

Hi Dragan,

Thanks for the link. I did look through that and I don't see an selectors with spaces :-(

Line 64 of index.php is the bit of code that makes the error output to screen by the looks of it so I assume something else is originating the error for this to fire.

Share this post


Link to post
Share on other sites

May or may not help... was getting a similar, but not quite the same, error after adding a single auto-load module. Forgot that bit and tried to load it again in a template with a local variable, eg:

$mymodule = $modules->get('myModule');

Ambiguous error was:

Error: Exception: Unknown Selector operator: '' -- was your selector value properly escaped? (in /home/xxx/xxx/wire/core/Selectors.php line 378)

TracyDebugger's error description was no more helpful than the PW logs.  While the error message was correct, it didn't truly reflect the cause of the problem. Only by disabling modules (in my case easier cos all worked before adding this particular module), and screening template code, was I able to resolve the problem.

Solution for me was to access module's methods as static functions, eg "myModule::someFunction()" in the template.

Key difference between 2.x & 3.x is namespaces. Is there a function used by index.php line 64 in your template (or _init.php or ready.php) that needs a namespace (or \)?

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 BFD Calendar
      I'm still wrestling with the upgrade troubles on OVH.com hosting. I manually upgraded to PW 3.0.98 and Upgrade module 0.0.7. Checking upgrades gives me an "Error loading GitHub branches - https://api.github.com/repos/processwire/processwire/branches - HTTP error(s): 2: fsockopen(): SSL operation failed with code 1. OpenSSL Error messages: error:1407742E:SSL routines:SSL23_GET_SERVER_HELLO:tlsv1 alert protocol version, 2: fsockopen(): Failed to enable crypto, 2: fsockopen(): unable to connect to ssl://api.github.com:443 (Unknown error) - Check that HTTP requests are not blocked by your server.".
      Upgrading or installing other modules doesn't work either. I know it probably has to do with some provider setting on OVH.com, but I've tried several things mentioned in the ProcessWireUpgrade support forum, all to no avail. Server is configured to use PHP 7.0. If anyone here is also on OVH.com and knows a solution I'd be most happy to hear about it.
    • By louisstephens
      So I recently upgraded my sandbox environment to the latest master version from .62(?). I logged in and received the following error:
      "There appear to be multiple copies of module "AdminThemeUikit" on the file system."
      Unfortunately, in my haste, I removed the theme from site->modules so it doesnt exist anymore, and the theme has defaulted somewhat to the old theme. Is there a way to restore UIkit as the theme for processwire natively, or do I need to completely re-install?
    • By mike62
      I am new to ProcessWire; I'm a WordPress developer coming into an existing PW site. I noticed that the site I'm working on is version 2.3 and wanted to upgrade it to the latest version so that I could be sure that the documentation was relevant to me.
      I downloaded v2.8.62 Legacy today and followed the upgrade steps. The backend works fine, but the frontend gives me this error message:
      Error: Exception: Method ProcessWire::getArray does not exist or is not callable in this context (in /home/delucaswpg/webapps/delucas_dev/wire/core/Wire.php line 519) #0 /home/delucaswpg/webapps/delucas_dev/wire/core/Wire.php(386): Wire->___callUnknown('getArray', Array) #1 /home/delucaswpg/webapps/delucas_dev/wire/core/WireHooks.php(698): Wire->_callMethod('___callUnknown', Array) #2 /home/delucaswpg/webapps/delucas_dev/wire/core/Wire.php(442): WireHooks->runHooks(Object(ProcessWire), 'callUnknown', Array) #3 /home/delucaswpg/webapps/delucas_dev/wire/core/ProcessWire.php(587): Wire->__call('callUnknown', Array) #4 /home/delucaswpg/webapps/delucas_dev/wire/core/Wire.php(445): ProcessWire->__call('callUnknown', Array) #5 /home/delucaswpg/webapps/delucas_dev/wire/core/Wire.php(445): ProcessWire->callUnknown('getArray', Array) #6 /home/delucaswpg/webapps/delucas_dev/wire/core/ProcessWire.php(590): Wire->__call('getArray', Array) #7 /home/delucaswpg/webapps/delucas_dev/site/modules/Spex/Spex.module(163): ProcessWire->_ This error message was shown because: you are logged in as a Superuser. Error has been logged. The site is hosted on WebFaction and can be found here: http://dev.delucaswpg.webfactional.com. Any help would be greatly appreciated.
      -Mike
    • By John W.
      Question 1
      I recently installed PW 3.0.62 for a new site and also have sites running older version of PW 3.x.
      Can I export the database on an older version of PW 3.x and import it to PW 3.0.62 without any issues?
       
      Question 2
      (This is kind of alternative to the above for long term use - and maybe a better solution...)
      On  the sites I've previously built I have templates (home, basic-page, contact) and fields that I commonly use, such as business_name, phone_1.  The last site I built is running PW 3.0.42.  I was considering cloning this into a local site and running the upgrade module to bring it up to PW 3.0.62. From there on out when I start I new project I could just run the PW upgrade module, copy the folder to the location for the new project and duplicate the database using the new projects name.

      So basically, I'll always keep a "blank slate" site that I can just run the PW upgrade on, then duplicate into a new project. This would cut down on the work and time spent having to re-create these common fields, that I use. From there, I would just add fields, templates, etc, specific for the new website project.

      Is this a sound approach to speed up development?

       
    • By FvG
      Hi there!
       
      I haven't used PHP and Processwire for almost four years now, but now I need a good CMS again ;-) I just found an old PW installation (2.3.0), which I would like to update to the current version. What's the best way to do this? It looks like starting from 2.5.0 there is a module which does updates automatically, so would it make sense to update to 2.5.0 and then let PW do it? 
       
      Thanks for your suggestions!