AG1965_2
22-09-25, 15:40
Hi,
ich habe mit yum install unixODBC den "IBM i Access ODBC Driver" installiert.
odbcinst -j zeigt:
unixODBC 2.3.9
DRIVERS............: /QOpenSys/etc/odbcinst.ini
SYSTEM DATA SOURCES: /QOpenSys/etc/odbc.ini
FILE DATA SOURCES..: /QOpenSys/etc/ODBCDataSources
USER DATA SOURCES..: /home/RZPANGO/.odbc.ini
SQLULEN Size.......: 8
SQLLEN Size........: 8
SQLSETPOSIROW Size.: 8
in /QOpenSys/etc/odbcinst.ini steht:
[IBM i Access ODBC Driver]
Description=IBM i Access ODBC Driver
Driver=/QOpenSys/pkgs/lib/libcwbodbc.so
Threading=0
DontDLClose=1
UsageCount=1
der relevante Teil der /QOpenSys/etc/odbc.ini:
### IBM provided DSN - do not remove this line ###
[*LOCAL]
Description = Default IBM i local database
Driver = IBM i Access ODBC Driver
System = localhost
UserID = *CURRENT
### Start of DSN customization
PHP ist die Community-Edition von Alan Seiden, alles aktuell:
PHP 8.4.12 (cli) (built: Aug 28 2025 13:39:14) (NTS gcc-6.bin (GCC) 6.3.0 ppc64)
Copyright (c) The PHP Group
Built by Seiden Group (Seiden PHP+)
Zend Engine v4.4.12, Copyright (c) Zend Technologies
with Zend OPcache v8.4.12, Copyright (c), by Zend Technologies
Wie die Ausgabe des unten stehenden PHP-Skripts zeigt, funktioniert mit SSL=0 auch alles, mit SSL=1 gibt es "Segmentation fault (core dumped)" aber diesen dump finde ich nicht.
Angeblich ist das selbst ausgestellte Zertifikat dem Datenbank- (und allen anderen) Servern zugeordnet. Und ich habe es auch im OSS unter /QOpenSys/etc/ssl/certs; ein wget funktioniert, und das täte es nicht, wenn da was falsch wäre.
$ php test_odbc.php
DSN=*LOCAL;SSL=0:CURRENT SERVER:XXX DATABASE:xxx JOB_NAME:583788/QUSER/QZDASOINIT USER:RZPANGO SYSTEM_USER:RZPANGO CURRENT USER:RZPANGO SESSION_USER:RZPANGO
-----
DSN=*LOCAL;SSL=1:Segmentation fault (core dumped)
function test($myDSN) {
echo $myDSN . ':';
$conn = @odbc_pconnect($myDSN);
if (!$conn) {
die(odbc_error().' '.odbc_errormsg()."\n");
}
$mySql = 'SELECT CURRENT SERVER "CURRENT SERVER",
DATABASE() DATABASE,
QSYS2.JOB_NAME,
STRIP(USER) "USER",
STRIP(SYSTEM_USER) "SYSTEM_USER",
STRIP(CURRENT USER) "CURRENT USER",
STRIP(SESSION_USER) "SESSION_USER" FROM SYSIBM.SYSDUMMY1';
$result = @odbc_exec($conn, $mySql);
if (!$result) {
die(odbc_error().' '.odbc_errormsg()."\n");
}
while ($row = odbc_fetch_array($result)) {
$line = '';
$tab = '';
foreach ($row as $fldnam => $fldval) {
$line .= $tab . $fldnam . ':' . $fldval;
$tab ="\t";
}
echo $line . "\n";
}
}
$DSN = "DSN=*LOCAL;SSL=0";
test($DSN);
echo "-----\n";
$DSN = "DSN=*LOCAL;SSL=1";
test($DSN);
?>
Was könnte der Grund dafür sein?
Im Browser bekomme ich einen 500er, und mehr steht dort auch nicht in den logs.
ich habe mit yum install unixODBC den "IBM i Access ODBC Driver" installiert.
odbcinst -j zeigt:
unixODBC 2.3.9
DRIVERS............: /QOpenSys/etc/odbcinst.ini
SYSTEM DATA SOURCES: /QOpenSys/etc/odbc.ini
FILE DATA SOURCES..: /QOpenSys/etc/ODBCDataSources
USER DATA SOURCES..: /home/RZPANGO/.odbc.ini
SQLULEN Size.......: 8
SQLLEN Size........: 8
SQLSETPOSIROW Size.: 8
in /QOpenSys/etc/odbcinst.ini steht:
[IBM i Access ODBC Driver]
Description=IBM i Access ODBC Driver
Driver=/QOpenSys/pkgs/lib/libcwbodbc.so
Threading=0
DontDLClose=1
UsageCount=1
der relevante Teil der /QOpenSys/etc/odbc.ini:
### IBM provided DSN - do not remove this line ###
[*LOCAL]
Description = Default IBM i local database
Driver = IBM i Access ODBC Driver
System = localhost
UserID = *CURRENT
### Start of DSN customization
PHP ist die Community-Edition von Alan Seiden, alles aktuell:
PHP 8.4.12 (cli) (built: Aug 28 2025 13:39:14) (NTS gcc-6.bin (GCC) 6.3.0 ppc64)
Copyright (c) The PHP Group
Built by Seiden Group (Seiden PHP+)
Zend Engine v4.4.12, Copyright (c) Zend Technologies
with Zend OPcache v8.4.12, Copyright (c), by Zend Technologies
Wie die Ausgabe des unten stehenden PHP-Skripts zeigt, funktioniert mit SSL=0 auch alles, mit SSL=1 gibt es "Segmentation fault (core dumped)" aber diesen dump finde ich nicht.
Angeblich ist das selbst ausgestellte Zertifikat dem Datenbank- (und allen anderen) Servern zugeordnet. Und ich habe es auch im OSS unter /QOpenSys/etc/ssl/certs; ein wget funktioniert, und das täte es nicht, wenn da was falsch wäre.
$ php test_odbc.php
DSN=*LOCAL;SSL=0:CURRENT SERVER:XXX DATABASE:xxx JOB_NAME:583788/QUSER/QZDASOINIT USER:RZPANGO SYSTEM_USER:RZPANGO CURRENT USER:RZPANGO SESSION_USER:RZPANGO
-----
DSN=*LOCAL;SSL=1:Segmentation fault (core dumped)
function test($myDSN) {
echo $myDSN . ':';
$conn = @odbc_pconnect($myDSN);
if (!$conn) {
die(odbc_error().' '.odbc_errormsg()."\n");
}
$mySql = 'SELECT CURRENT SERVER "CURRENT SERVER",
DATABASE() DATABASE,
QSYS2.JOB_NAME,
STRIP(USER) "USER",
STRIP(SYSTEM_USER) "SYSTEM_USER",
STRIP(CURRENT USER) "CURRENT USER",
STRIP(SESSION_USER) "SESSION_USER" FROM SYSIBM.SYSDUMMY1';
$result = @odbc_exec($conn, $mySql);
if (!$result) {
die(odbc_error().' '.odbc_errormsg()."\n");
}
while ($row = odbc_fetch_array($result)) {
$line = '';
$tab = '';
foreach ($row as $fldnam => $fldval) {
$line .= $tab . $fldnam . ':' . $fldval;
$tab ="\t";
}
echo $line . "\n";
}
}
$DSN = "DSN=*LOCAL;SSL=0";
test($DSN);
echo "-----\n";
$DSN = "DSN=*LOCAL;SSL=1";
test($DSN);
?>
Was könnte der Grund dafür sein?
Im Browser bekomme ich einen 500er, und mehr steht dort auch nicht in den logs.