My Oracle database is in ISO8859-1 (not by choice).
I'm struggling with segfault from php-fpm for a couple of days now. To dig out the source of it I've set two parallel environnements with the following ENV variable:
NLS_LANG=AMERICAN_AMERICA.WE8ISO8859P15
Php version: 5.6.12
php-cli
The development server is started with:
php -S localhost:8081 web/app_dev.php
php-fpm
Pool configuration extract:
[www]
env[NLS_LANG] = AMERICAN_AMERICA.WE8ISO8859P15
listen = 127.0.0.1:9000
Doctrine dbal
charset: null
Now, I'm requesting a JSON api with special characters:
- with
php-clijson_encodeerrorsMalformed UTF-8 characters, possibly incorrectly encoded(seems to be a valid error, data is not in utf8) - with
php-fpmeverything works but special characters are replaced (ébecomese) Why?
By trying to fix the php-cli, which seems more stable (lots of random 502 errors with php-fpm) I have two options:
- Tweaking
JsonResponse.phpto encode everything from ISO8859-1 to UTF-8 (ugly) - Setting the client charset to
UTF8
The second solution seems to be the one and the doctrine configuration is now:
charset: UTF8
php-clinow works as expected and everything is wonderful!php-fpmfails with Oracle related errors:
[2015-08-25 13:56:54] php.DEBUG: oci_connect(): OCIEnvNlsCreate() failed. There is something wrong with your system - please check that LD_LIBRARY_PATH includes the directory with Oracle Instant Client libraries
[2015-08-25 13:56:54] php.DEBUG: oci_connect(): Error while trying to retrieve text for error ORA-12715
Where ORA-12715 is "invalid character set specified".LD_LIBRARY_PATH is not the issue here.
What is going wrong here? Is php-fpm correct about those errors?
How may I fix this to get the same behavior between php-cli and php-fpm?