php를 사용할 때 때때로 Timezone_abbreviations_list () 함수가 빈 배열을 반환합니다. 이 기능의 기능은 모든 시간대 약어와 해당 세부 사항을 포함하는 배열을 반환하는 것입니다. 일반적으로 시간 관련 작업 또는 형식 날짜를 처리하기 위해이 기능을 통해 시간대 약어 목록을 얻고 싶습니다. 그러나 빈 배열을 반환하면 특히 시간대 조작을 위해이 기능에 의존 할 때 약간의 문제가 발생할 수 있습니다. 다음 으로이 기사는이 문제에 대한 몇 가지 해결책을 제공합니다.
먼저, PHP 환경이 모든 시간대 관련 확장으로 올바르게 구성되어 있는지 확인하십시오. 표준 PHP 구성을 사용하는 경우 Timezone_abbreviations_list () 함수는 일반적으로 TimeZone 데이터를 반환해야합니다. 빈 배열을 반환하면 PHP 구성에 시간대 관련 라이브러리가 없거나 이러한 라이브러리가 올바르게로드되지 않았을 수 있습니다.
해결책:
PHP에서 날짜 확장이 활성화되어 있는지 확인하면 PHP 구성 파일 Php.ini 에서 확인할 수 있습니다. 다음에 댓글을 달지 않은지 확인하십시오.
<span><span><span class="hljs-attr">extension</span></span><span>=php_date.dll </span><span><span class="hljs-comment">; Windows 체계</span></span><span>
</span><span><span class="hljs-attr">extension</span></span><span>=calendar.so </span><span><span class="hljs-comment">; Linux 체계</span></span><span>
</span></span>수정이 적용되도록 웹 서버를 다시 시작하십시오.
버전이 업데이트 될 때 PHP의 시간대 관련 기능이 변경 될 수 있습니다. PHP 버전이 오래된 경우 일부 기능은 제대로 작동하지 않을 수 있습니다. 따라서 최신 버전의 PHP를 사용하거나 적어도 안정적인 상태로 업그레이드하고 최신 Time Zone 라이브러리를 지원하는 것이 좋습니다.
해결책:
현재 PHP 버전을 확인하려면 명령 줄에서 다음 명령을 실행하십시오.
<span><span>php -v
</span></span>PHP 버전이 너무 낮은 경우 최신 버전으로 업그레이드하십시오. 예를 들어, APT 또는 YUM 과 같은 패키지 관리 도구를 사용하여 업그레이드하거나 최신 PHP 버전을 다운로드하여 설치하십시오.
Timezone_abbreviations_list () 가 빈 배열을 반환하고 구성 또는 버전 업그레이드를 통해 해결할 수없는 경우 DateTimezone 클래스를 사용하여 시간대 관련 정보를 얻는 것을 고려할 수 있습니다. DateTimezone은 주로 단일 시간대를 처리하는 데 사용되지만 다른 방법을 결합하여 시간대 목록을 얻는 것도 가능합니다.
샘플 코드 :
<span><span><span class="hljs-meta"><?php</span></span><span>
</span><span><span class="hljs-variable">$timezone_identifiers</span></span><span> = </span><span><span class="hljs-title class_">DateTimeZone</span></span><span>::</span><span><span class="hljs-title function_ invoke__">listIdentifiers</span></span><span>();
</span><span><span class="hljs-variable">$abbreviations</span></span><span> = [];
</span><span><span class="hljs-keyword">foreach</span></span><span> (</span><span><span class="hljs-variable">$timezone_identifiers</span></span><span> </span><span><span class="hljs-keyword">as</span></span><span> </span><span><span class="hljs-variable">$timezone</span></span><span>) {
</span><span><span class="hljs-variable">$dtz</span></span><span> = </span><span><span class="hljs-keyword">new</span></span><span> </span><span><span class="hljs-title class_">DateTimeZone</span></span><span>(</span><span><span class="hljs-variable">$timezone</span></span><span>);
</span><span><span class="hljs-variable">$transitions</span></span><span> = </span><span><span class="hljs-variable">$dtz</span></span><span>-></span><span><span class="hljs-title function_ invoke__">getTransitions</span></span><span>();
</span><span><span class="hljs-keyword">foreach</span></span><span> (</span><span><span class="hljs-variable">$transitions</span></span><span> </span><span><span class="hljs-keyword">as</span></span><span> </span><span><span class="hljs-variable">$transition</span></span><span>) {
</span><span><span class="hljs-variable">$abbreviations</span></span><span>[] = </span><span><span class="hljs-variable">$transition</span></span><span>[</span><span><span class="hljs-string">'abbr'</span></span><span>];
}
}
</span><span><span class="hljs-variable">$abbreviations</span></span><span> = </span><span><span class="hljs-title function_ invoke__">array_unique</span></span><span>(</span><span><span class="hljs-variable">$abbreviations</span></span><span>);
</span><span><span class="hljs-title function_ invoke__">print_r</span></span><span>(</span><span><span class="hljs-variable">$abbreviations</span></span><span>);
</span><span><span class="hljs-meta">?></span></span><span>
</span></span>이 예에서는 DateTimezone :: ListINGIDERIFIERS ()를 통해 모든 시간 영역 식별자를 얻은 다음 getTransitions () 메소드를 통해 시간대 변환 정보를 얻어 시간대의 약어를 추출합니다. 마지막으로, array_unique ()를 사용하여 모든 시간 영역 약어를 제거하고 출력하십시오.
위의 방법 중 어느 것도 문제를 해결하거나 특정 시간대 약어 만 필요하지 않으면 시간대 약어 목록을 사용자 정의하여 처리 할 수 있습니다. 이 접근법은 약간 번거롭지 만, 어떤 경우에는 시간대 약어를 얻지 못하는 문제를 우회하는 데 도움이 될 수 있습니다.
샘플 코드 :
<span><span><span class="hljs-meta"><?php</span></span><span>
</span><span><span class="hljs-variable">$timezone_abbreviations</span></span><span> = [
</span><span><span class="hljs-string">'UTC'</span></span><span> => </span><span><span class="hljs-string">'Coordinated Universal Time'</span></span><span>,
</span><span><span class="hljs-string">'EST'</span></span><span> => </span><span><span class="hljs-string">'Eastern Standard Time'</span></span><span>,
</span><span><span class="hljs-string">'PST'</span></span><span> => </span><span><span class="hljs-string">'Pacific Standard Time'</span></span><span>,
</span><span><span class="hljs-string">'CST'</span></span><span> => </span><span><span class="hljs-string">'Central Standard Time'</span></span><span>,
</span><span><span class="hljs-comment">// 다른 시간대 약어</span></span><span>
];
</span><span><span class="hljs-title function_ invoke__">print_r</span></span><span>(</span><span><span class="hljs-variable">$timezone_abbreviations</span></span><span>);
</span><span><span class="hljs-meta">?></span></span><span>
</span></span>이런 식으로, 일반적인 시간 구역 약어와 설명이 포함 된 배열을 수동으로 만들 수 있습니다.이 설명은 자동으로 업데이트 할 수는 없지만 경우에 따라 충분합니다.
때로는 문제가 시간대 데이터 파일과 관련이있을 수 있습니다. timezone_abbreviations_list ()가 빈 배열을 반환하고 다른 메소드가 해결할 수없는 것을 발견하면 손상되거나 불완전한 시간대 데이터 파일로 인한 것일 수 있습니다. PHP에서 사용하는 시간대 데이터베이스는 일반적으로 Iana Time Zone 데이터베이스에서 나옵니다. 이는 PHP 업데이트로 변경됩니다.
해결책:
최신 Time Zone 데이터 파일이 서버에 올바르게 설치되어 있는지 확인하십시오.
운영 체제의 시간대 패킷을 업데이트 하여이 데이터가 최신 상태인지 확인할 수 있습니다. 예를 들어 Linux Systems에서는 다음 명령을 실행하여 시간대 데이터를 업데이트 할 수 있습니다.
<span><span>sudo apt-get install tzdata
</span></span>Timezone_abbreviations_list ()가 빈 배열을 반환하는 문제가 발생하면 PHP 구성을 확인하거나 PHP 버전을 업그레이드하거나 대체 방법 (예 : DatetimeZone 클래스)을 사용하거나 수동으로 시간대 약어 목록을 작성하여 해결할 수 있습니다. 이러한 방법을 통해 애플리케이션이 시간대 관련 기능을 올바르게 처리하고 시간대 데이터 누락으로 인한 오류를 피할 수 있는지 확인할 수 있습니다. 이 기사에 제공된 솔루션이 문제를 원활하게 해결하는 데 도움이되기를 바랍니다.