Php පරිසර විචල්යයන්. CGI පරිසර විචල්‍යයන්

10.08.2022

පාරිසරික විචල්යයන්

PHP හි පාරිසරික විචල්‍යයන්

ස්ක්‍රිප්ට් ආරම්භ කිරීමට පෙර, සේවාදායකය එය තොරතුරු සහිත පරිසර විචල්‍යයන් කිහිපයක් ලබා දෙයි. සමහර විචල්‍යවල ශීර්ෂ කිහිපයක් අඩංගු වේ, නමුත් සියල්ලම නොවේ (ඔබට සියලුම ශීර්ෂයන් ලබා ගත නොහැක). පහතින් මම ඉතාමත් වැදගත් පරිසර විචල්‍ය ලැයිස්තුවක් ලබා දෙන්නම්.

HTTP_ACCEPT

මෙම විචල්‍යය සියල්ල ලැයිස්තුගත කරයි MIME දත්ත වර්ග, බ්රවුසරය මගින් අර්ථ දැක්විය හැක. රේඛාව */* යනු බ්‍රවුසරය ඕනෑම වර්ගයක් තේරුම් ගන්නා බවයි.

HTTP_ACCEPT= image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, application/x-shockwave-flash, application/vnd.ms-excel, application/msword, */*

HTTP_REFERER

මෙම විචල්‍යය පරිශීලකයා මෙයට පැමිණි පිටුව පිළිබඳ තොරතුරු නියෝජනය කරයි. ඔබට මෙම විචල්‍යය භාවිතා කළ හැකිය, උදාහරණයක් ලෙස, ඔබේ වෙබ් අඩවිය වටා පරිශීලකයෙකුගේ චලනය නිරීක්ෂණය කිරීමට සහ පසුව වඩාත් ජනප්‍රිය මාර්ග බැලීමට.

HTTP_REFERER= http://www.spravkaweb.ru/php/pril/

HTTP_COOKIE

මෙම විචල්‍යය සියලුම URL-කේතන ලද කුකීස් ගබඩා කරයි.

HTTP_COOKIE= hotlog=1; ZDEDebuggerPresent=php,phtml,php3; b=b; PHPSESSID=16805922a9258cda274316e60f649cf8

HTTP_USER_AGENT

පරිශීලකයාගේ බ්රවුසරය හඳුනා ගනී. බ්‍රවුසරයේ වර්ගය ස්ථාපිත කිරීම සඳහා, ඔබ වචන සඳහා මෙම පේළිය පරීක්ෂා කළ යුතුය: බ්‍රවුසරය නම් - අන්තර්ජාල ගවේෂකය, එවිට MSIE උපස්ථරය පවතිනු ඇත, සහ Mozilla යන වචනය පමණක් තිබේ නම්, මෙය Netscape වේ.

උදාහරණ වශයෙන්:

HTTP_USER_AGENT= Mozilla/4.0 (අනුකූල; MSIE 6.0; Windows NT 5.1; SV1; MyIE2; Maxthon)

HTTP_HOST

ස්ක්‍රිප්ට් ධාවනය වූ වෙබ් සේවාදායකයේ වසම් නාමය අඩංගු වේ. මෙම විචල්‍යය භාවිතා කිරීමට තරමක් පහසු වේ, නිදසුනක් ලෙස, නිශ්චිත සේවාදායකයකට සම්බන්ධ නොවන පරිදි ස්ථාන ශීර්ෂයේ අවශ්‍ය වන සම්පූර්ණ මාර්ගය ජනනය කිරීමට.

HTTP_HOST= www.spravkaweb.ru

HTTP_FROM

ලිපිනය විද්යුත් තැපෑලඉල්ලීම එවූ පරිශීලකයා.

සේවාදායක නම

වසම් නාමය හෝ සේවාදායක IP ලිපිනය.

SERVER_NAME= www.spravkaweb.ru

SERVER_SOFTWARE

සේවාදායක ඉල්ලීමට ප්‍රතිචාර දක්වන සේවාදායක වැඩසටහනේ නම සහ අනුවාදය.

SERVER_PORT

මෙම විචල්‍යයේ පරිශීලකයාගේ බ්‍රවුසරයට ප්‍රවේශ වූ සේවාදායක වරාය අඩංගු වේ. සාමාන්‍යයෙන් මෙය 80 වේ. ස්ථාන ශීර්ෂ පරාමිතිය සෑදීමට ද විචල්‍යය භාවිතා කළ හැක.

SERVER_PROTOCOL

ඉල්ලීම සඳහා භාවිතා කරන ලද තොරතුරු ප්‍රොටෝකෝලයේ නම සහ අනුවාදය විචල්‍යයේ අඩංගු වේ.

SERVER_PROTOCOL= HTTP/1.1

REMOTE_ADDR

මෙම විචල්‍යයේ බ්‍රවුසරය දියත් කළ පරිශීලකයාගේ ධාරකයේ IP ලිපිනය (හෝ වසම් නාමය) අඩංගු වේ.

REMOTE_PORT

සේවාදායක ප්‍රතිචාරය ලබා ගැනීම සඳහා පරිශීලකයාගේ බ්‍රවුසරයට පවරා ඇති වරාය.

REMOTE_USER

ඉල්ලීම කරන පරිශීලකයාගේ හඳුනාගැනීමේ නම.

SCRIPT_NAME

මෙම ස්ක්‍රිප්ට් අඩංගු ගොනුවේ නම අඩංගු වේ. මෙම විචල්‍යය ඔබටම හරවා යවන විට (ස්වයං යළි-යොමුවීම්) ස්ථාන ශීර්ෂය සෑදීමේදී මෙන්ම ටැගයේ ක්‍රියා ගුණාංගයේ අගය ආදේශ කිරීම සඳහා භාවිතා කිරීමට පහසු වේ.

පරාමිති නොමැතිව දියත් කරන විට ස්ක්‍රිප්ට් අමතන පිටුවේ (නිශ්චිත ස්ක්‍රිප්ට් නාමයකට බැඳී නොසිටීම සඳහා).

DOCUMENT_ROOT

වෙබ් ලේඛන ගසෙහි මූල නාමාවලිය.

REQUEST_METHOD

දත්ත මාරු කිරීමේදී පරිශීලකයා භාවිතා කරන ක්රමය. මෙම විචල්‍යය මත පදනම්ව, පරිශීලකයා භාවිතා කරන ක්‍රමය සහ සුදුසු මූලාශ්‍රයෙන් දත්ත ලබා ගැනීම සහ මාරු කිරීම සිදු කරනු ඇතැයි අපේක්ෂා නොකළ යුතු බව හොඳින් ලියා ඇති ස්ක්‍රිප්ට් එකක් විසින්ම තීරණය කළ යුතු බව සටහන් කළ යුතුය, උදාහරණයක් ලෙස, POST ක්රමය.

QUERY_STRING

URL හි ප්‍රශ්න ලකුණෙන් පසුව දිස්වන පරාමිති අඩංගු වේ. ඒවා GET ක්‍රමය සහ POST ක්‍රමය යන දෙකින්ම ලබා ගත හැකි බව අපි ඔබට මතක් කරමු (අවසාන අවස්ථාවේ දී ඒවා ටැගයේ ක්‍රියාකාරී ගුණාංගයෙන් අර්ථ දක්වා තිබේ නම් ).

PATH_INFO

අඩංගු වේ අමතර තොරතුරුමාර්ගය ගැන.

PATH_TRANSLATED

විචල්‍යයේ ඇති තොරතුරුම PATH_INFOවෙබ් ලේඛන වෘක්ෂයේ මූල නාමාවලියට යන මාර්ගය සඳහන් කරන උපසර්ගයක් සමඟ.

අන්තර්ගතයේ වර්ගය

ඉල්ලීමේ මාධ්‍ය දත්ත වර්ගය.

CONTENT_LENGTH

පරිශීලකයා විසින් එවන ලද දත්ත බයිට් ගණන ආපසු ලබා දෙයි. ඔබ POST පෝරමයක් පිළිගෙන සකසන්නේ නම් මෙම විචල්‍යය විශ්ලේෂණය කිරීමට අවශ්‍ය වේ.

GATEWAY_INTERFACE

සේවාදායකය භාවිතා කරන CGI අනුවාදය.

පරිසර විචල්‍ය භාවිතා කිරීමේ උදාහරණය

පාරිසරික විචල්යයන්

පාරිසරික විචල්යයන්:

echo "ඔබ පැමිණියේ: ".getenv("HTTP_REFERER")."
";

$br=getenv("HTTP_USER_AGENT");

if(strpos($br,"MSIE")!==false) echo "ඔබට Internet Explorer ඇත
";

වෙනත් echo "ඔබට Netscape හෝ වෙනත් අය ඇත.
";

echo "ඔබේ IP: ".getenv("REMOTE_ADDR")."
";

echo "මෙන්න බ්‍රවුසර පේළියේ පරාමිති: ".getenv("QUERY_STRING");

Unix සඳහා වැඩසටහන් කලාව පිළිබඳ පොතෙන් කර්තෘ රේමන්ඩ් එරික් ස්ටීවන්

Unix සඳහා වැඩසටහන් කලාව පිළිබඳ පොතෙන් කර්තෘ රේමන්ඩ් එරික් ස්ටීවන්

Programming in Ruby පොතෙන් [භාෂා දෘෂ්ටිවාදය, න්‍යාය සහ යෙදුම් භාවිතය] Fulton Hal විසිනි

HTML 5, CSS 3 සහ Web 2.0 පොතෙන්. නවීන වෙබ් අඩවි සංවර්ධනය. කර්තෘ ඩ්රොනොව් ව්ලැඩිමීර්

ලිනක්ස් පරිසරයේ යෙදුම් සංවර්ධනය පොතෙන්. දෙවන සංස්කරණය කර්තෘ ජොන්සන් මයිකල් කේ.

10.4 පාරිසරික විචල්‍යයන් යුනික්ස් වැඩසටහනක් ක්‍රියාත්මක වන විට, එයට පවතින පරිසරයට නාම-අගය සම්බන්ධතා සමූහයක් ඇතුළත් වේ (නම් සහ අගයන් දෙකම නූල් වේ). ඒවායින් සමහරක් පරිශීලකයා විසින් අතින් ස්ථාපනය කර ඇති අතර අනෙක් ඒවා පද්ධතිය විසින් ස්ථාපනය කර ඇත

Firebird DATABASE DEVELOPER'S GUIDE පොතෙන් Borri Helen විසිනි

10.4.1. පද්ධති පාරිසරික විචල්‍යයන් යුනික්ස් කවචයකින් ක්‍රියාත්මක වන විට වැඩසටහනක් ලබා ගත හැකි බොහෝ ප්‍රසිද්ධ පරිසර විචල්‍යයන් ඇත. දේශීය ගොනුව කියවීමට පෙර මෙම විචල්‍යයන් (විශේෂයෙන් HOME) බොහෝ විට ඇගයීමට ලක් කළ යුතුය

පොතෙන් ලිනක්ස් ක්‍රමලේඛනයඋදාහරණ වල කර්තෘ රොබින්ස් ආර්නෝල්ඩ්

10.4.2. අභිරුචි පරිසර විචල්‍යයන් පද්ධති නිර්වචනය කරන ලද කට්ටලයෙන් පිටත පරිසර විචල්‍යයන් අර්ථකථනය කිරීමට යෙදුම්වලට නිදහස තිබුණද, එවැනි විශේෂාංගයක සැබෑ භාවිතය දැනට අසාමාන්‍ය වේ.

කතුවරයාගේ පොතෙන්

10.4.3. පරිසර විචල්‍යයන් භාවිතා කළ යුත්තේ කවදාද යන්න පරිශීලක සහ පද්ධති පරිසර විචල්‍යයන් පොදු වශයෙන් ඒවා විශාල ප්‍රමාණවලින් ගබඩා කර ඇති දත්ත අඩංගු වේ. වින්යාස ගොනුඑය වෙහෙසකර වනු ඇත. සහ අතිශයින් වෙහෙසකරයි

කතුවරයාගේ පොතෙන්

14.4. පාරිසරික විචල්‍යයන් සමහර විට වැඩසටහන සහ බාහිර ලෝකය අතර සම්බන්ධකය වන පාරිසරික විචල්‍යයන් වෙත ප්‍රවේශ වීම අවශ්‍ය වේ. පාරිසරික විචල්‍යයන් යනු යම් පෙළකට සම්බන්ධ ලේබල් (සාමාන්‍යයෙන් කුඩා); ඔවුන් ගබඩා, උදාහරණයක් ලෙස, සඳහා මාර්ග

කතුවරයාගේ පොතෙන්

කාර්යයන් සහ විචල්යයන්. දේශීය විචල්‍යයන් කලින් ප්‍රකාශ කරන ලද ශ්‍රිතයන් ඔවුන්ගේ ශරීරය තුළ තමන්ගේම විචල්‍යයන් නිර්මාණය කරයි. මේවා ඊනියා දේශීය විචල්යයන් වේ. එවැනි විචල්‍යයන් ප්‍රවේශ විය හැක්කේ ඒවා ප්‍රකාශ කර ඇති ක්‍රියාකාරී ශරීරය තුළ පමණි. ක්රියාත්මක කිරීම අවසන් වූ විට

කතුවරයාගේ පොතෙන්

22.3.3. පාරිසරික විචල්‍යයන් setuid හෝ setgid හැකියාවන් භාවිතා කරන වැඩසටහන් වලදී, පාරිසරික සැකසුම් සම්බන්ධයෙන් විශේෂ සැලකිල්ලක් දැක්විය යුතුය. මෙම විචල්‍යයන් තීරණය කරනු ලබන්නේ වැඩසටහන සක්‍රිය කළ පරිශීලකයා විසින් වන අතර එමඟින් ප්‍රහාර සඳහා දොර විවර වේ. වඩාත්ම පැහැදිලි ප්රහාරය

කතුවරයාගේ පොතෙන්

පරිසර විචල්‍යයන් පරිසර විචල්‍යයන් යනු ආරම්භක ඇරඹුම් වලදී භාවිතා වන ගෝලීය පද්ධති සැකසුම් වේ. මෙහෙයුම් පද්ධතිය. වින්ඩෝස්, ලිනක්ස් සහ බොහෝ මත UNIX පද්ධති Firebird සේවාදායකය සමහර පරිසර විචල්‍යයන් හඳුනාගෙන ඒවා භාවිතා කරයි

කතුවරයාගේ පොතෙන්

වින්ඩෝස් පරිසර විචල්‍යයන් සකසා ඇත්තේ කොහිද?පරිසර විචල්‍ය වර්ග සහ ඒවා සකසන ආකාරය එකින් එක වෙනස් වේ වින්ඩෝස් අනුවාදතවත් එකකට. වගුවේ වගු 3.1 මගින් පරිසර විචල්‍ය වල අගයන් සැකසීමේ වර්ග (අදාළ නම්) සහ ක්‍රම පෙන්වයි.වගුව 3.1. සඳහා පරිසර විචල්‍ය සැකසුම්

කතුවරයාගේ පොතෙන්

2 වන පරිච්ඡේදය තර්ක, විකල්ප සහ පාරිසරික විචල්‍යයන් ඕනෑම වැඩසටහනක පළමු කාර්යය සාමාන්‍යයෙන් විධාන රේඛා විකල්ප සහ තර්ක අර්ථ නිරූපණය කිරීමයි. මෙම පරිච්ඡේදය සම්මත විස්තර කරමින් C (සහ C++) වැඩසටහන් ඔවුන්ගේ විධාන රේඛා තර්ක ලබා ගන්නේ කෙසේද යන්න පරීක්ෂා කරයි.

මෙය ක්‍රියාත්මක වන පරිසරය මත රඳා පවතින PHP සේවා වින්‍යාසයක් ක්‍රියාත්මක කිරීම සඳහා කෙටි ආකාරයකි. යමෙකු වඩාත් අලංකාර විසඳුමක් යෝජනා කරන්නේ නම් හෝ කුඩා දේ නිවැරදි කරන්නේ නම් මම සතුටු වෙමි.

ප්රධාන අදහස

පරිසර විචල්‍යයන් භාවිතයෙන් වින්‍යාස කර ඇති එකම පරිසර පද්ධතිය තුළ සේවා, ක්ෂුද්‍ර සේවා සහ යැපෙන යෙදුම් ධාවනය කරන්න.
ගැටලුව
මෙම ලිපිය "පරිසර විචල්‍යයන්" බොහෝ වාරයක් පුනරාවර්තනය වේ.
කොටුවෙන් පිටත, php-fpm ගෝලීය පරිසර විචල්‍යයන් (getenv ශ්‍රිතය) නොසලකා හරින අතර php cli හට ඒවා ලබා ගත හැක.
පසුබිම
ඔබ දැනටමත් .env සමඟ වැඩ කර ඇත්නම් ඔබට මෙම කොටස මඟ හැරිය හැක

මම දැනට ZF2 හි ලියා ඇති ව්‍යාපෘතියක වැඩ කරමින් සිටිමි. ව්‍යාපෘතිය වින්‍යාස කිරීම සඳහා, විවිධ පරිසරයන් සඳහා වින්‍යාස ගොනු භාවිතා කරන ලදී. මෙය ජනනය කරයි විශාල සංඛ්යාවක්ව්‍යාපෘති ගබඩාවේ අනුපිටපත් වින්‍යාසයන් මෙවැනි දෙයක්:
  • session.global.php
  • session.local.php.dist
  • session.unittest.php.dist
  • db.global.php
  • db.local.php.dist
  • db.unittest.php.dist
මෙම අනුපිටපත් නිරන්තරයෙන් එකිනෙකා සමඟ සමමුහුර්ත කළ යුතුය. ඊට අමතරව, ඔවුන් තමන් තුළම යම් PHP තාර්කික ගබඩා කරයි, එය කේත අනුපිටපත් නිර්මාණය කරයි.

එබැවින් ව්‍යාපෘතිය දැන් පරිසරය සැලකිල්ලට ගනී, නමුත් ...

වැඩ කරන යන්ත්‍ර මත සංවර්ධනය සිදු කරන අතර, ව්‍යාපෘතිය .env ගොනුව කියවූ අතර සියල්ල ක්‍රියාත්මක විය. නමුත් මම පරීක්ෂණ පරිසරයක් යෙදවූ විට, මම සැබෑ පද්ධති පරිසර විචල්‍යයන් සකසා ඇත්නම්, php-fpm ඒවා නොසලකා හරින බව පෙනී ගියේය. Google සහ StackOverflow වෙතින් විවිධ වට්ටෝරු සුප්‍රසිද්ධ ක්‍රම දෙකක් භාවිතා කිරීමේ එක් හෝ තවත් ස්වයංක්‍රීයකරණයක් දක්වා උනු:

1. fastcgi_param පරාමිතිය SOMEENV පරීක්ෂණය භාවිතයෙන් nginx හරහා විචල්‍යයන් සම්මත කිරීම;
2. php-fpm සේවක ක්‍රියාවලි සංචිත වින්‍යාසය තුළ env ආකෘතියෙන් විචල්‍යයන් සැකසීම.

පළමු සහ දෙවන විකල්ප දෙකම විශේෂ අවස්ථා සඳහා පහසු වේ. නමුත් ඔබ “යෙදුම නොව පරිසරය වින්‍යාස කිරීම” යන සුසමාදර්ශය තුළ සිතන්නේ නම්, එවැනි ක්‍රම උදාහරණයක් ලෙස ව්‍යාපෘති ෆෝල්ඩරයට .env ගොනුවක් තැබීමට වඩා දුෂ්කර වනු ඇත. නමුත් වාදකයෙක්, CI පද්ධතියක් හෝ යන්තම් පද්ධති පරිපාලකව්යාපෘතිය ක්රියාත්මක කිරීම පිළිබඳ විස්තර දැන නොගත යුතුය, එය අලංකාර නොවේ.

යෝජිත විසඳුම
අන්තර්ජාලයෙන් විවිධ වට්ටෝරු ඒකාබද්ධ කිරීමෙන්, මම පහත වැඩ කරන විසඳුම සොයා ගතිමි.
Centos 7, PHP 5.6.14 යටතේ පරීක්ෂා කර ඇත.

1. විවෘත කරන්න /etc/php.ini - Replace variables_order = "GPCS" with variables_order = "EGPCS" # මෙයින් පසු, PHP විසින් ගෝලීය අවකාශයට පරිසර විචල්‍ය එක් කරයි # http://php.net/manual/ru/ini. core.php #ini.variables-order 2. /etc/php-fpm.d/www.conf විවෘත කරන්න, /etc/php-fpm.conf සමග පටලවා නොගන්න (in විවිධ පද්ධතිවිවිධ ස්ථානවල විය හැක, මෙය php-fpm සඳහා වන www process pool config වේ. - එකතු කරන්න (හෝ ප්‍රතිස්ථාපනය කරන්න, ඇත්නම්): clear_env = දියත් කරන ලද සේවකයින් සඳහා ගෝලීය විචල්‍යයන් # අක්‍රීය කිරීම 3. අවශ්‍ය පරිසර විචල්‍යයන් /etc/environment තුළ සකසන්න (සම්මත වාක්‍ය ඛණ්ඩය A=B) 4. ln -fs /etc/environment / etc/sysconfig/php-fpm # දැන් php-fpm සේවා පරිසරය විචල්‍ය වින්‍යාසය හුදෙක් ගෝලීය වින්‍යාසය 5 වෙත සබැඳියක් වනු ඇත. systemctl daemon-reload && සේවාව php-fpm නැවත ආරම්භ කරන්න

සිම්ලින්ක් සමඟ එකම ප්‍රවේශය, න්‍යායාත්මකව, වෙනත් සේවාවන් සඳහාද අදාළ වේ.

යෝජිත විසඳුමේ වාසි:
- /etc/environment හි ගබඩා කර ඇති විචල්‍ය විවිධ යෙදුම් වලට ප්‍රවේශ විය හැක. ඔබට shell හි echo $MYSQL_HOST හෝ php හි getenv("MYSQL_HOST") ඇමතීමට හැකිය.
- /etc/environment හි පැහැදිලිව සකසා නොමැති පරිසර විචල්‍යයන් php-fpm වලින් අවසන් නොවේ. මෙම සේවාව ක්‍රියාත්මක වන හුදකලා පද්ධතියෙන් පිටත සිට පරිසරය පාලනය කිරීමට වාද්‍ය වෘන්දයට ඉඩ සලසයි.

අවාසි:
- අවාසනාවකට මෙන්, nginx හා සමාන php-fpm හි නැවත පූරණය කිරීම සඳහා වැඩ කරන විධානයක් මට හමු නොවීය, එබැවින් ඔබ /etc/environment වෙනස් කරන්නේ නම්, ඔබ කළ යුතුය systemctl daemon-reload && සේවාව php-fpm නැවත ආරම්භ කරන්න.

වැදගත්: ඔබගේ යෙදුම හුදකලා පරිසරයක (සේවාදායකය, අතථ්‍ය යන්ත්‍රය, බහාලුම්) ක්‍රියාත්මක නොවන්නේ නම්, ගෝලීය අවකාශයේ නාම ගැලපීම් හේතුවෙන් පරිසර විචල්‍යයන් නිර්වචනය කිරීම පද්ධතියේ අසල්වැසි සේවාවන්ට අනපේක්ෂිත ලෙස බලපෑ හැකිය.

වින්‍යාස කිරීමේදී භාවිතා කරන පරිසර විචල්‍යයන් අද දත්ත සමුදා අක්තපත්‍ර, API යතුරු, රහස් යතුරු සහ අනෙකුත් සියල්ල වැනි යෙදුමේ සිටුවම් සැකසීමේ ප්‍රධාන ක්‍රමය වේ. යෙදුම යොදවා ඇති ස්ථානය අනුව වෙනස් වේ. දැන් එවැනි සැකසුම් වින්‍යාස ගොනු වල කෙලින්ම ලියා හෝ නරකම ලෙස කේතයේ කෙලින්ම දෘඪ කේතය වෙනුවට පරිසරය හරහා කේතයට ඇතුල් වේ.

අපි සමීපව බලමු:

  • එය ක්රියා කරන්නේ කෙසේද?
  • මෙය ඇත්තෙන්ම හොඳ අදහසක්ද?
  • PHP හි ඔවුන් සමඟ වැඩ කරන්නේ කෙසේද?
  • සහ අවසාන වශයෙන්, වළක්වා ගත යුතු සමහර නිර්දේශ සහ පොදු වැරදි - සැබෑ ලෝකයේ අප පැකිලී ගිය අන්තරායන්!

අපි ඔබේ webserver/Docker/crontabs තුළ පරිසර විචල්‍ය සකසන ආකාරය ආවරණය නොකරමු... මන්ද එය පද්ධතිය මත රඳා පවතී, මෘදුකාංග, සහ අපට පරිසර විචල්‍යයන් කෙරෙහිම අවධානය යොමු කිරීමට අවශ්‍යයි.

ඔබගේ සත්කාරකත්වය Docker Swarm හෝ AWS භාවිතා කරන්නේ නම්, දේවල් ටිකක් වෙනස් වනු ඇත, උදාහරණයක් ලෙස, ඔවුන් පරිසර විචල්‍යයන් භාවිතා කරනවාට වඩා ඔබේ පුද්ගලික යතුරු එන්නත් කිරීමට ඔබේ බහාලුම් ගොනු පද්ධතියට ගොනු තල්ලු කිරීමට තෝරාගෙන ඇත. මෙය මෙම වේදිකා සඳහා ඉතා විශේෂිත වන අතර සෑම කෙනෙකුටම පොදු විකල්පයක් නොවේ.

Env vars 101

වැඩසටහනක් ක්‍රියාත්මක වන විට, එය සියළුම පාරිසරික විචල්‍යයන් එහි දෙමාපියන්ගෙන් උරුම කර ගනී. එබැවින් ඔබ YOLO විචල්‍යය bash හි covfefe ලෙස සකසා විධානය ක්‍රියාත්මක කළහොත්, ඔබට ඕනෑම ළමා ක්‍රියාවලියකදී YOLO කියවීමට හැකි වනු ඇත.

$ YOLO=covfefe php -r "echo getenv("YOLO");" covfefe

මෙම විචල්‍යය දේශීයව පමණක් අර්ථ දක්වා ඇති බැවින්, අපට එය වෙනත් පර්යන්තයකින් (තවත් මාපියෙකුගෙන්) කියවිය නොහැක. අදහස වන්නේ ඔබේ යෙදුම සැමවිටම නිවැරදි විචල්‍යයන් උරුම කර ගන්නා බවට වග බලා ගැනීමයි.

ඔබට සියලුම පාරිසරික විචල්‍යයන් නැරඹිය හැකිය විධාන රේඛාවපහත විධානය ක්‍රියාත්මක කිරීමෙන්, නමුත් ඔබට YOLO විචල්‍යය නොපෙනේ, මන්ද එය පියාසර කරන විට php විධානයට පමණක් ලබා දී ඇති අතර වත්මන් ක්‍රියාවලියේදී සකසා නොමැත:

අපනයනය භාවිතයෙන් ඔබට පරිසර විචල්‍යය සැකසිය හැක<имя>=<значение> :

$ අපනයනය YOLO=covfefe

විචල්‍ය නම් කේස්-සංවේදී වන අතර සම්මුතිය නම් ඉංග්‍රීසියෙන් පමණක්, ලොකු අකුරින්, _ සමඟ බෙදුම්කරුවෙකු ලෙස භාවිතා කිරීමයි (ඊනියා "සර්ප" විලාසය විශාල අකුරින්). PATH , DISPLAY , HTTP_PROXY ... වැනි සමහර විචල්‍යයන් ඔබ දැනටමත් දන්නවා ඇති.

අද හොඳම භාවිතයන්

josegonzalez/dotenv , ආරක්ෂාවට නැඹුරු:

මෙම පුස්තකාලය පෙරනිමියෙන් superglobals පුරවන්නේ නැත:

$Loader = නව josegonzalez\Dotenv\Loader("path/to/.env"); // ගොනුව විග්‍රහ කරන්න.env: $Loader->parse(); // විග්‍රහ කිරීමේ result.env $_ENV විචල්‍යයට යවන්න: $Loader->toEnv();

එය අවශ්‍ය විචල්‍ය සඳහා සහය දක්වයි, පෙරීම, සහ විචල්‍යයක් උඩින් ලියන විට ව්‍යතිරේක විසි කළ හැක.

symfony/dotenv, බ්ලොක් එකේ අලුත් ළමයෙක්:

Symfony 3.3 සිට පවතී. මෙම සංරචකය අනෙක් ඒවා මෙන් .env ගොනුව ගැන සැලකිලිමත් වන අතර සුපිරි ගෝලීය අරා ද පුරවයි:

$dotenv = නව Symfony\Component\Dotenv\Dotenv(); $dotenv->load(__DIR__."/.env"); $dbUser = getenv("DB_USER"); $dbUser = $_ENV["DB_USER"]; $dbUser = $_SERVER["DB_USER"];

ඔබේ අගයන් ලබා ගැනීමට ඔබ එය භාවිතා නොකළ යුතුය, එබැවින් මම ඔබට යෝජනා කරන්නේ ඒ වෙනුවට $_SERVER අමතන්න - තවද අරාවක් ඇමතීම සහ අරාවට පක්ෂව ශ්‍රිතයක් ඇමතීම අතර සුළු කාර්ය සාධන වෙනසක් ඇත.

පරිසර විචල්‍යයන් සැමවිටම නූල් වේ

එක් ප්‍රධාන ගැටළුවක් වන්නේ දැනට PHP හි වර්ග පිරිවිතරයන් ඇති අතර අපගේ සැකසුම් සෑම විටම නිවැරදිව ටයිප් නොකිරීමයි.

Class Db ( public function connect(string hostname, int port) ( ) ) // මෙය ක්‍රියා නොකරනු ඇත: $db->connect($_SERVER["DATABASE_HOSTNAME"], $_SERVER["DATABASE_PORT"]);

Symfony හි ඔබට දැන් විචල්‍ය පරිවර්තනය කළ හැකිය, ඊටත් වඩා - ගොනුවක් කියවීම, json විකේතනය කිරීම...…

පරිසර විචල්‍යයන් සෑම තැනකම හෝ නැත

පරිසර විචල්‍යයන්, ගොනු හෝ මේ දෙකේම මිශ්‍රණයක් භාවිතා කිරීම අතර දැනට විවාදයක් පවතී: පරිසර විචල්‍යයක් යනු වින්‍යාස ගොනුවකි. කාරණය නම්, එය හොඳම භාවිතය ලෙස සලකනු ලැබුවද, පාරිසරික විචල්‍යයන් එතරම් ප්‍රතිලාභ ලබා නොදේ...

නමුත් නිවැරදිව භාවිතා කරන්නේ නම්, Symfony යෙදුමක, උදාහරණයක් ලෙස, පරිසර විචල්‍යයන් පියාසර කරන විට - කිසිදු හැඹිලි ඉවත් නොකර, ප්‍රවේශ නොවී වෙනස් කළ හැකිය. ගොනු පද්ධතිය, කේතය යෙදවීමකින් තොරව: ක්‍රියාවලිය නැවත ආරම්භ කිරීම, උදාහරණයක් ලෙස.

APP_CONFIG_PATH වැනි එක් විචල්‍යයක් පමණක් තිබීම සහ එය "%env(json:file:APP_CONFIG_PATH)%" හරහා කියවීමේ ප්‍රවණතාවය මට පෙනෙන්නේ, විශ්වාසනීය මෙවලමක් (AWS රහස් ගබඩාව වැනි) මඟින් ගොනුව ස්වයංක්‍රීයව කළමනාකරණය කරන්නේ නම් මිස පැරණි හොඳ parameters.yml නැවත සොයා ගැනීමක් ලෙසය. ) තවද envkey.com ද ඇත, එමඟින් ඔබේ පරිසර විචල්‍යයන් ඔබම ගොනු සමඟ පටලවා නොගෙන එක තැනක කළමනාකරණය කිරීමට ඉඩ සලසයි, එය වඩාත් පහසු බැවින් මම මෙම ප්‍රවේශයට කැමතියි!

පාරිසරික විචල්යයන්

PHP හි පාරිසරික විචල්‍යයන්

ස්ක්‍රිප්ට් ආරම්භ කිරීමට පෙර, සේවාදායකය එය තොරතුරු සහිත පරිසර විචල්‍යයන් කිහිපයක් ලබා දෙයි. සමහර විචල්‍යවල ශීර්ෂ කිහිපයක් අඩංගු වේ, නමුත් සියල්ලම නොවේ (ඔබට සියලුම ශීර්ෂයන් ලබා ගත නොහැක). පහතින් මම ඉතාමත් වැදගත් පරිසර විචල්‍ය ලැයිස්තුවක් ලබා දෙන්නම්.

HTTP_ACCEPT

මෙම විචල්‍යය සියල්ල ලැයිස්තුගත කරයි MIME දත්ත වර්ග, බ්රවුසරය මගින් අර්ථ දැක්විය හැක. රේඛාව */* යනු බ්‍රවුසරය ඕනෑම වර්ගයක් තේරුම් ගන්නා බවයි.

HTTP_ACCEPT= image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, application/x-shockwave-flash, application/vnd.ms-excel, application/msword, */*

HTTP_REFERER

මෙම විචල්‍යය පරිශීලකයා මෙයට පැමිණි පිටුව පිළිබඳ තොරතුරු නියෝජනය කරයි. ඔබට මෙම විචල්‍යය භාවිතා කළ හැකිය, උදාහරණයක් ලෙස, ඔබේ වෙබ් අඩවිය වටා පරිශීලකයෙකුගේ චලනය නිරීක්ෂණය කිරීමට සහ පසුව වඩාත් ජනප්‍රිය මාර්ග බැලීමට.

HTTP_REFERER= http://www.spravkaweb.ru/php/pril/

HTTP_COOKIE

මෙම විචල්‍යය සියලුම URL-කේතන ලද කුකීස් ගබඩා කරයි.

HTTP_COOKIE= hotlog=1; ZDEDebuggerPresent=php,phtml,php3; b=b; PHPSESSID=16805922a9258cda274316e60f649cf8

HTTP_USER_AGENT

පරිශීලකයාගේ බ්රවුසරය හඳුනා ගනී. බ්‍රව්සර් වර්ගය ස්ථාපිත කිරීම සඳහා, ඔබ වචන තිබේදැයි මෙම පේළිය පරීක්ෂා කළ යුතුය: බ්‍රවුසරය Internet Explorer නම්, MSIE උපස්ථරය පවතිනු ඇත, සහ Mozilla යන වචනය පමණක් තිබේ නම්, මෙය Netscape වේ.

උදාහරණ වශයෙන්:

HTTP_USER_AGENT= Mozilla/4.0 (අනුකූල; MSIE 6.0; Windows NT 5.1; SV1; MyIE2; Maxthon)

HTTP_HOST

ස්ක්‍රිප්ට් ධාවනය වූ වෙබ් සේවාදායකයේ වසම් නාමය අඩංගු වේ. මෙම විචල්‍යය භාවිතා කිරීමට තරමක් පහසු වේ, නිදසුනක් ලෙස, නිශ්චිත සේවාදායකයකට සම්බන්ධ නොවන පරිදි ස්ථාන ශීර්ෂයේ අවශ්‍ය වන සම්පූර්ණ මාර්ගය ජනනය කිරීමට.

HTTP_HOST= www.spravkaweb.ru

HTTP_FROM

ඉල්ලීම එවූ පරිශීලකයාගේ ඊමේල් ලිපිනය.

සේවාදායක නම

වසම් නාමය හෝ සේවාදායක IP ලිපිනය.

SERVER_NAME= www.spravkaweb.ru

SERVER_SOFTWARE

සේවාදායක ඉල්ලීමට ප්‍රතිචාර දක්වන සේවාදායක වැඩසටහනේ නම සහ අනුවාදය.

SERVER_PORT

මෙම විචල්‍යයේ පරිශීලකයාගේ බ්‍රවුසරයට ප්‍රවේශ වූ සේවාදායක වරාය අඩංගු වේ. සාමාන්‍යයෙන් මෙය 80 වේ. ස්ථාන ශීර්ෂ පරාමිතිය සෑදීමට ද විචල්‍යය භාවිතා කළ හැක.

SERVER_PROTOCOL

ඉල්ලීම සඳහා භාවිතා කරන ලද තොරතුරු ප්‍රොටෝකෝලයේ නම සහ අනුවාදය විචල්‍යයේ අඩංගු වේ.

SERVER_PROTOCOL= HTTP/1.1

REMOTE_ADDR

මෙම විචල්‍යයේ බ්‍රවුසරය දියත් කළ පරිශීලකයාගේ ධාරකයේ IP ලිපිනය (හෝ වසම් නාමය) අඩංගු වේ.

REMOTE_PORT

සේවාදායක ප්‍රතිචාරය ලබා ගැනීම සඳහා පරිශීලකයාගේ බ්‍රවුසරයට පවරා ඇති වරාය.

REMOTE_USER

ඉල්ලීම කරන පරිශීලකයාගේ හඳුනාගැනීමේ නම.

SCRIPT_NAME

මෙම ස්ක්‍රිප්ට් අඩංගු ගොනුවේ නම අඩංගු වේ. මෙම විචල්‍යය ඔබටම හරවා යවන විට (ස්වයං යළි-යොමුවීම්) ස්ථාන ශීර්ෂය සෑදීමේදී මෙන්ම ටැගයේ ක්‍රියා ගුණාංගයේ අගය ආදේශ කිරීම සඳහා භාවිතා කිරීමට පහසු වේ. පරාමිති නොමැතිව දියත් කරන විට ස්ක්‍රිප්ට් අමතන පිටුවේ (නිශ්චිත ස්ක්‍රිප්ට් නාමයකට බැඳී නොසිටීම සඳහා).

DOCUMENT_ROOT

වෙබ් ලේඛන ගසෙහි මූල නාමාවලිය.

REQUEST_METHOD

දත්ත මාරු කිරීමේදී පරිශීලකයා භාවිතා කරන ක්රමය. මෙම විචල්‍යය මත පදනම්ව, පරිශීලකයා භාවිතා කරන ක්‍රමය සහ සුදුසු මූලාශ්‍රයෙන් දත්ත ලබා ගැනීම සහ මාරු කිරීම සිදු කරනු ඇතැයි අපේක්ෂා නොකළ යුතු බව හොඳින් ලියා ඇති ස්ක්‍රිප්ට් එකක් විසින්ම තීරණය කළ යුතු බව සටහන් කළ යුතුය, උදාහරණයක් ලෙස, POST ක්රමය.

QUERY_STRING

URL හි ප්‍රශ්න ලකුණෙන් පසුව දිස්වන පරාමිති අඩංගු වේ. ඒවා GET ක්‍රමය සහ POST ක්‍රමය යන දෙකින්ම ලබා ගත හැකි බව අපි ඔබට මතක් කරමු (අවසාන අවස්ථාවේ දී ඒවා ටැගයේ ක්‍රියාකාරී ගුණාංගයෙන් අර්ථ දක්වා තිබේ නම් ).

PATH_INFO

මාර්ගය පිළිබඳ අමතර තොරතුරු අඩංගු වේ.

PATH_TRANSLATED

විචල්‍යයේ ඇති තොරතුරුම PATH_INFOවෙබ් ලේඛන වෘක්ෂයේ මූල නාමාවලියට යන මාර්ගය සඳහන් කරන උපසර්ගයක් සමඟ.

අන්තර්ගතයේ වර්ගය

ඉල්ලීමේ මාධ්‍ය දත්ත වර්ගය.

CONTENT_LENGTH

පරිශීලකයා විසින් එවන ලද දත්ත බයිට් ගණන ආපසු ලබා දෙයි. ඔබ POST පෝරමයක් පිළිගෙන සකසන්නේ නම් මෙම විචල්‍යය විශ්ලේෂණය කිරීමට අවශ්‍ය වේ.

GATEWAY_INTERFACE

සේවාදායකය භාවිතා කරන CGI අනුවාදය.

පරිසර විචල්‍ය භාවිතා කිරීමේ උදාහරණය

අවධානය!ලිපිය වින්ඩෝස් 7 සඳහා ලියා ඇත, නමුත් අනෙකුත් අනුවාදවල (Window XP, Windows Vista, Windows 8, ...) පරිසර විචල්යයන් වෙත PHP එකතු කිරීමේදී මූලික වෙනස්කම් නොමැත.

විස්තර!ඩී:/වෙබ් ෆෝල්ඩරයේ ඩෙන්වර් ස්ථාපනය කර ඇති බව මත පදනම්ව සැකසුම් වල සියලුම මාර්ග දක්වනු ලැබේ. ලිපියෙන් දත්ත භාවිතා කරන විට, මෙම මාර්ගය ඔබේම මාර්ගයට වෙනස් කිරීමට අමතක නොකරන්න.

පහසුව සඳහා PHP භාවිතා කරමින්ඔබ වින්ඩෝස් කොන්සෝලයේ පරිසර විචල්‍යයන් වින්‍යාස කිරීමට අවශ්‍ය වේ. එසේ නොමැතිනම්, කොන්සෝලය හරහා PHP සමඟ වැඩ කරන විට, php විධානය වෙනුවට, ඔබට php.exe ගොනුව වෙත සම්පූර්ණ මාර්ගය ලිවීමට අවශ්ය වනු ඇත.

අපි හිතමු ඩෙන්වර් ඩී:/වෙබ් ෆෝල්ඩරය තුළ ස්ථාපනය කර ඇති බව.

"පරිගණක" අයිකනය මත දකුණු-ක්ලික් කරන්න ගුණාංග:

අතිරේක පද්ධති පරාමිතීන්:

"උසස්" ටැබය, "පරිසර සැකසීම්..." බොත්තම:

පද්ධති සිටුවම් කණ්ඩායම, Path විචල්‍යය උද්දීපනය කර සංස්කරණ බොත්තම ක්ලික් කරන්න:

රේඛාව එකතු කරන්න D:\web\usr\local\php5; සහ "Ok" ක්ලික් කරන්න:

Denwer නැවත ආරම්භ කරන්න. දැන් ඔබට කොන්සෝලය විවෘත කළ හැකිය (Win + R සහ cmd ඇතුල් කරන්න) සහ PHP හි ක්‍රියාකාරිත්වය පරීක්ෂා කරන්න, විධානය ඇතුළත් කරන්න:

මෙම දෝෂ නිවැරදි කිරීමට, D:/web/usr/local/php5/php.ini ගොනුව විවෘත කරන්න. extension_dir, zend_extension, session.save_path විචල්‍යයන් සොයාගෙන ඒවා පහත අගයන්ට සකසන්න.