Charactersatz- und Erweiterungs-Probleme seit DSM-5

Status
Für weitere Antworten geschlossen.

scoubi

Benutzer
Mitglied seit
21. Okt 2010
Beiträge
51
Punkte für Reaktionen
0
Punkte
6
Hallo zusammen

Seit ich auf DSM-5 upgraded habe habe ich folgende Probleme:
  • Beim Webserver muss ich nun die php-Erweiterungen (z.B. http://myserver/myfile.php) angeben.
  • Der Charaktersatz hat sich verändert. Umlaute, welche ich direkt eingegeben hatte, erscheinen nun mit einem Fragezeichen. Wenn ich in der php-Datei die named entity (z.B. ü anstelle vom ü) eingebe, erscheint der Umlaut aber korrekt. Doch ich möchte nicht jede php-Datei manuell ändern müssen.

Über jede Hilfestellung bin ich sehr dankbar.
Scoubi
 

odin568

Benutzer
Mitglied seit
13. Mai 2007
Beiträge
43
Punkte für Reaktionen
0
Punkte
6
... damit bist du nicht alleine, würde mich auch interessieren!
 

tds4u

Benutzer
Mitglied seit
18. Mrz 2014
Beiträge
7
Punkte für Reaktionen
0
Punkte
0
Wie sind die Datenbanken erstellt - mit UTF8 (utf8_general_ci) oder Latin1 (latin1_general_ci).
Wie sind die Dateien in PHP geschrieben (UTF8 oder ASCII oder ANSI)?

Probiere nach dem Connect folgende MySQL-Befehle:
Rich (BBCode):
SET NAMES 'utf8';
oder
Rich (BBCode):
SET CHARSET 'utf8';
 

scoubi

Benutzer
Mitglied seit
21. Okt 2010
Beiträge
51
Punkte für Reaktionen
0
Punkte
6
Manchmal erschwert einem ein Upgrade das Leben immens

Lieber tds4u

phpMyAdmin: Die Datenbanken sind zwar ein weiteres Problem :-( Eine alte Datenbank hatte ich mit latin1_general_ci erstellt. Diese hat nach dem Upgrade zwar das selbe Sonderzeichen-Chaos, doch für mich ist das zweitrangig, da diese DB nicht gross ist und ich manuell ändern konnte. Apropos, ab sofort erstelle ich alles im Charaktersatz utf8 :)

Bei mir persönlich aber nicht so wichtig, da die wichtigen Datenbanken (Joomla = utf8) funktionieren :-D

Das Umlautproblem ist in einfachem HTML- bzw. PHP-Code. Die Antwort von Support lautet:

DSM4.3 use PHP5.3 while DSM5.0 upgrade PHP to 5.5. So the default-charset of PHP is changed from ISO-8859-1 to UTF-8.
http://www.php.net/manual/en/migration54.incompatible.php

Zusätzlich empfiehlt mir der Support, die einzelnen Seiten zu ändern. Aprops, wer das machen möchte und keinen HTML-Editor hat, der Umlaute in Named Entities ändert, nehmt den Phase5 (ein Tipp von chip.de). Ich bin nun nicht ganz sicher, ob ich das php.ini ändern soll oder nicht. Zur Info, wenn ich es ändere und den Server boote, erhalte ich meinen Charaktersatz wieder wie gewünscht zurück :p

Was ich machen muss, um in Zukunft die .php-Erweiterungen nicht mehr eingeben zu müssen, weiss ich leider auch noch nicht. Es hat etwas mit dem mod_rewrite zu tun, den ich angeblich angepasst habe - was aber nicht stimmt. Der mod-rewrite war zuvor standardmässig ... Ich habe auch mit dem .htaccess File gespielt, doch bringe ich das für alle meine Ordner nicht hin ... Da gibt es doch sicher eine Lösung.

Nur zur Vollständigkeit, der Code für phpinfo() ist ganz simpel.

Herzlichen Dank für jedes Feedback.
 

tds4u

Benutzer
Mitglied seit
18. Mrz 2014
Beiträge
7
Punkte für Reaktionen
0
Punkte
0
Du kannst deine Dateien entweder durch ein Tool auf UTF8 bringen oder die Umlaute durch Entities ersetzen.
Alternativ kannst du in der .htaccess folgendes machen:
Rich (BBCode):
AddDefaultCharset ISO-8859-1
oder für einzelne Endungen
Rich (BBCode):
AddCharset ISO-8859-1 .php

Für die Umstellung in MySQL/MariaDB hat sich dieser Beitrag hier als hilfreich erwiesen: http://stackoverflow.com/questions/19497066/converting-iso-8859-1-data-to-utf-8-in-utf8-and-latin1-tables
Er exportiert die Daten, konvertiert die Exportdatei nach UTF-8 und importiert die Daten wieder als UTF-8.

mod_rewrite ist eine Sache von Apache welche meistens nicht korrekt mit CGI-Handlern funktioniert, da diese als Proxy fungieren. DSM 5 verwendet FastCGI, somit können da komische Dinge passieren...
 

scoubi

Benutzer
Mitglied seit
21. Okt 2010
Beiträge
51
Punkte für Reaktionen
0
Punkte
6
[Erledigt] synology-Support sei Dank

Hallo zusammen

Nun habe ich endlich die Lösung für beide Probleme (synology-support nach einem zweiten Anlauf sei Dank :) )

PHP-Erweiterungen
support@synology.com schrieb:
1. While DSM's apache using 'Options MultiViews', Rewriting rules of filename extensions will failed in some situation, and faking the file extension is one of this.
A known workaround is telling mime mods that php file is text/html type, by add
AddType text/html .php
into /etc/httpd/conf/httpd.conf-user's "<IfModule mime_module>" section, and restart apache:
synoservicectl --restart httpd-user
Selbe Info aber etwas strukturierter:
  1. vi /etc/httpd/conf/httpd.conf-user
  2. <IfModule mime_module>
    ... (meistens steht dort noch mehr)
    AddType text/html .php
    </IfModule>
  3. synoservicectl --restart httpd-user

Umlaute, bzw. Charaktersatz
support@synology.com schrieb:
2. DefaultCharset affect to html files only, while php scripts need .user.ini for encoding settings.
Create a .user.ini file, contains following messages:
default_charset=iso-8859-1
, and restart php-fpm:
synoservicectl --restart php-fpm

Also bei mir läuft alles wieder. Danke für all eure wertvollen Tipps.

Es wäre ja einfach gewesen, den Charaktersatz im /etc/php/php.ini zu ändern. Doch ich habe irgendwo gelesen, dass man das ab php5 nicht machen soll. Deshalb finde ich diesen Lösungsansatz viel besser. Für Personen, welche sich nicht ins Linux wagen und bloss den Charaktersatz ändern möchen, ist hier so oder so die Lösung. Damit das dann ohne restart-Befehl funktioniert, einfach den Server booten. Vielleicht gibt es bald einen Dienst im Infocenter vom Control Panel (im DSM)
 

bern

Benutzer
Mitglied seit
07. Dez 2013
Beiträge
18
Punkte für Reaktionen
0
Punkte
0
hallo zusammen
kurz eine frage, wo soll man die .user.ini datei erstellen. im jeweiligen document root oder kann man dies generell machen? und heisst die datei .user.ini oder user.ini?

leider ist bei mir immer noch alles auf utf8

merci
 

scoubi

Benutzer
Mitglied seit
21. Okt 2010
Beiträge
51
Punkte für Reaktionen
0
Punkte
6
Lieber bern

Wenn du im ganzen Webserver lieber Umlaute haben möchtest, empfehle ich dir das .user.ini (mit Punkt) zu oberst im web-Verzeichnis zu erstellen (z.B. \\deinserver\web). Ansonsten kannst du es auch in einzelnen Unterverzeichnissen erstellen. Du musst dafür nicht ins Linux gehen. Du musst dann einfach den Server starten und fertig :)

Falls du das doch im Linux machen möchtest, das web-Verzeichnis befindet sich wie alle anderen Synology-Ordner unter /volume1 (oder entsprechende Nummer).

Das tolle an dieser Lösungsvariante ist, dass nach einem Upgrade des DSM dein gewünschter Charaktersatz noch vorhanden ist :-D

Gruss, scoubi
 

bern

Benutzer
Mitglied seit
07. Dez 2013
Beiträge
18
Punkte für Reaktionen
0
Punkte
0
Hallo, ich danke für die Infos, aber ich denke ich bin zu doof.
Ich habe eine Datei unter /var/services/web/.user.ini angelegt. Darin ist nur eine Zeile default_charset=iso-8859-1. Der Server wurde total neu gestartet und auch der Browser cache gelöscht. Brachte alles nichts. Es kommt nach wie vor eine UTF-8 Kodierung daher. Siehe http://master.dottools.ch/demo.php .
 

scoubi

Benutzer
Mitglied seit
21. Okt 2010
Beiträge
51
Punkte für Reaktionen
0
Punkte
6
Wo ist dein .user.ini ? CMS-Problem ?

Lieber bern

Ich bin zwar nicht der Guru, was ich aber sehe, dass ich dein .user.ini (http://master.dottools.ch/.user.ini) nicht sehe. Es sollte deinen Charaktersatz zeigen. Siehst du wirklich deinen gewünschten Charaktersatz beim Befehl ' cat /var/services/web/.user.ini ' ?

Kannst du mal ins Web-Verzeichnis cat /var/services/web die einfache Datai phpinfo.php

PHP:
<? phpinfo(); ?>

stellen und dann aufrufen. Bei mir ist dann die Local Value vom default_charset iso-8859-1 anstelle von der Master Value UTF-8.

Könnte es sein, dass dein CMS den Charaktersatz ändert? Teste doch einfach mit einer simplen PHP-Datei z.B.
PHP:
<H2>Umlaute via Tastatur</H2>
<P>Umlaute = ä ö ü - Ä Ö Ü</P>
<P>Franz = à é è ç</p>
<P>Währung =  $ €</P>
<P>Sonstige =  © ® ™</P>
<hr>
<H2>Umlaute via Named entities</H2>
<P>Umlaute = ä ö ü - Ä Ö Ü</P>
<P>Franz = à é è</P>
<P>Währung =  $ € </P>
<P>Sonstige = &copy ;® ™ </P>

Gruss, Scoubi
 

bern

Benutzer
Mitglied seit
07. Dez 2013
Beiträge
18
Punkte für Reaktionen
0
Punkte
0
Ahh, danke. hatte gedacht, dass dies für alle im /web geht. Vergessen das neu FastCGI läuft. habe natürlich X Webseiten für mich local. nun geht es. Merci super
 
Status
Für weitere Antworten geschlossen.
 

Kaffeautomat

Wenn du das Forum hilfreich findest oder uns unterstützen möchtest, dann gib uns doch einfach einen Kaffee aus.

Als Dankeschön schalten wir deinen Account werbefrei.

:coffee:

Hier gehts zum Kaffeeautomat