MariaDB: Keine PHP-Verbindung

Status
Für weitere Antworten geschlossen.

WilliamWallace

Benutzer
Mitglied seit
19. Okt 2017
Beiträge
4
Punkte für Reaktionen
0
Punkte
0
Guten Abend,
sorry, wenn das hier nicht das richtige Unterforum ist...

Folgendes: habe die DS216play. Habe mir die MariaDB installiert, mein Ziel war bzw. ist es, mir eine kleine Datenbankanwendung selbst zu programmieren. Mit PHP. Habe das früher mal gemacht. Musste heute zwar feststellen, der Code hat sich verändert, aber das ist jetzt mal Problem B. Ist nur ein Hobby.

Versuche mit folgende Connect-Zeile an die Datenbank heranzukommen

$session = mysqli_connect("localhost", "root", "", "datenbank");

Und schon hier muss der Fehler liegen; obwohl PHP-Engine, Datenbank usw. auf dem selben Gerät liegen, öffnet sich die Datenbank nicht. PHP selbst über den Webserver läuft.

Hat jemand hier Erfahrungen? Muss hier vielleicht noch etwas installiert werden? In einem anderen Forum ist von einem Adapter die Rede, was ich komplett nicht nachvollziehen kann.

Danke für die Hilfe!

Euer William
 

WilliamWallace

Benutzer
Mitglied seit
19. Okt 2017
Beiträge
4
Punkte für Reaktionen
0
Punkte
0
PHP 5.6 und 7, beide Pakete installiert; Maria DB5 und DB10, meine Datenbank läuft auf DB5.

Danke.
 

Snoopy0815de

Benutzer
Mitglied seit
12. Nov 2017
Beiträge
8
Punkte für Reaktionen
0
Punkte
0
Hallo
ich habe genau das gleiche Problem.
Nutze nur Maria DB10. PHP 5.6. Alle Extensions sind unter dem Webserver aktiviert.

Unbenannt.JPG

Mein Aufruf

<?php
$server = '127.0.0.1';
$db_port = '3307';
$user = 'root';
$passwort = 'xyz';
$database = 'test';
$file = '/volume1/web/23042017_log.csv';

$verbindung = new mysqli($server, $user, $passwort, $database, $db_port) or die ("Keine Verbindung möglich");
if($verbindung){
mysqli_select_db($database) or die ("Die Datenbank existiert nicht");

$sql = "LOAD DATA INFILE '$file'
INTO TABLE TABLE1
FIELDS TERMINATED BY ';'
ENCLOSED BY ''
LINES TERMINATED BY ';' ";

echo mysql_error();

if($sql){
$ergebnis = mysql_query($sql);
echo mysql_error();
}
}
?>

Als Fehlermeldung kommt

Standardausgabe/Fehler:
PHP Fatal error: Class 'mysqli' not found in /volume1/web/SQL_Import_CSV2.php on line 9

Fatal error: Class 'mysqli' not found in /volume1/web/SQL_Import_CSV2.php on line 9

Habe es auch schon mit Port 3306 versucht. Hier kommt auch der gleiche fehler.

Wäre dankbar für eure Unterstützung.

Gruß
 

Snoopy0815de

Benutzer
Mitglied seit
12. Nov 2017
Beiträge
8
Punkte für Reaktionen
0
Punkte
0
So geht es auch nicht
<?php
$server = '127.0.0.1';
$db_port = '3307';
$user = 'root';
$passwort = '90qwe890()=';
$database = 'test';
$file = '/volume1/web/23042017_log.csv';

$verbindung = mysqli_connect($server, $user, $passwort, $database, $db_port) or die ("Keine Verbindung möglich");
if($verbindung){
mysqli_select_db($database) or die ("Die Datenbank existiert nicht");

Hat niemand einen guten Rat für mich?
 

Tommi2day

Benutzer
Mitglied seit
24. Aug 2011
Beiträge
1.165
Punkte für Reaktionen
63
Punkte
68
Es sieht so aus, als ob die Extension nicht geladen ist. Einfach mal ein Script mit phpinfo(); erstellen und schauen, ob mysqli dort auftaucht.
 

Snoopy0815de

Benutzer
Mitglied seit
12. Nov 2017
Beiträge
8
Punkte für Reaktionen
0
Punkte
0
Hallo Tommi2day,

deine Vermutung ist richtig. Es erscheint nirgends etwas mit mysqli.
Habe das php aus dem Paket Zentrum heraus gestoppt und wieder gestartet. Leider ohne Erfolg.

Was kann ich noch tun um die Extensions zu laden?

Im phpmyAdmin wird es aber angezeigt.
Unbenannt.JPG
 

Tommi2day

Benutzer
Mitglied seit
24. Aug 2011
Beiträge
1.165
Punkte für Reaktionen
63
Punkte
68
Sagt denn phpinfo auch, das genau diese Version genommen wird? Oder ist es doch PHP7. Gewöhnlich sind beide Versionen drauf.
 

Snoopy0815de

Benutzer
Mitglied seit
12. Nov 2017
Beiträge
8
Punkte für Reaktionen
0
Punkte
0
Sorry habe mich mißverständlich ausgedrückt.
Bei der Ausgabe von phpinfo erscheint kein Eintrag mit mysqli.

Nur wenn ich im phpmyAdmin bei den Infos schaue steht es dort.
 

Lux007

Benutzer
Mitglied seit
08. Aug 2016
Beiträge
116
Punkte für Reaktionen
2
Punkte
18
Hallo!

Schau doch mal in

/usr/local/etc/php56/conf.d/webstation-extensions.ini (php5.6)

oder

/usr/local/etc/php70/conf.d/webstation-extensions.ini (php7.0)

Dort sind für den jeweilige PHP-Version die (aktiven) Extensions hinterlegt. Vieleicht klappt über die GUI das aktivieren nicht korrekt...

Gruß
Lux007
 

Tommi2day

Benutzer
Mitglied seit
24. Aug 2011
Beiträge
1.165
Punkte für Reaktionen
63
Punkte
68
Die Frage bezog sich darauf, welche PHP Version phpinfo im selben Kontext anzeigt, in dem auch das Script mit mysqli laufen soll, also Kommandozeile oder Webstation oder oder. Wenn man php von der Kommandozeile aufruft, bekommt man per default eine andere PHP-Version (5.6.11) als in der Webstation (5.6.31), das sind also 2 verschiedene PHP Installationen
 

Snoopy0815de

Benutzer
Mitglied seit
12. Nov 2017
Beiträge
8
Punkte für Reaktionen
0
Punkte
0
hier der Anfang von phpinfo

phpinfo()
PHP Version => 5.6.11

System => Linux Synology 2.6.32.12 #15217 Fri Nov 3 04:40:48 CST 2017 armv5tel
Build Date => Nov 3 2017 05:25:57
Server API => Command Line Interface
Virtual Directory Support => disabled
Configuration File (php.ini) Path => /etc/php
Loaded Configuration File => /etc/php/php.ini
Scan this dir for additional .ini files => (none)
Additional .ini files parsed => (none)
PHP API => 20131106
PHP Extension => 20131226
Zend Extension => 220131226
Zend Extension Build => API220131226,NTS
PHP Extension Build => API20131226,NTS
Debug Build => no
Thread Safety => disabled
Zend Signal Handling => disabled
Zend Memory Manager => enabled
Zend Multibyte Support => provided by mbstring
IPv6 Support => enabled
DTrace Support => disabled

Im Paket Zentrum zeigt es mir
Unbenannt.JPG

Jetzt stehe ich auf dem Schlauch ;-) Wieso das denn?
 

Snoopy0815de

Benutzer
Mitglied seit
12. Nov 2017
Beiträge
8
Punkte für Reaktionen
0
Punkte
0
@Lux007

in der Datei webstation-extensions.ini ist die mysqli aufgeführt.

In der php.ini zeigt es auf das Verzeichnis -> extension_dir = "/usr/local/lib/php56/modules"
dort gibt es aber keine *.so files.

Liegen diese wo anders ab?
 

Tommi2day

Benutzer
Mitglied seit
24. Aug 2011
Beiträge
1.165
Punkte für Reaktionen
63
Punkte
68
starte phpinfo bzw. Dein Script mit /usr/local/bin/php56 und alles wird gut
 

Lux007

Benutzer
Mitglied seit
08. Aug 2016
Beiträge
116
Punkte für Reaktionen
2
Punkte
18
Hallo!

Die PHP-Version und die Version in der Webstation sind leider verschieden. Die Einbindung in das allgemeine System sind leider nicht immer vorhanden (@Snoppy0815de: den Pfad von dir mit php56 gibt es bei meiner DS nicht :( )

Nimm für den Test mit PHP5.6 am besten:

/volume1/@appstore/PHP5.6/usr/local/bin/php56 (/volumeX/ ggf. anpassen, sollte bei dir aber passen!).

Für PHP7 musst du auf der Console auch noch eine Config-Datei angeben (Muster):

/volume1/@appstore/PHP7.0/usr/local/bin/php70 -c /usr/syno/etc/packages/WebStation/php70/conf.d/user_settings.ini -f /var/services/web/test.php

(Volumen ggf. anpassen. Hinter -f kommt der Pfad zur PHP-Datei)

Gruß
Lux007
 

Snoopy0815de

Benutzer
Mitglied seit
12. Nov 2017
Beiträge
8
Punkte für Reaktionen
0
Punkte
0
:cool:

Vielen, Vielen Dank.
Ich bin auf php7 umgestiegen und habe dein Beispiel mit

/volume1/@appstore/PHP7.0/usr/local/bin/php70 -c /usr/syno/etc/packages/WebStation/php70/conf.d/user_settings.ini -f /var/services/web/test.php

verwendet.
Damit baut er nun die Verbindung zur Datenbank auf.

Ohne eure Hilfe wäre ich nie darauf gekommen.
Danke
 

Fusion

Benutzer
Sehr erfahren
Mitglied seit
06. Apr 2013
Beiträge
14.137
Punkte für Reaktionen
898
Punkte
424
/usr/local/bin/php56 ist auch nur ein symbolische Link zu /var/packages/PHP5.6/target/usr/local/bin/php56
/var/packages/PHP5.6/target wiederum ein symbolischer Link nach /volume1/@appstore/PHP5.6

Nur der Vollständigkeit halber.
 

Wiesel789

Benutzer
Mitglied seit
21. Feb 2018
Beiträge
9
Punkte für Reaktionen
0
Punkte
0
Hallo, ich habe das selbe Problem und versuche schon seit Tagen es zu lösen. Ich habe mein Problem hier auch schon an einer anderen Stelle gepostet:

http://www.synology-forum.de/showthread.html?84356-Class-mysqli-not-found/page2&highlight=mysqli (ziemlich weit unten)

Ich habe in euren Ausführungen nicht verstanden wie man das Script unter Verwendung von z.B.

/volume1/@appstore/PHP7.0/usr/local/bin/php70 -c /usr/syno/etc/packages/WebStation/php70/conf.d/user_settings.ini -f /var/services/web/test.php

starten kann. Muss ich hier irgend etwas auf der Console eingeben, oder kann ich die Pfade in meinem PHP-Skript mit angeben?

Sorry, ich habe erst vor einigen Tagen begonnen mir PHP beizubringen. Alles funktionierte -auch der Datenbankaufruf- bis dieser Fehler kam: "Call to undefined function mysqli_connect()"

Viele Grüße

Andreas
 

Fusion

Benutzer
Sehr erfahren
Mitglied seit
06. Apr 2013
Beiträge
14.137
Punkte für Reaktionen
898
Punkte
424
@Wiesel789 - den hier auch schon gelesen?
http://www.synology-forum.de/showth...indung-zur-Datenbank-(MariaDB-10-aus-PHP-5-6)
http://www.synology-forum.de/showthread.html?87674-Datenbankzugriff-via-PHP-auf-MySQL-Datenbank

Da man sich in Bash Scripten (um die geht es meist hier auch also per Bash php-Scripte aufrufen, nicht unbedingt um aus PHP Scripten etwas aufzurufen) PFAD/Umgebungs Variablen setzen kann und dann mit "php70" auskommen würde, gehe ich stark davon aus, dass das unter PHP ebenfalls machbar ist.
 
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