လက်ရှိတည်နေရာ: ပင်မစာမျက်နှာ> နောက်ဆုံးရဆောင်းပါးများစာရင်း> အကြောင်းအရာများကိုဖတ်သည့်အခါ zip_read () အမှားအယွင်းများကိုဘာကြောင့်ရရှိနိုင်သနည်း။

အကြောင်းအရာများကိုဖတ်သည့်အခါ zip_read () အမှားအယွင်းများကိုဘာကြောင့်ရရှိနိုင်သနည်း။

M66 2025-06-12

Zip_Read () နှင့် zip_entry_read () နှင့် zip_entry_read ()) နှင့် zip_entry_Read () ကိုအတူတကွအသုံးပြုသောလုပ်ဆောင်ချက်နှစ်ခုဖြစ်သည်။ သို့သော် developer များစွာသည် zip_read () နှင့် 0 င်ရောက်ခြင်းကို အသုံးပြု. just_entry_Read () မှအကြောင်းအရာများကိုဖတ်ရှုသောအခါရှုပ်ထွေးသောပြ problem နာတစ်ခုနှင့်ကြုံတွေ့ရပြီး zip_entry_read () မှအကြောင်းအရာကိုဖတ်ပါ။ ဘာကြောင့်ဒီကိုဖြစ်ပေါ်စေတာလဲ ဤဆောင်းပါးသည်အကြောင်းပြချက်များကိုနက်နက်ရှိုင်းရှိုင်းခွဲခြမ်းစိတ်ဖြာခြင်းနှင့်ဖြေရှင်းနည်းများပေးလိမ့်မည်။

အဆိုပါပြ problem နာကိုပြန်ပေါ်လာ

အောက်ပါကုဒ်ကိုသုံးသပ်ကြည့်ပါ -

 $zip = zip_open('http://m66.net/test.zip');
if (is_resource($zip)) {
    while ($entry = zip_read($zip)) {
        echo 'ဖိုင်ဖတ်နေ: ' . zip_entry_name($entry) . PHP_EOL;
        if (zip_entry_open($zip, $entry)) {
            $contents = zip_entry_read($entry);
            echo $contents . PHP_EOL;
            zip_entry_close($entry);
        }
    }
    zip_close($zip);
}

အထက်ပါကုဒ်ကိုဖွင့်သောအခါအောက်ပါအမှားပေါ်ပေါက်လာနိုင်သည်။

 Warning: zip_entry_read(): supplied resource is not a valid Zip Entry resource in...

သို့မဟုတ်အကြောင်းအရာဖတ်သည့်အကြောင်းအရာသည်အချည်းနှီးဖြစ်သည်။ ၎င်းသည်မျှော်လင့်ထားသည့်အတိုင်းလုံးဝမပြည့်စုံပါ။

ခွဲခြမ်းစိတ်ဖြာခြင်းဖြစ်ပေါ်စေသည်

ဤပြ problem နာ၏အဓိကအကြောင်းရင်းသည်များသောအားဖြင့်အောက်ပါတို့မှတစ်ခုဖြစ်သည်။

1 ။ ဖိုင်လမ်းကြောင်းသည်ဒေသခံလမ်းကြောင်းအစား URL ဖြစ်သည်

Zip_open () သည် ဖိုင်လမ်းကြောင်းတစ်ခုတွင်ဖြတ်သန်းခြင်းကိုအထောက်အပံ့ပြုသော်လည်း Remote URLs များကိုသေချာပေါက်မထောက်ပံ့ပါ ။ အထက်ဖော်ပြပါဥပမာတွင်အသုံးပြုထားသည့်အတိုင်း http://m66.net/test.zip သည် သင်၏ PHP သည် ခွင့်ပြုခွင့် zip extension ကို enable zip extension ကို zip extension ကိုအထောက်အကူပြုရှိမရှိပေါ်တွင်မူတည်သည်။ များသောအားဖြင့် zip_open () တွင် lite ကိုရှာဖွေနိုင်သော local file တစ်ခုလိုအပ်သည်။

2 ။ zip_entry_read () ၏ခေါ်ဆိုမှုနည်းလမ်း () မမှန်ကန်ပါ

zip_entry_read () ဖတ်၏အရှည်ကိုသတ်မှတ်ရန်လိုအပ်သည်။ အကယ်. အရှည်ကိုမသတ်မှတ်ထားပါက 1024 bytes များကိုပုံမှန်အားဖြင့်ဖတ်လိမ့်မည်။ အကယ်. ဖိုင်သည်ဗလာသို့မဟုတ်မမှန်ကန်ပါကတိုက်ရိုက်ကျရှုံးနိုင်သည်။

3 ။ အဆိုပါ entry ကိုအောင်မြင်စွာဖွင့်လှစ်မဖွင့်သို့မဟုတ်အရင်းအမြစ်မမှန်ကန်ပါ

zip_entry_open () ကို သုံး. entry ကိုဖွင့်သောအခါ, နောက်ဆက်တွဲ zip_entry_read () ကို ပျက်ကွက်ပါကအကောင်အထည်ဖော်လိမ့်မည်မဟုတ်ပါ။ ထို့အပြင် PHP ၏ဗားရှင်းအချို့သည်အထူးသဖြင့်ချုံ့သည့်နည်းစနစ်ကိုမသိမ်းဆည်းပါက,

လုပ်ဖို့မှန်ကန်သောနည်းလမ်း

zip entries တွေကိုမှန်ကန်စွာဖတ်ရန်သေချာစေရန်, အောက်ပါအဆင့်များကိုလိုက်နာသင့်သည် -

 $localFile = 'test.zip';
copy('http://m66.net/test.zip', $localFile); // ဒေသအလိုက်အဝေးထိန်းဖိုင်များကို download လုပ်ပါ

$zip = zip_open($localFile);
if (is_resource($zip)) {
    while ($entry = zip_read($zip)) {
        $name = zip_entry_name($entry);
        echo "ဖိုင်ကိုဖတ်ပါ: $name" . PHP_EOL;

        if (zip_entry_open($zip, $entry)) {
            $size = zip_entry_filesize($entry);
            $contents = zip_entry_read($entry, $size);
            echo "ကေြနပ်သော: " . PHP_EOL . $contents . PHP_EOL;

            zip_entry_close($entry);
        } else {
            echo "entry တစ်ခုဖွင့်လှစ်နိုင်ခြင်း: $name" . PHP_EOL;
        }
    }
    zip_close($zip);
}

ဒီမှာသော့ချက်အနည်းငယ်ရှိပါတယ်:

  • ပထမနေရာသို့အဝေးမှ ZIP ကို ​​download လုပ်ပါ ။ ထို့နောက် Local file ကိုဖွင့်ရန် Zip_open () ကိုသုံးပါ။

  • မှန်ကန်သောဖတ်သည့်အရှည်ရရှိရန် Zip_entry_Filesize () ကို သုံးပါ။

  • အမြဲတမ်း zip_entry_open () မှန်ကန်မှု ရှိမရှိအမြဲတမ်းစစ်ဆေးပါ။

အကျဉ်းချုပ်

အမှားများကိုအစီရင်ခံရန် Zip_read () ကို အသုံးပြုခြင်း၏အဓိကအကြောင်းရင်းများသည်များသောအားဖြင့်အရင်းအမြစ်အဖွင့်နည်းလမ်းဖြစ်သောကြောင့် Ready round + ကိုမှန်ကန်စွာမသတ်မှတ်ထားပါ။ သို့မဟုတ်ဝေးလံခေါင်သီသောလမ်းကြောင်းကိုစနစ်တကျကိုင်တွယ်ခြင်းမရှိပါ။ ဒေသတွင်းဖိုင်လမ်းကြောင်းကိုအမြဲတမ်းအသုံးပြုရန်နှင့် zip_entry_filesize () နှင့်အကြောင်းအရာကိုတိကျစွာဖတ်ရန်အကြံပြုသည်။ သင့်တွင်ပိုမိုမြင့်မားသောတောင်းဆိုမှုများရှိပါကပိုမိုအဆင့်မြင့်ပြီးတည်ငြိမ်သော interface ကိုပေးသော Ziparchive class ကိုသုံးနိုင်သည်။

မှန်ကန်သောဖြစ်စဉ်ကိုမှတစ်ဆင့် Zip files များကိုဖတ်ရှုခြင်းအားဖြင့်ပိုမိုလုံခြုံစိတ်ချနိုင်, ပိုမိုတည်ငြိမ်ပြီးပိုမိုထိရောက်စွာပြုလုပ်နိုင်သည်။