PHP C擴充套件初探

2021-07-10 21:30:55 字數 1828 閱讀 8630

ubuntu14.4 

php5.5.9 通過apt-get 安裝

$ sudo apt-get source php5
儲存目錄可自定義

開啟原始碼檔案進入到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發現

所以需要指定skel的path

刪除原先newext目錄,重新走一遍

$ ./ext_skel --extname=newext --skel=/usr/lib/php5/skeleton

成功後返回

根據提示我們需要更改 /newext2/config.m4 的注釋

在這裡需要注意,如果出現make無規則錯誤 需要檢視php-config路徑是否正確

若編譯成功會如下所示

接著我們就修改php.ini檔案

增加extension = newext2.so

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

$usr/bin/php -m
並沒有發現newext2的擴充套件

後來在cgi下輸出phpinfo卻能看到

後來 在cli下 輸出phpinfo 找到php.ini的路徑作出修改最後成功

控制台下phpinfo輸出過大可以使用下面方法

$ php phpinfo.php | less
找到路徑後進行更改

修改後別忘記restart apache

php C 擴充套件的開發

最近兩天,學習了一下php c 擴充套件的開發流程。中間遇到不少坑,特此記錄。建立乙個mongo cpp擴充套件 1.建立擴充套件的目錄 cd php 5.3.6 ext ext skel extname hello 2.編輯config.m4 放開一下內容 php arg enable hello...

編寫乙個簡單的php C擴充套件

注意此處生成的擴充套件是linux版的php擴充套件 故生成的擴充套件結尾是.so的檔案 nginx 1.15.10 mysql 5.6.44 php 7.0 環境是lnmp 1.找到php的安裝目錄下的ext資料夾 且存在ext skel檔案 2.ext skel extname test add...

交叉編譯php c擴充套件庫(自定義的c擴充套件)

1.生成擴充套件骨架 ext skel extname xianwenjun 2.進入擴充套件目錄 cd xianwenjun 3.編寫擴充套件 vim xianwenjun.c 4.修改擴充套件配置 vim config.m4 5.phpize編譯 檢視phpize所在路徑find name ph...