>  기사  >  백엔드 개발  >  PHP 설치 gpg 확장

PHP 설치 gpg 확장

WBOY
WBOY원래의
2016-07-29 09:14:591403검색

살펴보니 기본적으로 기본 PHP에는 gpg 확장이 설치되어 있지 않은 것으로 나타났습니다. 그래서 우리는 PHP용 gpg 확장을 직접 설치합니다:

1. 먼저 gpg 소스 코드 패키지를 다운로드합니다:

http://pecl.php.net/package/gnupg

내가 다운로드한 것은: gnupg-1.3.6.tgz

압축을 푼 후 phpize 디렉터리로 이동한 다음 ./configure를 실행합니다.

2.

<code>andy@AndyMacBookPro:~/Downloads/gnupg<span>-</span><span>1.3</span><span>.6</span>$ phpize
Configuring for:
PHP Api Version:         <span>20100412</span>
Zend Module Api No:      <span>20100525</span>
Zend Extension Api No:   <span>220100525</span>
andy@AndyMacBookPro:~/Downloads/gnupg<span>-</span><span>1.3</span><span>.6</span>$ <span>.</span>/configure
checking for grep that handles long lines <span>and</span><span>-e</span><span>...</span> /usr/bin/grep
checking for egrep<span>...</span> /usr/bin/grep <span>-E</span>
checking for a sed that does <span>not</span> truncate output<span>...</span> /usr/bin/sed
checking for cc<span>...</span> cc
checking whether the C compiler works<span>...</span> yes
checking for C compiler default output file name<span>...</span> a<span>.</span>out
checking for suffix of executables<span>...</span>
checking whether we are cross compiling<span>...</span> no
checking for suffix of object files<span>...</span> o
checking whether we are using the GNU C compiler<span>...</span> yes
checking whether cc accepts <span>-g</span><span>...</span> yes
checking for cc option <span>to</span> accept ISO C89<span>...</span><span>none</span> needed
checking how <span>to</span> run the C preprocessor<span>...</span> cc <span>-E</span>
checking for icc<span>...</span> no
checking for suncc<span>...</span> no
checking whether cc understands <span>-c</span><span>and</span><span>-o</span> together<span>...</span> yes
checking for system library directory<span>...</span> lib
checking <span>if</span> compiler supports <span>-R</span><span>...</span> no
checking <span>if</span> compiler supports <span>-Wl</span>,<span>-rpath</span>,<span>...</span> yes
checking build system <span>type</span><span>...</span> i386<span>-apple</span><span>-darwin13</span><span>.4</span><span>.0</span>
checking host system <span>type</span><span>...</span> i386<span>-apple</span><span>-darwin13</span><span>.4</span><span>.0</span>
checking target system <span>type</span><span>...</span> i386<span>-apple</span><span>-darwin13</span><span>.4</span><span>.0</span>
checking for PHP prefix<span>...</span> /usr
checking for PHP <strong>include</strong>s<span>...</span><span>-I</span>/usr/<strong>include</strong>/php <span>-I</span>/usr/<strong>include</strong>/php/main <span>-I</span>/usr/<strong>include</strong>/php/TSRM <span>-I</span>/usr/<strong>include</strong>/php/Zend <span>-I</span>/usr/<strong>include</strong>/php/ext <span>-I</span>/usr/<strong>include</strong>/php/ext/<span>date</span>/lib
checking for PHP extension directory<span>...</span> /usr/lib/php/extensions/no<span>-debug</span><span>-non</span><span>-zts</span><span>-</span><span>20100525</span>
checking for PHP installed headers prefix<span>...</span> /usr/<strong>include</strong>/php
checking <span>if</span> debug is enabled<span>...</span> no
checking <span>if</span> zts is enabled<span>...</span> no
checking for re2c<span>...</span> no
configure: WARNING: You will need re2c <span>0.13</span><span>.4</span><span>or</span> later <span>if</span> you want <span>to</span> regenerate PHP parsers<span>.</span>
checking for gawk<span>...</span> no
checking for nawk<span>...</span> no
checking for awk<span>...</span> awk
checking <span>if</span> awk is broken<span>...</span> no
checking for gnupg support<span>...</span> yes, shared
checking for gnupg files <span>in</span> default path<span>...</span><span>not</span> found
configure: error: Please reinstall the gpgme distribution</code>

gpgme를 설치하라는 메시지가 나오는 것을 볼 수 있습니다. 자, 그럼 gpgme를 설치해 볼까요?

  1. gpgme를 설치합니다
<code>andy<span>@AndyMacBookPro</span>:~/Downloads/gnupg-<span>1.3</span><span>.6</span>$ brew install <span><span>gpgme</span>
==></span> Downloading <span>https</span>:<span>//</span>downloads.sf.net/project/machomebrew/Bottles/gpgme-<span>1.4</span><span>.3</span><span>######</span><span>######</span><span>######</span><span>######</span><span>######</span><span>######</span><span>######</span><span>######</span><span>######</span><span>######</span><span>######</span><span>######</span><span>100.0</span>%
=<span>=></span> Pouring gpgme-<span>1.4</span><span>.3</span>.mavericks.bottle.tar.gz
??  /usr/local/Cellar/gpgme/<span>1.4</span><span>.3</span>: <span>17</span> files, <span>1.2</span>M
andy<span>@AndyMacBookPro</span>:~/Downloads/gnupg-<span>1.3</span><span>.6</span>$ ./configure
checking <span>for</span> grep that handles long lines <span>and</span> -e... /usr/bin/grep
checking <span>for</span> egrep... /usr/bin/grep -E
checking <span>for</span> a sed that does <span>not</span> truncate output... /usr/bin/sed
checking <span>for</span> cc... cc
checking whether the C compiler works... <span>yes</span>
checking <span>for</span> C compiler <span>default</span> output file name... a.out
checking <span>for</span> suffix <span>of</span> executables...
checking whether we are cross compiling... <span>no</span>
checking <span>for</span> suffix <span>of</span> object files... o
checking whether we are using the GNU C compiler... <span>yes</span>
checking whether cc accepts -g... <span>yes</span>
checking <span>for</span> cc option to accept ISO C89... none needed
checking how to run the C preprocessor... cc -E
checking <span>for</span> icc... <span>no</span>
checking <span>for</span> suncc... <span>no</span>
checking whether cc understands -c <span>and</span> -o together... <span>yes</span>
checking <span>for</span> system library directory... lib
checking <span>if</span> compiler supports -R... <span>no</span>
checking <span>if</span> compiler supports -Wl,-rpath,... <span>yes</span>
checking build system type... i386-apple-darwin13<span>.4</span><span>.0</span>
checking host system type... i386-apple-darwin13<span>.4</span><span>.0</span>
checking target system type... i386-apple-darwin13<span>.4</span><span>.0</span>
checking <span>for</span> PHP prefix... /usr
checking <span>for</span> PHP <strong>include</strong>s... -I/usr/<strong>include</strong>/php -I/usr/<strong>include</strong>/php/main -I/usr/<strong>include</strong>/php/TSRM -I/usr/<strong>include</strong>/php/Zend -I/usr/<strong>include</strong>/php/ext -I/usr/<strong>include</strong>/php/ext/date/lib
checking <span>for</span> PHP extension directory... /usr/lib/php/extensions/<span>no</span>-debug-non-zts-<span>20100525</span>
checking <span>for</span> PHP installed headers prefix... /usr/<strong>include</strong>/php
checking <span>if</span> debug <span>is</span> enabled... <span>no</span>
checking <span>if</span> zts <span>is</span> enabled... <span>no</span>
checking <span>for</span> re2c... <span>no</span><span>configure</span>: <span>WARNING</span>: You will need re2c <span>0.13</span><span>.4</span><span>or</span> later <span>if</span> you want to regenerate PHP parsers.
checking <span>for</span> gawk... <span>no</span>
checking <span>for</span> nawk... <span>no</span>
checking <span>for</span> awk... awk
checking <span>if</span> awk <span>is</span> broken... <span>no</span>
checking <span>for</span> gnupg support... <span>yes</span>, shared
checking <span>for</span> gnupg files <span>in</span><span>default</span> path... found <span>in</span> /usr/local/<strong>include</strong>
checking <span>for</span> gpgme_check_version <span>in</span> -lgpgme... <span>yes</span>
checking <span>for</span> gpg... /usr/local/bin/gpg
checking <span>for</span> ld used <span>by</span> cc... /<strong>Application</strong>s/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/ld
checking <span>if</span> the linker (/<strong>Application</strong>s/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/ld) <span>is</span> GNU ld... <span>no</span>
checking <span>for</span> /<strong>Application</strong>s/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/ld option to reload object files... -r
checking <span>for</span> BSD-compatible nm... /usr/bin/nm
checking whether ln -s works... <span>yes</span>
checking how to recognize dependent libraries... pass_all
checking <span>for</span> ANSI C header files... <span>yes</span>
checking <span>for</span> sys/types.h... <span>yes</span>
checking <span>for</span> sys/stat.h... <span>yes</span>
checking <span>for</span> stdlib.h... <span>yes</span>
checking <span>for</span> string.h... <span>yes</span>
checking <span>for</span> memory.h... <span>yes</span>
checking <span>for</span> strings.h... <span>yes</span>
checking <span>for</span> inttypes.h... <span>yes</span>
checking <span>for</span> stdint.h... <span>yes</span>
checking <span>for</span> unistd.h... <span>yes</span>
checking dlfcn.h usability... <span>yes</span>
checking dlfcn.h presence... <span>yes</span>
checking <span>for</span> dlfcn.h... <span>yes</span>
checking the maximum length <span>of</span> command line arguments... <span>196608</span>
checking command to parse /usr/bin/nm output from cc object... ok
checking <span>for</span> objdir... .libs
checking <span>for</span> ar... ar
checking <span>for</span> ranlib... ranlib
checking <span>for</span> strip... strip
checking <span>for</span> dsymutil... dsymutil
checking <span>for</span> nmedit... nmedit
checking <span>for</span> -single_module linker flag... <span>yes</span>
checking <span>for</span> -exported_symbols_list linker flag... <span>yes</span>
checking <span>if</span> cc supports -fno-rtti -fno-exceptions... <span>yes</span>
checking <span>for</span> cc option to produce PIC... -fno-common
checking <span>if</span> cc PIC flag -fno-common works... <span>yes</span>
checking <span>if</span> cc static flag -static works... <span>no</span>
checking <span>if</span> cc supports -c -o file.o... <span>yes</span>
checking whether the cc linker (/<strong>Application</strong>s/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/ld) supports shared libraries... <span>yes</span>
checking dynamic linker characteristics... darwin13<span>.4</span><span>.0</span> dyld
checking how to hardcode library paths into programs... immediate
checking whether stripping libraries <span>is</span> possible... <span>yes</span>
checking <span>if</span> libtool supports shared libraries... <span>yes</span>
checking whether to build shared libraries... <span>yes</span>
checking whether to build static libraries... <span>no</span>creating libtool
appending configuration tag <span>"CXX"</span> to libtool
<span>configure</span>: creating ./config.status
config.<span>status</span>: creating config.h
andy<span>@AndyMacBookPro</span>:~/Downloads/gnupg-<span>1.3</span><span>.6</span>$</code>

make:

<code>andy@AndyMacBookPro:~/Downloads/gnupg<span>-</span><span>1.3</span><span>.6</span>$ make
/bin/sh /Users/andy/Downloads/gnupg<span>-</span><span>1.3</span><span>.6</span>/libtool <span>--</span>mode<span>=</span>compile cc  <span>-I</span><span>.</span><span>-I</span>/Users/andy/Downloads/gnupg<span>-</span><span>1.3</span><span>.6</span><span>-DPHP_ATOM_INC</span><span>-I</span>/Users/andy/Downloads/gnupg<span>-</span><span>1.3</span><span>.6</span>/<strong>include</strong> <span>-I</span>/Users/andy/Downloads/gnupg<span>-</span><span>1.3</span><span>.6</span>/main <span>-I</span>/Users/andy/Downloads/gnupg<span>-</span><span>1.3</span><span>.6</span><span>-I</span>/usr/<strong>include</strong>/php <span>-I</span>/usr/<strong>include</strong>/php/main <span>-I</span>/usr/<strong>include</strong>/php/TSRM <span>-I</span>/usr/<strong>include</strong>/php/Zend <span>-I</span>/usr/<strong>include</strong>/php/ext <span>-I</span>/usr/<strong>include</strong>/php/ext/<span>date</span>/lib <span>-I</span>/usr/<span>local</span>/<strong>include</strong>  <span>-DHAVE_CONFIG_H</span><span>-g</span><span>-O2</span><span>-c</span> /Users/andy/Downloads/gnupg<span>-</span><span>1.3</span><span>.6</span>/gnupg<span>.</span>c <span>-o</span> gnupg<span>.</span>lo
mkdir <span>.</span>libs
 cc <span>-I</span><span>.</span><span>-I</span>/Users/andy/Downloads/gnupg<span>-</span><span>1.3</span><span>.6</span><span>-DPHP_ATOM_INC</span><span>-I</span>/Users/andy/Downloads/gnupg<span>-</span><span>1.3</span><span>.6</span>/<strong>include</strong> <span>-I</span>/Users/andy/Downloads/gnupg<span>-</span><span>1.3</span><span>.6</span>/main <span>-I</span>/Users/andy/Downloads/gnupg<span>-</span><span>1.3</span><span>.6</span><span>-I</span>/usr/<strong>include</strong>/php <span>-I</span>/usr/<strong>include</strong>/php/main <span>-I</span>/usr/<strong>include</strong>/php/TSRM <span>-I</span>/usr/<strong>include</strong>/php/Zend <span>-I</span>/usr/<strong>include</strong>/php/ext <span>-I</span>/usr/<strong>include</strong>/php/ext/<span>date</span>/lib <span>-I</span>/usr/<span>local</span>/<strong>include</strong> <span>-DHAVE_CONFIG_H</span><span>-g</span><span>-O2</span><span>-c</span> /Users/andy/Downloads/gnupg<span>-</span><span>1.3</span><span>.6</span>/gnupg<span>.</span>c  <span>-fno</span><span>-common</span><span>-DPIC</span><span>-o</span><span>.</span>libs/gnupg<span>.</span>o
/bin/sh /Users/andy/Downloads/gnupg<span>-</span><span>1.3</span><span>.6</span>/libtool <span>--</span>mode<span>=</span>compile cc  <span>-I</span><span>.</span><span>-I</span>/Users/andy/Downloads/gnupg<span>-</span><span>1.3</span><span>.6</span><span>-DPHP_ATOM_INC</span><span>-I</span>/Users/andy/Downloads/gnupg<span>-</span><span>1.3</span><span>.6</span>/<strong>include</strong> <span>-I</span>/Users/andy/Downloads/gnupg<span>-</span><span>1.3</span><span>.6</span>/main <span>-I</span>/Users/andy/Downloads/gnupg<span>-</span><span>1.3</span><span>.6</span><span>-I</span>/usr/<strong>include</strong>/php <span>-I</span>/usr/<strong>include</strong>/php/main <span>-I</span>/usr/<strong>include</strong>/php/TSRM <span>-I</span>/usr/<strong>include</strong>/php/Zend <span>-I</span>/usr/<strong>include</strong>/php/ext <span>-I</span>/usr/<strong>include</strong>/php/ext/<span>date</span>/lib <span>-I</span>/usr/<span>local</span>/<strong>include</strong>  <span>-DHAVE_CONFIG_H</span><span>-g</span><span>-O2</span><span>-c</span> /Users/andy/Downloads/gnupg<span>-</span><span>1.3</span><span>.6</span>/gnupg_keylistiterator<span>.</span>c <span>-o</span> gnupg_keylistiterator<span>.</span>lo
 cc <span>-I</span><span>.</span><span>-I</span>/Users/andy/Downloads/gnupg<span>-</span><span>1.3</span><span>.6</span><span>-DPHP_ATOM_INC</span><span>-I</span>/Users/andy/Downloads/gnupg<span>-</span><span>1.3</span><span>.6</span>/<strong>include</strong> <span>-I</span>/Users/andy/Downloads/gnupg<span>-</span><span>1.3</span><span>.6</span>/main <span>-I</span>/Users/andy/Downloads/gnupg<span>-</span><span>1.3</span><span>.6</span><span>-I</span>/usr/<strong>include</strong>/php <span>-I</span>/usr/<strong>include</strong>/php/main <span>-I</span>/usr/<strong>include</strong>/php/TSRM <span>-I</span>/usr/<strong>include</strong>/php/Zend <span>-I</span>/usr/<strong>include</strong>/php/ext <span>-I</span>/usr/<strong>include</strong>/php/ext/<span>date</span>/lib <span>-I</span>/usr/<span>local</span>/<strong>include</strong> <span>-DHAVE_CONFIG_H</span><span>-g</span><span>-O2</span><span>-c</span> /Users/andy/Downloads/gnupg<span>-</span><span>1.3</span><span>.6</span>/gnupg_keylistiterator<span>.</span>c  <span>-fno</span><span>-common</span><span>-DPIC</span><span>-o</span><span>.</span>libs/gnupg_keylistiterator<span>.</span>o
/bin/sh /Users/andy/Downloads/gnupg<span>-</span><span>1.3</span><span>.6</span>/libtool <span>--</span>mode<span>=</span><span>link</span> cc <span>-DPHP_ATOM_INC</span><span>-I</span>/Users/andy/Downloads/gnupg<span>-</span><span>1.3</span><span>.6</span>/<strong>include</strong> <span>-I</span>/Users/andy/Downloads/gnupg<span>-</span><span>1.3</span><span>.6</span>/main <span>-I</span>/Users/andy/Downloads/gnupg<span>-</span><span>1.3</span><span>.6</span><span>-I</span>/usr/<strong>include</strong>/php <span>-I</span>/usr/<strong>include</strong>/php/main <span>-I</span>/usr/<strong>include</strong>/php/TSRM <span>-I</span>/usr/<strong>include</strong>/php/Zend <span>-I</span>/usr/<strong>include</strong>/php/ext <span>-I</span>/usr/<strong>include</strong>/php/ext/<span>date</span>/lib <span>-I</span>/usr/<span>local</span>/<strong>include</strong>  <span>-DHAVE_CONFIG_H</span><span>-g</span><span>-O2</span><span>-o</span> gnupg<span>.</span>la <span>-export</span><span>-dynamic</span><span>-avoid</span><span>-version</span><span>-prefer</span><span>-pic</span><span>-module</span><span>-rpath</span> /Users/andy/Downloads/gnupg<span>-</span><span>1.3</span><span>.6</span>/modules  gnupg<span>.</span>lo gnupg_keylistiterator<span>.</span>lo <span>-Wl</span>,<span>-rpath</span>,/usr/<span>local</span>/<strong>include</strong>/lib <span>-L</span>/usr/<span>local</span>/<strong>include</strong>/lib <span>-lgpgme</span>
cc ${wl}<span>-flat_namespace</span> ${wl}<span>-undefined</span> ${wl}suppress <span>-o</span><span>.</span>libs/gnupg<span>.</span>so <span>-bundle</span><span>.</span>libs/gnupg<span>.</span>o <span>.</span>libs/gnupg_keylistiterator<span>.</span>o  <span>-L</span>/usr/<span>local</span>/<strong>include</strong>/lib <span>-lgpgme</span><span>-Wl</span>,<span>-rpath</span><span>-Wl</span>,/usr/<span>local</span>/<strong>include</strong>/lib
ld: warning: directory <span>not</span> found for option <span>'-L/usr/local/<strong>include</strong>/lib'</span>
dsymutil <span>.</span>libs/gnupg<span>.</span>so <span>||</span> :
creating gnupg<span>.</span>la
(cd <span>.</span>libs <span>&&</span> rm <span>-f</span> gnupg<span>.</span>la <span>&&</span> ln <span>-s</span><span>..</span>/gnupg<span>.</span>la gnupg<span>.</span>la)
/bin/sh /Users/andy/Downloads/gnupg<span>-</span><span>1.3</span><span>.6</span>/libtool <span>--</span>mode<span>=</span>install cp <span>.</span>/gnupg<span>.</span>la /Users/andy/Downloads/gnupg<span>-</span><span>1.3</span><span>.6</span>/modules
cp <span>.</span><span>/</span><span>.</span>libs/gnupg<span>.</span>so /Users/andy/Downloads/gnupg<span>-</span><span>1.3</span><span>.6</span>/modules/gnupg<span>.</span>so
cp <span>.</span><span>/</span><span>.</span>libs/gnupg<span>.</span>lai /Users/andy/Downloads/gnupg<span>-</span><span>1.3</span><span>.6</span>/modules/gnupg<span>.</span>la
<span>----------------------------------------------------------------------</span>
Libraries have been installed <span>in</span>:
   /Users/andy/Downloads/gnupg<span>-</span><span>1.3</span><span>.6</span>/modules

<span>If</span> you ever happen <span>to</span> want <span>to</span><span>link</span> against installed libraries
<span>in</span> a given directory, LIBDIR, you must either use libtool, <span>and</span>
specify the <span>full</span> pathname of the library, <span>or</span> use the <span>`-LLIBDIR'
flag during linking and do at least one of the following:
   - add LIBDIR to the `</span>DYLD_LIBRARY_PATH<span>' environment variable
     during execution

See any operating system documentation about shared libraries for
more information, such as the ld(1) and ld.so(8) manual pages.
----------------------------------------------------------------------

Build complete.
Don'</span>t forget <span>to</span> run <span>'make test'</span><span>.</span>andy@AndyMacBookPro:~/Downloads/gnupg<span>-</span><span>1.3</span><span>.6</span>$</code>

4.so 파일이 생성된 것을 볼 수 있습니다. so 파일 php의 확장 디렉토리로 이동합니다:

<code>andy<span>@AndyMacBookPro</span><span>:/usr/lib/php/extensions/no-debug-non-zts-</span><span>20100525</span><span>$ </span>sudo cp /<span>Users</span>/andy/<span>Downloads</span>/gnupg-<span>1.3</span>.<span>6</span>/modules/gnupg.so ./</code>

그런 다음 이 확장을 php.ini에 추가합니다:

extension = gnupg.so

그러면 다음과 같이 할 수 있습니다. PHP에서 gunpg 확장 사용:

<code><span><span><?php</span><span>$url</span> = <span>'http://192.168.2.85/2015/09/20/加密文件.csv'</span>;
<span>$data</span> = file_get_contents(<span>$url</span>);
<span>$data</span> = mb_convert_encoding(<span>$data</span>, <span>'UTF-8'</span>, <span>'GBK'</span>);

<span>$encrypted_text</span> = <span>$data</span>;
<span>$res</span> = gnupg_init();
gnupg_adddecryptkey(<span>$res</span>,<span>"ABCFA237F71C57CA2042439F93704A63BCC8A2F"</span>,<span>"12345678"</span>);
<span>$plain</span> = gnupg_decrypt(<span>$res</span>,<span>$encrypted_text</span>);
var_dump(<span>$plain</span>);<span>exit</span>;</span></code>

이 기사를 읽어주셔서 감사합니다:

http://devzone.zend.com/1278/using-gnupg-with-php/

위 내용은 관련 내용을 포함하여 PHP에서의 gpg 확장 설치에 ​​대해 소개하고 있으며, PHP 튜토리얼에 관심이 있는 친구들에게 도움이 되기를 바랍니다.

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.