خیلی وقته چیزی ننوشتم PHP، بنابراین تصمیم گرفتم یک سری مقالات کوچک در مورد با شکوه بنویسم ماژول PHP - cURL. اما قبل از استفاده از آن، cURL باید روی Denwer نصب شود، زیرا در نسخه اولیه این بسته حلقهمستثنی شده است.

قبل از اقدام به نصب cURL در Denwer، اجازه دهید به طور خلاصه در مورد امکاناتی که فراهم می کند صحبت کنیم این ماژول. حلقهیک راه راحت برای شبیه سازی اقدامات کاربر در سرور است. در واقع می توانید پاسخ سرور به یک درخواست خاص را بررسی کنید. به عنوان مثال می توانید ارسال کنید درخواست های POSTو ببینید سرور چه می دهد. به عنوان مثال، می خواهید عملکرد سیستم مجوز را بررسی کنید. البته می توانید به صورت دستی نام کاربری و رمز عبور خود را نیز از طریق مرورگر وارد کنید و ببینید چه اتفاقی می افتد. اما نوشتن یک سری آزمایش کوچک که در آن ارسال می شود بسیار راحت تر خواهد بود نمونه های مختلفورود و رمز عبور، و در همان زمان یک پاسخ از سرور نمایش داده می شود: مجوز موفقیت آمیز یا نه. و شما در حال حاضر به دنبال این هستید که آیا اسکریپت مجوز به درستی کار می کند یا خیر. برای اهداف مشابه استفاده می شود ماژول cURL.

حالا بیایید مشغول شویم نصب ماژول cURL در Denwer:

  • دانلود بسته افزونه: PHP5: ماژول های اضافیدر این لینک: http://www.denwer.ru/packages/php5.html .
  • بسته دانلود شده را نصب کنید (اگر سرور در حال اجرا است، از قبل آن را متوقف کنید).
  • در پرونده " usr/local/php5/php.ini"حذف نظر از خط:" ;extension=php_curl.dllبا حذف نقل قول های ابتدای خط.
  • سرور را راه اندازی کنید.
  • داده ها را بررسی کنید phpinfo(). اگر دیدی" پشتیبانی cURL فعال شد"، پس همه چیز خوب است. اگر نه، پس با دقت بررسی کنید که آیا تمام مراحل را به درستی دنبال کرده اید یا خیر.

من فکر می کنم که در مقاله بعدی (و شاید در یکی)، این ماژول را قبلاً با استفاده از مثال استفاده از آن در آن تحلیل خواهیم کرد اسکریپت های پی اچ پیپس عوض نکنید!

راهنمای کوتاهی برای کسانی که می خواهند curl php را در ویندوز 8.1 x64 راه اندازی کنند. اگر curl روی وب سرور شما پیکربندی نشده است، پس خطای بعدی: خطای مرگبار: فراخوانی تابع تعریف نشده curl_init().

راه اندازی cURL

آنچه در زیر نوشته شده است برای دسته ای از Windows 8.1 x64، Windows10 x64 + Apache 2.4.12 (win32) + Open SSl 1.0.1m + PHP 5.6.11 (php-5.6.11-Win32-VC11-x86) مرتبط است.

  1. کتابخانه cURL را دانلود کنید http://winampplugins.co.uk/curl. بسته بندی را در هر پوشه ای باز کنید. به عنوان مثال، "W:\WebServers\usr\local\curl".
  2. پسوند=php_curl.dll باید در فایل پیکربندی PHP php.ini فعال باشد.
  3. آیتم اجباری نیست، اما در بسیاری از منابع انجام آن توصیه شده است. بدون این مورد برای ما کار می کند. از پوشه ای که PHP در آن نصب شده است، کتابخانه های زیر را در پوشه "C:\Windows\system32" کپی کنید: libssh2.dll، php_curl.dll (واقع در پوشه ext)، ssleay32.dll، libeay32.dll. علاوه بر این، فایل ssleay32.dll باید در "C:\Windows\SysWOW64" کپی شود.
  4. به متغیرهای محیطی در متغیر Path مسیر پوشه نصب curl.exe و فایل php.ini را اضافه کنید. به عنوان مثال، "W:\WebServers\usr\local\curl;W:\WebServers\usr\local\php5". من خیلی خوشحال بودم که در ویندوز 10 (1511) ظاهر شد رابط جدیدویرایش متغیرهای محیطی ویرایش پارامترها بسیار راحت شد.

پشتیبانی SSL را برای cURL فعال کنید

  1. فایل http://curl.haxx.se/ca/cacert.pem را در پوشه ای که کتابخانه curl.exe در آن نصب شده است دانلود کنید.
  2. نام فایل دانلود شده را به curl-ca-bundle.crt تغییر دهید
  3. برای راه اندازی مجدد کامپیوتر

کسانی که پس از به روز رسانی به 5.6.1، 5.5.17 از cURL استفاده می کنند، با این واقعیت مواجه شدند که ماژول cURL از کار افتاد. از آن زمان تا کنون مشکل از بین نرفته است. حتی در آخرین نسخه PHP 5.6.4 نیز این مشکل پابرجا بود.

چگونه می دانید که cURL برای شما کار می کند؟

ایجاد کردن فایل phpو در آنجا کپی کنید:

آن را از سرور باز کنید. اگر خروجی چیزی شبیه به:

آرایه ( => 468736 => 3 => 3997 => 0 => 7.39.0 => x86_64-pc-win32 => OpenSSL/1.0.1j => 1.2.7.3 => آرایه ( => dict => فایل => ftp => ftps => gopher => http => https => imap => imaps => ldap => pop3 => pop3s => rtsp => scp => sftp => smtp => smtps => telnet => tftp) )

بنابراین cURL خوب است، اگر به جای آن یک خطای PHP باشد، پس مشکل وجود دارد.

البته ابتدا فایل php.ini را بررسی کنید، خط آن را پیدا کنید

پسوند=php_curl.dll

و مطمئن شوید که قبل از آن نقطه ویرگول نباشد.

اگر این مورد است و cURL کار نمی کند، می توان آزمایش دیگری برای تأیید وضعیت غیرعادی انجام داد. یک فایل php دیگر با محتوا ایجاد کنید:

cURL را در مرورگر جستجو کنید، اگر فقط یک مورد مطابقت داشته باشد، ماژول cURL بارگیری نمی شود:

در همان زمان، هر دو Apache و PHP به طور معمول کار می کنند.

سه راه حل:

  1. روش اول (نه کوشر). اگر PHP 5.6.* دارید، نسخه PHP 5.6.0 را بردارید، از آنجا فایل قدیمی php_curl.dll را بردارید و آن را با نسخه جدید خود از نسخه، مثلا PHP 5.6.4 جایگزین کنید. برای کسانی که PHP 5.5.17 و بالاتر دارند، باید همان فایل را از PHP 5.5.16 بردارید و آن را نیز جایگزین کنید. تنها مشکل اینجا پیدا کردن این نسخه های قدیمی است. البته می‌توانید در http://windows.php.net/downloads/snaps/php-5.6 جستجو کنید، اما شخصاً آنچه را که نیاز داشتم در آنجا پیدا نکردم. و خود تصمیم به نوعی کاملاً خوب نیست.
  2. روش دوم (بسیار سریع، اما نه کوشر). فایل libssh2.dll را از دایرکتوری PHP در پوشه Apache24bin کپی کنید و آپاچی را مجددا راه اندازی کنید.
  3. روش سوم (کوشر - مردم کوشر ایستاده کف می زنند). شما باید خود را اضافه کنید دایرکتوری PHPدر PATH. نحوه انجام این کار به خوبی در اسناد رسمی توضیح داده شده است.

بررسی می کنیم:

Voila، بخش cURL در جای خود قرار دارد.

چرا اینطور است؟ این مشکل از کجا آمده است؟ هیچ پاسخی برای این سوال وجود ندارد، اگرچه مکانیسم وقوع آن قبلاً توضیح داده شده است.

به نظر می رسد مشکل به این واقعیت مربوط می شود که 5.6.1 قرار بود با libcurl 7.38.0 به روز شده منتشر شود. اما این به طور قطع مشخص نیست، نویسندگان PHP به Apache اشاره می کنند و می گویند که برخی از اشکالات در آنجا وجود دارد.

مکانیسم مشکل: اگر PATH سیستم گنجانده نشده باشد دایرکتوری PHP، سپس هنگامی که سرویس آپاچی شروع می شود، نمی تواند dll جدید (libssh2.dll) را که یک وابستگی برای php_curl است پیدا کند.

گزارش اشکال مربوطه:

خطای مرگبار: فراخوانی تابع تعریف نشده curl_multi_init () در ...

به طور کلی، مشکلاتی با cURL در PHP وجود داشت، به نظر می رسد، اگر نه همیشه، پس اغلب اوقات. در روند جستجوی مشکلم، به موضوعاتی برخوردم که برخی از آنها بیش از ده سال قدمت داشتند.

علاوه بر این، گوگل چند نتیجه گیری دیگر نیز ارائه کرد:

به اندازه کافی "دستورالعمل هایی برای احمق ها" در اینترنت وجود دارد که در آنها به تفصیل، همراه با تصاویر، نحوه لغو نظر از خط extension=php_curl.dll در فایل php.ini را می گویند.

در سایت رسمی PHP، در قسمت نصب cURL، تنها دو پیشنهاد در مورد سیستم ویندوز وجود دارد:

برای کار با این ماژول در فایل های ویندوز libeay32.dll و ssleay32.dll باید در سیستم وجود داشته باشد متغیر محیطیمسیر. شما به فایل libcurl.dll از سایت cURL نیاز ندارید.

ده بار آنها را خوانده ام. تغییر به زبان انگلیسیو چند بار دیگر به زبان انگلیسی بخوانید. هر بار بیشتر و بیشتر متقاعد می شوم که این دو جمله توسط حیوانات نوشته شده است، یا کسی فقط روی صفحه کلید پریده است - معنی آنها را نمی فهمم.

همچنین نکات و دستورالعمل های دیوانه کننده ای وجود دارد (حتی موفق شدم برخی از آنها را امتحان کنم).

در سایت گزارش اشکال PHP، من قبلاً به کشف نیاز به گنجاندن دایرکتوری با PHP در متغیر سیستم PATH نزدیک شده ام.

به طور کلی، برای کسانی که با cURL مشکل دارند و باید "یک دایرکتوری با PHP را در متغیر سیستم PATH وارد کنند"، به دستورالعملی که قبلاً در بالا ذکر شد بروید http://php.net/manual/ru/faq.installation .php#faq .installation.addtopath . همه چیز در آنجا ساده است و مهمتر از همه، آنچه باید انجام شود به زبان انسان نوشته شده است.

21 پاسخ

ممکن است قبلاً فر داشته باشید

شاید نیازی به دانلود چیزی نداشته باشید:

  • اگر از ویندوز 10 نسخه 1803 یا بالاتر استفاده می کنید، سیستم عامل شما با یک کپی از curl از قبل پیکربندی شده و آماده استفاده است.
  • اگر نیازهای باطنی بیشتری دارید (به عنوان مثال به ساخت‌های cygwin، ساخت‌های شخص ثالث، libcurl، فایل‌های هدر، کدهای منبعو غیره)، از جادوگر دانلود curl استفاده کنید. پس از پاسخ به پنج سوال، لیستی از لینک های دانلود به شما نمایش داده می شود.

    استخراج و تنظیم حلقه

    curl.exe را در بسته دانلودی خود پیدا کنید. احتمالاً زیر bin\ .

    مکانی را در هارد دیسک خود انتخاب کنید که به عنوان یک خانه دائمی برای فرها عمل کند:

    • اگر می خواهید فولدر خود را curl کنید، C:\Program Files\curl\ یا C:\curl\ این کار را انجام می دهد.
    • اگر فایل های اجرایی رایگان زیادی دارید و نمی خواهید پوشه های انفرادی زیادی به PATH اضافه کنید، برای این منظور از یک پوشه استفاده کنید، مانند C:\Program Files\tools\ یا C:\tools\ .

    curl.exe را در یک پوشه قرار دهید. و هرگز یک پوشه یا محتویات آن را جابجا نکنید.

    در مرحله بعد، می خواهید curl را در هر نقطه از خط فرمان در دسترس قرار دهید. برای انجام این کار، پوشه را مانند زیر به PATH اضافه کنید:

    1. روی منوی شروع ویندوز 10 کلیک کنید. شروع به تایپ کردن "environment" کنید.
    2. نتیجه جستجو را خواهید دید. ویرایش متغیرهای محیطی سیستم. آن را انتخاب کنید.
    3. پنجره System Properties باز می شود. روی دکمه کلیک کنید متغیرهای محیطیدر پایین
    4. متغیر "مسیر" را در بخش "متغیرهای سیستم" (کادر پایین) انتخاب کنید. روی دکمه کلیک کنید تغییر دادن.
    5. کلیک " اضافه کردن"و مسیر را به پوشه ای که curl.exe در آن قرار دارد قرار دهید.
    6. کلیک خوب،در صورت نیاز پنجره های باز کنسول را ببندید و دوباره باز کنید تا PATH جدید را دریافت کنند.

    اکنون از تایپ curl در هر خط فرمان لذت ببرید. وقت آن است که از آن لذت ببرید!

    برای اجرای curl از خط فرمان

    الف) کلیک کنید کلیک راستنماد ماوس "رایانه من"

    ب) "Properties" را انتخاب کنید

    د) روی برگه [Advanced] - دکمه "Environment Variables" کلیک کنید

    ه) در قسمت "System Variable" "Path" و "Edit" را انتخاب کنید.

    و) یک نقطه ویرگول و سپس مسیری را که curl.exe خود را قرار داده اید اضافه کنید (به عنوان مثال D:\software\curl)

اکنون می توانید از خط فرمان با تایپ کردن زیر اجرا کنید:

حلقه www.google.com

با شروع ویندوز 10 نسخه 1803 (و قبل از آن با Insider Build 17063)، دیگر curl را نصب نمی‌کنید. ویندوز حاوی curl.exe (و tar.exe) خودش در C:\Windows\System32\ است که می‌توانید مستقیماً از CMD معمولی به آن دسترسی داشته باشید.

C:\Users\vonc>C:\Windows\System32\curl.exe --نسخه curl 7.55.1 (ویندوز) libcurl/7.55.1 WinSSL تاریخ انتشار: پروتکل ها: فایل دیکت ftp ftps http https imap imaps pop3 pop3s smt smtps telnet tftp ویژگی ها: AsynchDNS IPv6 Largefile SSPI Kerberos SPNEGO NTLM SSL C:\Users\vonc>C:\Windows\System32\tar.exe --نسخه bsdtar 3.3.2 - libarchive 3.3.2.5 zlibf ipp

احتمالاً شایان ذکر است که Powershell نسخه 3 و بالاتر نسخه های بعدیحاوی cmdlet Invoke-WebRequest است که دارای برخی قابلیت‌های پیچ‌شدن است. احتمالاً باید به cmdlet های New-WebServiceProxy و Invoke-RestMethod اشاره کرد.

من مطمئن نیستم که آیا آنها برای شما کار می کنند یا نه، اما اگرچه من در ویندوز نیستم، باید بگویم که رویکرد شیء که PS استفاده می کند را پیدا می کنم، کار با ابزارهایی مانند curl، wget و غیره بسیار آسان تر است. . شاید ارزش دیدن داشته باشند

می توانید ایجاد کنید آخرین نسخهبا دنبال کردن این آموزش، curl، openssl، libssh2 و zlib را در 3 مرحله آسان انجام دهید.

Curl به صورت ایستا ساخته شده است، بنابراین نیازی به توزیع مجدد موارد ضروری ندارید زمان پویااعدام.

همچنین می توانید یک نسخه از پیش ساخته شده (x86 و x64) را از اینجا دانلود کنید

من دنبال روند دانلود بودم حلقهو هر جا که گفتند فایل را کپی کنید curl.exe در System32اما آنها لینک مستقیم ارائه نکردند. بنابراین در اینجا می توانید لذت ببرید curl.exeآسان در پوشه binبه سادگی

آن را از حالت فشرده خارج کنید و سپس به پوشه bin بروید که در آن فایل exe را دریافت می کنید

فکر کردم دقیقاً همان کاری را که انجام دادم بنویسم (ویندوز 10، نسخه 64 بیتی):

فایل اجرایی curl را انتخاب کنید.

Win64 را انتخاب کنید.

جهانی را انتخاب کنید.

هر کدام را انتخاب کنید.

نسخه curl: 7.53.1 - SSL فعال SSH فعال است. اعتبار: ویکتور شاکاتس. این بسته از نوع اجرایی curl است. این پیوند یک باینری curl از پیش کامپایل شده برای شما دریافت می کند (یا در برخی موارد، با استفاده از اطلاعات ارائه شده در صفحه ای که این پیوند شما را به آن می برد). ممکن است libcurl را به عنوان یک کتابخانه/DLL مشترک نصب کنید یا نه. فایل با استفاده از 7zip بسته بندی شده است. 7zip یک فرمت فشرده سازی فایل است.

روی دانلود کلیک کنید.

شما باید فایل curl-7.53.1-win64-mingw.7z را در پوشه دانلودها داشته باشید.

اگر 7-Zip را ندارید آن را نصب کنید.

کلیک راست کنید، 7-Zip، Extract Here. فایل استخراج شده را در جایی مانند Z:\Tools\ کپی و پیست کنید.

اگر به پوشه bin نگاه کنید، curl.exe را خواهید دید. اگر روی آن دوبار کلیک کنید، پنجره به سرعت چشمک می زند و ناپدید می شود. برای اجرای آن باید از آن استفاده کنید خط فرمان. به پوشه bin رفته و curl و سپس گزینه های خود را تایپ کنید تا درخواست را انجام دهید. شما باید استفاده کنید نقل قول های دوگانه . نقل قول های تکی با curl در ویندوز کار نمی کنند.

اکنون باید curl را به متغیر Path سفارشی خود اضافه کنید تا مجبور نباشید به آن بروید پوشه مورد نظربرای شروع برنامه به "This PC"، "Computer"، "System Properties"، " گزینه های اضافی system"، به عنوان یک مدیر وارد شوید (شما مدیر نیستید، درست است؟).

z:\tools\curl-7.53.1-win64-mingw\bin

اگر دوست دارید می توانید یک بک اسلش اضافه کنید، فکر نمی کنم مهم باشد. دکمه حرکت به بالا را فشار دهید تا در بالای لیست قرار گیرد و بتوانید به راحتی آن را از صفحه قبلی مشاهده کنید. OK، OK، OK را فشار دهید، سپس یک خط فرمان باز کنید و می توانید curl را با تایپ curl از هر پوشه ای به عنوان هر کاربر اجرا کنید. نقل قول های دوگانه خود را فراموش نکنید.

این پاسخی است که می خواهم دریافت کنم.

این نصب کننده کار را برای من آسان کرد http://www.confusedbycode.com/curl/

"شما می توانید cURL را برای ویندوز فقط با چند کلیک نصب کنید. به سادگی نصب کننده را از جدول زیر دانلود و اجرا کنید و روی Install کلیک کنید. نصب پیش فرض شامل است.