linux下開發PHP擴充之安裝篇

WBOY
發布: 2016-07-29 09:15:10
原創
927 人瀏覽過

前言感悟

脈脈上一哥們的話越發覺得計算機科班出身的優勢,編程越久,越覺得基礎知識的重要性,就像一座繞不過去的大山,峰迴路轉,可能前途坦蕩,但是總會遇見這座山,只有迎難而上,一鼓作氣翻過去,才能繼續腳下的路.
我非常贊同,程式設計越久越得往底層研究才能提升自己,所以下一個目標要係統的研究PHP源碼。正好,我報的成考正在學C,老師是個NB的學院派人物。號稱光讀過C的書疊起來比講桌高。

準備

從網路上找發現對php擴充開發的資料不是很多很全,也沒有成型的論壇。看來這方面的需求不是很多。
首先你得下載php源碼,可以git/svn或官網上下載.我是從官網下的,因為網上說git下的源碼有的沒有phpize這個工具(我也沒試過)phpize是用來擴展PHP擴展模組的。

開始

進入下載好的php來源碼
php源碼的ext目錄有一個ext_skel文件,使用它可以方便的搭建一個PHP擴展框架,下面就創建一個myext擴展

進入ext目錄 cd ext/

./ext_skel –extname=myext
Creating directory myext
Creating basic files: config.m4 config.w32 .gitignore myext.c php_myext.h CREDITS EXPERIMENTAL tests/001.phpt myext.php [done].

To ollo your new extwingension, you ?

    $ cd ..
  1. $ vi ext/myext/config.m4
  2. $ ./buildconf
  3. $ ./configure –[with|enable]-myext
  4. /$m/m/m/m/$m/$ /$ php -f ext/myext/myext.php
  5. $ vi ext/myext/myext.c
  6. $ make
  7. Repeat steps 3-6 until you are satisfied with ext/myext/config.4 and ext/myext/config.4 and ext/myext step 6 confirms that your module is compiled into PHP. Then, start writing
  8. code and repeat the last two steps as often as necessary.`

這時,你的目錄下應該有一個myext目錄,這就是ext_skel幫你產生的擴充框架。
然後需要修改config.m4
將以下程式碼 前面的 dnl去掉:

<code>dnl PHP_ARG_ENABLE(myext, whether <span>to</span> enable myext support,
dnl [  <span>--enable-myext           Enable myext support])</span></code>
登入後複製

儲存後退出!
開始編譯
在myext目錄下。執行下面程式碼:

<code>phpize
<span>.</span>/configure <span>--</span><span>with</span><span>-php</span><span>-config</span><span>=</span>/usr/<span>local</span>/php/bin/php<span>-config</span>
make
make test
make install</code>
登入後複製

make install之後會提示你安裝擴充功能的目錄/usr/local/php/lib/php/extensions/no-debug-non-zts-20131226/ 進入後可以看到myext.so

接著在php.ini 加入擴充資訊

extension = myext.so

使用php -m 指令就可以看到擴充功能是否安裝成功。

重啟fpm 在phpinfo中就可以看到安裝好的擴充




注意

linux下開發PHP擴充之安裝篇這裡安裝一個擴充就完成了。

在make test的時候會警告有些函數在php.ini中被停用。找到php.ini的disable_function將警告函數去掉。

另外再解釋下linux的GNU的AUTOCONF和AUTOMAKE所產生的程式的安裝步驟

config/configure/Configure
這個是用來偵測你的安裝平台的目標特徵的。例如它會偵測你是否有CC或GCC,並不是需要CC或GCC,它是個shell腳本
這一步一般用來產生 Makefile,為下一步的編譯做準備,你可以透過在 configure 後面加上參數來控制安裝,例如:

./configure –prefix=/usr

上面的意思是將該軟體安裝在 /usr 下面
執行檔就會安裝在 /usr/bin (而不是預設的 /usr/local/bin)
資源檔案就會安裝在 /usr/share(而不是預設的/usr/local/share)
同時一些軟體的設定檔你可以透過指定 –sys-c
還有諸如:–with、–enable、–without、–disable 等等參數對編譯加以控制,你可以透過 ./configure –help 察看詳細的說明幫助
make
這一步驟是用來編譯的,它從Makefile讀取指令,然後編譯
這一步就是編譯,大多數的原始碼包都經過這一步驟編譯
當然有些perl或python所寫的軟體需要呼叫perl或python來進行編譯
如果在make 過程中出現error ,你就要記下錯誤代碼(注意不只是最後一行),然後你可以向開發者提交bugreport(一般在INSTALL 裡有提交地址),或者你的系統少了一些依賴庫等,這些需要自己仔細研究錯誤代碼
make test / make check
顧名思義,這一步就是對上一步 make 的檢查了,要確保 make 是沒有錯誤的,也就是這一步的 test、check要全部是 OK 的,error 為0
sudo make install
這一步驟是用來安裝的,它也從Makefile讀取指令,安裝到指定的位置
這條指令來進行安裝,一般需要你有 root 權限(因為要寫入檔案到系統),所以前面用了 sudo

AUTOMAKE和AUTOCONF是非常有用的用來發布C程式的東西。如果你也寫程式想使用AUTOMAKE和AUTOCONF,可以參考CNGNU.ORG上的相關文章

以上就介紹了linux下開發PHP擴充安裝篇,包含了方面的內容,希望對PHP教學有興趣的朋友有幫助。

相關標籤:
來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板
關於我們 免責聲明 Sitemap
PHP中文網:公益線上PHP培訓,幫助PHP學習者快速成長!