2016-09-03 2 views
3

기존 Apache/php 사이트를 도커로 마이그레이션하려고하고 사이트 현지화에 문제가 있습니다. 코드를 살펴보면, 문제는 setLocale이 Docker 설치시 false를 반환한다는 것입니다 (기존 사이트에서는 true). 다음은 기존 사이트에서 제대로 실행되고 Docker 설치에 실패하는 PHP 테스트입니다.php on docker : setLocale 사용

FROM php:5-apache 

RUN apt-get update && apt-get install -y locales && apt-get clean 
RUN locale-gen fr_FR && locale-gen zh_TW && locale-gen tr_TR && locale-gen ru_R$ 
RUN docker-php-ext-install gettext 

RUN a2enmod rewrite && a2enmod headers 

내가 잘못 뭐하는 거지 : 여기

<?php 
$locale = "fr_FR"; 
putenv("LC_ALL=$locale"); 
$ok = setlocale(LC_ALL, $locale); 
if ($ok) { 
    echo "success"; 
} else { 
    echo "failure"; 
} 
?> 

내 도커 파일입니다?

--- 편집 ---

파치 Gortázar 나에게 여기 :-) 올바른 방향을 제공하면 더 로케일을해야하는 경우가있을 것이다 고정 된 고정 표시기 파일

FROM php:5-apache 

RUN apt-get update && apt-get install -y locales && apt-get clean 
RUN sed -i -e 's/# fr_FR ISO-8859-1/fr_FR ISO-8859-1/' /etc/locale.gen && \ 
    dpkg-reconfigure --frontend=noninteractive locales 
RUN docker-php-ext-install gettext 

RUN a2enmod rewrite && a2enmod headers 

입니다 모든위한 라인

sed -i -e 's/# locale/locale/' /etc/locale.gen && \ 

을 컨테이너에 /etc.locale.gen을보고 추가하면 (# 로케일/EC에서 줄의 내용을 가정 할 필요가 로케일3210 tc/locale.gen에 필요한 로케일 포함).

답변

2

당신은 당신의 로케일 다시 구성해야합니다

RUN locale-gen fr_FR.UTF-8 && dpkg-reconfigure locales 

을 그리고 /etc/environmentLC_ALLLANGUAGE 환경 변수를 추가 할 수는해야 할 수도 있습니다 (이 상황에서하지만 정확히 모르는) :

LC_ALL=... 
LANGUAGE=... 
+0

감사합니다. 당신은 나에게 올바른 방향을 제시했습니다. locale-gen이 작동하지 않지만 spkg-reconfigure 로케일이 속임수였습니다 (내 질문에 편집 참조). LC_ALL은 php 예제에서와 같이 PHP 스크립트에서 설정해야합니다. –

+0

Thx, nice solution ... – quexer69

+0

php : * - apache 이미지의 경우 locale-gen 에 의해 로케일을 생성 할 수없는 것 같지만 /etc/locales.gen 파일을 편집 한 다음 locale-gen을 실행해야합니다 – monofone

0

Docker의 Ubuntu는 로케일과 함께 제공되지 않습니다. 이유는 알 수 없습니다. Docker 파일에 다음을 추가해야합니다.

RUN locale-gen fr_FR.UTF-8 
ENV LANG fr_FR.UTF-8 
ENV LANGUAGE fr_FR:en 
ENV LC_ALL fr_FR.UTF-8 

이렇게해야합니다.

+0

답변 해 주셔서 감사합니다. 불행히도, 그것은 작동하지 않습니다. –