亚洲av成人无遮挡网站在线观看,少妇性bbb搡bbb爽爽爽,亚洲av日韩精品久久久久久,兔费看少妇性l交大片免费,无码少妇一区二区三区

  免費注冊 查看新帖 |

Chinaunix

  平臺 論壇 博客 文庫
最近訪問板塊 發(fā)新帖
查看: 1521 | 回復(fù): 0
打印 上一主題 下一主題

用phpize編譯動態(tài)擴展模塊 [復(fù)制鏈接]

論壇徽章:
0
跳轉(zhuǎn)到指定樓層
1 [收藏(0)] [報告]
發(fā)表于 2011-12-23 01:19 |只看該作者 |倒序瀏覽
  • 在 Linux下編譯安裝php是常有的事情,當(dāng)然,目前為止個人依然推薦二進制安裝,rpm或者deb安裝等等。經(jīng)常會出現(xiàn)我們需要ext中的一些功能,這 些功能在編譯過程中并沒有加載進來,一個常用的辦法就是使用phpize這個php的工具來編譯擴展模塊(結(jié)果會生成一個so文件,比如 mbstring.so, tidy.so,功能類似于windows下的dll文件),然后再在配置文件中進行適當(dāng)設(shè)定就OK了。
  • 整個過程和動態(tài)編譯apache的模塊非常相似,只不過apache使用的程序叫做apxs,而php里叫做phpize。
  • 下面的報錯是一個典型的例子,在提醒你需要動態(tài)加載一個模塊了。
Fatal error: Call to undefined function curl_init() in /var/www/boss.yfang.cn/htdocs/yahooboss.class.php on line 48 # 稍微查一下就知道這是php的curl模塊中的一個函數(shù)
準(zhǔn)備工作
  • 首先,我們需要php的源代碼(其實我們只需要特定的擴展模塊這部分代碼)。假設(shè)我們吧源代碼放在/usr/local/src/php-version/ 這里
  • 同時,我們需要知道已經(jīng)安裝好的php的安裝位置,假設(shè)在/usr/local/php/目錄下
  • 我們還需要了解php.ini 這個配置文件的位置,后面我們需要修改這個文件
實際操作
  • 1. 進入php源程序目錄中的ext目錄中,這里存放著各個擴展模塊的源代碼
cd /usr/local/src/php-version/ext
  • 2. 選擇你需要的模塊,比如tidy模塊
cd tidy
  • 3. 執(zhí)行phpize
/usr/local/php/bin/phpize # 有可能你用其他安裝方式已經(jīng)把phpize加到了PATH中,如果是這樣你可以直接執(zhí)行 "phpize" 就好了# 這時已經(jīng)生成了一些配置信息,接下來可以開始configure了
  • 4. 像編譯其他典型程序一樣./configure
./configure --with-php-config=/usr/local/php/bin/php-config # 這里如果直接執(zhí)行./configure很有可能會報錯# "configure: error: Cannot find php-config. Please use --with-php-config=PATH",# 你的配置文件位置可能不在這個目錄,這個文件通常是在php安裝目錄的bin目錄下的一個文件名叫做php-config或者php-config5的文件,實在找不到就find一下咯
    • 在這一步中如果出錯了,通常是因為你的系統(tǒng)缺少相關(guān)的庫,按照提示去安裝吧
    • 比 如,如果沒有裝libtidy的話,會在這一步收到"configure: error: Cannot find libtidy"這樣的提示,安裝相應(yīng)的模塊即可,如果安裝模塊的目標(biāo)位置不是默認(rèn)的位置,可能需要添加部分參數(shù),比如 ./configure --with-php-config=/usr/local/php/bin/php-config --with-tidy=/usr/local/tidy ,具體參考Linux下安裝Tidy(zz)
  • 5. 編譯安裝
make && make install # 最后結(jié)果會輸出生成的so位置,比如 "Installing shared extensions: /usr/local/php/lib/php/extensions/no-debug-non-zts-20060613/"
  • 6. 編輯php.ini
    • 默認(rèn)的extension_dir一般為'./',我們需要做如下設(shè)定,才能找到正確的位置: extension_dir = "/usr/local/php/lib/php/extensions/no-debug-non-zts-20060613/"
    • 然后是激活模塊,很簡單,只需要在后面添加 extension=tidy.so 就好了,有幾個模塊就添加幾個
    • 如果在Windows下,很有可能這個模塊已經(jīng)在配置文件里面寫了(只不過被注釋掉了),那么,你只要把前面的分號去掉即可
    • 一般的默認(rèn)配置文件都是dll文件,所以這個在linux下不適用,自己添加一句就是了
  • 7. 檢查新的php配置是否能夠正常工作
/usr/local/php/bin/php -v# 執(zhí)行這個命令時,php會去檢查配置文件是否正確,如果有配置錯誤,這里會報錯,可以根據(jù)錯誤信息去排查# 下面是一個典型的錯誤輸出,報告找不到配置文件中設(shè)定的so,原因就是沒有更改extension_dir PHP Warning: PHP Startup: Unable to load dynamic library './curl.so' - ./curl.so: cannot open shared object file: No such file or directory in Unknown on line 0 PHP Warning: PHP Startup: Unable to load dynamic library './tidy.so' - ./tidy.so: cannot open shared object file: No such file or directory in Unknown on line 0 PHP 5.2.6 (cli) (built: Aug 8 2008 16:08:19) Copyright (c) 1997-2008 The PHP Group Zend Engine v2.2.0, Copyright (c) 1998-2008 Zend Technologies with Zend Extension Manager v1.2.2, Copyright (c) 2003-2007, by Zend Technologies with Zend Optimizer v3.3.3, Copyright (c) 1998-2007, by Zend Technologies
  • 8. 重啟apache,使你的php配置更新。
  • 9. 這里說一個檢查模塊是否OK的方法,phpinfo頁面(<?php phpinfo(); ?>)打開,如果多了你剛剛添加的模塊,基本上就證明OK了。
Linux下獨立添加PHP擴展模塊

服務(wù)器運行一段時間后,可能突然會需求添加某個擴展,如curl、pdo、xmlrpc等,這就需要在不重新編譯PHP的情況下獨立添加擴展。

下面以安裝curl為例,介紹具體安裝步驟。

1.安裝crul wget http://curl.haxx.se/download/curl-7.19.6.tar.gz tar -zxvf curl-7.19.6.tar.gz cd curl-7.19.6 ./configure --prefix=/usr/local/curl

make

make install

2.編譯生成擴展進入php源程序目錄中的ext目錄中,這里存放著各個擴展模塊的源代碼,選擇你需要的模塊,比如curl模塊:

cd curl

執(zhí)行phpize生成編譯文件,phpize在PHP安裝目錄的bin目錄下

/usr/local/php5/bin/phpize

運 行時,可能會報錯:Cannot find autoconf. Please check your autoconf installation and the $PHP_AUTOCONF environment variable is set correctly and then rerun this script.“,需要安裝autoconf:

yum install autoconf(RedHat或者CentOS)、apt-get install autoconf(Ubuntu Linux)

生成配置文件,并編譯生成模塊:

/usr/local/php5/bin/phpize

./configure --with-curl=/usr/local/curl --with-php-config=/usr/local/php5/bin/php-config

make

make install

這樣,curl.so就被復(fù)制到PHP對應(yīng)目錄(如:/usr/local/php5/lib/php/extensions/no-debug-non-zts-20090626/)

3.修改配置在php.ini里,設(shè)置擴展目錄:

extension_dir = "/usr/local/php5/lib/php/extensions/no-debug-non-zts-20090626/"

并添加擴展模塊引用:

extension = curl.so

4.檢查并重啟Apache

/usr/local/php/bin/php -v

執(zhí)行這個命令時,php會去檢查配置文件是否正確,如果有配置錯誤,這里會報錯,可以根據(jù)錯誤信息去排查。

您需要登錄后才可以回帖 登錄 | 注冊

本版積分規(guī)則 發(fā)表回復(fù)

  

北京盛拓優(yōu)訊信息技術(shù)有限公司. 版權(quán)所有 京ICP備16024965號-6 北京市公安局海淀分局網(wǎng)監(jiān)中心備案編號:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年舉報專區(qū)
中國互聯(lián)網(wǎng)協(xié)會會員  聯(lián)系我們:huangweiwei@itpub.net
感謝所有關(guān)心和支持過ChinaUnix的朋友們 轉(zhuǎn)載本站內(nèi)容請注明原作者名及出處

清除 Cookies - ChinaUnix - Archiver - WAP - TOP