Home Brew PHP 7.2.5使用cURL安装

时间:2018-05-09 18:27:51

标签: php macos curl homebrew

我的Mac上有一个本地主机开发环境,它使用自制程序的php公式,我试图安装cURL的自定义路径,而不是默认的Mac OS版本(v7.54.0)使用SecureTransport进行SSL。 SecureTransport会对远程服务的SSL请求造成很多问题,因此OpenSSL几乎是我的目的。

这是我到目前为止所采取的流程:

  1. 使用OpenSSL通过家庭酿造安装curl:brew install curl --with-openssl
  2. 编辑brew的php公式来修改编译过程,告诉./configure使用brew安装的curl(v7.59.0)。我已经尝试了--with-curl=/usr/local/Cellar/curl/7.59.0--with-curl=#{Formula["curl"].opt_prefix}。第二个选项只是前者的动态符号链接。
  3. 保存编辑内容并从源代码重建php:brew reinstall --build-from-source php
  4. 为了验证我是否有写./configure选项,我在Brew公式编辑中添加了一个临时行,用于吐出args传递的内容。这是这样的:

    --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
    

    出于所有密集目的,这个应该正常工作,但是当我从源代码重新安装php后打开phpinfo()时,我在配置命令<下看到以下内容/ strong>值:

    './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'
    

    如果您注意到,此尾部有一个尾随--with-curl,而其他所有内容都按照brew公式中定义的顺序排列。我不知道在./configure命令中将其附加到何处或如何附加,但这可能与问题的原因有关。

    供参考,以下是Brew的修改后的php.rb公式的确切内容:

    https://gist.github.com/Kevinlearynet/a44ffa2107a1b6e09935766a9e46cfd4

    无论哪种方式,我都完全被困在这里。非常感谢任何帮助或帮助。

2 个答案:

答案 0 :(得分:3)

我已经应用了dossy提供的补丁,但它确实有效!

以下是解决问题的具体步骤。有关此修复程序的更多详细信息,请参见下文。

  1. cd /usr/local/Homebrew/Library/Taps/homebrew/homebrew-core
  2. curl -s https://github.com/dossy/homebrew-core/commit/b75fe286f79e2b89548c5ed1bbe1958313c5c103.patch | patch -p1
  3. brew reinstall php --build-from-source
  4. 问题的具体来源似乎是需要libxml2库来替换Mac的内置libcurl,这最终会迫使PHP依赖 SecureTransport 。 php.rb中的这两行是我修复的关键部分:

    • depends_on“libxml2”
    • - 与-的libxml-DIR =#{。式[ “的libxml2”] opt_prefix}

    对于我的具体情况,我不得不将我的编辑家酿啤酒配方(php.rb)重置为源,因为我之前编辑过它。因此,应用补丁最初不起作用。如果您还编辑了php.rb公式,那么我会将其重置为源:https://raw.githubusercontent.com/Homebrew/homebrew-core/master/Formula/php.rb

    在medium.com上的链接文章中,dossy建议在应用补丁brew install php --build-from-source后建立以下命令。如果您已安装PHP,则需要使用重新安装代替安装

答案 1 :(得分:1)

我提出的解决方案涉及修改php.rb中的Homebrew homebrew-core公式。解决方案发布在这里:

https://medium.com/this-old-code/installing-php-7-2-bc779b23dce8