PHP C擴充初探

WBOY
發布: 2016-07-29 08:55:38
原創
1668 人瀏覽過

說明

環境:

<code> ubuntu14.4 
 php5.5.9 通过apt-get 安装
</code>
登入後複製

因為不同於編譯安裝的php,需要重新下載php原始碼進行擴充。

<code>$ <span>sudo</span> apt-get <span>source</span> php5 </code>
登入後複製

保存目錄可自訂
打開源碼文件進入到ext中,這裡是存放擴展的地方,我們可以看到有 許多官方的擴展
這裡可以科普一下php原始碼的主要目錄以及功能
./main包含PHP主要宏定義
./pear 包含PEAR核心檔
./sapi 包含不同伺服器抽象層程式碼
./Zend包含引擎的所有檔案
我們要用到php-dev包,編譯安裝下會內建
$sudo apt-get install php5-dev
$phpize-v
驗證安裝是否成功

正式開始擴充

使用ext_skel 這個檔案就在ext目錄下
$./ext_skel --extname=newext
很多教程上都是這一句指令,但我在使用過程中發現了會在後續過程中找不到newext.c檔
尋找剛才的操作,發現會報cannot open /skeleton.c: No such file 原來是找不到skeleton.c 我們可以透過查看ext_skel發現

PHP  C扩展初探
所以需要指定skel的path
刪除原先newext目錄,重新走一遍
$ ./ext_skel --extname=newext --skel=/usr/lib/php5/skeleton
成功後回傳
PHP  C扩展初探

根據提示我們需要更改 /newext2/config.m4 的註解
PHP  C扩展初探

<code><span>$cd</span> newext2
<span>$phpize</span>
$<span>.</span>/configure <span>--</span><span>with</span><span>-php</span><span>-config</span><span>=</span>/usr/bin/php<span>-config</span><span>$make</span></code>
登入後複製

在這裡需要注意,如果出現make無規則錯誤 需要查看php-config路徑是否正確
在這裡需要注意,如果出現make無規則錯誤 需要查看php-config路徑是否正確
在這裡需要注意,如果出現make無規則錯誤 需要查看php-config路徑是否正確 PHP  C扩展初探在這裡需要注意,如果出現make無規則錯誤 需要查看php-config路徑是否正確

在這裡需要注意,如果出現make無規則錯誤 若編譯成功會如下圖



<code><span>$make</span> test 
<span>$make</span> install</code>
登入後複製
接著我們就修改php.ini檔

增加extension = newext2.so
注意cli模式和cgi模式下的php.ini檔案是不一樣的,我在剛開始實驗的時候發現cli模式下使用

<code><span>$usr</span>/bin/php <span>-m</span></code>
登入後複製

並沒有發現newext2的擴充 後來在cgi下輸出phpinfo卻看得到

後來 在cli 下輸出phpinfo 找到php.ini的路徑作出修改最後成功
控制台下phpinfo輸出過大可以使用下面方法PHP  C扩展初探

<code><span>$ </span>php phpinfo.php | less
</code>
登入後複製

找到路徑後進行更改

修改後別忘記restart apache網上有很多相關的教程,我參考了《PHP和新技術與最佳實踐》第七章和自己在實際操作遇到的問題進行整理總結,特別針對非編譯安裝PHP的情況,主要是注意設定檔的路徑問題。

')​​.addClass('pre-numbering').hide(); $(this).addClass('has-numbering').parent().append($numbering); for (i = 1; i

').text(i)); }; $numbering.fadeIn(1700); }); });

以上就介紹了PHP C延伸初探,包括了方面的內容,希望對PHP教程有興趣的朋友有幫助。 🎜 🎜 🎜
相關標籤:
來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板