Preloader
Auf dieser Website werden Daten wie z.B. Cookies gespeichert, um wichtige Funktionen der Website, einschließlich Analysen, Marketingfunktionen und Personalisierung zu ermöglichen. Sie können Ihre Einstellungen jederzeit ändern oder die Standardeinstellungen akzeptieren.
Cookie Hinweise
Datenschutzregelung
24.02.2023

Vision Upgrade PHP 8

Vision Upgrade auf PHP 8

Hier findest du eine kleine Anleitung, um ältere Vision Systeme von PHP 7.x auf PHP 8.1 umzustellen.

Wichtig! :

Wir empfehlen dir auf jeden Fall zuerst den Patch per Git einzuspielen. Bitte Prüfe, ob der Schritt Backend 3 erfolgreich erledigt wurde. Falls das Problem dadurch nicht behoben wurde, ist es sehr wahrscheinlich, dass das aktuelle Projekt eigens programmierte Funktionalitäten beinhaltet oder ein älterer Stand vorhanden ist. In beiden Fällen sind dann die Änderungen zu revidieren und manuell einzupflegen. 

Patch Per Git einspielen

Umgebung und Zugangsdaten

Für das Einspielen des Patches werden Git und eine Shell benötigt. Diese Methode lässt sich also nicht mit einem FTP Webserver allein regeln. Hierzu benötigst du Zugang zu der Shell des Webservers. In den meisten Fällen ist git auch schon installiert. Eine Anleitung wie man per SSH eine verbindung aufbaut findest du HIER. Ansonsten sind google und Dokumentation immer dein Freund.

Wenn das Projekt lokal bei uns auf dem Server liegt, kannst du bequem die Kommandozeile öffnen, in das gewünschte Projekt navigieren und mit dem nächsten Schritt fortfahren. Git muss natürlich auch installiert sein. Installiere dazu Git-for-windows oder Git von dem Repo deines jeweiligen Paketverwalters.

Git initialisieren

Wir eröffnen den git und eröffnen einen aktuellen stand auf dem Main

git init && git branch -m main 

Patch besorgen

Den Patch findest du auf unserem Server unter

Backupdrive/hotfixes/vision_php8.patch

Den Patch kannst du entweder per drag & drop oder per CP Kommandozeilentool in den root deines Projektes kopieren.
Sobald der Patch in deiner Versionsverwaltung als Änderung aufgetreten ist, kannst du fortfahren. Zur Vorsicht solltest nochmal in den Patch reinsehen. Wenn dort 3 Commits von Till (2 kurze ein langer) vorhanden sind, dann ist das die richtige Datei.

Patch einspielen

git am vision_php8.patch

Patch Manuell einspielen

Frontend

1. Hinzufügen Error Ausgabe

Datei: template/custom_php/init.php

Nach Zeile 5

ini_set('display_errors', 1);
error_reporting(E_ALL & ~E_NOTICE & ~E_WARNING);

Danach bitte wieder entfernen


Bitte nach

foreach ($config as $key => $value) {

//Set global configuration variables

${$key} = gibconfig2($value);

}

folgendes einfügen:

$domain = $config['your_url'];
require_once dirname(__FILE__) . '/security.php';

Bitte darauf achten, dass require_once dirname(__FILE__) . '/security.php'; oben aus der Datei entfernt wird!


$visionPage = new \SYSTEM\MAIN\VisionPage($config);

ersetzen durch:

$visionPage = new \SYSTEM\MAIN\VisionPage();

2. System-Funktionen modifizieren

Datei: template/custom_php/systemFunctions.php

function utf8($array)

Nach der Klammer folgendes einbetten:

   if (!empty($GLOBALS["utf8"])) {
       $utf8 = $GLOBALS["utf8"];
   } else {
       $utf8 = false;
   }

Darauffolgende if Abfrage

if (!$GLOBALS['utf8'])

return $array;

folgendermaßen abändern:

if ($utf8)
       return $array;

3. Security Datei anpassen

Datei: template/custom_php/security.php

session_start() 

bitte ganz ans Ende setzen

4. CKEditor Config

/admin/tools/ckeditor/config.js.php

error_reporting(E_ALL & ~E_NOTICE & ~E_DEPRECATED);

ersetzen durch:

error_reporting(E_ALL & ~E_NOTICE & ~E_DEPRECATED & ~E_WARNING);

5. functions.php bearbeiten

Datei: template/custom_php/functions.php

function template_class($id, $class = false, $section)

ersetzen durch

function template_class($id, $class = false, $section = null)

Vor $content .= "<div class='classTemplate " . ucfirst($name) . "' >";

folgendes hinzufügen

$name = 'loadedClass';

6. textengine.php bearbeiten

Datei: template/custom_php/textengine.php

Funktions-Header von template_text durch folgendes ersetzen:

function template_text($id_page, $id, $class = null, $section = null, $options = [], $is_section = false)

7. Page Klasse anpassen

Datei: template/classes/system/main/Page.php

private function setConfig()

Folgende Parameter entfernen:

//$config['dirsource'] = $pfad;
//$config['backupdir'] = $pfad . '/backup';
//$config['backup_pfad'] = $pfad . 'admin/sql';
//$GLOBALS['utf8'] = $config['utf8'];

Falls vorhanden folgende Parameter entfernen:

//$config['clickup'] = $clickup;
//$config['clickup_link'] = $clickup_link;

private function urlToArray()

Nach öffnenden Klammern folgendes hinzufügen

$_SERVER["REQUEST_SCHEME"] = empty($_SERVER["REQUEST_SCHEME"]) ? "https" : $_SERVER["REQUEST_SCHEME"];

       $url_array['other_get_parameters'] = $other_get_paramerts[1];

       $url_array['request_uri'] = $other_get_paramerts[0];

       ersetzen durch:

       if (!empty($other_get_paramerts)) {
           if (count($other_get_paramerts) > 1) {
               $url_array['other_get_parameters'] = $other_get_paramerts[1];
           }
           $url_array['request_uri'] = $other_get_paramerts[0];
       }

private function getPageId(...)

if ($this->entwurf) {

               $query_first_get = $array['details2'];

           } else {

               $query_first_get = $array['details1'];

           }

ersetzen durch:

       if (!empty($array)) {
           if ($this->entwurf) {
               $query_first_get = $array['details2'];
           } else {
               $query_first_get = $array['details1'];
           }
       }else {
           $array = [];
       }

$count = count($array); zweimal vorhanden(auch gleich untereinander) - eine löschen  

if ($array['details1'] == 'ENTWURFSANSICHT') {

               $countBegin++;

           }

ersetzen durch

       if (!empty($array['details1'])) {
           if ($array['details1'] == 'ENTWURFSANSICHT') {
               $countBegin++;
           }
       }

function loadClass()

nach öffnenden Klammern folgendes einfügen:

$class = null;

nach $loadedClass = $tmpClass->getData('class'); folgendes einfügen:

     if (empty($loadedClass)) {
           $loadedClass = [];
       }

8. Language Klasse anpassen

Datei: template/classes/system/core/Language.php

private function setSystemDefinitions($id)

nach Zeile 168

$i = 0;

einfügen

9. Klasse FilterData anpassen

Datei: template/classes/system/core/FilterData.php

protected function filterData()

           

           if ($this->get['details1'] == 'ENTWURFSANSICHT') {
               $this->entwurf = true;
           }

ersetzen durch

       if (!empty($this->get)) {
           if ($this->get['details1'] == 'ENTWURFSANSICHT') {
               $this->entwurf = true;
           }
       }

10. SendMail Klasse anpassen

Datei: template/classes/system/core/SendMail.php

Methoden-Header von send_the_mail durch folgendes ersetzen:

public function send_the_mail($empfaenger_mail, $empfaenger_name, $betreff, $text, $sender_mail, $sender_name = null, $att = null)

Methoden-Header von sende_mail durch folgendes ersetzen:

private function sende_mail($email, $name, $betreff, $text = " test ", $from_mail = "", $from_name = null, $att = null)

11. UrlAnalyser Klasse anpassen

Datei: template/classes/system/core/UrlAnalyser.php

Methoden-Header von __construct() durch folgendes ersetzen:

public function __construct($url, int $langId, $sprachkuerzel_bool, $sprachkuerzel)

nach öffnenden Klammern folgendes einfügen:

if (!is_array($url)) $url = [];

protected $url = [], $langId = int, $headerStatus = 200, $redirect = null, $sprachkuerzel_bool = null, $sprachkuerzel = null;

ersetzen durch

   protected $url = [];
   protected $langId;
   protected $headerStatus = 200;
   protected $redirect = null;
   protected $sprachkuerzel_bool = null;
   protected $sprachkuerzel = null;

12. Meta Klasse anpassen

Datei: template/classes/system/core/Meta.php

private function getMetaHead()

$description = str_replace("!text!", substr(strip_tags(gibtext($this->pageId, $_GET['lan'])), 0, 160), $description);

ersetzen durch

           $text = gibtext($this->pageId, $_GET['lan']);
           if (!empty($text)) {
               $description = str_replace("!text!", substr(strip_tags($text), 0, 160), $description);
           }

Backend

1. mysqlPHP bearbeiten

Datei /admin/system/custom_php/mysqlPHP.php

function mysql_real_escape_string($string)

return  $string = filter_var($string,FILTER_SANITIZE_MAGIC_QUOTES);

ersetzen durch

return  $string = filter_var($string, FILTER_SANITIZE_ADD_SLASHES);

2. Seitenstruktur

Datei /admin/module/menu.php

error_reporting(E_ALL & ~E_NOTICE);

ersetzen durch

error_reporting(E_ALL & ~E_NOTICE & ~E_WARNING);

Datei /admin/module/menu/html/html_menu.php:362

closedir($handle); 

entfernen

Datei /admin/module/menu/class/

Methode function update($post)

Nach

$rowid = $post['id'];

folgendes einfügen

  if (empty($rowid)) {
           return false;
       }

3. Klassen in Menüpunkt laden

Datei/admin/module/featurestab_klassenabfragen.php

function function is_checked_class($pageid, $file, $value)

Nach Klammern folgendes einfügen

 $data = [];

$data = unserialize($row['classes']);

ersetzen durch

   if (!empty($row['classes'])) {
       $data = unserialize($row['classes']);
   }