DarkSilver
Anmeldungsdatum: 27. Mai 2009
Beiträge: 166
Wohnort: Koblenz
|
Hallo Community, vielleicht hat hier jemand eine Idee, wo ich noch suchen könnte.
Ich migriere unseren alten Nagios Server (Ubuntu 18.04) auf einen frisch installiertes Ubuntu 22.04 (dieses mal mit omd, falls diese Info wichtig sein sollte).
Das Meiste ich auch schon geschafft, aber es gibt noch diverse Checks, welche angepasst werden müssen. An dem Check für Veeam Backups beiße ich mir derzeit allerdings die Zähne aus. So schaut der Check auf dem alten System aus:
| check_veeam.php -H 192.168.20.22 -u MonitoringUser -p MonitoringUserPassword -j "Backup Job Daily 2020"
OK - 1/1 finished successful
Job 'Backup Job Daily 2020' has last result OK
|
Und so auf dem neuen System: | check_veeam.php -H 192.168.20.22 -u MonitoringUser -p MonitoringUserPassword -j "Backup Job Daily 2020"
UNKNOWN - No DB connection established with tried drivers: mssql:, dblib:version=8.0;charset=UTF-8;, sybase:
|
Beide Server stehen im gleichen Netz, beide haben Zugriff auf den Zielhost (via eines VPN Tunnels), dennoch erhalte ich unterschiedliche Ergebnisse.
Ich habe bereits die installierten SQL Pakete verglichen Alt
| dpkg -l | grep sql
ii libaprutil1-dbd-sqlite3:amd64 1.6.1-2ubuntu0.1 amd64 Apache Portable Runtime Utility Library - SQLite3 Driver
ii libdbd-mysql:amd64 0.9.0-5ubuntu2 amd64 MySQL database server driver for libdbi
ii libdbd-mysql-perl 4.046-1 amd64 Perl5 database interface to the MariaDB/MySQL database
ii libmysqlclient20:amd64 5.7.42-0ubuntu0.18.04.1 amd64 MySQL database client library
ii libsqlite3-0:amd64 3.22.0-1ubuntu0.7 amd64 SQLite 3 shared library
ii mysql-common 5.8+1.0.4 all MySQL database common files, e.g. /etc/mysql/my.cnf
|
Neu
| dpkg -l | grep sql
ii libaprutil1-dbd-sqlite3:amd64 1.6.1-5ubuntu4.22.04.2 amd64 Apache Portable Runtime Utility Library - SQLite3 Driver
ii libdbd-mysql-perl:amd64 4.050-5ubuntu0.22.04.1 amd64 Perl5 database interface to the MariaDB/MySQL database
ii libmysqlclient21:amd64 8.0.35-0ubuntu0.22.04.1 amd64 MySQL database client library
ii libsqlite3-0:amd64 3.37.2-2ubuntu0.1 amd64 SQLite 3 shared library
ii mysql-common 5.8+1.0.8 all MySQL database common files, e.g. /etc/mysql/my.cnf
ii php-sqlite3 2:8.1+92ubuntu1 all SQLite3 module for PHP [default]
ii php8.1-sqlite3 8.1.2-1ubuntu2.14 amd64 SQLite3 module for PHP
|
Hat jemand ne Idee was mir noch fehlen könnte?
|
sh4711
Anmeldungsdatum: 13. Februar 2011
Beiträge: 1092
|
dpkg -l | grep sql zeigt dir nicht zwingend die Treiber/Bibliotheken deines MS-SQL-Treibers an. Bsp.: Wenn du FreeTDS verwenden würdest, so würde dieser, mit deinem Befehl, nicht mit aufgelistet werden. Aus deiner Ausgabe kann ich auch aktuell keinen Treiber für einen MS-SQL-Server ausmachen. Weder auf dem Alten- noch auf dem Neuen-System. Du hast aber einen MS-SQL Server Treiber installiert, sonst würde nicht die Meldung kommen "...tried drivers: mssql:, dblib:version=8.0;charset=UTF-8;...".
Prüfe bitte welchen Treiber du auf dem Alten- bzw. auf dem Neuen-System verwendest. Wenn beide gleich sind, prüfe bitte die Konfigurationsdateien. Oftmals muss man hier etwas mit den Versionen bzw. Protokollversionen spielen bis es klappt (siehe exemplarisch ODBC-Datenquellen einrichten (Abschnitt „Beispiel-Microsoft-SQL-Server-Datenbank“)) Versuche mit dem Programm deiner Wahl (z.B. isql) auf den MS-SQL Server zuzugreifen. Ggf. bekommst du aussagekräftigere Meldungen bzw. spiele so lange mit den Konfigdateienparametern, bis es klappt.
|
sh4711
Anmeldungsdatum: 13. Februar 2011
Beiträge: 1092
|
sh4711 schrieb: Wenn du sudo strace -f -t -e trace=file SQLProgramm_deiner_Wahl ausführst bekommst du, sofern es ein Terminalprogramm ist, eine überschaubare Liste (ca. 20 Stk.) der Bibliotheken/Treiber, welche beim Start des Programms aufgerufen werden. Darunter auch jene, welche zum kontaktieren des MSSQL-Server notwendig sind. Aus dieser Liste der Bibliotheken musst du die Bibliothek heraussuchen, mit deren Hilfe auf den MSSQL-Server zugegriffen wird. D.h. unklare Bibliotheken z.B. googeln. Dann hast du den Treiber und du kannst prüfen, wie die INI-Datei auszusehen hat. Beispiel mit isql:
sudo strace -f -t -e trace=file isql mymssqlserver mysqlserverusername mysqlserverusernamepassword
Könnte unter anderen folgende Zeile liefern:
12:52:02 openat(AT_FDCWD, "/usr/lib/x86_64-linux-gnu/odbc/libtdsodbc.so", O_RDONLY|O_CLOEXEC) = 3
|
DarkSilver
(Themenstarter)
Anmeldungsdatum: 27. Mai 2009
Beiträge: 166
Wohnort: Koblenz
|
Also erst einmal vielen Dank für Deine Antworten. Der Hinweis mit ISQL hat mich schon mal ein wenig weiter gebracht.
Zumindest ergab ein auf dem alten Server eine Ausgabe, auf dem neuen nicht. Daraufhin habe ich nach isql gesucht und festgestellt dass mir noch ein paar php-Pakete gefehlt haben wie z. B. php-db, php-sysbase, unixodbc, php-cli und php-curl. Das Skript spuckt jetzt zumindest eine andere Fehlermeldung aus 🙄 also immerhin ein progress ☺
Darüber hinaus waren zuvor noch 44 Checks auf dem Status "Unknown", jetzt sind es nur noch 10. Die anderen zeigen jetzt Timeouts o.ä. an, dem muss ich dann gesondert nachgehen. | ./check_veeam.php -H 192.168.20.22 -u monitoring -p ******* -j "Backup Job Daily 2020"
UNKNOWN - DB connect error: PDOException: SQLSTATE[01002] Adaptive Server connection failed (192.168.20.22) (severity 9) in /opt/omd/sites/nagios/local/lib/nagios/BITIT/check_veeam.php:220
Stack trace:
#0 /opt/omd/sites/nagios/local/lib/nagios/BITIT/check_veeam.php(220): PDO->__construct()
#1 {main}
|
Hier noch die Ausgabe von strace auf dem alten Server 1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47 | sudo strace -f -t -e trace=file isql 192.168.20.22 monitoring *******
18:04:25 execve("/usr/bin/isql", ["isql", "192.168.20.22", "monitoring", "********"], 0x7fffa17f78e8 /* 14 vars */) = 0
18:04:25 access("/etc/ld.so.nohwcap", F_OK) = -1 ENOENT (No such file or directory)
18:04:25 access("/etc/ld.so.preload", R_OK) = -1 ENOENT (No such file or directory)
18:04:25 openat(AT_FDCWD, "/etc/ld.so.cache", O_RDONLY|O_CLOEXEC) = 3
18:04:25 access("/etc/ld.so.nohwcap", F_OK) = -1 ENOENT (No such file or directory)
18:04:25 openat(AT_FDCWD, "/usr/lib/x86_64-linux-gnu/libodbc.so.2", O_RDONLY|O_CLOEXEC) = 3
18:04:25 access("/etc/ld.so.nohwcap", F_OK) = -1 ENOENT (No such file or directory)
18:04:25 openat(AT_FDCWD, "/lib/x86_64-linux-gnu/libreadline.so.7", O_RDONLY|O_CLOEXEC) = 3
18:04:25 access("/etc/ld.so.nohwcap", F_OK) = -1 ENOENT (No such file or directory)
18:04:25 openat(AT_FDCWD, "/lib/x86_64-linux-gnu/libpthread.so.0", O_RDONLY|O_CLOEXEC) = 3
18:04:25 access("/etc/ld.so.nohwcap", F_OK) = -1 ENOENT (No such file or directory)
18:04:25 openat(AT_FDCWD, "/lib/x86_64-linux-gnu/libc.so.6", O_RDONLY|O_CLOEXEC) = 3
18:04:25 access("/etc/ld.so.nohwcap", F_OK) = -1 ENOENT (No such file or directory)
18:04:25 openat(AT_FDCWD, "/usr/lib/x86_64-linux-gnu/libltdl.so.7", O_RDONLY|O_CLOEXEC) = 3
18:04:25 access("/etc/ld.so.nohwcap", F_OK) = -1 ENOENT (No such file or directory)
18:04:25 openat(AT_FDCWD, "/lib/x86_64-linux-gnu/libtinfo.so.5", O_RDONLY|O_CLOEXEC) = 3
18:04:25 access("/etc/ld.so.nohwcap", F_OK) = -1 ENOENT (No such file or directory)
18:04:25 openat(AT_FDCWD, "/lib/x86_64-linux-gnu/libdl.so.2", O_RDONLY|O_CLOEXEC) = 3
18:04:25 openat(AT_FDCWD, "/usr/lib/locale/locale-archive", O_RDONLY|O_CLOEXEC) = 3
18:04:25 openat(AT_FDCWD, "/etc/odbcinst.ini", O_RDONLY) = 3
18:04:25 openat(AT_FDCWD, "/root/.odbcinst.ini", O_RDONLY) = -1 ENOENT (No such file or directory)
18:04:25 openat(AT_FDCWD, "/etc/odbcinst.ini", O_RDONLY) = 3
18:04:25 openat(AT_FDCWD, "/root/.odbcinst.ini", O_RDONLY) = -1 ENOENT (No such file or directory)
18:04:25 openat(AT_FDCWD, "/etc/nsswitch.conf", O_RDONLY|O_CLOEXEC) = 3
18:04:25 openat(AT_FDCWD, "/etc/ld.so.cache", O_RDONLY|O_CLOEXEC) = 3
18:04:25 access("/etc/ld.so.nohwcap", F_OK) = -1 ENOENT (No such file or directory)
18:04:25 openat(AT_FDCWD, "/lib/x86_64-linux-gnu/libnss_compat.so.2", O_RDONLY|O_CLOEXEC) = 3
18:04:25 openat(AT_FDCWD, "/etc/ld.so.cache", O_RDONLY|O_CLOEXEC) = 3
18:04:25 access("/etc/ld.so.nohwcap", F_OK) = -1 ENOENT (No such file or directory)
18:04:25 openat(AT_FDCWD, "/lib/x86_64-linux-gnu/libnss_nis.so.2", O_RDONLY|O_CLOEXEC) = 3
18:04:25 access("/etc/ld.so.nohwcap", F_OK) = -1 ENOENT (No such file or directory)
18:04:25 openat(AT_FDCWD, "/lib/x86_64-linux-gnu/libnsl.so.1", O_RDONLY|O_CLOEXEC) = 3
18:04:25 access("/etc/ld.so.nohwcap", F_OK) = -1 ENOENT (No such file or directory)
18:04:25 openat(AT_FDCWD, "/lib/x86_64-linux-gnu/libnss_files.so.2", O_RDONLY|O_CLOEXEC) = 3
18:04:25 openat(AT_FDCWD, "/etc/passwd", O_RDONLY|O_CLOEXEC) = 3
18:04:25 openat(AT_FDCWD, "/root/.odbc.ini", O_WRONLY|O_CREAT|O_APPEND, 0666) = 3
18:04:25 openat(AT_FDCWD, "/root/.odbc.ini", O_RDONLY) = 3
18:04:25 openat(AT_FDCWD, "/etc/odbc.ini", O_RDONLY) = 3
18:04:25 openat(AT_FDCWD, "/etc/odbc.ini", O_RDONLY) = 3
18:04:25 openat(AT_FDCWD, "/etc/passwd", O_RDONLY|O_CLOEXEC) = 3
18:04:25 openat(AT_FDCWD, "/root/.odbc.ini", O_WRONLY|O_CREAT|O_APPEND, 0666) = 3
18:04:25 openat(AT_FDCWD, "/root/.odbc.ini", O_RDONLY) = 3
18:04:25 openat(AT_FDCWD, "/etc/odbc.ini", O_RDONLY) = 3
18:04:25 openat(AT_FDCWD, "/etc/odbc.ini", O_RDONLY) = 3
[ISQL]ERROR: Could not SQLConnect
18:04:25 +++ exited with 1 +++
|
Ich werde da ehrlich gesagt nicht sehr schlau draus. Aber da am Ende "ISQL ERROR: Could not SQLConnect" steht, vermute ich mal dass dies nicht der Treiber ist, welcher auch verwendet wird, oder? Das Skript für den Nagios Check scheint auch selbst geschrieben zu sein von einem Kollegen, der schon lange nicht mehr hier arbeitet. Leider bin ich kein Coder. Aber vielleicht hilft der Inhalt des Skriptes ja weiter: 1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260 | #!/usr/bin/php -q
<?php
define('OK', 0);
define('WARNING', 1);
define('CRITICAL', 2);
define('UNKNOWN', 3);
$arrErrorMessages = array(
OK => 'OK',
WARNING => 'WARNING',
CRITICAL => 'CRITICAL',
UNKNOWN => 'UNKNOWN',
);
$intReturn = OK;
/**
* Functions
*/
function usage($strErrorMessage=""){
$strErrorMessage = "$strErrorMessage\n
check_veeam - 0.1 - 2012-06-25
by O. Hirsch (o.hirsch@bit-it.com)
This plugin checks Veeam backup jobs via MSSQL
[Usage]
{$_SERVER['PHP_SELF']} -H <DB_ip/host> [-D <DB_name>]
-u <DB_username> -p <DB_password>
-j <job_name>[,<job_name>[,...]]
[-v]
[Options]
-H Define the IP/Hostname of the Veeam MS SQL Server
-D Define the DB name (default: VeeamBackup)
-u Username to login to DB
-p Password for DB access
-j Comma separated list of jobs names to check for last run result
-v Enable more detailed information (verbose)
[Example]
{$_SERVER['PHP_SELF']} -H 1.2.3.4 -u username -p password -j Daily,\"Another Job\",Job3
";
end_code(UNKNOWN, $strErrorMessage);
}
function end_code($intCode,$strMessage="") {
global $arrErrorMessages;
echo $arrErrorMessages[$intCode];
if( !empty($strMessage) ) {
echo " - $strMessage\n";
}
exit($intCode);
}
function setReturn($intSet) {
global $intReturn;
//If new return should be UNKNOWN and we have already a WARNING or CRITICAL...
if( $intSet==UNKNOWN AND $intReturn!=OK AND $intReturn!=UNKNOWN ) {
//...don't set new return value but simply leave that function
return $intReturn;
}
//If return is UNKNOWN and we want to set a WARNING or CRITICAL...
if( $intReturn==UNKNOWN AND $intSet!=OK AND intSet!=UNKNOWN ) {
//...set the return to the set value
$intReturn = $intSet;
}
//Set return to the higher value from new and already set
$intReturn = max($intSet,$intReturn);
return $intReturn;
}
function verbose($strVerbose) {
global $boolVerbose;
$boolVerbose ? print($strVerbose) : NULL;
}
function convertBinToMSSQLGuid($binguid)
{
$unpacked = unpack('Va/v2b/n2c/Nd', $binguid);
return sprintf('%08X-%04X-%04X-%04X-%04X%08X', $unpacked['a'], $unpacked['b1'], $unpacked['b2'], $unpacked['c1'], $unpacked['c2'], $unpacked['d']);
}
function checkjobs($strJobList,&$intJobCnt,&$intSuccessCnt,&$intJobWarning,&$intJobCritical) {
global $arrMessages, $pdoDB;
if( is_array($arrJobs=explode(',',$strJobList)) AND count($arrJobs) ) {
foreach( $arrJobs AS $strJob ) {
$intJobCnt++;
$q = "
SELECT latest_result, [Backup.Model.JobSessions].progress, [Backup.Model.JobSessions].id AS latest_session, [WmiServer.JobsView].id as id
FROM [WmiServer.JobsView]
LEFT JOIN [Backup.Model.JobSessions] ON [Backup.Model.JobSessions].job_id = [WmiServer.JobsView].id
AND creation_time = (SELECT MAX(creation_time) FROM [Backup.Model.JobSessions] WHERE job_id = [WmiServer.JobsView].id)
WHERE name = ".$pdoDB->quote($strJob)."
";
if( !$pdoStmt = $pdoDB->query($q) ) {
usage('Query for job "'.$strJob.'" failed: '.$pdoDB->errorInfo()[2]);
}
if( !$pdoStmt->rowCount() ) {
setReturn(UNKNOWN);
$arrMessages[] = "Job '$strJob' has no results";
} else {
$d = $pdoStmt->fetch();
$boolOK=false;
if( $d['progress'] !== '100' AND $d['progress'] !== 100 ) {
$arrMessages[] = "Job '$strJob' is currently in progress {$d['progress']}%";
$boolOK=true;
//setReturn(WARNING);
} elseif( $d['latest_result'] === '2' OR $d['latest_result'] === 2 ) {
$intJobCritical++;
setReturn(CRITICAL);
$arrMessages[] = "Job '$strJob' has last result CRITICAL";
} elseif( $d['latest_result'] === '1' OR $d['latest_result'] === 1 ) {
$intJobWarning++;
setReturn(WARNING);
$arrMessages[] = "Job '$strJob' has last result WARNING";
} elseif( $d['latest_result'] === '0' OR $d['latest_result'] === 0 ) {
$intSuccessCnt++;
$arrMessages[] = "Job '$strJob' has last result OK";
$boolOK=true;
} else {
setReturn(UNKNOWN);
$arrMessages[] = "Job '$strJob' has UNKNOWN latest result code '{$d['latest_result']}'";
}
if(!$boolOK) {
checkjobsession(convertBinToMSSQLGuid($d['id']), convertBinToMSSQLGuid($d['latest_session']));
}
}
}
return true;
}
return false;
}
function checkjobsession($strJobId,$strSessionId) {
global $arrMessages, $pdoDB;
$q = "
SELECT object_name, status, CAST(reason AS text) as reason
FROM [Backup.Model.BackupTaskSessions]
WHERE session_id = ".$pdoDB->quote($strSessionId)."
";
if( !$pdoStmt = $pdoDB->query($q) ) {
usage('Query for objects in session "'.$strSessionId.'" of job "'.$strJobId.'" failed: '.$pdoDB->errorInfo()[2]);
}
if( !$pdoStmt->rowCount() ) {
setReturn(UNKNOWN);
$arrMessages[] = "Session '$strSessionId' of job '$strJobId' has no results";
} else {
while($d = $pdoStmt->fetch()) {
$strReasonAppend=NULL;
if( !empty($d['reason']) AND trim($d['reason'])!="" ) {
$strReasonAppend = " (".trim($d['reason']).")";
}
if( $d['status'] === '3' OR $d['status'] === 3 ) {
setReturn(WARNING);
$arrMessages[] = "Object '{$d['object_name']}' has status WARNING".$strReasonAppend;
} elseif( $d['status'] === '2' OR $d['status'] === 2 ) {
setReturn(CRITICAL);
$arrMessages[] = "Object '{$d['object_name']}' has status CRITICAL".$strReasonAppend;
} elseif( $d['status'] === '0' OR $d['status'] === 0 ) {
//$arrMessages[] = "Object '{$d['object_name']}' has status OK".$strReasonAppend;
} else {
setReturn(UNKNOWN);
$arrMessages[] = "Object '{$d['object_name']}' has UNKNOWN status code '{$d['status']}'".$strReasonAppend;
}
}
}
}
/**
* Arguments
*/
$arrArgs = getopt("H:D:u:p:j:v");
if( !is_array($arrArgs) OR !count($arrArgs) ) {
usage('Missing parameters');
end_code(UNKNOWN);
}
//var_dump($arrArgs);
//exit;
$strHost = empty($arrArgs['H']) ? usage('Missing parameter -H') : $arrArgs['H'];
$strDB = empty($arrArgs['D']) ? 'VeeamBackup' : $arrArgs['D'];
$strUser = empty($arrArgs['u']) ? usage('Missing parameter -u') : $arrArgs['u'];
$strPass = empty($arrArgs['p']) ? usage('Missing parameter -p') : $arrArgs['p'];
$strJobs = empty($arrArgs['j']) ? usage('Missing parameter -j') : $arrArgs['j'];
$boolVerbose = array_key_exists('v',$arrArgs);
/**
* Skript
*/
//DB connect
$arrDrivers = ['mssql:','dblib:version=8.0;charset=UTF-8;','sybase:'];
foreach($arrDrivers AS $strDriver) {
try {
if( !$pdoDB = new PDO( "{$strDriver}host={$strHost};dbname={$strDB}", $strUser, $strPass) ) {
usage('MS SQL connect failed via "'.$strDriver.'"');
}
break;
} catch(PDOException $e) {
if( $e->getMessage()!='could not find driver' ) {
end_code(UNKNOWN, 'DB connect error: '.$e);
}
}
}
if( !isset($pdoDB) OR !$pdoDB ) {
end_code(UNKNOWN, 'No DB connection established with tried drivers: '.implode(', ',$arrDrivers));
}
//Some settings are nessessary to work with MS SQL and the queried view in Veeam DB
$pdoDB->query('SET ANSI_NULLS ON');
//$pdoDB->query('SET CURSOR_CLOSE_ON_COMMIT ON');
//$pdoDB->query('SET ANSI_NULL_DFLT_ON ON');
$pdoDB->query('SET ANSI_PADDING ON');
$pdoDB->query('SET QUOTED_IDENTIFIER ON');
$pdoDB->query('SET ANSI_WARNINGS ON');
//$pdoDB->query('SET ARITHABORT ON');
$pdoDB->query('SET CONCAT_NULL_YIELDS_NULL ON');
//$pdoDB->query('SET NUMERIC_ROUNDABORT OFF');
$arrMessages=array();
$intJobCount=0;
$intJobSuccess=0;
$intJobWarning=0;
$intJobCritical=0;
if( !checkjobs($strJobs,$intJobCount,$intJobSuccess,$intJobWarning,$intJobCritical) ) {
usage('Parameter -j invalid');
}
$strMessage = "$intJobSuccess/$intJobCount finished successful";
if( count($arrMessages) ) {
$strMessage .= "\n".implode(";\n", $arrMessages);
}
end_code( $intReturn, $strMessage);
|
|
sh4711
Anmeldungsdatum: 13. Februar 2011
Beiträge: 1092
|
DarkSilver schrieb: ...
Beide Dateien existieren zwar, sind aber 0 Byte groß und dementsprechend vollkommen leer.
Also wird der Zugriff nicht mittels odbc ausgeführt. Also hab ich es ein wenig ausgeweitet 1
2
3
4
5
6
7
8
9
10
11
12 | find / -type f -iname "*pdo*.so"
/usr/lib/php/20170718/pdo.so
/usr/lib/php/20170718/pdo_dblib.so
find / -type f -iname "*pdo*.ini"
/usr/share/php7.2-common/common/pdo.ini
/usr/share/php7.2-sybase/sybase/pdo_dblib.ini
/etc/php/7.2/mods-available/pdo.ini
/etc/php/7.2/mods-available/pdo_dblib.ini
/var/lib/ucf/cache/:etc:php:7.2:mods-available:pdo_dblib.ini
/var/lib/ucf/cache/:etc:php:7.2:mods-available:pdo.ini
|
Also Zugriff mittels pdo_dblib.so. Diese Bibliothek müsste auch auf dem Neuen-System sein, richtig? Prüfe und Vergleiche bitte die zugehörigen ini-Dateien zwischen Alt- und Neu-System. DarkSilver schrieb: ...
Das schaut interessant aus, danke für den Tipp. Derzeit halte ich alles in meinem Dokuwiki fest.
👍 Dokuwiki ist auch gut, wichtig ist eben das überhaupt dokumentiert wird. DarkSilver schrieb: ...
Eine Idee nach was ich ungefähr suchen sollte? Einfach blind alles installieren was auf dem anderen Rechner ist erscheint mir ein wenig wie Overkill 😉
Ich denke den MSSQL Treiber haben wir ja oben gefunden ... ansonsten musst du dich von Fehler zu Fehler hangeln und dementsprechend nachinstallieren. Oder eben Fleißarbeit und die Pakete durchgehen ... was besseres fällt mir ad hoc leider nicht ein.
|