get_option () gibt kein binäres Ergebnis zurück

Aus irgendeinem Grund hat get_option() bei der Rückgabe von binären Ergebnissen fehlgeschlagen, als ich meine Website von localhost auf den Webserver verschoben habe. Ich habe meine WordPress mit einem Upload der Dateien auf dem FTP migriert

Alles andere funktioniert jedoch perfekt. Sogar der wp-admin funktioniert richtig: Ich kann bearbeiten, posten, usw. Es ist nur eine einzige Codezeile, die mir den Blues gibt. Es kommt von einem Thema, das ich verwende, aber es gibt kein themenspezifisches Verhalten: Es stürzt schon lange davor ab. Diese Codezeile versucht dies zu tun:

 $sqbtn_1 = unserialize(get_option('magaling_ads_468060_1')); //returns null. $sqbtn_1 = $sqbtn_1->is_empty() ? $ad_def : $sqbtn_1; //CRASHES: is_empty on a non-object. 

Wenn ich eine einfache PHP-Datei erstelle, kann ich mir selbst beweisen, dass die Daten korrekt von MySQL kommen. Ich habe das Feld “magaling_ads_468060_1” in meiner WordPress-Optionstabelle und hier ist, was es enthält:

 mysql_query('SET NAMES utf8'); $result = mysql_query("select * from wp_options WHERE option_name = 'magaling_ads_468060_1'"); //prints out the following value of the option_value field: s:376:"O:18:"Padd_Advertisement":5:{s:27:"Padd_Advertisementimg_url";s:88:"http://img.daswordpress.com/api/advertisement-468x060_1.jpg";s:28:"Padd_Advertisementalt_desc";s:15:"Axonn Echysttas";s:27:"Padd_Advertisementweb_url";s:24:"http://www.echysttas.org";s:26:"Padd_Advertisementtarget";s:4:"_new";s:29:"Padd_Advertisementcss_class";s:0:"";}"; 

Also gibt MySQL die Daten zurück! Get_option gibt jedoch nichts zurück . Ich habe es geäußert und es ist leer. Auf der anderen Seite…

 get_option('magaling_installed'); //works and returns "1" 

Alles andere funktioniert einwandfrei und gibt sogar andere themenspezifische Werte (Ganzzahl oder Zeichenfolge) zurück.

 var_dump( get_option('magaling_ads_468060_1') ); //shows bool(false) var_dump( get_option('magaling_installed') ); //shows string(1) "1" var_dump( get_option('blogname') ); //string(9) "Echysttas" 

Solutions Collecting From Web of "get_option () gibt kein binäres Ergebnis zurück"

Ich habe das Problem gefunden. Und ein Wort der Warnung an Leute, die ihre WordPress Installationen migrieren . Lesen Sie dies, um zu verstehen, wie get_option bei der unserializing binärer Daten aus der database fehlschlägt.

Was ich getan habe, war meine WordPress die hardcore Art zu migrieren: Kopieren Sie alle Dateien auf den Webserver, Wiederherstellen der vollständigen SQL-database-Skript.

Vor der Wiederherstellung habe ich eine Massenersetzung in der SQL-database vorgenommen, um die URLs vom lokalen zum Webserver zu ändern. Und genau hier liegt das Problem.

In der database befanden sich serialisierte PHP-Objekte. Wenn eine Zeichenfolge serialisiert wird, wird ihre Länge vorangestellt. Und Sie können den Clusterfuck erraten, in den ich mich verwickelt habe: Da ich den Host-Namen massenweise ersetzt habe, hätte ich die String-Länge von serialisierten Objekten überall ändern sollen, wo ich serialisierte Host-Namen hatte.

Mit einer Standard-WordPress-Installation wäre das kein Problem, da WordPress solche Features nicht verwendet. Wenn Sie jedoch Plugins oder Designs verwenden und diese Methode für die Migration Ihres Blogs verwenden, werden Sie nach Problemen gefragt.

Zum Glück habe ich sehr wenige ehemals lokale URLs in serialisierten Objekten, nur zwei, um genau zu sein.

Ich hoffe, dass mein 7 Stunden Kampf mit diesem Problem jemandem dient.