MariaDB: Keine PHP-Verbindung

  • Ab sofort steht euch hier im Forum die neue Add-on Verwaltung zur Verfügung – eine zentrale Plattform für alles rund um Erweiterungen und Add-ons für den DSM.

    Damit haben wir einen Ort, an dem Lösungen von Nutzern mit der Community geteilt werden können. Über die Team Funktion können Projekte auch gemeinsam gepflegt werden.

    Was die Add-on Verwaltung kann und wie es funktioniert findet Ihr hier

    Hier geht es zu den Add-ons

Status
Für weitere Antworten geschlossen.

WilliamWallace

Benutzer
Registriert
19. Okt. 2017
Beiträge
4
Reaktionspunkte
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
 
PHP 5.6 und 7, beide Pakete installiert; Maria DB5 und DB10, meine Datenbank läuft auf DB5.

Danke.
 
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ß
 
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?
 
Es sieht so aus, als ob die Extension nicht geladen ist. Einfach mal ein Script mit phpinfo(); erstellen und schauen, ob mysqli dort auftaucht.
 
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
 
Sagt denn phpinfo auch, das genau diese Version genommen wird? Oder ist es doch PHP7. Gewöhnlich sind beide Versionen drauf.
 
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.
 
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
 
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
 
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?
 
@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?
 
starte phpinfo bzw. Dein Script mit /usr/local/bin/php56 und alles wird gut
 
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
 
: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
 
/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.
 
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
 
@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