interconnectit / Search-Replace-DB

This script was made to aid the process of migrating PHP and MySQL based websites. Works with most common CMSes.
https://interconnectit.com/products/search-and-replace-for-wordpress-databases/
GNU General Public License v3.0
4k stars 855 forks source link

PHP Notice: icit_srdb::recursive_unserialize_replace() for WordPress #262

Closed asier-vega closed 4 years ago

asier-vega commented 5 years ago

I need to add -d memory_limit -1 to execute search & replace command. I get a lot of messagges like these until php killes the process:

PHP Notice: icit_srdb::recursive_unserialize_replace(): The script tried to execute a method or access a property of an incomplete object. Please ensure that the class definition "WPML_Notices" of the object you are trying to operate on was loaded before unserialize() gets called or provide an autoloader to load the class definition in srdb.class.php on line 755

PHP Notice: icit_srdb::recursive_unserialize_replace(): The script tried to execute a method or access a property of an incomplete object. Please ensure that the class definition "WPML_Notice" of the object you are trying to operate on was loaded before unserialize() gets called or provide an autoloader to load the class definition in srdb.class.php on line 755

PHP Notice: icit_srdb::recursive_unserialize_replace(): The script tried to execute a method or access a property of an incomplete object. Please ensure that the class definition "WPML_Taxonomy_Translation_Help_Notice" of the object you are trying to operate on was loaded before unserialize() gets called or provide an autoloader to load the class definition in srdb.class.php on line 755

Is there any bug with php 7.2 or newest WordPress, plugins, etc. versions?

jacobischwartz commented 5 years ago

Same, but my notices are complaining about a different class definition:

PHP Notice: icit_srdb::recursive_unserialize_replace(): The script tried to execute a method or access a property of an incomplete object. Please ensure that the class definition "DUP_Archive_Filter_Info" of the object you are trying to operate on was loaded _before_ unserialize() gets called or provide an autoloader to load the class definition in srdb.class.php on line 755

Other missing classes were:

I'm also using PHP 7.2. Removing the memory limit didn't produce a success for me, the command just kept going for a couple minutes before I terminated it.

I also had to disable New Relic (-d newrelic.enabled=no) because New Relic was limiting the depth of nesting and triggering a segmentation fault. With NR disabled, SRDB was still producing the PHP notices and failing.

Definitely didn't used to have this issue with SRDB. I hope it's not reached EOL!

This issue might be a duplicate of https://github.com/interconnectit/Search-Replace-DB/issues/241

nuklearwanze commented 5 years ago

I think i get the same error:

PHP Notice: icit_srdb::recursive_unserialize_replace(): The script tried to execute a method or access a property of an incomplete object. Please ensure that the class definition "<some_class_its_missing>" of the object you are trying to operate on was loaded _before_ unserialize() gets called or provide an autoloader to load the class definition is <path_to_the_sript_srdb.class.php> on line 755.

in my case the class definitions mentioned were: SucomPluginUpdate FS_Plugin

not sure whats the issue here...

PS: PHP 7.3

jacobischwartz commented 5 years ago

FYI the PR for the duplicate issue did mostly resolve this for me: https://github.com/interconnectit/Search-Replace-DB/pull/251

Wanna clone from the PR, confirm that it works for you too, and chime in on the PR itself to put pressure on the repo owner? https://github.com/chrisbarnett1/Search-Replace-DB/tree/php72-is_object-fix

gianluigi-icit commented 4 years ago

no pressure, we are just busy :)

closing since the code have been merged

cdbessig commented 4 years ago

Doesn't look like this was merged into master yet....

gianluigi-icit commented 4 years ago

it wasn't merged into master https://github.com/interconnectit/Search-Replace-DB/blob/4.0/srdb.class.php#L727

cdbessig commented 4 years ago

Should I be using master or 4.0?

gianluigi-icit commented 4 years ago

use the 4.0 - for us is the stable enough, we are going to make a release soon.