Umstellung auf PHP bei meinem Wordpressblog
lima-city → Forum → Programmiersprachen → PHP, MySQL & .htaccess
all
auswirkung
backen
beispiel
break
code
double
empfohlenen code
fehler
fehlermeldung
file
funktion
gleichnamigen argumente
kenntnis
not
parameter
problem
rennen
startblock
url
-
Hi ihr da draußen,
ich bin gerade fleißig dabei, meinen Wordpressblog Medienspürnase auf PHP 7 umzustellen und zwar auf die empfohlene Version PHP 7.0.
Dabei kam es zu einigen Fehlermeldungen. Die meisten konnte ich durch entrümpeln oder Austauschen der installierten Plugins beseitigen.
Allerdings bleibt eine Fehlermeldung von meinem Theme übrig.
Fatal error: Redefinition of parameter $bwc in /home/webpages/lima-city/kalinawalsjakoff/html/Technikblognase/wp-content/themes/Escuela_Green/functions.php on line 334
Die dazugehärige Funktion in der entsprechenden functions.php ab dieser Zeile lautet
function art_normalize_widget_style_tokens($content, $bw, $bwt, $ewt, $bwc, $bwc, $ewc, $ew) { $result = ''; $startBlock = 0; $endBlock = 0; while (true) { $startBlock = strpos($content, $bw, $endBlock); if (false === $startBlock) { $result .= substr($content, $endBlock); break; } $result .= substr($content, $endBlock, $startBlock - $endBlock); $endBlock = strpos($content, $ew, $startBlock); if (false === $endBlock) { $result .= substr($content, $endBlock); break; } $endBlock += strlen($ew); $widgetContent = substr($content, $startBlock, $endBlock - $startBlock); $beginTitlePos = strpos($widgetContent, $bwt); $endTitlePos = strpos($widgetContent, $ewt); if ((false == $beginTitlePos) xor (false == $endTitlePos)) { $widgetContent = str_replace($bwt, '', $widgetContent); $widgetContent = str_replace($ewt, '', $widgetContent); } else { $beginTitleText = $beginTitlePos + strlen($bwt); $titleContent = substr($widgetContent, $beginTitleText, $endTitlePos - $beginTitleText); if (' ' == $titleContent) { $widgetContent = substr($widgetContent, 0, $beginTitlePos) . substr($widgetContent, $endTitlePos + strlen($ewt)); } } if (false === strpos($widgetContent, $bwt)) { $widgetContent = str_replace($bw, $bw . $bwc, $widgetContent); } else { $widgetContent = str_replace($ewt, $ewt . $bwc, $widgetContent); } $result .= str_replace($ew, $ewc . $ew, $widgetContent); } return $result; }
Jetzt stehe ich ein bisschen vor einem Problem, meine PHP Kenntnisse sind nicht wirklich die Besten und schon ein bisschen eingerostet. Wie kann ich den Fehler am Besten lösen? Vorerst habe ich den Blog wieder unter PHP 5.6 am Rennen.
Beitrag zuletzt geändert: 18.1.2018 13:00:43 von kalinawalsjakoff -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage
-
kalinawalsjakoff schrieb: ...ich bin gerade fleißig dabei, meinen Wordpressblog Medienspürnase auf PHP 7 umzustellen und zwar auf die empfohlene Version PHP 7.0....
Meine PHP Kenntnisse sind nicht besser als Deine, allerdings habe ich vor 3? Wochen ebenfalls zunächst auf das empfohlene PHP 7.0 umgestellt und musste feststellen daß NextgenGallery den Dienst verweigerte. Dies liegt an einem Bug in der von Lima angebotenen PHP 7.0 Version. Nach Umstellen auf 7.1 ist Nextgen Gallery zufrieden und läuft.
Jetzt stehe ich ein bisschen vor einem Problem, meine PHP Kenntnisse sind nicht wirklich die Besten und schon ein bisschen eingerostet. Wie kann ich den Fehler am Besten lösen? Vorerst habe ich den Blog wieder unter PHP 5.6 am Rennen.
Vielleicht wäre das auch für Dich mal einen Versuch wert. Die Versionsumstellung ist ja schnell gemacht.
https://translate.google.ch/translate?hl=de&sl=en&u=https://wordpress.org/support/topic/update-known-issue-with-php-7-0-26-7-1-12-7-2/&prev=search
Beitrag zuletzt geändert: 18.1.2018 13:34:48 von invalidenturm -
Um ehrlich zu sein, finde ich es schon witzig, dass man mehreren Parametern in einer Funktion den selben Namen gibt. Was sich der Entwickler deines Themes dabei wohl gedacht hat?
Aber darum geht es nicht, du brauchst eine Lösung.
Ich hab ein bisschen rumgespielt und herausgefunden, dass PHP 5.6 diese Schreibweise tatsächlich erlaubt. In der Variable $bwc steht dann der Wert, der für das zweite der beiden gleichnamigen Argumente übergeben wurde, der erste Wert wird also ignoriert.
Nun, PHP 7 erlaubt das nicht mehr und um das Problem zu lösen, sollte es reichen wenn du dem ersten der beiden $bwc Parametern einen anderen Namen gibst. Hier ein Beispiel, was ich ändern würde:
Funktionskopfzeile bisher:
function art_normalize_widget_style_tokens($content, $bw, $bwt, $ewt, $bwc, $bwc, $ewc, $ew) {
Ändern zu:
function art_normalize_widget_style_tokens($content, $bw, $bwt, $ewt, $dummy, $bwc, $ewc, $ew) {
Ich hoffe, du kommst damit weiter. Ist ja immerhin ein "Fatal Error", womöglich gibt es also noch mehr Probleme, bis der Blog unter PHP 7.0 glatt läuft.
Viel Erfolg! -
Hi ihr beiden Helfer da draußen.
Ich habe auf PHP 7.1 umgestellt und den später empfohlenen Code in die functions.php gekackt und jetzt läuft das soweit wieder.... zumindest läßt sich der Blog im Frontend öffnen (mehr habe ich noch nicht probiert). Ich werde mal sehen was das für weitere Auswirkungen hat (Debugmodus mal öffnen undnach fehlern suchen). -
Für kalinawalsjakoff und zur Information für alle Wordpress Nutzer die ebenfalls eine PHP Versionsumstellung planen, die aktuelle Version (1.4.5) von PHP Compatibility Checker (WP Plugin) ist nun in der Lage installierte Plugins und Templates auf Kompatibilität mit PHP 7.0 - 7.2 zu testen. Der Test ist unabhängig von der verwendeten PHP Version möglich. Eventuelle Probleme werden angezeigt.
Hier ein Beispiel, geprüft wurde Mailpoet2 - Ergebnis kompatibel mit 8 Warnungen:FILE: /wp-content/plugins/wysija-newsletters/inc/pear/pear.php ------------------------------------------------------------------------------------------------------------- FOUND 0 ERRORS AND 5 WARNINGS AFFECTING 4 LINES ------------------------------------------------------------------------------------------------------------- 171 | WARNING | Use of deprecated PHP4 style class constructor is not supported since PHP 7. 740 | WARNING | INI directive 'safe_mode' is deprecated since PHP 5.3 and removed since PHP 5.4 754 | WARNING | Function dl() is deprecated since PHP 5.3 754 | WARNING | Function dl() is deprecated since PHP 5.3 852 | WARNING | Use of deprecated PHP4 style class constructor is not supported since PHP 7. ------------------------------------------------------------------------------------------------------------- FILE: /wp-content/plugins/wysija-newsletters/views/back/campaigns.php -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- FOUND 0 ERRORS AND 1 WARNING AFFECTING 1 LINE -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- 2355 | WARNING | Method name "WYSIJA_view_back_campaigns::__filterPostParent" is discouraged; PHP has reserved all method names with a double underscore prefix for future use -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- FILE: /wp-content/plugins/wysija-newsletters/controllers/back.php -------------------------------------------------------------------------------------------------------------------------------------------------------------------- FOUND 0 ERRORS AND 1 WARNING AFFECTING 1 LINE -------------------------------------------------------------------------------------------------------------------------------------------------------------------- 207 | WARNING | Method name "WYSIJA_control_back::__setMetaTitle" is discouraged; PHP has reserved all method names with a double underscore prefix for future use -------------------------------------------------------------------------------------------------------------------------------------------------------------------- FILE: /wp-content/plugins/wysija-newsletters/helpers/bounce.php -------------------------------------------------------------------------------------------------------------- FOUND 0 ERRORS AND 1 WARNING AFFECTING 1 LINE -------------------------------------------------------------------------------------------------------------- 63 | WARNING | Function dl() is deprecated since PHP 5.3 --------------------------------------------------------------------------------------------------------------
-
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage