رتبه موضوع:
  • 0 رای - 0 میانگین
  • 1
  • 2
  • 3
  • 4
  • 5
CURL Redirect Download
#1
سلام
من برای دانلود فایل از لینک هایی که بعد از ریدایرکت فایل رو میفرستن از این کد استفاده میکنم:
set_time_limit(0);
        $fp = fopen ($filename, 'w+');//This is the file where we save the    information
        $ch = curl_init(str_replace(" ","%20",$url));//Here is the file we are downloading, replace spaces with %20
        curl_setopt($ch, CURLOPT_TIMEOUT, 50);
        curl_setopt($ch, CURLOPT_FILE, $fp); // write curl response to file
        curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
        curl_exec($ch);
        curl_close($ch);
        fclose($fp);
اما با خطای زیر مواجه میشم:
نقل قول: curl_setopt(): CURLOPT_FOLLOWLOCATION cannot be activated when safe_mode is enabled or an open_basedir is set
ظاهرا به خاطر open_basedir هست، پشتیبانی هاست هم میگه به دلایل امنیتی نمیشه.

تو صفحه زیر یه روشی رو توضیح دادن
http://stackoverflow.com/questions/38906...tion-error
ولی من هرچقدر سعی کردم نتونستم ازش استفاده کنم!

از دوستان اگر کسی لف کنه یه کد نمونه واسه دانلود مثلا این لینک بنویسه ممنون میشم.
نقل قول:http://158.69.24.239/apk1/M00/01/83/wGOT...calculator
پاسخ
تشکر شده توسط:
#2
از یه جایی که بفهمن CURL با fopen فرق داره و محدودیتهای fopen رو روی CURL اعمال نکنن هاست بگیرین.
پاسخ
تشکر شده توسط:
#3
اقای شهرکی من این کد رو روی vps تست کردم خروجیش یه صفحه html هست!
open_basedir رو فعال کردم.
تعجب میکنم چرا رو xammp درست کار میکنه ولی رو سرور نه!
مشکل از چی میتونه باشه؟
پاسخ
تشکر شده توسط:
#4
توی خروجی چی دریافت میکنید؟
پاسخ
تشکر شده توسط:
#5
لینک صفحه من اینه:
http://apkpure.com/king-calculator/com.kingcalculator
لینک دانلود رو هم از پایین درمیارم ولی رو سرور همون صفحه بالایی رو ذخیره میکنه.
ولی روی لوکال فایل رو درست دانلود میکنه!
لطفا شما هم یه تست بکنین.
پاسخ
تشکر شده توسط:
#6
اطلاعات یوزر ایجنت و... رو توی cURL جعل کنید ببینید درست میشه؟
پاسخ
تشکر شده توسط:
#7
خیر تفاوتی نکرد.
شما تست کردین؟ جواب داد؟
پاسخ
تشکر شده توسط:
#8
راستش فرصت نکردم تست کنم ولی قطعاً راه حل داره. به محض اینکه وقت کنم حتماً نمونه کد براتون میگذارم.
پاسخ
تشکر شده توسط:
#9
تصمیم گرفتم از دانلودر خود سیستم عامل استفاده میکنم.
احیانا کسی خواست از این روش استفاده کنه بهتره از کدهای زیر استفاده کنه:
با استفاده از wget:
wget -d -c --tries=0 --read-timeout=30 -O "myfile.zip" "http://example.com/link"
با استفاده از aria2:
aria2c -c -m 0 -o "myfile.zip" "http://example.com/link"

تذکر: این کدها روی هاست های اشتراکی جواب نمیده.
پاسخ
تشکر شده توسط: Eshpilen
#10
من یه وقتا فایلهایی که مثلا فیلتر هست و اینا مستقیم سخته دانلود کرد، روی هاستم فایل PHP میذارم با file_get_contents و fiel_put_contents دانلود کنه سیو کنه روی هاست بعد از اونجا مستقیم و بدون هیتلرشکن دانلود میکنم. ولی بعضی وقتا که فایل خیلی حجیم باشه میبینی این روش توسط PHP با خطای مصرف بیش از حد RAM مواجه میشه، اونوقت خوشبختانه چون تابع system بازه میام و با wget دانلود میکنم.
البته هاست مال یکی از دوستان هست و محدودیت نذاشته مثلا تابع system رو ببنده.
پاسخ
تشکر شده توسط:




کاربران در حال بازدید این موضوع: 5 مهمان