32-բիթանոց PHP-ի սահմանափակումները
Եթե դուք գործարկեք Drupal-ը այնպիսի համակարգում, որտեղ PHP-ն կազմվել է կամ սահմանափակված է 32-բիթանոց ամբողջ թվերի օգտագործմամբ, ապա կկարողանաք մուտքագրել ամսաթվեր միայն 1901-ից 2038 թվականների միջակայքում (մասնավորապես՝ 1901 թ․ դեկտեմբերի 13-ին՝ UTC 20:45:52-ից մինչև 2038 թ․ հունվարի 19-ին՝ UTC 03:14:07): Սա լայնորեն հայտնի է որպես 2038 թվականի խնդիր։
Ընդհանուր ախտանիշն այն է, որ ամսաթիվը ցուցադրվում կամ պահպանվում է որպես 1970-01-01՝ փոխարենը սպասվող արժեքի, որը դուրս է նշված միջակայքից։ Սա կազդի բոլոր PHP հավելվածների վրա։ Drupal-ում մասնավորապես ազդում է ամսաթվային դաշտերի տեսակների վրա՝ ամսաթիվ կամ ամսաթիվ և ժամ՝ ներառյալ «Ցանկից ընտրություն» վիջեթը։ Դուք կարող եք ընտրել 1900-ից ցածր կամ 2038-ից բարձր տարիներ, սակայն, քանի որ PHP-ն ինքնին չի կարող մշակել դրանք, տվյալները կպահպանվեն / կցուցադրվեն որպես 1970-01-01՝ առանց որևէ զգուշացման։
Վտանգի ենթարկված ապրանքներ
- PHP 5.x / 7.x x86 պաշտոնական Windows հավաքածուները և PHP 5.x x64 տարբերակը։
- Ցանկացած վեբ-սթեքի փաթեթ (XAMPP, Wamp և այլն), որտեղ օգտագործվում է 32-բիթանոց PHP կամ այն աշխատում է 32-բիթանոց համակարգում։
- Acquia Dev Desktop 2-ը՝ մինչեւ 2018 թ․ հունիսի 14-ի թողարկումը (ներկայում օգտագործում է 64-բիթանոց PHP և MySQL)։
Նշում․ խնդիրը կախված է PHP-ի կազմավորման եղանակից։ Եթե դուք օգտագործում եք 32-բիթանոց PHP 64-բիթանոց օպերացիոն համակարգում, այդուհանդերձ դուք կբախվեք այս խնդրին։
Թեստավորում
Որպեսզի ստուգեք՝ արդյոք ձեր PHP-ն վտանգի տակ է, կարող եք գործարկել այս հրամանը (մեկ տողով).
php -r "echo (date('y',strtotime('2039-01-01')) == 39 ? 'OK' : 'Y2K38 limitation') . PHP_EOL;"
Անվտանգ տարբերակը կցուցադրի OK, իսկ խոցելի տարբերակը՝ Y2K38 limitation։
Drupal’s online documentation is © 2000-2020 by the individual contributors and can be used in accordance with the Creative Commons License, Attribution-ShareAlike 2.0. PHP code is distributed under the GNU General Public License.