Post by Tomy55 » Thu Dec 17, 2020 6:27 pm

Hallo allerseits,

ich schlage mich wieder einmal mit einer oc-Installation (Vers. 3.0.2) auf einem Strato-Server (php 7.2/7.3) herum.
Bekomme einfach die Bilder nicht dargestellt, das img-Tag bleibt leer.

Die Anpassungen für das GLOB_BRACE-Problem hab ich vorgenommen, alle Rechte am image-Ordner sind auf 777 (ich weiß, kritisch) und die Einstellungen in den config.php sind mehrfach geprüft und korrekt ... bin ratlos.

Kann mir jemand sagen, an welchetr Stelle das img-Tag gefüllt wird ?
"title", "alt", "width" und "height" werden korrekt übergeben, "img src" und der zugehörige Link bleiben aber immer leer ???
Last edited by Tomy55 on Sun Dec 20, 2020 5:10 pm, edited 1 time in total.

Newbie

Posts

Joined
Mon Oct 16, 2017 10:44 pm

Post by OSWorX » Thu Dec 17, 2020 7:09 pm

Hallo,

in welchem Modul oder welcher Ansicht?
Da es für alle eine andere Möglichkeit gibt.
Und welche Vorlage wird verwendet?

Allen jedoch ist gemein, dass sie das Bildwerkzeug model/tool/image verwenden.
Z.B. für Produktbilder:

Code: Select all

$data['thumb'] = $this->model_tool_image->resize($product_info['image'], $this->config->get('theme_' . $this->config->get('config_theme') . '_image_thumb_width'), $this->config->get('theme_' . $this->config->get('config_theme') . '_image_thumb_height'));
Und eben dieses $thumb wird dann als src verwendet.
Eventuell mal die Größenangaben überprüfen.

Full Stack Web Developer :: Dedicated OpenCart Development & Support DACH Region
Contact for Custom Work / Fast Support.


User avatar
Administrator
Online

Posts

Joined
Mon Jan 11, 2010 10:52 pm
Location - Austria

Post by Tomy55 » Thu Dec 17, 2020 10:25 pm

Hallo und danke für deine schnelle Antwort .

Das betrifft alle Bereiche, einzige Ausnahme ist das Logo und einzelne Icons (beide werden offensichtlich auf andere Weise ermittelt, hab nur noch nicht herausbekommen können warum).
Im Backend ebenfalls, dort wird u.a. auch der Upload-Manager für die Bilder leer angezeigt (also ohne Pfade und Bilder), Produktbilder ebenso leer.
Last edited by Tomy55 on Sun Dec 20, 2020 5:11 pm, edited 1 time in total.

Newbie

Posts

Joined
Mon Oct 16, 2017 10:44 pm

Post by Tomy55 » Thu Dec 17, 2020 10:40 pm

Selbst das User-Logo im Backend (neben dem Namen des angemeldeten Users) ist leer, also mit leerem "img src".
Last edited by Tomy55 on Sun Dec 20, 2020 5:11 pm, edited 1 time in total.

Newbie

Posts

Joined
Mon Oct 16, 2017 10:44 pm

Post by OSWorX » Thu Dec 17, 2020 11:43 pm

Tomy55 wrote:
Thu Dec 17, 2020 10:25 pm
Das betrifft alle Bereiche, einzige Ausnahme ist das Logo und einzelne Icons ..
Beispiel(e) bitte.
Tomy55 wrote:
Thu Dec 17, 2020 10:25 pm
Im Backend ebenfalls, dort wird u.a. auch der Upload-Manager für die Bilder leer angezeigt (also ohne Pfade und Bilder), Produktbilder ebenso leer.
Dann schätze ich liegt es an/bei Strato bzw. den Verzeichnisrechten.
0777 ist sowieso Selbstmord - auch dort.
Nehme aber an, dass die dort andere Vorgaben haben - tun manche.
Also anstatt 0755 0750 oder 0700 - hab auch 0600 gesehen!
Am besten die selber fragen.
Und mal im Serverbericht selber nachsehen (nicht den von OpenCart).

Ansonsten funktionert das alles einwandfrei, installiere aktuell 2-3 Shops pro Woche - alle möglichen Anbieter, keiner der Kunden ist aber bei Strato.
Wäre mir sofort aufgefallen wenn da was wäre.

Full Stack Web Developer :: Dedicated OpenCart Development & Support DACH Region
Contact for Custom Work / Fast Support.


User avatar
Administrator
Online

Posts

Joined
Mon Jan 11, 2010 10:52 pm
Location - Austria

Post by Tomy55 » Fri Dec 18, 2020 12:27 am

danke erstmal ;D
Ich werde das alles erneut intensiv prüfen und melde mich dann nochmal ...
Last edited by Tomy55 on Sun Dec 20, 2020 5:11 pm, edited 1 time in total.

Newbie

Posts

Joined
Mon Oct 16, 2017 10:44 pm

Post by Tomy55 » Sun Dec 20, 2020 5:09 pm

Ich würde das ganze ja nun als abgeschlossen betrachten, wenn ich nur wüsste, WAS ich hier auskommentiert habe ???
---
Antwort:

Code: Select all

if (!is_file(DIR_IMAGE . $filename) || substr(str_replace('\\', '/', realpath(DIR_IMAGE . $filename)), 0, strlen(DIR_IMAGE)) != str_replace('\\', '/', DIR_IMAGE)) {
substr(str_replace('\\', '/', e.t.c.
substr_replace() ersetzt in einer Kopie von string alle Zeichen, die sich innerhalb der durch die Parameter start und (optional) length festgelegten Grenze befinden, mit der in replacement angegebenen Zeichenkette.
str_replace('\\', '/', e.t.c.
Diese Funktion gibt einen String oder ein Array zurück, in dem alle Vorkommen von search innerhalb von subject durch den angegebenen replace-Wert ersetzt wurden.
----
https://www.php.net/manual/de/function. ... eplace.php
https://www.php.net/manual/de/function.str-replace.php

OOPS, sorry, offenbar am falschen Ort eingetragen ...
Ernst

Newbie

Posts

Joined
Mon Oct 16, 2017 10:44 pm

Post by OSWorX » Sun Dec 20, 2020 9:58 pm

Strato halt.
Was ist das für ein Server?

Full Stack Web Developer :: Dedicated OpenCart Development & Support DACH Region
Contact for Custom Work / Fast Support.


User avatar
Administrator
Online

Posts

Joined
Mon Jan 11, 2010 10:52 pm
Location - Austria

Post by Tomy55 » Tue Dec 22, 2020 6:42 pm

@ OsWorX: Es ist ein Solaris-System (SunOS 5.1)

@ Ernst: Danke für die Erklärung, die Ersetzungs-Funktion kannte ich allerdings, auch dass hier "\\" in "/" geändert wird war mir durchaus klar.
Was ich nicht verstehe ist, was hier nun verglichen wird. Es werden zwei Parameter zunächst korrigiert ("\\" in "/") und dann wird verglichen, ob sie gleich (bzw. ungleich) sind. WOZU ???

Übrigens finde ich es ziemlich blöd, dass du meinen Lösungsweg (auch wenn er vielleicht nicht perfekt ist) gelöscht hast. Kann ja durchaus sein, dass irgendwann mal jemand ein ähnliches Problem hat.

Newbie

Posts

Joined
Mon Oct 16, 2017 10:44 pm

Post by Tomy55 » Tue Dec 22, 2020 6:50 pm

Hier also nochmal meine Lösung:

In den (beiden) image.php habe ich gleich die erste Zeile in der Funktion resize

Code: Select all

if (!is_file(DIR_IMAGE . $filename) || substr(str_replace('\\', '/', realpath(DIR_IMAGE . $filename)), 0, strlen(DIR_IMAGE)) != str_replace('\\', '/', DIR_IMAGE)) {
in

Code: Select all

if (!is_file(DIR_IMAGE . $filename)) {
geändert.
Ähnliche Korrekturen sind (mehrfach) in der filemanager.php erforderlich.

Da ich zwar weis was "!is_file(DIR_IMAGE . $filename)" prüft (ist die Datei überhaupt da?) aber mir leider nicht ganz klar ist, wozu der Rest dient, kann ich das ganze leider nicht als abgeschlossen betrachten.
ABER: Bei mir funktioniert nun alles (bis jetzt jedenfalls).

Newbie

Posts

Joined
Mon Oct 16, 2017 10:44 pm

Post by OSWorX » Tue Dec 22, 2020 10:05 pm

Tomy55 wrote:
Tue Dec 22, 2020 6:50 pm
Da ich zwar weis was "!is_file(DIR_IMAGE . $filename)" prüft (ist die Datei überhaupt da?) aber mir leider nicht ganz klar ist, wozu der Rest dient, kann ich das ganze leider nicht als abgeschlossen betrachten.
is_dir ist soweit klar: überprüft ob eine Datei oder ein Ordner existiert.
realpath löst einen Pfad in einen eindeutigen und absoluten auf, siehe https://www.php.net/manual/de/function.realpath.php

Die Kombination aus beiden in den diversen Dateien dient dazu, dass die Pfade (und meist damit verbundenen Ordner bzw. Dateien) auf verschiedenen System *nix & Windoofs gleich sind.

Die str_replace function wiederum sorgt dafür dass nur *nix-Pfade letztendlich überbleiben: / (= Windoofskompatibilität).
Das auch daher, da manche "Benutzer" irgendwas speichern und dann diese unnötige Mischung letztendlich wieder einen "richtigen" Pfad ergibt.
Beispiel: c:/meine/datei\welche/irgend\wo/ist ergibt dann: c:/meine/datei/welche/irgend/wo/ist

Warum das jetzt auf diesem Stratoserver mit Solaris nicht funktioniert, kann mehrere Gründe haben.
Zum Einen: warum Solaris und nichts vernünftiges?
Desweiteren könnte es sein, dass auf diesen Servern die Rechte nicht passen: "execute" Flag nicht gesetzt ist (was ich jetzt am stärksten vermute) - auch dann greift realpath nicht.

Noch ein Satz zu
Was ich nicht verstehe ist, was hier nun verglichen wird.
Ist doch auch ziemlich klar was hier und warum verglichen wird - oder?

Als Erstes wird nachgesehen ob die Datei/der Ordner überhaupt vorhanden ist.
Als Zweites wird überprüft ob der bereinigte Serverpfad mit dem bereinigten Bilderpfad übereinstimmt - nach dem: oder ||
Also entweder 1. Bedingung oder 2.
Passt eine der beiden nicht, dann (zurück) > return

Man könnte jetzt - wenn man Zeit & Lust hat, diese 1 Zeile auf 2 aufteilen - dann würde man sehen wo der Stratoserver seine Probleme hat.

Code: Select all

if (!is_file(DIR_IMAGE . $filename ) {
	trigger_error( 'Keine Datei/Kein Ordner oder nicht vorhanden' );
}

if( substr(str_replace('\\', '/', realpath(DIR_IMAGE . $filename)), 0, strlen(DIR_IMAGE)) != str_replace('\\', '/', DIR_IMAGE ) ) {
	trigger_error( 'Pfadangaben passen nicht' );
}
Das könnte man noch weiter ausbauen, habe aber dazu jetzt keine Lust mehr.

Generell können solche Server mit Solaris bei Strato nicht wirklich empfohlen werden.
Auch wegen der GLOB_BRACE Sache welche ja "bereinigt" wurde.

Diese "Eigenlösung" mag jetzt nur für diesen speziellen Fall anwendbar sein - wenn es funktioniert dann gut.
Empfohlen werden kann sie nicht, da keine generelle Lösung für das Problem - das wiederum nur auf und mit diesen Servern auftritt!

Full Stack Web Developer :: Dedicated OpenCart Development & Support DACH Region
Contact for Custom Work / Fast Support.


User avatar
Administrator
Online

Posts

Joined
Mon Jan 11, 2010 10:52 pm
Location - Austria

Post by IP_CAM » Tue Dec 22, 2020 10:09 pm

Sorry, es war ein reines Versehen, ich wollte nichts an Deinem Beitrag ändern,
sondern nur ein Teil davon als Referenz in meiner Antwort brauchen. Und ich
habe dann festgestellt, Deinen Beitrag geändert zu haben, deshalb liess ich es
sein, wie es war .... :drunk:
Gruss Ernst

My Github OC Site: https://github.com/IP-CAM
5'600 + FREE OC Extensions, on the World's largest private Github OC Repository Archive Site.


User avatar
Legendary Member

Posts

Joined
Tue Mar 04, 2014 1:37 am
Location - Switzerland

Post by Tomy55 » Tue Dec 22, 2020 10:30 pm

Danke euch beiden ... ich denke, so können wir das dann stehen lassen.

Newbie

Posts

Joined
Mon Oct 16, 2017 10:44 pm
Who is online

Users browsing this forum: No registered users and 8 guests