ubuntuusers.de

Ubuntu Server 17.10 PhP7.1 Connect MSSQL Datenbank!

Status: Gelöst | Ubuntu-Version: Ubuntu 16.04 (Xenial Xerus)
Antworten |

Nice_Stuff

Anmeldungsdatum:
29. November 2018

Beiträge: Zähle...

Hallo Leute, bin neu hier und hab gleich mal ein Problem 😀

Gleich vor Weg, Server sind nicht mein Ding und das Einrichten schon gar nicht. Habe es zwar schon gemacht, aber wie ich das gemacht habe, weiß ich manchmal selbst nicht mehr.

Ich habe bislang zwei Server zum lauffen bekommen:

1. Windows 7 mit einem Xampp PHP 5.6 und einer MySql Datenbak 2. Ubuntu Server 15.10 PhP 5.6 MySql Datenbank, PhpMyAdmin, Curl usw.

Beide Systeme haben einen Connect zu einer externer MSSQL Server 2012 Datenbank unter Windows 7

Xampp greift über den sqlsrv_connect auf die Datenbank zu und der ubuntu Server ist es ein mssql_connect.

Nun zu meiner neuen Aufgabe, an der ich so langsam verzweifle.

Ich möchte gerne das gesamte System auf den neusten Stand bringen und alles uner einem neuen Server (HP ILO4) zusammenfassen.

Meine Überlegung daher ein Ubuntu 17.10 oder 18, eine PHP7.1 oder 7.2 usw.

Ich habe nun schon mehrfach versucht den Connect von dem Ubuntu Server 17.10 zu dem MSSQL Server herzustellen, ober das klappt nicht.

Ich weiß nicht mal, wie ich den richtigen Treiber finde. Suche mich schon im Netz wund, aber da ist so viel erklärt, das mir so langsam der Kopf glüht...

Hat jemand Lust und Zeit mir zu helfen. Ich komme einfach nicht vorwärts und es frustriert auch da ich meine eigenliche Arbeit das Programmieren solange hinten anstellen muss...

Hier mal das Installationsprotokol:

1. Ubuntu 17.10 server installiert

2. Statische IP setzen

sudo nano /etc/netplan/*.yaml
network: version: 2
renderer: networkd
ethernets:eno1:
dhcp4: no
dhcp6: no
addresses: [192.168.2.75/24]
gateway4: 192.168.2.1
nameservers:
addresses: [8.8.8.8,8.8.4.4]
sudo netplan --debug apply
sudo netplan apply

3. Installieren von PHP 7.1

sudo apt add-apt-repository ppa:ndrej/php
sudo apt-get update
sudo apt-get -y install php7.1 mcrypt php7.1-mcrypt php-mbstring php-pear php7.1-dev php7.1-xml

4. Installieren FTP und Rechte Install FTP

sudo apt-get install vsftpd
sudo nano /etc/vsftpd.conf --> write_enable=YES local_unmask=022

User Rechte vergeben

sudo adduser $USER www-data
sudo chown $USER:www-data -R /var/www/
sudo chmod u=rwX,g=srX,o=rX -R /var/www/

5. Install Microsoft ODBC Driver 17 for SQL Server requirements

sudo su
curl https://packages.microsoft.com/keys/microsoft.asc | apt-key add -
curl https://packages.microsoft.com/config/ubuntu/17.10/prod.list > /etc/apt/sources.list.d/mssql-release.list

exit

sudo apt-get update
sudo ACCEPT_EULA=Y apt-get install msodbcsql17
sudo ACCEPT_EULA=Y apt-get install mssql-tools
echo 'export PATH="$PATH:/opt/mssql-tools/bin"' >> ~/.bash_profile
echo 'export PATH="$PATH:/opt/mssql-tools/bin"' >> ~/.bashrc
source ~/.bashrc
sudo apt-get install unixodbc-dev

6. Copy und Activieren des Treibers

php_sqlsrv_71_nts.so ins verzeichnis /usr/lib/php/20160303/

echo "extension=php_sqlsrv_71_nts.so" | sudo tee -a /etc/php/7.1/cli/php.ini > /dev/null
--------------------------------------------------------------------------------------------


php -m
Der Treiber wird geladen

Nun der Verbindungsaufbau über php:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
define("ILS_HOST","192.168.2.70\JTLWAWI");
define("ILS_NAME","Mandant_2");
define("ILS_USER","sa");
define("ILS_PASS","******");

$connectionInfo = array('Database'=>ILS_NAME,'UID'=>ILS_USER,'PWD'=> ILS_PASS);
$conn1 = sqlsrv_connect(ILS_HOST, $connectionInfo);

if( $conn1 === false ){
          echo "Could not connect.\n";
          echo "<pre>";
          die( print_r( sqlsrv_errors(), true));
          echo "</pre>";
        }
        else{
            echo "Connection Online";
}

ERROR:

sql
Array ( [0] => Array ( [0] => HYT00 [SQLSTATE] => HYT00 [1] => 0 [code] => 0 [2] => [unixODBC][Microsoft][ODBC Driver 17 for SQL Server]Login timeout expired [message] => [unixODBC][Microsoft][ODBC Driver 17 for SQL Server]Login timeout expired ) [1] => Array ( [0] => 08001 [SQLSTATE] => 08001 [1] => 258 [code] => 258 [2] => [unixODBC][Microsoft][ODBC Driver 17 for SQL Server]TCP Provider: Error code 0x102 [message] => [unixODBC][Microsoft][ODBC Driver 17 for SQL Server]TCP Provider: Error code 0x102 ) [2] => Array ( [0] => 08001 [SQLSTATE] => 08001 [1] => 258 [code] => 258 [2] => [unixODBC][Microsoft][ODBC Driver 17 for SQL Server]A network-related or instance-specific error has occurred while establishing a connection to SQL Server. Server is not found or not accessible. Check if instance name is correct and if SQL Server is configured to allow remote connections. For more information see SQL Server Books Online. [message] => [unixODBC][Microsoft][ODBC Driver 17 for SQL Server]A network-related or instance-specific error has occurred while establishing a connection to SQL Server. Server is not found or not accessible. Check if instance name is correct and if SQL Server is configured to allow remote connections. For more information see SQL Server Books Online. ) )

An dem Punkt geht es für mich nicht weiter. Die beiden Anderen Server kommen auf die Datenbank.

Was hab ich vergessen, nicht beachtet oder falsch konfiguriert.

Danke für eure Unterstützung

(Nur am Rande: Ich habe dieses Thema bereits in einem Anderen Forum eingestellt, leider kommt da nix, und der Bitte um Schließung des Thema's wird auch nicht entsprochen. Daher bitte nicht als Cross oder Doppelpositg verstehen.)

Bearbeitet von Taomon:

Bißchen mit Forensyntax gespielt

Moderiert von Taomon:

Sichtbar gemacht und hoffentlich passender verschoben.

tomtomtom Team-Icon

Supporter
Avatar von tomtomtom

Anmeldungsdatum:
22. August 2008

Beiträge: 55427

Wohnort: Berlin

Ubuntu 15.10 wird seit Juli 2016 nicht mehr unterstützt, 17.10 seit Juli 2018. Server damit zu betreiben ist also schlicht völlig verantwortungslos.

Installiere eine Version, die noch Support hat...

Nice_Stuff

(Themenstarter)

Anmeldungsdatum:
29. November 2018

Beiträge: 7

Lach, danke für den Hinweis, aber was hat das jetzt mit meiner Problemstellung zu tun.

Ob nun die 17er oder 18er, ich benötige Hilfe bei dem Connect.

Ich denke das es unter Ubuntu Server V 17. sich nicht viel anders Verhält als unter 18.

Und ja, da es sich hierbei um ein Intranet Server handelt, ist die 15er sicher uralt, läuft aber.

Daher ja die Bitte um Unterstützung für die 17er bzw. 18er Version.

Hab kein Problem damit das ganze auch auf der neusten Version lauften zu lassen...

seahawk1986

Anmeldungsdatum:
27. Oktober 2006

Beiträge: 11260

Wohnort: München

Nice_Stuff schrieb:

Lach, danke für den Hinweis, aber was hat das jetzt mit meiner Problemstellung zu tun.

Erst einmal bekommst du PHP 7.2 mit Ubuntu 18.04 ohne auf ein PPA zurückgreifen zu müssen.

Ob nun die 17er oder 18er, ich benötige Hilfe bei dem Connect.

Dann überleg dir mal, wie man einen Backslash in einem von doppelten Anführungszeichen umschlossenen PHP-String escapen muss: https://secure.php.net/manual/de/language.types.string.php#language.types.string.syntax.double

Ich denke das es unter Ubuntu Server V 17. sich nicht viel anders Verhält als unter 18.

Du installierst PHP 7.1, laut Microsoft/msphpsql brauchst du für die aktuelle Version auf unixoiden Systemen PHP 7.2 oder höher. Ich würde beim Entwickeln einer Lösung für eine Migration nicht noch zusätzlichen Aufwand durch die Verwendung obsoleter Versionen von Ubuntu, PHP usw. generieren.

cflinux

Anmeldungsdatum:
14. Januar 2013

Beiträge: 685

Hallo

schau mal diese Seite an https://docs.microsoft.com/de-de/sql/connect/odbc/linux-mac/installing-the-microsoft-odbc-driver-for-sql-server?view=sql-server-2017 das sollte dir mit dem Treiber weiter helfen.

Gruß cflinux

Nice_Stuff

(Themenstarter)

Anmeldungsdatum:
29. November 2018

Beiträge: 7

seahawk1986 schrieb:

Erst einmal bekommst du PHP 7.2 mit Ubuntu 18.04 ohne auf ein PPA zurückgreifen zu müssen.

Danke für den Hinweis

Dann überleg dir mal, wie man einen Backslash in einem von doppelten Anführungszeichen umschlossenen PHP-String escapen muss: https://secure.php.net/manual/de/language.types.string.php#language.types.string.syntax.double

Ich hab den Server Name String mal geändert in = $serverName = "192.168.2.70\\JTLWAWI";

Du installierst PHP 7.1, laut Microsoft/msphpsql brauchst du für die aktuelle Version auf unixoiden Systemen PHP 7.2 oder höher. Ich würde beim Entwickeln einer Lösung für eine Migration nicht noch zusätzlichen Aufwand durch die Verwendung obsoleter Versionen von Ubuntu, PHP usw. generieren.

OK, vielen dank. Dann muss ich sicher auch den entsprechenden php Treiber 7.2 verwenden, oder?

cfinux:

schau mal diese Seite an https://docs.microsoft.com/de-de/sqlql-server-2017 das sollte dir mit dem Treiber weiter helfen.

#Ubuntu 17.10 curl https://packages.microsoft.com/config/ubuntu/17.10/prod.list > /etc/apt/sources.list.d/mssql-release.list

Ist dieser Treiber wirklich der Richtige, um auf eine externe SQL Server 2012 Datenbank zuzugreifen???

Nur das wir uns richtig verstehen, es geht nicht darum auf dem Ubuntu Server(IP 192.168.2.75) auf die interne MSSQL Datenbank zu gelangen, sondern per PHP vom Ubuntu Server Daten extern (SQL Server 2012 Datenbank IP:192.168.2.70) abzufragen...

Ich komm leider etwas durcheinander mit der Installation. Und das sind sicher die richtig dummen fragen meinerseits. Was braucht man eigentlich und was nicht... bin da nicht gut drin...sorry

cflinux

Anmeldungsdatum:
14. Januar 2013

Beiträge: 685

Hallo

Ohne einen Treiber wirst du dich zu keinem SQL-Server verbinden können, selbst für mysql hast du einen Treiber installiert. Das ist ein Link direkt zu einem Treiber https://packages.microsoft.com/ubuntu/18.04/prod/pool/main/m/msodbcsql17/ für Ubuntu 18.

Gruß cflinux

Nice_Stuff

(Themenstarter)

Anmeldungsdatum:
29. November 2018

Beiträge: 7

Hallo, ja das ist mir klar, wie mehrfach erwähnt... ist einfach nicht meine Baustelle.

Wäre irgendwer oder sogar du cflinux bereit mir ein Installationsanleitung für die gewünschte Funktion zur Verfügung zu stellen?

Ich stochere hier echt im Dunkeln was das angeht und verliere dabei Zeit, die ich wo anders besser einsetzten kann.

Selbstverständlich soll das nicht umsonst sein. Meine Firma würde die Kosten dafür übernehmen...

Hier mal die wichtigsten Funktionen: -Ubuntu Server 18 (neuste Version) -PHP 7.2 -Mysql-Datenbank -CURL -FTP Zugang -Freigabe chmod 777 auf dem Verzeichnis /var/www/ -phpmyadmin

- !!! Und das wichtigste der Treiber für den Connct zum externen Server, falls benötigt der Port für den Server ist 50292

MFG Oliver

Nice_Stuff

(Themenstarter)

Anmeldungsdatum:
29. November 2018

Beiträge: 7

Ok, ich habe das mit dem sqlsrv Treiber nicht hinbekommen und mich für für die Variante

sudo apt-get install php7.1-pdo-dblib

entschieden.

Funktioniert einwandfrei.

Danke noch mal an alle.

Gruß Oliver

Antworten |