PHP 7.2 را با Homebrew در OSX با OpenSSL نصب کنید و نه با ماژول Apple Secure Transport for PHP Curl

دلایل بسیار خوبی وجود دارد که ما ممکن است بخواهیم ماژول Curl PHP را با OpenSSL بسازیم نه حمل و نقل ایمن اپل ، به عنوان مثال. ب) استفاده از گواهینامه های مشتری در قالب PEM یا استفاده از HTTP / 2.

تا مارس 2018 این کار بسیار ساده بود: شما حلقه ای را نصب کردید - با استفاده از Opensl و نصب php72 - با homebrew-curl و همین. کمی غیر عملی ، اما ساده است.

نگهدارنده homebrew در تلاش برای "بهبود" موارد با ایجاد چیزهای ناراحت کننده اما ساده کاملاً غیرممکن ، فرمول PHP را از شیر خانگی PHP به homebrew تبدیل کرده اند.

"به نظر می رسد بی ضرر" ، شما ممکن است فکر می کنید؟ مطمئناً ، به جز اینكه آنها فقط فرمول را به روشی كه در آن قرار دارد ، جابجا نمی كنند. آنها آن را به میزان قابل توجهی تغییر داده اند ، از جمله امکان کنترل دیگر ایجاد ماژول های PHP. این بدان معنی است که شما دیگر نمی توانید کنترل کنید که آیا ماژول Curl PHP برای کتابخانه libcurl تهیه شده از سیستم که از حمل و نقل ایمن اپل استفاده می کند ، یا برای کتابخانه homebrew libcurl که برای OpenSSL ساخته شده است ، ایجاد شده است. بسته به تنظیمات یا نیازهای شما

این به طور موثری مانع از استفاده از فرمول PHP Homebrew برای بروزرسانی به PHP جدیدتر شد.

وقتی StackOverflow را چک می کنم ، به نظر نمی رسد تنها باشم. از آنجا که من شخصاً مجبور شدم PHP 7 را با این نسخه جدید فرمول PHP homebrew در محیط توسعه خود نصب کنم ، مجبور شدم خودم این مشکل را حل کنم.

خبر خوب: من یک راه حل کار دارم. بگذارید داستان مردمم را برای شما تعریف کنم ...

من فرمول php.rb را ایجاد کردم تا PHP را در برابر libcurl نصب شده توسط Homebrew نصب کنید ، که شما هنوز هم باید بعد از نصب Homebrews OpenSSL با brew install opensl آنرا نصب کنید.

نحوه استفاده از آن:

$ cd / usr / local / Homebrew / Bibliothek / Taps / homebrew / homebrew-core $ curl -s https://github.com/dossy/homebrew-core/commit/b75fe286f79e2b89548c5ed1bbe1958313c5c103.patch | پچ -p1

بسته به آنچه مردم homebrew به فرمول php.rb بین اکنون تغییر می دهند و زمان اعمال تغییر آن ممکن است باشد ، ممکن است بدرستی اعمال شود. اگر تغییر من در مخزن رسمی بالادست گنجانده نشود ، می توانم پچ را به صورت دوره ای به روز کنید.

به روز شده 2018-11-07: من یک پچ به روز شده برای php.rb فعلی Homebrew برای PHP 7.2.11 ایجاد کردم. در عوض از این موارد استفاده کنید:
$ curl -s https://github.com/dossy/homebrew-core/commit/d0681b61.patch | پچ -p1

پس از اعمال پچ ، به جای استفاده از باینری از پیش پر شده "پر شده" باید مجبور شوید از منبع آن را نصب کنید:

$ brew install php - build-from-Source

بسته به سیستم ، این ممکن است مدتی طول بکشد. اما باید کار کرد هنگامی که این کار انجام شد ، می توانید بررسی کنید که از libcurl درست و opensl با دستور زیر استفاده شده است:

$ / usr / local / bin / php -r "var_dump (phpversion ()، curl_version () ['ssl_version'])" رشته (5) 7.2.6 رشته (14) "OpenSSL / 1.0.2o"

اگر این کار نکرد ، SecureTransport یا LibreSSL به جای OpenSSL / XYZn نمایش داده می شود. در این حالت خطایی رخ داده است. گریه در این مرحله نامناسب یا فکر وحشتناکی نخواهد بود. وقتی دوباره قدرت خود را به دست آوردید ، دوباره کار خود را بررسی کنید و اگر هنوز نمی توانید آن را کار کنید ، به من اطلاع دهید. شاید بتوانم به شما کمک کنم.

تبریک می گویم به شما کسانی که موفق شده اند! امیدوارم این کار مفید بوده و باعث صرفه جویی در وقت و دردسر شما شود. می دانم که از آن قدردانی می کردم ...