내 Oracle 데이터베이스는 (선택되지 않음)에 있습니다 ISO8859-1
.
나는 php-fpm
며칠 동안 세그폴트로 어려움을 겪고 있습니다. 그것이 어디서 왔는지 알아보기 위해 ENV
다음 변수를 사용하여 두 개의 병렬 환경을 설정했습니다.
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
) 두 가지 옵션이 있습니다.
JsonResponse.php
ISO8859-1에서 UTF-8(추악함)로 인코딩 조정- 클라이언트 문자 집합을 다음으로 설정합니다.
UTF8
두 번째 해결책이 첫 번째인 것 같습니다. 이제 교리 구성은 다음과 같습니다.
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
?