Top-Themen

Aktuelle Themen (A bis Z)

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit

phpMyAdmin plus HTTPS gleich Blödsinn

Mitglied: DeeDee0815

DeeDee0815 (Level 1) - Jetzt verbinden

04.01.2008, aktualisiert 22:45 Uhr, 8369 Aufrufe, 1 Kommentar

Hallo,

ich muss mich über phpMyAdmin aufregen: Eine in der Tat sehr gute MySQL-Verwaltung, die aber nicht nur vom Design von Version zu Version schlechter wird: Den Entwicklern fällt wohl nix neues mehr ein, sodass sie sich dazu entscheiden Fehler einzubauen.

Sinnvollerweise ist phpMyAdmin bei mir nur über https://phpmyadmin.meine-domain.de/ erreichbar. Wenn man sich nun anmelden will, macht phpMyAdmin ###: Redirect zu http://phpmyadmin.meine-domain.de:443/, was natürlich zu einem Bad Request führt.

Bad Request

Your browser sent a request that this server could not understand.
Reason: You're speaking plain HTTP to an SSL-enabled server port.
Instead use the HTTPS scheme to access this URL, please.


Ich habe schon versucht mithilfe der Configvariablen $cfg['Servers'][$i]['SignonURL'] und $cfg['PmaAbsoluteUri'] phpMyAdmin die richtige URL mitzuteilen doch vergeblich.

Was kann man da machen: Ich nutze phpMyAdmin 2.9.1.1-Debian-6 aus den offiziellen Debian-Repositorys, sowie Apache 2.2.3, Debian Version ist Etch.

MfG
DeeDee0815
Mitglied: DeeDee0815
04.01.2008 um 22:45 Uhr
Hallo,

nachdem ich mich gestern den restlichen, und heute den ganzen Tag mit dem Versuch, eine Lösung für dieses Problem zu finden, beschäftigt habe, habe ich tatsächlich eine gefunden:

Im phpMyAdmin-Wiki steht zu der PmaAbsoluteUri-Geschichte folgendes:
But even if you set the correct URL yourself, you're fooled. phpMyAdmin will accidentally overwrite your correct value with an wrong guessed value. You need to fall back to version 2.7.0-pl2 ( 2005-12-27 15:08 ) it was messed up somewhere between version 2.8.0.3 and 2.8.2.4.

Finde ich ne klasse Idee, die Konfiguration des Benutzers zu überschreiben: Wer seine Benutzer vergräulen will, macht auf diese Weise sicher keinen Fehler. Wie kann man nur auf eine so dermaßen hirnrissige Idee kommen, die Konfiguration des Benutzers, die dieser immer dann tätigt, wenn es Probleme mit der "automatischen URL-Erkennung" gibt, mit der Fehl-Erkennung überschreiben!

Ich habe das Problem nun gelöst, in dem ich in der Datei /usr/share/phpmyadim/libraries/Config.class.php Zeile 690 (ungefähr) auskommentiert habe. (Ist hier am Ende des Quellcodes auch nochmal zu sehen.)

01.
<?php 
02.
... 
03.
    function checkPmaAbsoluteUri() 
04.
05.
        // Setup a default value to let the people and lazy syadmins work anyway, 
06.
        // they'll get an error if the autodetect code doesn't work 
07.
        $pma_absolute_uri = $this->get('PmaAbsoluteUri'); 
08.
        $is_https = $this->get('is_https'); 
09.
 
10.
        if (strlen($pma_absolute_uri) < 5 
11.
            // needed to catch http/https switch 
12.
            || ($is_https && substr($pma_absolute_uri, 0, 6) != 'https:'
13.
            || (!$is_https && substr($pma_absolute_uri, 0, 5) != 'http:'
14.
        ) { 
15.
            $url = array(); 
16.
 
17.
            // At first we try to parse REQUEST_URI, it might contain full URL 
18.
            if (PMA_getenv('REQUEST_URI')) { 
19.
                $url = @parse_url(PMA_getenv('REQUEST_URI')); // produces E_WARNING if it cannot get parsed, e.g. '/foobar:/' 
20.
                if ($url === false) { 
21.
                    $url = array('path' => $_SERVER['REQUEST_URI']); 
22.
23.
24.
 
25.
            // If we don't have scheme, we didn't have full URL so we need to 
26.
            // dig deeper 
27.
            if (empty($url['scheme'])) { 
28.
                // Scheme 
29.
                if (PMA_getenv('HTTP_SCHEME')) { 
30.
                    $url['scheme'] = PMA_getenv('HTTP_SCHEME'); 
31.
                } else
32.
                    $url['scheme'] = 
33.
                        PMA_getenv('HTTPS') && strtolower(PMA_getenv('HTTPS')) != 'off' 
34.
                            ? 'https' 
35.
                            : 'http'
36.
37.
 
38.
                // Host and port 
39.
                if (PMA_getenv('HTTP_HOST')) { 
40.
                    if (strpos(PMA_getenv('HTTP_HOST'), ':') !== false) { 
41.
                        list($url['host'], $url['port']) = 
42.
                            explode(':', PMA_getenv('HTTP_HOST')); 
43.
                    } else
44.
                        $url['host'] = PMA_getenv('HTTP_HOST'); 
45.
46.
                } elseif (PMA_getenv('SERVER_NAME')) { 
47.
                    $url['host'] = PMA_getenv('SERVER_NAME'); 
48.
                } else
49.
                    $this->error_pma_uri = true; 
50.
                    return false; 
51.
52.
 
53.
                // If we didn't set port yet... 
54.
                if (empty($url['port']) && PMA_getenv('SERVER_PORT')) { 
55.
                    $url['port'] = PMA_getenv('SERVER_PORT'); 
56.
57.
 
58.
                // And finally the path could be already set from REQUEST_URI 
59.
                if (empty($url['path'])) { 
60.
                    if (PMA_getenv('PATH_INFO')) { 
61.
                        $path = parse_url(PMA_getenv('PATH_INFO')); 
62.
                    } else
63.
                        // PHP_SELF in CGI often points to cgi executable, so use it 
64.
                        // as last choice 
65.
                        $path = parse_url(PMA_getenv('PHP_SELF')); 
66.
67.
                    $url['path'] = $path['path']; 
68.
69.
70.
 
71.
            // Make url from parts we have 
72.
            $pma_absolute_uri = $url['scheme'] . '://'
73.
            // Was there user information? 
74.
            if (!empty($url['user'])) { 
75.
                $pma_absolute_uri .= $url['user']; 
76.
                if (!empty($url['pass'])) { 
77.
                    $pma_absolute_uri .= ':' . $url['pass']; 
78.
79.
                $pma_absolute_uri .= '@'
80.
81.
            // Add hostname 
82.
            $pma_absolute_uri .= $url['host']; 
83.
            // Add port, if it not the default one 
84.
            if (! empty($url['port']) 
85.
              && (($url['scheme'] == 'http' && $url['port'] != 80) 
86.
                || ($url['scheme'] == 'https' && $url['port'] != 443))) { 
87.
                $pma_absolute_uri .= ':' . $url['port']; 
88.
89.
            // And finally path, without script name, the 'a' is there not to 
90.
            // strip our directory, when path is only /pmadir/ without filename. 
91.
            // Backslashes returned by Windows have to be changed. 
92.
            // Only replace backslashes by forward slashes if on Windows, 
93.
            // as the backslash could be valid on a non-Windows system. 
94.
            if ($this->get('PMA_IS_WINDOWS') == 1) { 
95.
                $path = str_replace("\\", "/", dirname($url['path'] . 'a')); 
96.
            } else
97.
                $path = dirname($url['path'] . 'a'); 
98.
99.
 
100.
            // To work correctly within transformations overview: 
101.
            if (defined('PMA_PATH_TO_BASEDIR') && PMA_PATH_TO_BASEDIR == '../../') { 
102.
                if ($this->get('PMA_IS_WINDOWS') == 1) { 
103.
                    $path = str_replace("\\", "/", dirname(dirname($path))); 
104.
                } else
105.
                    $path = dirname(dirname($path)); 
106.
107.
108.
            // in vhost situations, there could be already an ending slash 
109.
            if (substr($path, -1) != '/') { 
110.
                $path .= '/'
111.
112.
            $pma_absolute_uri .= $path
113.
 
114.
            // We used to display a warning if PmaAbsoluteUri wasn't set, but now 
115.
            // the autodetect code works well enough that we don't display the 
116.
            // warning at all. The user can still set PmaAbsoluteUri manually. 
117.
            // See 
118.
            // http://sf.net/tracker/?func=detail&aid=1257134&group_id=23067&atid=377411 
119.
 
120.
        } else
121.
            // The URI is specified, however users do often specify this 
122.
            // wrongly, so we try to fix this. 
123.
 
124.
            // Adds a trailing slash et the end of the phpMyAdmin uri if it 
125.
            // does not exist. 
126.
            if (substr($pma_absolute_uri, -1) != '/') { 
127.
                $pma_absolute_uri .= '/'
128.
129.
 
130.
            // If URI doesn't start with http:// or https://, we will add 
131.
            // this. 
132.
            if (substr($pma_absolute_uri, 0, 7) != 'http://' 
133.
              && substr($pma_absolute_uri, 0, 8) != 'https://') { 
134.
                $pma_absolute_uri
135.
                    (PMA_getenv('HTTPS') && strtolower(PMA_getenv('HTTPS')) != 'off' 
136.
                        ? 'https' 
137.
                        : 'http'
138.
                    . ':' . (substr($pma_absolute_uri, 0, 2) == '//' ? '' : '//'
139.
                    . $pma_absolute_uri
140.
141.
142.
        $this->set('PmaAbsoluteUri', $pma_absolute_uri); // <-- Auskommentieren !!! 
143.
        /* 
144.
         * ############################################################# 
145.
         * # Die vorherige Zeile auskommentieren, sobald man in der    # 
146.
         * # config.inc.php die richtige absolute URL eingetragen hat. # 
147.
         * ############################################################# 
148.
         */ 
149.
150.
    ... 
151.
    ?>
Und überhaupt: Um ne URL auszulesen brauche ich zwölf Zeilen, und nicht eine dermaßen aufgeplusterte Funktion wie da oben, die teilweise einfach keinen Sinn ergibt:

01.
<?php 
02.
function checkPmaAbsoluteUri() { 
03.
    if ($this->get("PmaAbsoluteUri") == "") { 
04.
        if ($this->get("is_https")) { 
05.
            $protocol = "https://"
06.
        } else
07.
            $protocol = "http://"
08.
09.
        $host = $_SERVER['HTTP_HOST']; 
10.
        $uri = rtrim(dirname($_SERVER['PHP_SELF']), "/\\"); 
11.
        $this->set("PmaAbsoluteUri", $protocol.$host.$uri); 
12.
13.
14.
?>
Es gilt also die korrekte URL in der config.inc.php zu definieren:

01.
$cfg['PmaAbsoluteUri'] = 'https://phpmyadmin.meine-domain.de/';
Dann muss man noch die oben aufgeführte Zeile auskommentieren und fertig.

FAZIT: Wie bereits erwähnt: phpMyAdmin wird immer schlechter: Noch ist es nicht soweit, dass das schlechte das Gute überwiegt, lange dauert es aber nicht mehr. Zum Glück ist bei Debian nicht immer die neuste Version dabei (also bei STABLE), denn sonst wäre die Version noch um einiges schlechter. Es wird sicher nicht mehr lange dauern, bis ich mich nach einer Alternative umsehen werde beziehungsweise muss.

MfG
DeeDee0815
Bitte warten ..
Ähnliche Inhalte
PHP
PhpMyAdmin vorausgefüllt
gelöst Frage von BigibobPHP2 Kommentare

Hallo, gibt es in php eine Möglichkeit in einen Link die "logindaten" für phpMyAdmin wie "user" evtl. "PW" und ...

Datenbanken
PhpMyAdmin Installation
Frage von newit1Datenbanken5 Kommentare

Hallo zusammen Ich installiere gerade phpMyAdmin auf einer Ubuntu 16.04 VM. Bekomme dauernd folgende Fehlermeldung: Kennt sich einer damit ...

Batch & Shell
Kein Zugriff auf PHPmyAdmin
gelöst Frage von newit1Batch & Shell3 Kommentare

Hallo, mit folgendem Skript will ich eine CSV-Datei in eine Tabelle meiner Datenbank importieren. Das kurisose dabei ist, das ...

CMS

PhpMyAdmin Login-Seite wird nicht dargestellt

gelöst Frage von StaticCMS3 Kommentare

Hi, ich habe ein kleines Problem mit dem Setup meines lokalen Webservers (Apache, PHP, MySQL), und zwar wird die ...

Neue Wissensbeiträge
Windows 10

Kumuative Updates für .NET Framework kommen für Windows 10 V1809

Information von kgborn vor 3 StundenWindows 10

Microsoft hat das Ganze im Beitrag Announcing Cumulative Updates for .NET Framework for Windows 10 October 2018 Update vorgestellt. ...

Sicherheit
Neue IT-Administrator Ausgabe - Endpoint Security
Information von Frank vor 3 StundenSicherheit

Die Endgeräte in Unternehmen stellen das wohl größte Einfallstor für Angreifer dar. Ein geöffneter, infizierter E-Mail-Anhang oder der Besuch ...

Windows Tools

Windows 10 BitLocker Laufwerkverschlüsselung ohne TPM-Chip

Anleitung von Frank vor 4 StundenWindows Tools3 Kommentare

Diese Anleitung zeigt, wie man die Windows BitLocker Laufwerkverschlüsselung ohne TPM-Chip Schritt für Schritt aktiviert. Zwar haben viele Laptops ...

Sicherheit

Interessante Methode für Leute, die in einer Windowsdomäne starke Kennwörter erzwingen wollen

Information von DerWoWusste vor 8 StundenSicherheit3 Kommentare

Dieser Artikel beschreibt, wie man auch ohne 3rd-party-tools die Kennwortsicherheit in Windows-Domänen erhöhen kann. Der Grundgedanke lautet: wir prüfen ...

Heiß diskutierte Inhalte
Hyper-V
Windows Serer 2016 Standard virtualisieren
gelöst Frage von fritte87Hyper-V33 Kommentare

Hallo zusammen, ich muss für eine kleine Firma ein entsprechendes neues kleines Konzept bauen. Ich habe einen Server Standard ...

Windows Server
Kann DNS-Einträge nicht finden
gelöst Frage von BPeterWindows Server19 Kommentare

Hallo, wenn ich folgenden Befehl absetze, bekomme ich eine Liste zurück mit allen Einträgen der DNS-Zone. Wenn ich aber ...

Firewall
Externer Zugriff auf Webserver
Frage von KingLouieFirewall12 Kommentare

Hallo zusammen, ich habe folgendes Problem: Ein Kollege muss gelegentlich auf einen Webserver zugreiffen, sowohl von intern als auch ...

Voice over IP
Umstellung Anlagenanschluss ISDN auf IP - Welcher Router?
Frage von ToniSchmidtVoice over IP12 Kommentare

Hallo zusammen, zum Ende des Jahres werden unsere geliebten ISDN Anlagenanschlüsse zwangsweise auf IP Anschlüsse umgestellt. Wir betreiben die ...