[英]Home Brew PHP 7.2.5 Install with cURL
I have a localhost development environment on my Mac that uses homebrew's php
formula and I'm pulling my hair out trying to install with a custom path to cURL rather than the default Mac OS version (v7.54.0) that uses SecureTransport for SSL. 我的Mac上有一个本地主机开发环境,该环境使用自制的
php
公式,并且尝试使用cURL的自定义路径进行安装,而不是使用将SecureTransport用于SSL的默认Mac OS版本(v7.54.0)进行安装。 SecureTransport causes a lot of issues with SSL requests to remote services, so OpenSSL is pretty much a requirement for my purposes. SecureTransport导致对远程服务的SSL请求出现很多问题,因此出于我的目的,OpenSSL几乎是必需的。
Here's the process I've taken so far: 到目前为止,这是我已经执行的过程:
brew install curl --with-openssl
brew install curl --with-openssl
: brew install curl --with-openssl
php
formula to modify the compile process, telling ./configure
to use the brew installed curl (v7.59.0). php
公式以修改编译过程,告诉./configure
使用brew安装的curl(v7.59.0)。 I've tried --with-curl=/usr/local/Cellar/curl/7.59.0
and also --with-curl=#{Formula["curl"].opt_prefix}
. --with-curl=/usr/local/Cellar/curl/7.59.0
以及--with-curl=#{Formula["curl"].opt_prefix}
。 The second option is just a dynamic symlink to the former. brew reinstall --build-from-source php
brew reinstall --build-from-source php
To verify that I have the write ./configure
options I added a temporary line to my Brew formula edits that spits out the args
passed. 为了验证我是否具有write
./configure
选项,我在Brew公式编辑中添加了一条临时行,以吐出所传递的args
。 Here's what this looks like: 看起来是这样的:
--prefix=/usr/local/Cellar/php/7.2.5
--localstatedir=/usr/local/var
--sysconfdir=/usr/local/etc/php/7.2
--with-config-file-path=/usr/local/etc/php/7.2
--with-config-file-scan-dir=/usr/local/etc/php/7.2/conf.d
--with-pear=/usr/local/Cellar/php/7.2.5/share/php/pear
--enable-bcmath
--enable-calendar
--enable-dba
--enable-dtrace
--enable-exif
--enable-ftp
--enable-fpm
--enable-intl
--enable-mbregex
--enable-mbstring
--enable-mysqlnd
--enable-opcache-file
--enable-pcntl
--enable-phpdbg
--enable-phpdbg-webhelper
--enable-shmop
--enable-soap
--enable-sockets
--enable-sysvmsg
--enable-sysvsem
--enable-sysvshm
--enable-wddx
--enable-zip
--with-apxs2=/usr/local/opt/httpd/bin/apxs
--with-bz2
--with-curl=/usr/local/Cellar/curl/7.59.0
--with-fpm-user=_www
--with-fpm-group=_www
--with-freetype-dir=/usr/local/opt/freetype
--with-gd
--with-gettext=/usr/local/opt/gettext
--with-gmp=/usr/local/opt/gmp
--with-icu-dir=/usr/local/opt/icu4c
--with-jpeg-dir=/usr/local/opt/jpeg
--with-kerberos
--with-layout=GNU
--with-ldap
--with-ldap-sasl
--with-libedit
--with-libzip
--with-mhash
--with-mysql-sock=/tmp/mysql.sock
--with-mysqli=mysqlnd
--with-ndbm
--with-openssl=/usr/local/opt/openssl
--with-password-argon2=/usr/local/opt/argon2
--with-pdo-dblib=/usr/local/opt/freetds
--with-pdo-mysql=mysqlnd
--with-pdo-odbc=unixODBC,/usr/local/opt/unixodbc
--with-pdo-pgsql=/usr/local/opt/libpq
--with-pgsql=/usr/local/opt/libpq
--with-pic
--with-png-dir=/usr/local/opt/libpng
--with-pspell=/usr/local/opt/aspell
--with-sodium=/usr/local/opt/libsodium
--with-unixODBC=/usr/local/opt/unixodbc
--with-webp-dir=/usr/local/opt/webp
--with-xmlrpc
--with-xsl
--with-zlib
By all intensive purposes this should be working, but when I open up a phpinfo()
after reinstalling php from the source I'm seeing the following under the Configure Command value: 从所有密集的目的来看,这应该可以工作,但是当我从源代码重新安装php后打开
phpinfo()
,在“ 配置命令”值下看到以下内容:
'./configure'
'--prefix=/usr/local/Cellar/php/7.2.5'
'--localstatedir=/usr/local/var'
'--sysconfdir=/usr/local/etc/php/7.2'
'--with-config-file-path=/usr/local/etc/php/7.2'
'--with-config-file-scan-dir=/usr/local/etc/php/7.2/conf.d'
'--with-pear=/usr/local/Cellar/php/7.2.5/share/php/pear'
'--enable-bcmath'
'--enable-calendar'
'--enable-dba'
'--enable-dtrace'
'--enable-exif'
'--enable-ftp'
'--enable-fpm'
'--enable-intl'
'--enable-mbregex'
'--enable-mbstring'
'--enable-mysqlnd'
'--enable-opcache-file'
'--enable-pcntl'
'--enable-phpdbg'
'--enable-phpdbg-webhelper'
'--enable-shmop'
'--enable-soap'
'--enable-sockets'
'--enable-sysvmsg'
'--enable-sysvsem'
'--enable-sysvshm'
'--enable-wddx'
'--enable-zip'
'--with-apxs2=/usr/local/opt/httpd/bin/apxs'
'--with-bz2'
'--with-fpm-user=_www'
'--with-fpm-group=_www'
'--with-freetype-dir=/usr/local/opt/freetype'
'--with-gd'
'--with-gettext=/usr/local/opt/gettext'
'--with-gmp=/usr/local/opt/gmp'
'--with-icu-dir=/usr/local/opt/icu4c'
'--with-jpeg-dir=/usr/local/opt/jpeg'
'--with-kerberos'
'--with-layout=GNU'
'--with-ldap'
'--with-ldap-sasl'
'--with-libedit'
'--with-libzip'
'--with-mhash'
'--with-mysql-sock=/tmp/mysql.sock'
'--with-mysqli=mysqlnd'
'--with-ndbm'
'--with-openssl=/usr/local/opt/openssl'
'--with-password-argon2=/usr/local/opt/argon2'
'--with-pdo-dblib=/usr/local/opt/freetds'
'--with-pdo-mysql=mysqlnd'
'--with-pdo-odbc=unixODBC,/usr/local/opt/unixodbc'
'--with-pdo-pgsql=/usr/local/opt/libpq'
'--with-pgsql=/usr/local/opt/libpq'
'--with-pic'
'--with-png-dir=/usr/local/opt/libpng'
'--with-pspell=/usr/local/opt/aspell'
'--with-sodium=/usr/local/opt/libsodium'
'--with-unixODBC=/usr/local/opt/unixodbc'
'--with-webp-dir=/usr/local/opt/webp'
'--with-xmlrpc'
'--with-xsl'
'--with-zlib'
'--with-curl'
If you notice, there's a trailing --with-curl
at the tail of this, while everything else is in the order that's defined in the brew formula. 如果您注意到了,它的尾部会有一个
--with-curl
尾部,而其他所有内容都按照brew公式中定义的顺序进行。 I have no idea where or how this is appended onto the ./configure
command, but this may be related to the cause of the issue. 我不知道将其附加到
./configure
命令的位置或方式,但这可能与问题的原因有关。
For reference, here's the exact content of the modified php.rb
formula for Brew: 作为参考,以下是Brew修改后的
php.rb
公式的确切内容:
https://gist.github.com/Kevinlearynet/a44ffa2107a1b6e09935766a9e46cfd4 https://gist.github.com/Kevinlearynet/a44ffa2107a1b6e09935766a9e46cfd4
Either way, I'm completely stumped here. 无论哪种方式,我都完全陷入了困境。 Any help or assistance is very much appreciated.
非常感谢任何帮助。
I've applied the patch supplied by dossy and it works! 我已经应用了dossy提供的补丁,它可以正常工作!
Below are the specific steps to take to solve the issue. 以下是解决此问题要采取的具体步骤。 More details on what this fixes can be found below.
可以在下面找到有关此修复程序的更多详细信息。
cd /usr/local/Homebrew/Library/Taps/homebrew/homebrew-core
curl -s https://github.com/dossy/homebrew-core/commit/b75fe286f79e2b89548c5ed1bbe1958313c5c103.patch | patch -p1
brew reinstall php --build-from-source
The specific source of issue appears to be that the libxml2
library is needed to replace Mac's built-in libcurl
, which is what ultimately forces PHP's dependency on SecureTransport . 问题的具体来源似乎是需要
libxml2
库来替换Mac的内置libcurl
,这最终迫使PHP依赖于SecureTransport 。 These two lines in php.rb were the critical part of the fix for my purposes: 出于我的目的,php.rb中的这两行是该修复程序的关键部分:
For my specific circumstance I had to reset my editted home brew formula (php.rb) to the source because I had previously editted it. 对于我的具体情况,我不得不将编辑后的家庭酿造公式(php.rb)重置为源,因为我之前已经对其进行了编辑。 As a result applying the patch didn't work at first.
结果,最初应用补丁无法正常工作。 If you've also editted your php.rb formula then I'd reset it to the source: https://raw.githubusercontent.com/Homebrew/homebrew-core/master/Formula/php.rb .
如果您还编辑了php.rb公式,则将其重置为源: https ://raw.githubusercontent.com/Homebrew/homebrew-core/master/Formula/php.rb。
In the linked article on medium.com dossy suggests the follow command to build after applying to patch, brew install php --build-from-source
. 在medium.com上的链接文章中,dossy建议在应用补丁后按照以下命令进行构建,
brew install php --build-from-source
。 If you already have PHP installed you'll need to use reinstall in place of install instead. 如果您已经安装了PHP,则需要使用reinstall代替install 。
I've come up with a solution that involves modifying the Homebrew php.rb
formula in homebrew-core
. 我想出了一个解决方案,其中涉及修改
homebrew-core
的Homebrew php.rb
公式。 Solution is published here: 解决方案在这里发布:
https://medium.com/this-old-code/installing-php-7-2-bc779b23dce8 https://medium.com/this-old-code/installing-php-7-2-bc779b23dce8
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.