windows環境下PHP安裝擴展


PHP安裝擴展

一、php擴展管理

1.什么是php擴展

php擴展就是php核心並不支持的功能,然后可以通過擴展的方式進行擴展PHP的功能,常見的擴展如MySQL,gb2等等。

2.查看php安裝了那些擴展

方法一:通過phpinfo()函數,進行查看,紅框的都是php的擴展

<?php
phpinfo();
?>

方法二:執行php -m 命令:

[root@linux-host ~]# php -m

  

 

方法三:使用php的get_loaded_extensions()函數

<?php
print_r(get_loaded_extensions());
?>

  

以上例程的輸出類似於:

Array( [0] => xml [1] => wddx [2] => standard [3] => session [4] => posix [5] => pgsql [6] => pcre [7] => gd [8] => ftp [9] => db [10] => calendar [11] => bcmath)

 

方法四:extension_loaded函數檢查一個擴展是否已經加載,如果 name 指定的擴展已加載,返回TRUE,否則返回 FALSE。

<?php
if (!extension_loaded('gd')) {
    if (!dl('gd.so')) {
        exit;
    }
}

  

3.管理php擴展

a.設定擴展所在目錄,將php.ini的extension_dir設定成自己php擴展路徑

 

b.加載擴展

 

二、windows安裝php擴展

1.下載

http://pecl.php.net/是官方的擴展庫,我們可以在這里下載自想要的擴展

 

所有的拓展列表:  https://pecl.php.net/package-stats.php

 

2.選擇版本

已安裝redis為例:

進入redis拓展下載地址: https://pecl.php.net/package/redis

 

 

點擊 旁邊的 

 按鈕后進入windows下載界面

 

安裝windows的php擴展需要注意版本的選擇:php的版本、是否是線性安全、操作系統的位數。

怎么查看自己環境支持的版本信息呢,可以通過php的內置phpinfo()函數,進行查看:

當我們使用phpinfo的時候,多數時候都是在看模塊有沒有裝上,但是其他重要信息卻忽略了,例如,為啥我的拓展老是裝不上,下載的拓展上面一長串啥意思?nts x86 5.5等等,這些都是重要的信息,對於安裝拓展來說尤其重要!

上面的幾個重要參數:

compiler :編譯器
Architecture :CPU架構
Configuration File (php.ini) Path :php配置文件的位置,這里才是你的配置文件加載的真正地方,apache的同學小心了!
Thread Safety :線程安全與否
PHP Extension Build :php拓展建立的編號

以上幾個參數關系到你能不能裝上拓展,要認真看!下載拓展.dll文件的時候很多選項,那里面的選項就和這里的對應!
例如下面:
隨便取一個來分析下:

php_igbinary-1.2.1-5.3-nts-vc9-x86.zip

意思是:1.2.1版本的php_igbinary拓展,適合的php版本是5.3及以上,vc9編譯的這個拓展,,不支持線程安全,可以用在x86 cpu架構上,注意64位的機器也可以用!但是反過來就不行了。

 

是不是清楚很多了?我是在安裝redis的時候碰到這個問題的。

來繼續安裝redis拓展, 進入頁面: https://windows.php.net/downloads/pecl/releases/redis/

以安裝php-redis-3.1.3為例:

我通過phpinfo()函數得到配置應該安裝NTS, x86, VC14的dll拓展:

下載頁:https://pecl.php.net/package/redis/3.1.3/windows

下載頁: https://windows.php.net/downloads/pecl/releases/redis/3.1.3/

 

 下載解壓,將里面的 php_redis.dll 放到ext目錄下,

3.安裝

將下載好的壓縮包解壓,然后把里面的php_redis.dll放到php.ini中制定的文件夾里面,並把redis模塊加載,然后從起服務器。

 

同理, 安裝memcache:

https://windows.php.net/downloads/pecl/releases/memcache/3.0.8/

 

三、linux安裝php擴展

1.yum或者apt-get安裝

 

2.使用pecl安裝

1)、pecl install安裝

~# pecl install memcached

downloading memcached-2.2.0.tgz ...

Starting to download memcached-2.2.0.tgz (70,449 bytes)....

2)、配置php.ini

通過運行 php --ini查找php.ini文件位置,然后在文件中添加extension=memcached.so

3.phpize安裝——以redis為例

1)、下載php擴展包

[root@localhost ~]# wget http://pecl.php.net/get/redis-4.0.0.tgz

2)、解壓縮並進入擴展包目錄

[root@localhost ~]# tar -xzvvf redis-4.0.0.tgz

[root@localhost redis-4.0.0]# cd redis-4.0.0

3)、執行phpize

[root@localhost redis-4.0.0]# phpize

4)、./configure

[root@localhost redis-4.0.0]# ./configure --with-php-config=/usr/bin/php-config

5)、make && make install

[root@localhost redis-4.0.0]# make && make install

6)、配置php.ini

extension=redis.so

4.直接安裝(類似windows)

直接下載將下載好的壓縮包,解壓后將.so后綴的文件直接放到指定的路徑,然后配置php.ini文件。

 

phpStudy2018 踩過的一些坑:

發現phpStudy2018切換到php 7以上版本,無論怎么修改安裝拓展,就是拓展都不生效,就連自帶的curl都沒有啟來,

經過半天反復折騰php.ini配置,才發現phpStudy2018的幾個php7目錄下的php.ini有個配置出的問題:

extension_dir = "E:\PHPServer\phpStudy2018\PHPTutorial\php\php-7.1.9-nts\ext"

屏蔽到這句,改成:

;extension_dir = "E:\PHPServer\phpStudy2018\PHPTutorial\php\php-7.1.9-nts\ext"
extension_dir = "ext"

查看phpinfo函數,拓展都生效了

 

windows的php7安裝memcache擴展

安裝memcache:http://www.runoob.com/memcached/memcached-connection.html
啟動服務:

c:\memcached\memcached.exe -d install 
c:\memcached\memcached.exe -d start 
c:\memcached\memcached.exe -d stop

啟動計划任務:

schtasks /create /sc onstart /tn memcached /tr “‘c:\memcached\memcached.exe’ -m 512” 
telnet HOST PORT 

window下安裝php7的memcache擴展,結果發現php_memcache.dll的官方編譯出來的版本支持到PHP 5.6就停了,找了半天才在外國人的網站找到

https://stackoverflow.com/questions/34952502/memcache-for-php7-on-windows,

git下載地址:https://github.com/nono303/PHP7-memcache-dll

根據自己的php版本下載

下載解壓后,

就到 php/ext 目錄下 把 php_memcache.dll 放到里面

然后在 php 目錄下的 php.ini 增加一段內容

extension=php_memcache.dll

加完之后,重啟 apache或者nginx

然后 在php頁面輸出phpinfo();

檢查 memcache 是否成功加載了。

如果成功加載了 ,就可以 在一個php頁面做 memcache測試了

<?php
$memcache = new Memcache;
$memcache->connect('127.0.0.1',11211) or die('shit');
$memcache->set('key','hello memcache!');
$out = $memcache->get('key');
echo $out;
?>

成功的話會輸出

hello memcache!

 

windows的php7安裝xdebug擴展

下載地址1  https://windows.php.net/downloads/pecl/releases/xdebug/

假設根據上面步驟獲取到 7.2  NTS, VC15 x64等信息,來下載對應的版本:

 

 下載想要的對應版本:

 

下載地址2,官網下載: https://xdebug.org/download

 

 

 或者點擊打開 custom installation instructions. 也就是地址: https://xdebug.org/wizard 來計算出自己的電腦版本php對應的xdebug庫版本信息:

 進入頁面后把 phpinfo() 或 php -i 打印出來的信息全選復制進去:

 

最后得出的結論:

把 php_xdebug.dll 文件放入 ext 文件夾下,配置 php.ini, 然后重啟服務器。

附: xdebug的php.ini配置信息:

[XDebug]
;指定Xdebug擴展文件的絕對路徑
zend_extension="E:\PHPServer\phpStudy_v8\Extensions\php\php7.2.9nts\ext\php_xdebug.dll"
;指定堆棧跟蹤文件的存放目錄
xdebug.trace_output_dir="E:\PHPServer\phpStudy_v8\Extensions\tmp\xdebug"
;是否開啟遠程調試
xdebug.remote_enable= on
xdebug.remote_autostart = on
xdebug.remote_mode=req
;指定遠程調試的處理協議
xdebug.remote_handler="dbgp"
;指定遠程調試的主機名
xdebug.remote_host="127.0.0.1"
;指定遠程調試的端口號
xdebug.remote_port=9100
;是否啟用Xdebug的性能分析,並創建性能信息文件
;xdebug.profiler_enable=on
;xdebug.profiler_enable_trigger=0
;指定性能分析信息文件的輸出目錄
xdebug.profiler_output_dir="E:\PHPServer\phpStudy_v8\Extensions\tmp\xdebug"
;指定傳遞給DBGp調試器處理程序的IDE Key
xdebug.idekey="PHPSTORM"
;啟用代碼自動跟蹤
;xdebug.auto_trace=on
;允許收集傳遞給函數的參數變量
xdebug.collect_params=on
;允許收集函數調用的返回值
xdebug.collect_return=on

 

 

參考資料: 

https://blog.csdn.net/the_lone_wolfs/article/details/79099858

其他資料參考:

http://www.php.cn/php-weizijiaocheng-392756.html

https://www.php.cn/php-weizijiaocheng-392701.html

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM