我看了下,基本上原生php沒有安裝gpg擴充過。所以我們自己為php安裝gpg擴充:
1.首先我們去下載gpg的源碼包:
http://pecl.php.net/package/gnupg
我下載的是:gnupg-1.3.6. tgz
解壓縮之後,cd到目錄中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。 ok,那我們下面安裝gpgme。
- 我們安裝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.擴充:
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></span></code>
非常感謝這篇文章:
http://devzone.zend.com/1278/using-gnupg-http://devzone.zend.com/1278/using-gnupg- with-php/
以上就介紹了PHP安裝gpg擴展,包括了方面的內容,希望對PHP教程有興趣的朋友有幫助。

PHP在現代編程中仍然是一個強大且廣泛使用的工具,尤其在web開發領域。 1)PHP易用且與數據庫集成無縫,是許多開發者的首選。 2)它支持動態內容生成和麵向對象編程,適合快速創建和維護網站。 3)PHP的性能可以通過緩存和優化數據庫查詢來提升,其廣泛的社區和豐富生態系統使其在當今技術棧中仍具重要地位。

在PHP中,弱引用是通過WeakReference類實現的,不會阻止垃圾回收器回收對象。弱引用適用於緩存系統和事件監聽器等場景,需注意其不能保證對象存活,且垃圾回收可能延遲。

\_\_invoke方法允許對象像函數一樣被調用。 1.定義\_\_invoke方法使對象可被調用。 2.使用$obj(...)語法時,PHP會執行\_\_invoke方法。 3.適用於日誌記錄和計算器等場景,提高代碼靈活性和可讀性。

Fibers在PHP8.1中引入,提升了並發處理能力。 1)Fibers是一種輕量級的並發模型,類似於協程。 2)它們允許開發者手動控制任務的執行流,適合處理I/O密集型任務。 3)使用Fibers可以編寫更高效、響應性更強的代碼。

PHP社區提供了豐富的資源和支持,幫助開發者成長。 1)資源包括官方文檔、教程、博客和開源項目如Laravel和Symfony。 2)支持可以通過StackOverflow、Reddit和Slack頻道獲得。 3)開發動態可以通過關注RFC了解。 4)融入社區可以通過積極參與、貢獻代碼和學習分享來實現。

PHP和Python各有優勢,選擇應基於項目需求。 1.PHP適合web開發,語法簡單,執行效率高。 2.Python適用於數據科學和機器學習,語法簡潔,庫豐富。

PHP不是在消亡,而是在不斷適應和進化。 1)PHP從1994年起經歷多次版本迭代,適應新技術趨勢。 2)目前廣泛應用於電子商務、內容管理系統等領域。 3)PHP8引入JIT編譯器等功能,提升性能和現代化。 4)使用OPcache和遵循PSR-12標準可優化性能和代碼質量。

PHP的未來將通過適應新技術趨勢和引入創新特性來實現:1)適應云計算、容器化和微服務架構,支持Docker和Kubernetes;2)引入JIT編譯器和枚舉類型,提升性能和數據處理效率;3)持續優化性能和推廣最佳實踐。


熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

AI Hentai Generator
免費產生 AI 無盡。

熱門文章

熱工具

Dreamweaver CS6
視覺化網頁開發工具

SecLists
SecLists是最終安全測試人員的伙伴。它是一個包含各種類型清單的集合,這些清單在安全評估過程中經常使用,而且都在一個地方。 SecLists透過方便地提供安全測試人員可能需要的所有列表,幫助提高安全測試的效率和生產力。清單類型包括使用者名稱、密碼、URL、模糊測試有效載荷、敏感資料模式、Web shell等等。測試人員只需將此儲存庫拉到新的測試機上,他就可以存取所需的每種類型的清單。

PhpStorm Mac 版本
最新(2018.2.1 )專業的PHP整合開發工具

ZendStudio 13.5.1 Mac
強大的PHP整合開發環境

SublimeText3 Linux新版
SublimeText3 Linux最新版