
私のOracleデータベースは(選択されていません)にありますISO8859-1
。
私はphp-fpm
数日間セグフォルトで苦労しています。それがどこから来たのかを調べるために、ENV
次の変数を使用して2つの並列環境を設定しました。
NLS_LANG=AMERICAN_AMERICA.WE8ISO8859P15
PHPバージョン:5.6.12
PHP-CLI
開発サーバーは次のように起動します。
php -S localhost:8081 web/app_dev.php
PHP-FPM
プール構成の抜粋:
[www]
env[NLS_LANG] = AMERICAN_AMERICA.WE8ISO8859P15
listen = 127.0.0.1:9000
教義
charset: null
これで、JSON
特殊文字を含むAPIを要求します。
php-cli
json_encode
エラーがありますMalformed UTF-8 characters, possibly incorrectly encoded
(有効なエラーのようです。データはutf8ではありません)。- すべてが
php-fpm
うまく機能しますが、特殊文字が置換(é
に変更e
)されます。なぜですか?
php-cli
より安定しているように見えるこの問題を解決しようとすると(任意の502エラーが多いphp-fpm
)、2つのオプションがあります。
JsonResponse.php
ISO8859-1からUTF-8(醜い)へのエンコーディングの調整- クライアント文字セットを次に設定します。
UTF8
2番目の解決策が最初のようです。今、教義の構成は次のとおりです。
charset: UTF8
php-cli
今期待通りに動作するので、すべてが素晴らしいです!php-fpm
Oracle関連のエラーにより失敗します。
[2015-08-25 13:56:54] php.DEBUG: oci_connect(): OCIEnvNlsCreate() が失敗しました。システムに問題があります。 LD_LIBRARY_PATHにOracle Instant Clientライブラリのディレクトリが含まれていることを確認します。
[2015-08-25 13:56:54] php.DEBUG: oci_connect(): ORA-12715 エラーに関するテキストの取得中にエラーが発生しました。
ORA-12715は「指定された文字セットが無効です」です。LD_LIBRARY_PATH
ここでは問題ではありません。
ここで何の問題がありますか?php-fpm
このエラーは正しいですか?php-cli
との間で同じ動作を得るには、この問題をどのように解決する必要がありますかphp-fpm
?