SLES12SPx/SLES15SPx - Oracle 19+ RDBMS - instantclient + PHP 5?/7/8? vs. ékezetes karakterek

Üdv!

OS üzemeltetőként a disztró fix, a PHP verzióval együtt (5.x/7.4.x?/8.0.y?).

Pár db, futó, migrációs projekt kapcsán a fejlesztők vakarták a fejüket, hogy fenti SLES/PHP (minden gyári, supported, up-to-date) kombók esetén miért nem jönnek át RDBMS-ből (AIX 7.2 TL latest + ?Oracle 19c?) az ékezetes, magyar karakterek (OS: hu_HU.UTF8, Instantclient Oracle-től letöltve, kibontva, helyre téve, ld.conf.d/instanclient.conf, ldconfig, stb., stb.)

A probléma jött PDO*, (ez homebrew...) *OCI-n, ODBC-n keresztüli DB elérések esetében is.

A hetekig olvasott linktárat most nem tenném ide, de megkímélendő másokat a szopástól, első körben ajánlom az alábbiakat, amennyiben ennek alkalmazása nem ront el más, eltérő nyelvi beállítással dolgozó és ugyanazon szerveren futó alkalmazást:

SLES + Apache2 + mod_apache2_php*:

# mkdir /etc/systemd/system/apache2.service.d/

# cat <<EOF >/etc/systemd/system/apache2.service.d/environment.conf
[Service]
Environment=NLS_LANG=HUNGARIAN_HUNGARY.AL32UTF8
EOF

# systemctl daemon-reload
# systemctl [reload | restart] apache2.service

Megcsináltad, aztán mégsem megy, majd vakarod tovább az őszülő és kopaszodó fejed és leesik, hogy az általad menedzselt, 1100+ VM között van 1-2 olyan, hogy:

SLES + Apache2 + php-fpm (ahogy ez esetemben is történt, minden ugyan ez, csak):

# mkdir /etc/systemd/system/php-fpm.service.d/

# cat <<EOF > /etc/systemd/system/php-fpm.service.d/environment.conf
[Service]
Environment=NLS_LANG=HUNGARIAN_HUNGARY.AL32UTF8
EOF

# systemctl daemon-reload
# systemctl [reload | restart] php-fpm.service

Régen ezzel OOTB nem volt gond, az eltörés okának kiderítése már "NevemTeve"-zés lenne, de az meg nem az én asztalom már... ;)

Örül, fekszik! :D

Hozzászólások

Oracle környezetben 1024 éve köll/illendő beállítani az NLS_LANG környezeti változót...