2016-07-04 2 views
1

OSX10.11 El Capitan에서 개발자 환경을 설정하는 중 php7.0.8을 사용하여 컴파일하려고합니다. openSSL 대신 SecureTransport를 사용하는 V7.43.0의 Apple 시스템 설치 대신 cURL (현재 v7.49.1)을 새로 설치 한 버전입니다. 여기에 주로 따라 왔던 좋은 참고 자료가 있습니다 : http://mac-dev-env.patrickbougie.com/php/. 그리고 이것은 오류없이 컴파일되지 않는 것으로 발견 된 openSSL의 PHP 지원을위한 빠른 수정을 포함하도록 업데이트되었습니다. [PHP 구성 버그? TBC] cURL은 문제없이 일관되게 설치되며 시스템 설치를 덮어 씁니다. 따라서 명령 줄에서 사용할 수 있습니다.PHP를 컴파일하여 OSX El Capitan에서 비 시스템 cURL을 사용하는 방법 homebrew, macports 또는 disabling SIP없이

내 [기존] cURL을 설치 :

./configure 
    --prefix=/usr/local/curl-7.49.1 
    --with-ssl=/usr/local/openssl 
    ln -s /usr/local/curl-7.49.1 /usr/local/curl 
    echo 'PATH=/usr/local/curl/bin:$PATH' >> ~/.bash_profile 
    source ~/.bash_profile 

내가 이전에 usr/지방 접두사를 시도했지만이 유사 PHP에서 사용되지 않은 : 나는 또한이 같은 컴파일을 테스트 한

./configure 
    --prefix=/usr/local 
    --with-ssl=/usr/local/openssl 
    echo 'PATH=/usr/local/bin/curl/bin:$PATH' >> ~/.bash_profile 
    source ~/.bash_profile) 

시퀀스는 PHP v5.6.23을 사용하여 슬프게도 같은 결과를 얻습니다. PHP는 오류없이 컴파일되지만 결과적으로 PHP는 configure 스크립트에서 참조하는 것이 아니라 시스템 cURL에 연결되어 있습니다.

내 PHP를 configure 명령 :

./configure 
    --prefix=/usr/local/php-7.0.8 
    --with-config-file-path=/usr/local/php-7.0.8/etc 
    --enable-intl 
    --with-icu-dir=/usr/local/icu 
    --enable-bcmath 
    --enable-mbstring 
    --enable-sockets 
    --enable-zip 
    --with-apxs2=/usr/local/apache/bin/apxs 
    --with-bz2 
    --with-curl=/usr/local/curl 
    --with-freetype-dir=/usr/local/freetype 
    --with-gd 
    --with-imap-ssl 
    --with-jpeg-dir=/usr/local/libjpeg 
    --with-mcrypt=/usr/local/libmcrypt 
    --with-mysqli 
    --with-pear 
    --with-pdo-mysql 
    --with-pdo-pgsql=/usr/local/postgresql 
    --with-pgsql=/usr/local/postgresql 
    --with-png-dir=/usr/local/libpng 
    --with-openssl=/usr/local/openssl 
    --with-xmlrpc 
    --with-xsl 
    --with-zlib' 

은 또한 모두가 오류없이 컴파일하지만 PHP는 여전히 시스템 컬을 참조 (특정 디렉토리 제외) --with-컬 옵션 을 시도했습니다.

내 ~/.bash_profile에 :

export PATH=/usr/local/curl/bin:$PATH 
    export PATH=/usr/local/autoconf/bin:$PATH 
    export PATH=/usr/local/openssl/bin:$PATH 
    export MANPATH=/usr/local/openssl/ssl/man:$MANPATH 
    export PATH=/usr/local/git/bin:$PATH 
    export MANPATH=/usr/local/git/share/man:$MANPATH 
    export PATH=/usr/local/cmake/bin:$PATH 
    export MANPATH=/usr/local/cmake/man:$MANPATH 
    export PATH=/usr/local/mysql/bin:$PATH 
    export MANPATH=/usr/local/mysql/man:$MANPATH 
    export PATH=/usr/local/memcached/bin:$PATH 
    export MANPATH=/usr/local/memcached/share/man:$MANPATH 
    export PATH=/usr/local/redis/bin:$PATH 
    export PATH=/usr/local/pcre/bin:$PATH 
    export PATH=/usr/local/apache/bin:$PATH 
    export MANPATH=/usr/local/apache/man:$MANPATH 
    export PATH=/usr/local/postgresql/bin:$PATH 
    export MANPATH=/usr/local/postgresql/man:$PATH 
    export PATH=/usr/local/php/bin:$PATH 
    export MANPATH=/usr/local/php/man:$MANPATH 
    export PATH=/usr/local/node/bin:$PATH 
    export MANPATH=/usr/local/node/share/man:$MANPATH 
    export PATH=/usr/local/graphicsmagick/bin:$PATH 
    export PATH=/usr/local/icu/bin:$PATH 
    export PATH=/usr/local/src/composer:$PATH 

# which curl 발견 내 신선한 컬은 /usr/local/curl/bin/curl

curl --version 
    curl 7.49.1 (x86_64-apple-darwin15.5.0) libcurl/7.49.1 OpenSSL/1.0.2h zlib/1.2.5 
    Protocols: dict file ftp ftps gopher http https imap imaps ldap ldaps pop3 pop3s rtsp smb smbs smtp smtps telnet tftp 
    Features: IPv6 Largefile NTLM NTLM_WB SSL libz TLS-SRP UnixSockets 

phpinfo output

를 PHP를 구성 스크립트의 표준 출력 내 설치 컬 버전을 표시 설치 매번 (시스템 버전이 아님) configure 스크립트가 fo und 의도 된 cURL하지만 컴파일 된 PHP는 이것을 무시합니까?

답변

0

수정은 다음과 같습니다

옵션을 포함 configure 명령을 실행 한 후 : --with-openssl=/path/to/my_new_openssl_dir을의의 전체 경로를 추가하기 전에 EXTRA_LIBS= 섹션 내 -libcrypto-libssl의 모든 인스턴스는 PHP의 src Makefile을 편집하고 제거하는 것입니다 새로 설치된 libcrypto & libssl 라이브러리 : /path/to/my_new_openssl_dir/lib/libssl.dylib /path/to/my_new_openssl_dir/lib/libcrypto.dylib (이전 라이브러리 항목과의 사이에 공백이 있어야 함).

이렇게하면 HomeBrew를 사용하지 않고 무시할 수있는 심볼릭 링크를 추가하기 위해 SIP를 비활성화하지 않고도 OpenSSL/1.0.2h에서 가장 안정적인 php7.0.8을 컴파일하고 OSX 10.11 El Capitan에서 curl 7.49.1을 컴파일 할 수있었습니다.