Installation auf NAS Webserver config Frage

evaki

#21
Letztlich wird das Anfangsproblem mit
define('DB_HOST', 'https://xxx.xxx.x.xxx:443');
angezeigt. Mit https brauchts keine Portangabe, ansonsten ist Portangabe eine Anweisung für http !
Da kann man sich übers Thema Certifikate schlau machen, ist aber für das aktuelle Problem überhaupt nicht entscheidend.

Weiteres wurde schon anderweitig aufgezeigt.
MySQL auf anderer Maschine?

Wenn nun WebsiteBaker unter localhost (da wo ist www-root !!!!!!!!!!!! // KEINE irgendwo-Verzeichnisse auf Deinem NAS !!!!!!!!!) installiert wird, und im Formular die "richtige" DB und der richtige DB-Server angegeben wird (siehe vorherige Posts), sollte das ohne irgendwelche Probleme funktionieren.

Es wird hier anscheinend voll am Rad gedreht, ähm - am NAS...

Ansonsten geht halt auch eine weitere Instanz eines beliebigen DB-Server, der ganz unabhängig von irgendwelchen NAS-Konfigurationen installiert bzw gestartet werden kann -mit standardport  :-D .

MfG. Evaki


evaki

#20
Korrektur
QuoteEvaki: Serveradresse bzw. -namen der DB + Port.
Die Serveradresse bzw. -namen der DB, den/die Port/s gibts auch zu lesen: in der Ini der jeweiligen DB, oder im Aufrufscript (Linux wohl die Shell).

Aber einfacher gehts mit dem phpMyAdmin setup. Dort kann man alle Vorgaben der DB ändern/erstellen.
Guggsu unter "Weitere Einstellungen>blabla> Setup Script"

evaki

#19
Quote@evaki Das hatte ich ja gleich nach der erfolgreichen Joomla Installation so versucht - klappt aber leider auch nicht.
Da gehört ja auch 'ne URL rein, kein Pfad oder absoluter Pfad.

Ach ja, phpMyAdmin zeigt Dir Serveradresse bzw. -namen der DB + Port.
In den Tabellen steht das übrige, wie z.B. die WB-Installation.

LudwigSt

@jacobi22 bei mir lautet es in der config.inc.php von phpMyAdmin:
$servers_json_str = file_get_contents('/var/packages/phpMyAdmin/target/synology_added/etc/servers.json');
foreach (json_decode($servers_json_str, true) as $server) {
$i++;
$cfg['Servers'][$i] = $server;
}


Weiß wer vielleicht welches sudo Kommando (Unix) ich da eingeben muß, um an die .json Datei heranzukommen?

Mit dem Standardport 3306 hatte ich ja anfangs versucht und der geht garnicht.

@evaki Das hatte ich ja gleich nach der erfolgreichen Joomla Installation so versucht - klappt aber leider auch nicht.

Ich verstehe nur nicht, warum die Verbindung mit $link = mysqli_connect("127.0.0.1", "nutzer", "passwort", "datenbank", 3307); klappt und mit
if (!($this->db_handle = mysqli_connect(127.0.0.1, nutzer, passwort, datenbank, 3307))) {
    $this->connected = false;
            $this->error = mysqli_connect_error();
        }
klappt es nicht. "Unknown database" kommt dann.
LG Ludwig

Wissen ist Macht - aber nix wissen macht auch nix.

evaki

Da das mit den SQL-Instanzen möglichereise überlesen wurde, hab ich noch einen.
define('WB_URL', '/volume1/web/wb/');
hä?
MfG. Evaki

Gast

QuoteIn der config.inc.php vom phpMyAdmin wird localhost oder 127.0.0.1 überhaupt nicht definiert.

bei mir schon mit

Quote/* Bind to the localhost ipv4 address and tcp */
$cfg['Servers'][$i]['host'] = '127.0.0.1';
$cfg['Servers'][$i]['connect_type'] = 'tcp';

QuoteDer Port 3307 wird beim Installieren von MariaDB und phpMyAdmin im NAS vergeben und läßt sich ohne weiteres vom NAS aus nicht ändern, wenn er einmal so definiert wurde. Aber das sollte ja nicht das Problem sein. Ich denke eher, das Problem ist, daß es 2 verschiedene Domains sind für die Datenbank und für den Rest (php, html etc.).

der Haken an der Sache ist ja, das man nicht mit Bestimmtheit sagen kann, das da nicht irgendwo der 3306 fest verankert wurde, schließlich ist es internationaler Standard. Das Problem gab es ja hier mit der Umstellung vor Portable auch, weil z.b. wblib und libraryAdmin eine feste Definition hatte statt der Konstante aus der config.php
Ich persönlich würde es auf eine Gegenprobe ankommen lassen und noch einmal mit den Default Ports arbeiten, denn das Problem (sofern denn eines vorhanden ist) würde sich durch alle Projekte ziehen, die du da verwendest.
Nur als Beispiel, das es so ja analog in Portable gab: du holst die ein Backup einer online-Version deiner Seite XY, CMS-Typ egal, um es lokal upzugraden. Dann fängst du erstmal an, mögliche Port-Definitionen zu suchen, änderst diese ggf auch in Modulen auf 3307, und baust nachher alles wieder retour, weil online 3306 definiert ist. Dazu kommt noch, das du nun für diesen Zweck auch noch z.b. die class.database anpassen mußt, um dein Ziel zu erreichen. Da fehlt mir der Sinn und die Zeit. Andererseits ist es natürlich auch die persönliche Freiheit und der "Kick", das zu packen, es gäbe aber durchaus einfachere Methoden. Ich hatte mir da mal 4 Portables angepasst mit unterschiedlichen PHP-Versionen und Port von 3307 bis 3310 plus mein Xampp mit 3306, macht 5 identische WB-Installationen zeitgleich mit unterschiedlichen Einstellungen. Heut nutz ich nur noch zwei davon, vor PHP 5.3 und danach, also 7er Versionen. Und auf Portable könnte ich dann auch Joomla oder WP oder jedes andere CMS laufen lassen, da hab ich nur 4 Werte pro Port (glaub ich), relativ einfach umzustellen

LudwigSt

Quote from: jacobi22 on February 10, 2019, 01:29:04 PM
Quote
Theoretisch solltest du im htdocs-Ordner deines Servers landen. Sofern nicht schon vorhanden, packe dort mindestens eine index.php mit ähnlichen Inhalt rein

Im htdocs-Ordner meines Servers lande ich mit Eingabe der IP, alternativ mit dem Namen des NAS, was wohl als Alternative deklariert wurde (vom NAS).

phpMyAdmin starte ich mit Eingabe IP/phpMyAdmin/ oder mit NAS-Name/phpMyAdmin.

In der config.inc.php vom phpMyAdmin wird localhost oder 127.0.0.1 überhaupt nicht definiert.

Dort wird eine JSON-Datei vom Server geladen, in der wohl definiert ist, daß man mit php nur die IP 127.0.0.1:3307 benutzen darf, wenn man auf die DB zugreifen will. Mit der NAS-IP:3307, oder auch NAS-Name:3307 klappt das nicht. 

Der Port 3307 wird beim Installieren von MariaDB und phpMyAdmin im NAS vergeben und läßt sich ohne weiteres vom NAS aus nicht ändern, wenn er einmal so definiert wurde. Aber das sollte ja nicht das Problem sein. Ich denke eher, das Problem ist, daß es 2 verschiedene Domains sind für die Datenbank und für den Rest (php, html etc.).

MariaDB läuft auch noch in 2 Versionen, 5 und 10, die von anderen Anwendungen des NAS benötigt werden. Ich verwende für WB MariaDB 10. Mit localhost kann man auf MariaDB V5 zugreifen und mit 127.0.0.1 auf MariaDB V10. Alles etwas kompliziert  :|

Mit den Unterordnern http://NAS-Name/wb1/ oder http://NAS-Name/wb2/ ist das auch so angelegt und so gedacht für mehrere Installationen. Auch http://NAS-Name/joomla/ für die Joomla Installation.
LG Ludwig

Wissen ist Macht - aber nix wissen macht auch nix.

Gast

QuoteDer Zugriff auf die Datenbank schlug fehl, weil ich nicht den Standard-Port 3306 nutze, sondern 3307. Wenn ich den Zugriff mit MySQLi über diesen anderen Port mache, dann laufen die nicht-WB-php-Skripte. Wenn ich mit "127.0.0.1:3307" die Datenbankverbindung aufbaue, dann klappt alles.

Das Problem liegt dann eher in der Server-Konfiguration. WB selbst hat bis auf den Port in der config.php nirgens eine andere Port-Definition im Core, "nur" ein paar Abfangstellen nach dem Motto: wenn kein Port definiert [DB_PORT], dann benutze 3306. Als "Beweis" die Portable-Edition, die mit dem identischem WB-Paket unter Port 3307 läuft. Allerdings gibt es einige Module, speziell die von BlackBird wie wblib, libraryAdmin usw, die intern den Mysql-Standard-Port 3306 benutzen.

andere Stellen zur Definition wären die php.ini (in PHP-Ordner), die my.ini (in MYSQL), in Portable gibt es dann noch die usbwebserver.ini, du wirst etwas ähnliches haben. Dazu etwas analoges zur hosts-Datei

Quote3307 ist nicht der Port für das NAS, sondern der Port für MySQL(i). Der /web/ Ornder im NAS ist das Root und wird einfach über die IP aufgerufen und der WB Ordner dann halt mit der IP/wb/

Letzteres setzt aber voraus, das dies irgendwo definiert wurde. Basis ist die IP 127.0.0.1, daraus wird dann in der httpd.conf (Apache, auch in Xampp) ein localhost gemacht. Diesen kann man dann wieder "übertoppen" mit virtuellen Host's. Wenn es also nirgens definiert wurde, kann es durchaus sein, das niemand auf "localhost" hört.
Was passiert denn im Browser beim Aufruf der Zeile http://localhost ?

Theoretisch solltest du im htdocs-Ordner deines Servers landen. Sofern nicht schon vorhanden, packe dort mindestens eine index.php mit ähnlichen Inhalt rein

<?php
    
echo "Mein Document Root";
?>


Ein WB würde ich dann in einem Unterordner von htdocs packen, Aufruf dann über http://localhost/Unterordner
Virtuelle Server, die das Ganze (die URL) hübscher machen, kann man später immernoch dazu bauen. Bei mir läuft da z.b. Xampp auf C: , der Rest auf F:
Über die Definition in der Windows-hosts-Datei und der httpd-vhosts.conf greife ich dann über Aliase wie http://wbtest1 zu

Aus der Ferne liegt natürlich die DB-Verbindung auf der Hand, wie gesagt, php.ini und my.ini sowie die config.inc.php aus Phpmyadmin kämen da in Betracht. WB selbst schließe ich aus, weil eben unter Portable ja alles mit Port 3307 und localhost:4001 läuft, ohne am WB was zu ändern







evaki

Na gut, dann eben nicht fürs NAS, sondern im NAS voreingestellt.
Kann man sich trotzdem fragen, warum es nicht der Standard-Port ist.
Und wenn NAS den gar nicht braucht, wozu dann überhaupt?
"Eigentlich" sind die DB für Dienste eines NAS vorgesehen, und nutzen oft nicht den Standard-Port.
Deshalb meine Nachfrage (und weil in unserer Arbeitsgruppe auch son Kram mehrfach installiert ist/wurde.) Auch im LAN laufen unsere WB-Installationen teilweise auf unterschiedlichen SQL und http-Ports (ohne Probleme, und ohne "Fummeleien")

MfG. Evaki

LudwigSt

Quote from: evaki on February 10, 2019, 12:48:37 PM
Quote(Vermute daher auch, daß port 3307 -für NAS- voreingestellt ist.)

3307 ist nicht der Port für das NAS, sondern der Port für MySQL(i). Der /web/ Ornder im NAS ist das Root und wird einfach über die IP aufgerufen und der WB Ordner dann halt mit der IP/wb/

Bin jetzt im Code der class.database.php zugange....

Als allererste Zeilen habe ich meinen MySQLi-connect aus meinen nicht-WB-Skripten eingefügt und die Verbindung zur Datenbank klappt.
Dann habe ich mir die Werte der Variablen ausgeben lassen, die class.database.php benutzt: es sind exakt die selben, wie in meinem nicht-WB-Skript.
Also DB_HOST, DB_USERNAME, DB_PASSWORD, DB_NAME und $port kommen dort korrekt an.

Leider habe ich von Klassen und $this Null Ahnung - hab ich bisher nie gebraucht...
LG Ludwig

Wissen ist Macht - aber nix wissen macht auch nix.

evaki

#11
QuoteDer Zugriff auf die Datenbank schlug fehl, weil ich nicht den Standard-Port 3306 nutze, sondern 3307...
Man kann mehrere SQL-Instanzen mit unterschiedlichen Ports starten.
Das ist bei einem heimischen NAS aus Gründen der Sicherheit recht sinnvoll.
(Vermute daher auch, daß port 3307 -für NAS- voreingestellt ist.)
Da gibts dann auch kein Kladderadatsch mit Anwendungen.
MfG. Evaki

LudwigSt

Habe inzwischen Tests mit nicht-WB php-Dateien gemacht. Der Zugriff auf die Datenbank schlug fehl, weil ich nicht den Standard-Port 3306 nutze, sondern 3307. Wenn ich den Zugriff mit MySQLi über diesen anderen Port mache, dann laufen die nicht-WB-php-Skripte. Wenn ich mit "127.0.0.1:3307" die Datenbankverbindung aufbaue, dann klappt alles.

Mit WB habe ich aber immer noch das Problem, das es mit den Pfaden nicht zurecht kommt. Daher habe ich testweise Joomla installiert und das ließ sich ohne Problem installieren und läuft. In der dortigen Konfigurations-Datei habe ich dann nachgeschaut, was dort benutzt wird.

public $host = 'localhost:/run/mysqld/mysqld10.sock';
public $tmp_path = '/volume1/web/joomla/tmp';


Habe versucht, das analog in der config.php von WB zu nutzen, aber das bringt auch nichts.

Meine WB config.php sieht jetzt so aus:


<?php

define
('DB_TYPE''mysqli');
define('DB_HOST''127.0.0.1');
define('DB_NAME''DB2');
define('DB_USERNAME''root');
define('DB_PASSWORD''passwort');
define('TABLE_PREFIX''wb_');
define('DB_PORT''3307');

define('WB_URL''/volume1/web/wb/');
define('ADMIN_DIRECTORY''admin');// no leading/trailing slash or backslash!! A simple directory name only!!
$referer $_SERVER['HTTP_REFERER'];
require_once(
dirname(__FILE__).'/framework/initialize.php');
// end of file -------------


Und in der index.php habe ich mit echo Ausgaben hinzugefügt:


// Include config file
if (!defined('WB_PATH')) {
echo "Path is not defined ";

==> ergibt die Ausgabe "Path is not defined"

Also wird die index.php ja schon mal gefunden!

Nächste Ausgabe in der index.php:


//$sStartupFile = __DIR__.'/config.php';
   $sStartupFile = 'http://xxx.xxx.x.xx/wb/config.php';
   echo $sStartupFile;

==> Das ergibt die korrekte Ausgabe der Variablen $sStartupFile, so wie zuvor definiert. Und danach: "tried to read a nonexisting or not readable startup file [wb/config.php]!!"

Nutze ich statt dessen $sStartupFile = __DIR__.'/config.php'; ==> Ausgabe "/volume1/web/wb/config.php" Also wäre das die korrekte Definition.

Dann habe ich dieses echo noch eingefügt:

if (is_readable($sStartupFile)) { echo " Startupfile is readable";
        require($sStartupFile); echo "done";
    } else {
        die(
            'tried to read a nonexisting or not readable startup file ['
          . basename(dirname($sStartupFile)).'/'.basename($sStartupFile).']!!'
        );
    }


==> Ausgabe: "Startupfile is readable Exception: "Unknown database 'DB2'" >> Exception detected in: [/framework/class.database.php]"
Daraus schließe ich, das es bei der Zeile require($sStartupFile); hängen bleibt, denn das echo "done"; wird nicht ausgegeben, sondern statt dessen wird die Datenbank nicht gefunden.

Warum klappt der Datenbankzugriff mit einem anderen php-Skript, mit den WB-Skripten aber nicht? Die Frage kann vielleicht jemand beantworten, der sich mit den WB-eigenen Skripten besser auskennt, als ich?
LG Ludwig

Wissen ist Macht - aber nix wissen macht auch nix.

Gast

Quote from: LudwigStIch bekomme aber, obwohl ansonsten alles grün ist auf dem Installer-Bildschirm die Fehlermeldung: Error[055] no such file or directory
und den Hinweis: Please note: PHP Session Support may appear disabled if your browser does not support cookies.

Ich habe die Browsereinstellunge n überprüft: Cookies sind erlaubt. Ausserdem habe ich die IP noch extra bei "Cookies erlauben für" hinzugefügt.

Welches file oder directory wird denn da nicht gefunden???

Zum Hinweis: es ist, wie gesagt ein (allgemeiner) Hinweis, das Cookies erlaubt sein müssen, um die benötigte Session zu starten.
Ob das dann gelungen ist, sieht man ein paar Zeilen tiefer beim entsprechendem Feld PHP Session Support - rot oder grün, enabled oder disabled

Zur Fehler-Meldung: hier käme mehreres in Betracht, so z.b. der session_save_path, wie werden Cookies gespeichert, sind die vor-definierten Adressen der log-Dateien erreichbar (php-error.log, access.log, mysql usw usw usw). Man müßte sich wohl mit Kontrollausgaben an die Stelle im Script heran tasten, um hier mehr sagen zu können. Bei einem Online-Server kann man in aller Regel davon ausgehen, das er funktionierend konfiguriert ist, privat schaut das anders aus .
Wenn du dir in der Datei /install/index.php ganz oben als neue Zeile 2 ein echo einbaust, z.b. so

<?php  // die originale Zeile 1 der index.php
    
echo "Start index.php";
/*
 * Copyright (C)


und die Errormeldung erscheint über diesem echo, kommt die Meldung vom Server

Quotewahrscheinlich hast du auf deinem Livesystem im Ordner ckeditor/ckeditor/ 2 Dateien mit dem Namen CKEditor.php (klein- und großgeschrieben).

ein ähnliches Problem gab es auch im framework-Ordner, gerade, wenn man mit älteren Versionen arbeitet oder früher gearbeitet hat.
Im Zweifel, (wie auch beim CKEditor) den kompletten framework-Ordner leeren und aus dem dazu gehörigen WB-Paket neu "hoch"laden

paulchen

Nach dem Kopieren der groß geschriebenen php-Datei läuft alles perfekt.

Vielen herzlichen Dank für den Tipp.

paulchen

dbs

Hi, wahrscheinlich hast du auf deinem Livesystem im Ordner ckeditor/ckeditor/ 2 Dateien mit dem Namen CKEditor.php (klein- und großgeschrieben).
Bei der Übertragung zu Windows wurde CKEditor.php überschrieben mit der alten ckeditor.php, weil es unter Windows keine doppelten Dateinamen geben kann, egal wie geschrieben.

Lad dir die CKEditor.php nochnmal runter und überschreibe die kleingeschriebene oder lösche die vorher (auch auf livesystem).
[url="https://onkel-franky.de"]https://onkel-franky.de[/url]

paulchen

Angeregt durch diesen Thread habe ich auf meinem QNAP NAS ebenfalls eine Kopie meiner Webseite eingerichtet um Tests nicht auf dem Produktiv-System durchführen zu müssen.

Nach den ersten Eindrücken scheint fast alles (trotz PHP V. 5.6.38) zu funktionieren - es gibt nur eine Fehlermeldung, die mit mit dem CKEditor zusammenhängen:
Rufe ich die Backendseiten des Gästebuches oder des Kontaktformulars auf, erhalte ich die Fehlermeldung:


There was an uncatched exception
Error loading editor file CKEditor.php, please check configuration in line (90) of (/modules/ckeditor/include.php):


Hat jemand Ahnung, was man hier drehen muss, um die Seiten aufrufen zu können?

mfg
paulchen

LudwigSt

Also die richtigen Werte für die config.php habe ich mittlerweile hinbekommen. Die Werte meiner online php.ini habe ich mit der lokalen auf dem NAS verglichen und entsprechend angepaßt. Anfangs wurde wohl das cookie wb-installer nicht akzeptiert und nicht gespeichert, jetzt geht das auch.

Ich bekomme aber, obwohl ansonsten alles grün ist auf dem Installer-Bildschirm die Fehlermeldung: Error[055] no such file or directory
und den Hinweis: Please note: PHP Session Support may appear disabled if your browser does not support cookies.

Ich habe die Browsereinstellungen überprüft: Cookies sind erlaubt. Ausserdem habe ich die IP noch extra bei "Cookies erlauben für" hinzugefügt.

Welches file oder directory wird denn da nicht gefunden???
LG Ludwig

Wissen ist Macht - aber nix wissen macht auch nix.

hgs

Bei meinem NAS (synology) wird der Webserver ohne PortNr aufgerufen, nur wenn ich das NAS selber über WebUi konfiguriren will oder per WebDav drauf gehe, muß ich einen Port angeben.
Also im LAN http://lokale IP
und aus dem WAN http://dyndnsname
Da der MariaDB auf dem gleichen Server läuft ist es da localhost
LG Harald

"Fange nie an, aufzuhören - höre nie auf, anzufangen." Marcus Tullius Cicero (106-43 v.Chr.)

Gast

Ich sag es im Voraus - hab da null Erfahrungen mit NAS

aber grundsätzlich vielleicht...
schau, das du von einem Online-Server die php.ini anschauen und ggf kopieren kannst. Diese mußt du dann vergleichen mit den Einstellung in der NAS-eigenen php.ini

Analog gilt das auch wohl für andere Konfigurations-Dateien wie httpd.conf, httpd-vhosts.conf, httpd-ssl.conf usw.

LudwigSt

Ich habe jetzt alles gelöscht und noch einmal neu mit der aktuellen Version von WB probiert. Ausserdem habe ich PHP 7.2 noch installiert.
Damit kam ich dann in den ersten Bildschirm der Installtionsroutine.
DB_HOST habe ich 'localhost' genommen.

Dann kam die Fehlermeldung, das PHP keine Session speichern kann.
Ich habe dann den Wert für session.autostart bei PHP von 0 auf 1 geändert.
Nach Seiten-Reload war dann das Feld mit der Session-Unterstützung auf grün.
Aber beim Installieren kommen dann folgende Fehlermeldungen:
QuoteWarning: session_name(): Cannot change session name when session is active in /volume1/web/test/install/index.php on line 154

Warning: Cannot modify header information - headers already sent by (output started at /volume1/web/test/install/index.php:154) in /volume1/web/test/install/index.php on line 184

Was mache ich nun?
LG Ludwig

Wissen ist Macht - aber nix wissen macht auch nix.

LudwigSt

Hallo zusammen,

ich möchte eine Testinstalltion auf einem NAS machen, auf dem ein Webserver läuft. Apache Server 2.4, PHP 7.0 und MariaDB  10 sind installiert.
Die IP Adresse, unter der der Server zu erreichen ist ist z. B. https://xxx.xxx.x.xxx:443 - was muß ich jetzt in der config.php einstellen, damit das Ganze funktioniert?

Die Fehlermeldung lautet "Exception: "php_network_getaddresses: gethostbyname failed. errno=0" >> Exception detected in: [/framework/class.database.php]"
Die config.php sieht so aus:
<?php

define
('DB_TYPE''mysqli');
define('DB_HOST''https://xxx.xxx.x.xxx:443');
define('DB_NAME''DB123456');
define('DB_USERNAME''root');
define('DB_PASSWORD''password');
define('TABLE_PREFIX''wb_');

define('WB_URL''https://xxx.xxx.x.xxx:443');
define('ADMIN_DIRECTORY''admin');// no leading/trailing slash or backslash!! A simple directory name only!!
$referer $_SERVER['HTTP_REFERER'];
require_once(
dirname(__FILE__).'/framework/initialize.php');
// end of file -------------

LG Ludwig

Wissen ist Macht - aber nix wissen macht auch nix.