Autor | Zpráva | ||
---|---|---|---|
lukasberan Profil |
Ahojte.
Mám externí databázi (na jiném serveru než je fyzicky web a tedy i Adminer), na které mám vynucené zabezpečené spojení. Pokud zabezpečení deaktivuji, tak se z Admineru bez problému k databázi připojím. Pokud zabezpečení aktivuji, tak se nepřipojím, což je v pořádku, protože Adminer sám o sobě zabezpečené spojení neumí. Stáhl jsem si tedy rozšíření login-ssl, které tuhle funkci do Admineru přidá. Adresářovou strukturu jsem nastavil jak je popsané v pokynech. Mám tedy soubor adminer.php (základní adminer soubor) v rootu + mám v rootu soubor index.php <?php function adminer_object() { // required to run any plugin include_once "./plugins/plugin.php"; // autoloader foreach (glob("plugins/*.php") as $filename) { include_once "./$filename"; } $plugins = array( // specify enabled plugins here new AdminerLoginSsl ); /* It is possible to combine customization and plugins: class AdminerCustomization extends AdminerPlugin { } return new AdminerCustomization($plugins); */ return new AdminerPlugin($plugins); } // include original Adminer or Adminer Editor include "./adminer.php"; ?> A pak mám složku plugins, kde mám samotný soubor toho pluginu login-ssl.php a stažený soubor plugin.php, který je podle návodu povinný pro všechny pluginy. Problém ale je, že dostávám chybu 500, když chci načíst stránku. Z detailnějších informací v logu vidím následující: PHP Fatal error: Uncaught ArgumentCountError: Too few arguments to function AdminerLoginSsl::__construct(), 0 passed in D:\home\site\wwwroot\adminer\index.php on line 13 and exactly 1 expected in D:\home\site\wwwroot\adminer\plugins\login-ssl.php:16 Stack trace: #0 D:\home\site\wwwroot\adminer\index.php(13): AdminerLoginSsl->__construct() #1 D:\home\site\wwwroot\adminer\adminer.php(1558): adminer_object() #2 D:\home\site\wwwroot\adminer\index.php(26): include('D:\\home\\site\\ww...') #3 {main} thrown in D:\home\site\wwwroot\adminer\plugins\login-ssl.php on line 16 Takže to vypadá, že bych měl tomu pluginu předat ještě nějaké argumenty, ale vůbec netuším jaké. Dokázal by prosím někdo poradit? |
||
TomášK Profil |
#2 · Zasláno: 27. 7. 2018, 09:08:03
Takže to vypadá, že bych měl tomu pluginu předat ještě nějaké argumenty, ale vůbec netuším jaké.
Máš odkaz na soubor a řádek ( D:\home\site\wwwroot\adminer\plugins\login-ssl.php:16 ), kde se nachází metoda, kterou voláš a které chybí parametry. Podívej se na tam a uvidíš, co je potřeba předat. Stručný popis je v komentáři u metody. Pokud mu nerozumíš, pošli ho sem a zeptej se.
|
||
lukasberan Profil |
#3 · Zasláno: 27. 7. 2018, 09:16:20
Přiznám se, že tohle je úplně mimo mé znalosti. V PHP nedělám, takže netuším. Obsah toho souboru login-ssl.php je přímo originál stažený ze stránek Admineru.
<?php /** Connect to MySQL using SSL * @link https://www.adminer.org/plugins/#use * @author Jakub Vrana, https://www.vrana.cz/ * @license https://www.apache.org/licenses/LICENSE-2.0 Apache License, Version 2.0 * @license https://www.gnu.org/licenses/gpl-2.0.html GNU General Public License, version 2 (one or other) */ class AdminerLoginSsl { /** @access protected */ var $ssl; /** * @param array array("key" => filename, "cert" => filename, "ca" => filename) */ function __construct($ssl) { $this->ssl = $ssl; } function connectSsl() { return $this->ssl; } } |
||
TomášK Profil |
#4 · Zasláno: 27. 7. 2018, 10:07:45
Přiznám se, že tohle je úplně mimo mé znalosti. V PHP nedělám, ...
Já taky ne, ale tohle není o PHP. Kouknout se na zdroják a přečíst dokumentaci metody není nic PHP specifického. Ta funkce chce argument, který má být pole obsahující ("key" => filename, "cert" => filename, "ca" => filename) . Až sem by ses měl dočíst, pokud programuješ v podstatě v čemkoliv.
Dál to už není tak přímočaré, filename bude tipuju řetězec s názvem souboru, který obsahuje klíč (ke klientskému certifikátu), klientský certifikát, a certifikát autority, která vydala certifikát serveru. Tipuju, že klientský certifikát a klíč bude nepovinný, nejspíš by se šlo prolouskat zdrojáky až k metodě, která to používá a v její dokumentaci to bude popsané.
|
||
lukasberan Profil |
#5 · Zasláno: 27. 7. 2018, 11:37:27
Já neprogramuji v ničem právě :-) Je to ale divné, proč to chce takové šílenosti, když z webové aplikace (WordPress) se k té databázi připojím bez problému a stejně tak i z MySQL Workbench. Certifikát na tom databázovém serveru je vydaný důvěryhodnou certifikační autoritou.
|
||
lukasberan Profil |
#6 · Zasláno: 27. 7. 2018, 16:09:18
Tak už to funguje. Stačilo tam přidat cestu ke kořenovému certifikátu autority, viz krok 1 zde docs.microsoft.com/cs-cz/azure/mysql/howto-configure-ssl a pak se jen odkázat na ten stažený certifikát
new AdminerLoginSsl("bin/root.pem") |
||
Časová prodleva: 5 let
|
0