PHP擴充的產生和編譯

來源:互聯網
上載者:User
首先說明一下,PHP擴充有兩種編譯方式:
方式一:在編譯PHP時直接將擴充編譯進去
方式二:擴充被編譯成.so檔案,在php.ini裡配置載入路徑;

以下開始說明建立PHP擴充並編譯的步驟:
下載PHP源碼,並解壓,在源碼的根目錄下開始操作,
1. 使用ext_skel產生擴充架構,如下:

➜ php-5.6.24 cd ~/Downloads/tmp/php-5.6.24➜ php-5.6.24 cd ext
➜ ext ./ext_skel --extname=myfirstext

ext_skel在執行後,會提示開發人員後續的操作步驟,這個操作步驟是擴充的兩種編譯方式裡的方式一的步驟, 如下:

To use your new extension, you will have to execute the following steps: $ cd .. $ vi ext/plogger/config.m4 $ ./buildconf $ ./configure --[with|enable]-plogger $ make $ ./sapi/cli/php -f ext/plogger/plogger.php $ vi ext/plogger/plogger.c $ make

2. 修改檔案ext/myfirstext/config.m4
重點看line10-18的代碼,用於設定./configure時啟用此擴充的命令選項,將其中line16和line18的dnl刪掉,把dnl理解為注釋符。

dnl Otherwise use enable:16 dnl PHP_ARG_ENABLE(myfirstext, whether to enable myfirstext support,dnl Make sure that the comment is aligned:dnl [ --enable-myfirstext Enable myfirstext support])20 if test "$PHP_MYFIRSTEXT" != "no"; thendnl Write more examples of tests here...

以上兩步驟是公用的,以下將分別介紹編譯PHP擴充的兩種方式,
方式一:編譯PHP時直接將擴充編譯進去
3. 在源碼根目錄下執行./buildconf,如下
4. 在源碼根目錄下執行./configure –enable-myfirstext
為了減少編譯時間,可以在configure階段指明不編譯某些模組,比如:

./configure --without-iconv --enable-debug --enable-myfirstext --disable-cgi --enable-cli --without-pear --disable-xml --without-mysql

5. 在源碼根目錄下執行make
注意編譯成功後,別執行make install了,因為至此,擴充myfirstext已經編譯成功,並且已經產生了相應的php二進位檔案了,它在./sapi/cli/php

方式二:擴充被編譯成.so檔案,在php.ini裡配置載入路徑
3. 在擴充目錄ext/myfirstext/下執行phpize命令
4. 在擴充目錄ext/myfirstext/下執行./configure –enable-myfirstext命令
5. 在擴充目錄ext/myfirstext/下執行make
執行make後會在ext/myfirstext/modules下產生對應的.so檔案,在php.ini中配置好載入此檔案即可。

校正擴充是否載入成功
執行./sapi/cli/php -f ext/myfirstext/myfirstext.php
或者通過php -m列出所有擴充,查看是否有myfirstext, 執行命令:./sapi/cli/php -m | grep myfirstext
通過以上校正,說明擴充編譯成功了。但是到目前為止,還沒有編輯過c相關的代碼,一切都是ext_skel預設產生的,查看這個擴充myfirstext包含哪些函數呢?如下:

➜ php-5.6.24 ./sapi/cli/php -r 'print_r(get_extension_funcs("myfirstext"));'

OK, 目前為止熟悉了PHP擴充架構的產生,配置,和編譯。接下來就要往擴充myfirstext裡添加一個自己的函數。

  • 聯繫我們

    該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

    如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

    A Free Trial That Lets You Build Big!

    Start building with 50+ products and up to 12 months usage for Elastic Compute Service

    • Sales Support

      1 on 1 presale consultation

    • After-Sales Support

      24/7 Technical Support 6 Free Tickets per Quarter Faster Response

    • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.