Vorheriges Thema anzeigen :: Nächstes Thema anzeigen |
Autor |
Nachricht |
dutch ConPresso-Experte
Anmeldungsdatum: 04.07.2007 Beiträge: 547
|
Verfasst am: 17.07.2018 11:15 Titel: |
|
|
|
Super! Danke!
Funktioniert ebenfalls!
|
|
Nach oben |
|
 |
MarkusR Handbuchversteher

Anmeldungsdatum: 01.01.1970 Beiträge: 7070
|
Verfasst am: 07.08.2018 16:28 Titel: |
|
|
|
Da ich meine eigene mySQLi-Anpassung benutze, ist mir bisher nicht aufgefallen, dass balu bei der Funktion next_record_assoc() ein I (großes i) vergessen hat.
Die Zeile
Code: | $this->Record = mysqli_fetch_array($this->Query_ID, MYSQL_ASSOC); |
muss so aussehen
Code: | $this->Record = mysqli_fetch_array($this->Query_ID, MYSQLI_ASSOC); |
Ohne das I liefert mod_search (also die Suche) keine Ergebnisse.
Anbei auch die Suchfunktion für mod_search für PHP7 zum Austausch.
(ereg() ersetzt durch stripos())
inc_search_function.inc.rar - 4.39 KB
158 mal
_________________ Ciao Markus
ConPresso-Module
ConPresso und PHP 7 |
|
Nach oben |
|
 |
Gandalf ConPresso-Checker
Anmeldungsdatum: 01.01.1970 Beiträge: 106
|
Verfasst am: 03.10.2018 12:16 Titel: |
|
|
|
Hallo Markus und balu,
dank Eurer Hilfe und den geänderten daten habe ich heute erfolgreich auf PHP 7.1 umgestellt.
Einzig die Suchfunktion mod_search bringt leere Ergebnisse.
Frage an Markus, wo in welcher Datei muss ich diesen Code hier ändern?
Code: | $this->Record = mysqli_fetch_array($this->Query_ID, MYSQL_ASSOC); |
|
|
Nach oben |
|
 |
MarkusR Handbuchversteher

Anmeldungsdatum: 01.01.1970 Beiträge: 7070
|
Verfasst am: 03.10.2018 19:09 Titel: |
|
|
|
|
|
Nach oben |
|
 |
Gandalf ConPresso-Checker
Anmeldungsdatum: 01.01.1970 Beiträge: 106
|
Verfasst am: 04.10.2018 08:13 Titel: |
|
|
|
Vielen Dank Markus, das war's.
conpresso läuft bei mir auch mit PHP 7.2 nun problemlos.
|
|
Nach oben |
|
 |
MarkusR Handbuchversteher

Anmeldungsdatum: 01.01.1970 Beiträge: 7070
|
Verfasst am: 12.12.2018 08:50 Titel: |
|
|
|
Kleines Update:
Es gibt Module, wie mod_inline, die die Methode ->table_exists benutzen.
Da mysqli_list_tables aber nicht existiert, also mysql_list_tables ersatzlos gestrichen wurde, hat Balu dazu ja schon eine Anmerkung geschrieben, es aber nicht umgesetzt. Das habe ich jetzt nachgeholt.
Es muss also
Code: | function table_exists($table)
{
$this->connect();
$tables=mysqli_list_tables($this->Database); // FIXME SHOW TABLES FROM db
while (list($temp)=mysqli_fetch_array($tables)) {
// echo "BALU: $temp<br />";
if($temp == $table) return 1;
}
return 0;
}
|
geändert werden zu
Code: | function table_exists($table)
{
$this->connect();
$tables=mysqli_query($this->Link_ID, "SHOW TABLES");
while (list($temp)=mysqli_fetch_array($tables)) {
if($temp == $table) return 1;
}
return 0;
}
|
_________________ Ciao Markus
ConPresso-Module
ConPresso und PHP 7 |
|
Nach oben |
|
 |
Mr. Magpie ConPresso-Profi

Anmeldungsdatum: 01.01.1970 Beiträge: 1004 Wohnort: Wuppertal
|
Verfasst am: 08.02.2019 02:15 Titel: |
|
|
|
[EDIT: hat sich erledigt]
_________________ Günther Ludwig
Zuletzt bearbeitet von Mr. Magpie am 08.02.2019 08:52, insgesamt einmal bearbeitet |
|
Nach oben |
|
 |
Mr. Magpie ConPresso-Profi

Anmeldungsdatum: 01.01.1970 Beiträge: 1004 Wohnort: Wuppertal
|
Verfasst am: 08.02.2019 08:18 Titel: |
|
|
|
Sowohl unter PHP 7.1 als auch mit PHP 7.2 erhalte ich noch einen Fehler in der _include/translation.inc.php (CPO 4.0.12):
Parse error: syntax error, unexpected 'new' (T_NEW) in /homepages/12/d123456789/htdocs/Test/_include/translation.inc.php on line 143
Das ist im folgenden Code:
Code: |
if (!empty($_SESSION['SID_user']['language']) && $_SESSION['SID_user']['language']!=$cpoSystem['language']) {
$translator = &new translate($_SESSION['SID_user']['language']);
} else {
$translator = &new translate($cpoSystem['language']);
}
|
UPDATE:
Offenbar kann man die &-Zeichen einfach entfernen
_________________ Günther Ludwig |
|
Nach oben |
|
 |
MarkusR Handbuchversteher

Anmeldungsdatum: 01.01.1970 Beiträge: 7070
|
Verfasst am: 18.05.2019 05:50 Titel: |
|
|
|
Bei Auftritten, die unter PHP 7.2 und 7.3 laufen, ist mir zuerst durch einige Module, nun aber auch durch CPO alleine aufgefallen, dass bei der Ausgabe von Meldungen immer wieder eine Fehlermeldung auftritt.
Und zwar immer dann, wenn mehrere Meldungen nicht zusammen sondern nacheinander ausgegeben werden, d.h. _include/message.php mehrfach aufgerufen wird (passiert zum Beispiel, wenn man das letzte Bild aus der Dateiliste löscht).
Ursache ist, dass das bisherige automatische Casten von Variablen nicht mehr von PHP unterstützt wird, d.h. man nicht einfach eine Variable als String definieren und dann als Array benutzen kann.
Aber genau das tut das Meldungssystem von CPO schon immer.
Um dies zumindest nicht unnötig zu provozieren, habe ich nun am Ende von message.php die Zeile
ersetzt durch
Code: | $message = array(); |
_________________ Ciao Markus
ConPresso-Module
ConPresso und PHP 7 Für dieses Posting bedanken sich die folgenden User: dutch, Mr. Magpie |
|
|
Nach oben |
|
 |
MarkusR Handbuchversteher

Anmeldungsdatum: 01.01.1970 Beiträge: 7070
|
Verfasst am: 27.11.2019 14:20 Titel: |
|
|
|
Nach der Umstellung zweier produktiver Auftritte auf mySQLi tauchten trotz vorheriger Tests Probleme mit den Datenbankverbindungen auf, die sich durch vereinzelte "Database connect fail"-Einträge im Log äußerten.
Witzigerweise steht das Log ja IN der Datenbank, also ein merkwürdiger Fehler.
Auffällig war, dass beides Shared-Hosting-Accounts bei 1&1/IONOS sind.
Etwas Recherche brachte zutage, dass dort die gleichzeitigen Datenbankverbindungen auf 18 begrenzt sind, bei jeder PHP-Version. Zu Fehlern führte dies nur unter mySQLi, nicht unter mySQL.
Tatsächlich handelt es sich um viel mehr Verbindungsabbrüche, die ich zur Probe in eine Datei statt in die Datenbank habe schreiben lassen.
Ich habe mich nun länger damit beschäftigt und nun nach mehreren Fehlversuchen eine einfache und logische Lösung gefunden, mit der das Problem schlagartig beseitigt wurde.
In _include/db_mysql.inc.php ändert sich die Funktion connect() von
Code: |
function connect()
{
if (0 == $this->Link_ID) {
$this->Link_ID = @mysqli_connect($this->Host, $this->User, $this->Password);
if (!$this->Link_ID) {
$this->halt('Database connect failed');
}
if (!mysqli_select_db($this->Link_ID, $this->Database)) {
$this->halt('cannot use database ' . $this->Database);
}
}
}
|
zu
Code: |
function connect()
{
if (isset($GLOBALS['DB_LINK_ID'])) $this->Link_ID = $GLOBALS['DB_LINK_ID'];
if (0 == $this->Link_ID) {
$this->Link_ID = @mysqli_connect($this->Host, $this->User, $this->Password);
if (!$this->Link_ID) {
$this->halt('Database connect failed');
}
if (!mysqli_select_db($this->Link_ID, $this->Database)) {
$this->halt('cannot use database ' . $this->Database);
}
$GLOBALS['DB_LINK_ID'] = $this->Link_ID;
}
}
|
Damit wird die Verbindung nicht für jedes DB-Objekt neu aufgebaut sondern die bestehende benutzt.
_________________ Ciao Markus
ConPresso-Module
ConPresso und PHP 7 Für dieses Posting bedanken sich die folgenden User: dutch, Mr. Magpie |
|
|
Nach oben |
|
 |
|