0

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-cli json_encode errors Malformed UTF-8 characters, possibly incorrectly encoded (seems to be a valid error, data is not in utf8)
  • with php-fpm everything works but special characters are replaced (é becomes e) 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.php to 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-cli now works as expected and everything is wonderful!
  • php-fpm fails 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?

  • You need to put on the php-fpm pool configuration file the env ORACLE_HOME and LD_LIBRARY_PATH – user138847 Oct 16 '15 at 12:55
  • Indeed see my own answer here : stackoverflow.com/questions/25649581/… – soyuka Oct 16 '15 at 14:20

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Browse other questions tagged or ask your own question.