Die Antwort ist anscheinend JA, ich sollte mir Sorgen machen . Nach einigen Recherchen habe ich festgestellt, dass die Warnung mit Fehlkonfigurationen auf dem Server zusammenhängt, auf dem WordPress gehostet wird (dh einem Problem mit meinem Server, nicht mit WordPress).
Häufige Fehlkonfigurationen:
- Der Server verfügt nicht über DNS und kann daher nicht herausfinden, wer "example.com" ist, obwohl es sich selbst handelt.
- Serveradministratoren haben in einem fehlgeleiteten Sicherheitsversuch "Loopback" -Anforderungen blockiert, sodass sie sich selbst nicht zurückrufen können.
- Auf dem Server wird "mod_security" oder ähnliches ausgeführt, wodurch der Anruf aufgrund einer hirntoten Konfiguration aktiv blockiert wird.
Das Problem in meinem Fall wurde tatsächlich durch meine Firewall (pfSense) verursacht, die standardmäßig die Option "NAT-Reflektion deaktivieren" hat (als allgemeiner Grund Nr. 2 aufgeführt).
Auf dem Server selbst habe ich versucht, mich über Telnet zu erreichen. Das Ergebnis war wie folgt:
$ telnet external.server.hostname.com 19235
Versuch XXX.XXX.XXX.XXX ...
Telnet: Verbindung zum Remote-Host kann nicht hergestellt werden: Zeitüberschreitung der Verbindung
Um dies zu beheben, musste ich die Option NAT-Reflektion auf meiner Firewall deaktivieren deaktivieren . In meinem Fall war dies in der Weboberfläche von pfSense unter System-> Erweitert-> Firewall / NAT.
Quelle: http://forum.pfsense.org/index.php?topic=3473.0
Jetzt kann ich über die Firewall eine Verbindung zu mir selbst (auf dem Server selbst) herstellen:
$ telnet external.server.hostname.com 19235
Versuch XXX.XXX.XXX.XXX ...
Verbunden mit external.server.hostname.com.
Escape-Zeichen ist '^]'.
und ich bekomme keine PHP-Warnung mehr über wp-cron.
Ich habe das herausgefunden, nachdem ich diese ausführliche Antwort gelesen und erklärt hatte, wie es funktioniert.wp_cron
Kurze Antwort: Fügen Sie dies zu den Definitionen in Ihrer Datei wp-config.php hinzu: define ('ALTERNATE_WP_CRON', true);
Wirklich lange Antwort für Masochisten: Geplante Posts sind nicht jetzt und waren noch nie "kaputt". Die Entwickler von WordPress können das Problem nicht beheben, da nichts zu beheben ist.
Das Problem liegt in der Tatsache, dass Ihr Server aus irgendeinem Grund den wp-cron-Prozess nicht ordnungsgemäß ausführen kann. Dieser Prozess ist der Timing-Mechanismus von WordPress. Er behandelt alles von geplanten Posts bis zum Senden von Pingbacks an XMLRPC-Pings usw.
Die Art und Weise, wie es funktioniert, ist ziemlich einfach. Wenn eine WordPress-Seite geladen wird, prüft WordPress intern, ob wp-cron ausgelöst werden muss (indem die aktuelle Zeit mit der letzten Ausführung von wp-cron verglichen wird). Wenn wp-cron ausgeführt werden muss, wird versucht, eine HTTP-Verbindung zu sich selbst herzustellen, indem die Datei wp-cron.php aufgerufen wird.
Diese Verbindung zu sich selbst gibt es aus einem Grund. wp-cron hat viel zu tun, und diese Arbeit braucht Zeit. Es ist eine schlechte Idee, dem Benutzer das Anzeigen seiner Webseite zu verzögern, während er eine Reihe von Aufgaben ausführt. Wenn Sie also diese Verbindung wieder herstellen, kann das Programm wp-cron in einem separaten Prozess ausgeführt werden. Da sich WordPress selbst nicht um das Ergebnis des wp-cron kümmert, wartet es nur eine Sekunde und kehrt dann zum Rendern der Webseite für den Benutzer zurück. In der Zwischenzeit erledigt wp-cron nach dem Start seine Arbeit, bis es fertig ist oder die Ausführungszeit abgelaufen ist.
Bei dieser HTTP-Verbindung fallen einige schlecht konfigurierte Systeme aus. Grundsätzlich verhält sich WordPress wie ein Webbrowser. Wenn Ihre Site
http://example.com/blog war , ruft WP
http://example.com/blog/wp-cron.php auf, um den Vorgang zu starten. Einige Server können dies jedoch aus irgendeinem Grund einfach nicht. Unter den möglichen Gründen:
- Der Server verfügt nicht über DNS und kann daher nicht herausfinden, wer "example.com" ist, obwohl es sich selbst handelt .
- Serveradministratoren haben in einem fehlgeleiteten Sicherheitsversuch "Loopback" -Anforderungen blockiert, sodass sie sich selbst nicht zurückrufen können.
- Auf dem Server wird "mod_security" oder ähnliches ausgeführt, wodurch der Anruf aufgrund einer hirntoten Konfiguration aktiv blockiert wird.
- Etwas anderes.
Der Punkt ist, dass Ihr Webserver aus irgendeinem Grund auf eine nicht standardmäßige Weise konfiguriert ist, die verhindert, dass WordPress seine Arbeit erledigt. WordPress kann das einfach nicht beheben.
Wenn Sie diese Bedingung haben, gibt es jedoch eine Problemumgehung. Fügen Sie dies zu den Definitionen in Ihrer Datei wp-config.php hinzu:
define ('ALTERNATE_WP_CRON', true);
Diese alternative Methode verwendet einen Umleitungsansatz, bei dem der Browser des Benutzers eine Umleitung erhält, wenn der Cron ausgeführt werden muss, sodass er sofort zur Site zurückkehrt, während der Cron in der gerade unterbrochenen Verbindung weiter ausgeführt wird. Diese Methode ist manchmal etwas zweifelhaft, weshalb sie nicht die Standardeinstellung ist.
Quelle: http://wordpress.org/support/topic/scheduled-posts-still-not-working-in-282#post-1175405
Wie in diesem großartigen und detaillierten Beitrag erwähnt, ist es eine Problemumgehung, wenn Sie keine Kontrolle über die Konfiguration Ihres Servers oder gegebenenfalls über die Umgebung haben
define ('ALTERNATE_WP_CRON', true);
in Ihrer wp-config.php Datei.
allow_url_fopen
ON eingestellt?