Vision Upgrade auf PHP 8
Hier findest du eine kleine Anleitung, um ältere Vision Systeme von PHP 7.x auf PHP 8.1 umzustellen.
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.
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.
Wir eröffnen den git und eröffnen einen aktuellen stand auf dem Main
git init && git branch -m main
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.
git am vision_php8.patch
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();
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;
Datei: template/custom_php/security.php
session_start()
/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);
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';
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)
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 = [];
}
Datei: template/classes/system/core/Language.php
private function setSystemDefinitions($id)
nach Zeile 168
$i = 0;
einfügen
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;
}
}
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)
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;
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);
}
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);
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;
}
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']);
}