Doctrine OCI8 charset behavior between php-cli and php-fpm

General Tech Bugs & Fixes 2 years ago

0 1 0 0 0 tuteeHUB earn credit +10 pts

5 Star Rating 1 Rating

Posted on 16 Aug 2022, this text provides information on Bugs & Fixes related to General Tech. Please note that while accuracy is prioritized, the data presented might not be entirely correct or up-to-date. This information is offered for general knowledge and informational purposes only, and should not be considered as a substitute for professional advice.

Take Quiz To Earn Credits!

Turn Your Knowledge into Earnings.

tuteehub_quiz

Answers (1)

Post Answer
profilepic.png
manpreet Tuteehub forum best answer Best Answer 2 years ago

 

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?

No matter what stage you're at in your education or career, TuteeHub will help you reach the next level that you're aiming for. Simply,Choose a subject/topic and get started in self-paced practice sessions to improve your knowledge and scores.